Introduction
The Soldo API provides a way for developers to access the functionalities of the Soldo product platform dedicated to the business products to extend its services and integrate it with custom business logics and their systems.
We offer REST API and webhooks, and uses HTTP response codes to indicate API errors. All responses return JSON.
Soldo Product Platform
The Soldo product platform provides a payment infrastructure able to support a configuration for any company organisation thanks to the following hierarchical architecture.
Main wallets |
---|
- A main wallet represents the place where money is transferred from an external bank account and then stored as main balance of the Soldo account
- A main wallet represents also the place from where money is distributed to the resources of the account (company cards, users and groups)
- A main wallet represents one of the possibilities to have non-nominative cards to use for company expenses and a shared balance among multiple entities
- The native currencies supported by a main wallet are EUR, GBP and USD
- Only one main wallet for each currency can be created
Company wallets |
---|
- A company wallet represents one of the possibilities to have non-nominative cards to use for company expenses and a shared balance among multiple entities
- A company wallet may have one or more company/user cards (plastic or virtual) connected to it
- A company wallet is the place where money is transferred and allocated for the specific users to spend
- A company wallet can be configured in EUR, GBP or USD
- One or more company wallets for each currency can be created
Users |
---|
- A user is any employee of the company
- A user is always assigned with a role, which determines what a user can do and which resources (other users, groups, wallets, cards) they can see and manage
- A user may have login details for the Soldo web console and mobile app, according to their role
- A user has one wallet for each active currency in the account to which may be connected one or more cards (plastic, virtual or fuel)
- A user's wallet is the place where money is transferred and allocated for the specific user to spend
- The native currencies supported by a user's wallet are EUR, GBP and USD
Users - Superadmin |
---|
- A superadmin is a role of a user and it requires to KYC the user to be assigned
- A superadmin is usually a user with the power to manage the whole business account without limitations.
- A superadmin is the user who owns the login details of the Soldo API
Groups |
---|
- A group is an entity that represents a company structure and is a collection of resources of any type (users, wallets and cards)
- A group can have a leader: a user that is in charge of workflows and they might be assigned to multiple groups.
- A group may have one or more wallets to which may be connected one or more cards (plastic and virtual only)
API setup
The setup of the Soldo API starts with the registration of a Soldo business account and then the definition of a 'superadmin'.
In order to proceed with the setup of the Soldo API is requested to contact your Soldo account manager.
A public RSA key must be shared with Soldo in order to use APIs.
During the process of superadmin definition, it is possible to restrict the access to specific resources or actions within the business account.
Development and testing can be done on a dedicated demo environment with test API keys at "https://api-demo.soldocloud.net".
Superadmin scopes
Soldo OAuth scopes define the access of the superadmin user to specific resources or actions within the business account.
The list of enabled scopes can be retrieved from the Ping - Who Am I endpoint.
Available scopes:
company_read
company_write
employee_read
employee_write
wallet_read
wallet_write
card_read
card_write
transaction_read
transaction_write
tag_read
tag_write
group_read
group_write
address_read
address_write
vehicle_read
vehicle_write
purchase_read
purchase_write
expenses_review_read
expenses_review_write
Authentication
The Soldo Business API implements OAuth 2.0 with "Resource Owner Password Credentials Grant".
All API requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail.
There are two levels of Authentication, which are applied according to the sensitivity of the operation:
Standard Authentication, for accessing information for general business operations
Advanced Authentication, additional security for moving money and making changes to accounts
All accounts are authenticated using your secret API keys, which are provided by Soldo.
Standard Authentication
Before you can receive your tokens for authentication, you need to register for a Soldo account for business.
Then you can follow the described procedure, which is the same for any environments (Demo, Live).
Remember: to setup your account and have access to the API, contact your Soldo account manager.
Get
client_id
andclient_secret
Use
client_id
andclient_secret
as login details and get anaccess_token
Pass an
access_token
as header parameter in every API call
To authenticate, use:
curl "https://api.soldo.com/oauth/authorize" \
-X POST -H "Content-Type: application/x-www-form-urlencoded" \
-d "client_id={client_id}&client_secret={client_secret}"
The above command returns a JSON structured as follows:
{
"refresh_token": "{refresh_token}",
"token_type": "bearer",
"access_token": "{access_token}",
"expires_in": "7200"
}
HTTP Request
POST
https://api.soldo.com/oauth/authorize
Request Parameters
Parameter | Description | Type |
---|---|---|
client_id |
The client ID, representing the API Key you received from Soldo | Body Parameter Required |
client_secret |
The client secret, representing the API Secret you received from Soldo | Body Parameter Required |
Response Parameters
Parameter | Description |
---|---|
refresh_token |
The token used to refresh the session |
token_type |
All requests must be always authenticated using the bearer scheme |
access_token |
The token to be used in all calls |
expires_in |
The token expiration, expressed in seconds |
Advanced Authentication
Services having access to more sensitive information require an additional level of authentication: a Soldo fingerprint and Soldo fingerprint signature. In order to apply Advanced Authentication you must share with Soldo your public 2048 RSA key (format X.509 SubjectPublicKeyInfo/OpenSSL PEM public key). You must keep safe your private key. (Java class Cryptography Example)
Fingerprint |
---|
- A Soldo SHA512 fingerprint is managed as header parameter, named
X-Soldo-Fingerprint
- It is generated according to parameters relating to the specific function being accessed
- Every method that requires a fingerprint includes a paragraph "Fingerprint Order", to determine the order of the values to concatenate
- If the fingerprint order requires optional fields and the field is not passed in the call then not append anything
- If the field contains multiple values, the values must be concatenated in the same order as they will be sent in the request, without separators
- When the values have been concatenated the SHA512 algorithm is applied
- The
X-Soldo-Fingerprint
value has to be lowercase
Fingerprint Signature |
---|
- The
X-Soldo-Fingerprint
must be signed with the customer private key and set in the header parameter namedX-Soldo-Fingerprint-Signature
- The signature algorithm is SHA512withRSA encoded Base64
- Soldo will verify
X-Soldo-Fingerprint-Signature
using your public key
Token |
---|
token
is always one of the main values to createX-Soldo-Fingerprint
token
is released by Soldo to a business account (together withclient_id
andclient_secret
), it isn't theaccess_token
returned by the Standard Authenticationtoken
is never used in server to server communications
# Example with Internal Transfer
# TOKEN: THISISYOUROWNTOKENOK
# amount: 10
# currency: EUR
# wallet_from_id: f086f47f-1526-11e7-9287-0a89c8769141
# wallet_to_id: f086f25b-1526-11e7-9287-0a89c8769141
# fingerprint order: amount,currency,wallet_from_id,wallet_to_id,token
# fingerprint = SHA512SUM(10EURf086f47f-1526-11e7-9287-0a89c8769141f086f25b-1526-11e7-9287-0a89c8769141THISISYOUROWNTOKENOK)
# fingerprint_signed = crypt.sign(private_key, fingerprint);
curl -X POST "https://api.soldo.com/business/v2/XXXX" \
-H "Authorization: Bearer {access_token}" \
-H "X-Soldo-Fingerprint: 15fa305e5537de2e86c91872e709a1bf4dc0ee86c3c8841a70128881dd2ff21080cf9cd0d20addfa6d2f911e84fd30978fe9e32b6175d43e6619279ab267a829"
-H "X-Soldo-Fingerprint-Signature: bBBeBGDPLhG+mkVAXHnbLcOsbIuSv59ZJDIgt1QEoOeYdtE6VemmBludfLbJCEsMK7IRgX0KBVoUeOHDKqAj5KP73cFB8oAaz48+GEPmZ3l+cJR5lsqpeou5UqUBbSPADYdBat+Zz3A3aTsEk7tnADBYVZO59zoTC3/7CuvGraIYxv5JZAo/WehbeG9eYL+cXSMSp1ym2YUNkYi7YnmfawJLrQtXa8E5CH19B6PNc+AoU7jHxYWv/Cly2D53xUgzj3ewBTVgB/W3hyaOx4Qwys5IskHz2QoEWNFBpKUTTogYHkJcBxNGn7QA+wmJEjmSN+PxQUEKIHHWGXFla18Niw=="
Ping - Who am I
Endpoints to get information about the owner of the access token.
curl -X GET "https://api.soldo.com/business/v2/ping/whoami" \
-H "Authorization: Bearer {access_token}"
The above command returns JSON structured like this:
{
"name": "Smith",
"surname": "Green",
"username": "sgreen",
"company_name": "Soldo",
"email": "sgreen@soldo.com",
"scopes": [
"company_write",
"company_read",
"employee_write",
"employee_read",
"group_read",
"group_write",
"wallet_read",
"wallet_write",
"card_read",
"card_write",
"transaction_read",
"transaction_write"
]
}
Required scope
company_read
HTTP Request
GET
/business/v2/ping/whoami
Request Parameters
Not applicable
Response Parameters
The return Object is a user with the following structure:
Parameter | Description |
---|---|
name |
The name of the user |
surname |
The surname of the user |
username |
The username of the user |
company_name |
The company name of the user |
email |
The email address of the user |
scopes |
The list of the scopes granted for the API Key |
Pagination
Endpoints which enumerate objects support cursor-based pagination.
curl -X GET "https://api.soldo.com/business/v2/XXXX?p=0&s=50&d=DESC&props=id&props=status" \
-H "Authorization: Bearer {access_token}"
The above command returns JSON structured like this:
{
"total": 168,
"pages": 7,
"page_size": 25,
"current_page": 0,
"results_size": 25,
"results": [
...
]
}
Request Parameters
Parameter | Description | Type |
---|---|---|
p |
It indicates the specific page to display (the counter starts from zero) | Query Parameter optional |
s |
It indicates the number of items per page (max 50 items per page) | Query Parameter optional |
d |
It indicates how the pages are ordered (ASC , DESC ) |
Query Parameter optional |
props |
It indicates the sorting direction applied to the above parameters. To apply a sorting on multiple parameters, set as many times the props parameter in the request, example: props=id&props=status |
Query Parameter optional |
Response Parameters
All the methods returning a list of resources or objects have the following fields.
Parameter | Description |
---|---|
total |
It represents the total number of available items in the list |
pages |
It represents the total number of available pages |
page_size |
It represents the number of items per page |
current_page |
It indicates the current page (the counter starts from zero) |
results_size |
It indicates the size of the array results |
results |
It represents the fetched JSON array with the resources and objects listed (Employee, Wallet, Card, Groups, Transaction, Tag, Order) |
Company
Endpoints to manage your company information in the Soldo account.
Company
The company Object has the following structure
Parameter | Description |
---|---|
name |
The name of your company |
vat_number |
The VAT number of your company |
company_account_id |
The company ID of your company requested at the login |
shipping_address |
The default shipping address of your company |
time_zone |
The time zone name of the market country your Soldo account is registered in (based on tz database format). |
market |
The ISO 3166-1 alpha-3 code of the country your Soldo account is registered in. |
Get company
Endpoint to retrieve your company info.
curl -X GET "https://api.soldo.com/business/v2/company" \
-H "Authorization: Bearer {access_token}"
The above command returns JSON structured like this:
{
"name": "Soldo",
"vat_number": "1234567890",
"company_account_id": "ABCD0123",
"shipping_address": {
"public_id": "6ecfb161-47b9-4de7-acaa-533c3200910b",
"addressee_name": "John",
"addressee_surname": "Smith",
"line1": "Address of John",
"line2": "Foo street 33",
"line3": "Other street",
"country": "GB",
"county": "LD",
"city": "London",
"post_code": "00000",
"default_shipping": false,
"address_category": "COMPANY",
"creation_time": "2021-02-24T14:13:54Z",
"last_update": "2021-02-24T14:13:54Z"
},
"time_zone": "Europe/London",
"market": "GBR"
}
Required scope
company_read
HTTP Request
GET
/business/v2/company
Request Parameters
Not applicable
Response Parameters
The return Object is a Company.
Addresses
Endpoints to view and manage the shipping addresses of your account.
Address
The address Object has the following structure:
Parameter | Description | Sortable |
---|---|---|
public_id |
The public address ID | No |
addressee_name |
Name of the addressee | No |
addressee_surname |
Surname of the addressee | No |
line1 |
Actual name of the address | No |
line2 |
Address street | No |
line3 |
Optional other street | No |
country |
The country of the address | No |
county |
The county of the address | No |
city |
The city of the address | No |
post_code |
The post code of the address | No |
default_shipping |
True if the address is the default shipping address | No |
address_type |
The type of the address (SHIPPING , REGISTERED , TRADING ) |
no |
address_category |
The category of the address (USER , COMPANY ) |
No |
employee_id |
The User public ID, only if address_category is USER |
No |
creation_time |
The date and time when the address was created | No |
last_update |
The date of the last update to the address | No |
Search Addresses
Endpoints to search Addresses.
# find all the addresses
curl -X GET "https://api.soldo.com/business/v2/addresses" \
-H "Authorization: Bearer {access_token}"
# find all the addresses for a specific user
curl -X GET "https://api.soldo.com/business/v2/addresses?user_id={user_id}" \
-H "Authorization: Bearer {access_token}"
The above commands returns JSON structured like this:
{
"total": 2,
"results": [
{
"public_id": "6ecfb161-47b9-4de7-acaa-533c3200910b",
"addressee_name": "John",
"addressee_surname": "Smith",
"line1": "Address of John",
"line2": "Foo street 33",
"line3": "Other street",
"country": "GB",
"county": "LD",
"city": "London",
"post_code": "00000",
"default_shipping": false,
"address_type": "REGISTERED",
"address_category": "COMPANY",
"creation_time": "2021-02-24T14:13:54Z",
"last_update": "2021-02-24T14:13:54Z"
},
{
"public_id": "6ecfb161-47b9-4de7-acaa-533c3200910b",
"addressee_name": "John",
"addressee_surname": "Smith",
"line1": "Address of John",
"line2": "Foo street 33",
"line3": "Other street",
"country": "GB",
"county": "LD",
"city": "London",
"post_code": "00000",
"default_shipping": false,
"address_type": "SHIPPING",
"address_category": "COMPANY",
"creation_time": "2021-02-24T14:13:54Z",
"last_update": "2021-02-24T14:13:54Z"
}
]
}
Required scope
address_read
HTTP Request
GET
/business/v2/addresses
Response Parameters
The return object is a single Address.
Get Address
Endpoint to search an Address by public ID.
# find the specific address
curl -X GET "https://api.soldo.com/business/v2/addresses/{addressId}" \
-H "Authorization: Bearer {access_token}"
The above command returns JSON structured like this:
{
"public_id": "6ecfb161-47b9-4de7-acaa-533c3200910b",
"addressee_name": "John",
"addressee_surname": "Smith",
"line1": "Address of John",
"line2": "Foo street 33",
"line3": "Other street",
"country": "GB",
"county": "LD",
"city": "London",
"post_code": "00000",
"default_shipping": false,
"address_type": "SHIPPING",
"address_category": "USER",
"employee_id": "PKIC2375_000003",
"creation_time": "2021-02-24T14:13:54Z",
"last_update": "2021-02-24T14:13:54Z"
}
Required scope
address_read
HTTP Request
GET
/business/v2/addresses/{addressId}
Response Parameters
The return object is a single Address.
Add Address
Endpoints to create an Address.
# create a company address
curl -X POST \
"https://api.soldo.com/business/v2/addresses" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint_signature}" \
-H "Content-Type: application/json" \
-d '{
"addressee_name": "Addressee name",
"addressee_surname": "Addressee Surname",
"line1": "Address name",
"line2": "Street name",
"line3": "Other street name",
"country": "Country code",
"county": "County code",
"city": "City name",
"post_code": "00000",
"default_shipping": false,
"resource_type": "COMPANY"
}'
# create a user address
curl -X POST \
"https://api.soldo.com/business/v2/addresses" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint_signature}" \
-H "Content-Type: application/json" \
-d '{
"addressee_name": "Addressee name",
"addressee_surname": "Addressee Surname",
"line1": "Address name",
"line2": "Street name",
"line3": "Other street name",
"country": "Country code",
"county": "County code",
"city": "City name",
"post_code": "00000",
"default_shipping": false,
"resource_type": "USER",
"employee_id": "LVRS6404-000002"
}'
Fingerprint Order
addressee_name, addressee_surname, line1, line2, line3, country, county, city, post_code, default_shipping, resource_type, employee_id, token
Required scope
address_write
HTTP Request
POST
/business/v2/addresses
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
AddAddress |
Add address JSON parameters | Body Parameter Required |
Add address JSON parameters
Parameter | Description | Required |
---|---|---|
addressee_name |
The name of the addressee | No |
addressee_surname |
The surname of the addressee | No |
line1 |
The name of the address | Yes |
line2 |
The primary street of the address | No |
line3 |
The optional secondary street | No |
country |
Country code in ISO 3166-1 alpha-3 standard (e.g. ITA , GBR ) |
Yes |
county |
County code | No |
city |
City name | Yes |
post_code |
Post code of the city | Yes |
default_shipping |
true if it is the default shipping address (for COMPANY addresses only) |
No |
resource_type |
The type of the address (USER , COMPANY ) |
Yes |
employee_id |
Public Id of the owner of the address | Yes (only when resource_type is USER ) |
Response Parameters
The return object is the single Address created.
Delete Address
Endpoints to remove an Address.
# delete a company address
curl -X DELETE \
"https://api.soldo.com/business/v2/addresses/{addressId}" \
-H "Authorization: Bearer {access_token}" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint_signature}"
# delete a user address
curl -X DELETE \
"https://api.soldo.com/business/v2/addresses/{addressId}" \
-H "Authorization: Bearer {access_token}" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint_signature}"
Fingerprint Order
addressId, token
Required scope
address_write
HTTP Request
DELETE
/business/v2/addresses/{addressId}
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
addressId |
The public address ID | Path Parameter Required |
Response Parameters
No Content as result (HTTP response status code 204 No Content).
Update Address
Endpoints to update an Address by address ID.
# update company address
curl -X PUT \
"https://api.soldo.com/business/v2/addresses/{addressId}" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}"
-H "Content-Type: application/json" \
-d '{
"addressee_name": "Addressee name",
"addressee_surname": "Addressee Surname",
"line1": "Address name",
"line2": "Street name",
"line3": "Other street name",
"country": "Country code",
"county": "County code",
"city": "City name",
"post_code": "00000",
"default_shipping": false,
"resource_type": "COMPANY"
}'
# update user address
curl -X PUT \
"https://api.soldo.com/business/v2/addresses/{addressId}" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}"
-H "Content-Type: application/json" \
-d '{
"addressee_name": "Addressee name",
"addressee_surname": "Addressee Surname",
"line1": "Address name",
"line2": "Street name",
"line3": "Other street name",
"country": "Country code",
"county": "County code",
"city": "City name",
"post_code": "00000",
"default_shipping": false,
"resource_type": "USER",
"employee_id": "LVRS6404-000002"
}'
Fingerprint Order
public_id, addressee_name, addressee_surname, line1, line2, line3, country, county, city, post_code, default_shipping, resource_type, employee_id, token
Required scope
address_write
HTTP Request
PUT
/business/v2/addresses/{addressId}
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
addressId |
The public address ID | Path Parameter Required |
UpdateAddress |
Update address JSON parameters | Body Parameter Required |
Update address JSON parameters
Parameter | Description |
---|---|
addressee_name |
The name of the addressee |
addressee_surname |
The surname of the addressee |
line1 |
The name of the address |
line2 |
The primary street of the address |
line3 |
The optional secondary street |
country |
Country code in ISO 3166-1 alpha-3 standard (e.g. ITA , GBR ) |
county |
County code |
city |
City name |
post_code |
Post code of the city |
default_shipping |
true if it is the default shipping address (for COMPANY addresses only) |
resource_type |
The type of the address (USER , COMPANY ) |
employee_id |
Public Id of the owner of the address (mandatory only for USER resource type) |
Response Parameters
The return object is a single Address.
Users
Endpoints to manage the Users in your account.
- A user is any employee of the company
- A user is always assigned with a role, which determines what a user can do and which resources (other users, groups, wallets, cards) they can see and manage
- A user may have login details for the Soldo web console and mobile app, according to their role
User
The user object has the following structure
Parameter | Description | Sortable |
---|---|---|
id |
The public user ID | Yes |
name |
The name of the user | Yes |
middlename |
The middlename of the user | No |
surname |
The surname of the user | Yes |
job_title |
The job title of the user | Yes |
email |
The email address of the user | No |
dob |
Date of birth | No |
mobile |
The mobile number of the user including the country code (e.g. +447441234567) | No |
mobile_prefix |
The mobile number country code (e.g. +44) | No |
mobile_access |
Boolean property (true, false): it determines whether the user has mobile access | No |
web_access |
Boolean property (true, false): it determines whether the user has web access | No |
custom_reference_id |
The employee reference of the user in an external system | Yes |
status |
The status of the user (ACTIVE , BLOCKED , SUSPENDED , PENDING , ARCHIVED ) |
Yes |
visible |
Boolean property (true, false): it determines whether the user is visible in the web console | Yes |
groups |
The list of ID and leader property of the Groups the user is member of | No |
shipping_address |
The shipping Address of the user | |
creation_time |
The date and time when the user was created | Yes |
Search user
Endpoints to find Users using filters parameters.
# find all the users (max 50 per Page)
curl -X GET "https://api.soldo.com/business/v2/employees" \
-H "Authorization: Bearer {access_token}"
# find all the users with pagination
curl -X GET "https://api.soldo.com/business/v2/employees?p={page_number}&s={page_size}" \
-H "Authorization: Bearer {access_token}"
# find filtering by employee reference
curl -X GET "https://api.soldo.com/business/v2/employees?customreferenceId={customreferenceId}" \
-H "Authorization: Bearer {access_token}"
# find filtering by param (user's status 'ACTIVE' and surname 'Ferguson')
curl -X GET "https://api.soldo.com/business/v2/employees?status=ACTIVE&surname=Ferguson" \
-H "Authorization: Bearer {access_token}"
The above commands returns JSON structured like this:
{
"total": 2,
"pages": 1,
"page_size": 25,
"current_page": 0,
"results_size": 2,
"results": [
{
"id": "62464771",
"name": "KXAWM",
"surname": "KXAWMSurname",
"job_title": "Content Strategist",
"email": "454723042106@soldo.com",
"dob": "1970-01-01",
"mobile": "+44454723042106",
"custom_reference_id": "myFirstCustomReference",
"status": "ACTIVE",
"groups": [
"785b6dbc-4dbe-489d-93ca-0c3f12844b26"
],
"creation_time": "2020-07-15T11:00:10Z"
},
{
"id": "12621231",
"name": "Blake",
"surname": "Ferguson",
"email": "blake.ferguson@soldi.co.uk",
"dob": "1977-01-01",
"mobile": "+44100001",
"status": "ACTIVE",
"visible": true,
"groups": [],
"creation_time": "2020-07-15T11:00:10Z"
}
]
}
Required scope
employee_read
HTTP Request
GET
/business/v2/employees
Request Parameters
Parameter | Description | Type |
---|---|---|
customreferenceId |
The employee reference of the user in an external system | Query Parameter optional |
name |
The name of the user | Query Parameter optional |
surname |
The surname of the user | Query Parameter optional |
email |
The email address of the user | Query Parameter optional |
mobile |
The mobile number of the user | Query Parameter optional |
jobTitle |
The job title of the user | Query Parameter optional |
status |
The status of the user | Query Parameter optional |
visible |
The visibility property of the user | Query Parameter optional |
groupId |
The public ID of the Group the user is a member of | Query Parameter optional |
id |
The ID of the user | Query Parameter optional |
Response Parameters
The results array contains User.
Get user
Endpoint to retrieve a specific User by public ID.
# find a specific user
curl -X GET "https://api.soldo.com/business/v2/employees/{employeeId}" \
-H "Authorization: Bearer {access_token}"
The above command returns JSON structured like this:
{
"id": "soldo-000027",
"name": "John",
"middlename": "William",
"surname": "Snow",
"email": "jsnow@soldo.com",
"mobile_prefix": "+39",
"mobile": "+3911123323232",
"status": "ACTIVE",
"visible": true,
"mobile_access": true,
"web_access": false,
"groups": [
"785b6dbc-4dbe-489d-93ca-0c3f12823b55"
],
"shipping_address": {
"public_id": "6ecfb161-47b9-4de7-acaa-533c3200910b",
"addressee_name": "John",
"addressee_surname": "Smith",
"line1": "Address of John",
"line2": "Foo street 33",
"line3": "Other street",
"country": "GB",
"county": "LD",
"city": "London",
"post_code": "00000",
"default_shipping": false,
"address_category": "USER",
"employee_id": "soldo-000027",
"creation_time": "2021-02-24T14:13:54Z",
"last_update": "2021-02-24T14:13:54Z"
},
"creation_time": "2020-07-15T11:00:10Z"
}
Required scope
employee_read
HTTP Request
GET
/business/v2/employees/{employeeId}
Request Parameters
Parameter | Description | Type |
---|---|---|
employeeId |
Public user ID | Path Parameter Required |
Response Parameters
The return object is a single User.
Add user
Endpoint to add a new User
# add a new user
curl -X POST "https://api.soldo.com/business/v2/employees" \
-H "Authorization: Bearer {access_token}" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}" \
-H "Content-Type: application/json" \
-d '{
"request_timestamp": 1576850500000,
"name": "aname",
"middlename": "amiddlename",
"surname": "asurname",
"dob": "1977-01-01",
"job_title": "Boss",
"custom_reference_id": "acustomreference",
"mobile": "12345678",
"mobile_prefix": "+44",
"mobile_access": false,
"web_access": true
}'
The above command returns JSON structured like this:
{
"id": "order-id",
"status": "PLACED",
"is_valid": true,
"error_code": "",
"total_paid_amount": 0,
"total_paid_currency": "EUR",
"items": [
{
"item_type": "employee"
}
],
"total_items": 1
}
Fingerprint Order
request_timestamp, name, surname, mobile_access, web_access, token
Required scope
employee_write
HTTP Request
POST
/business/v2/employees/
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
AddUser |
Add user JSON Parameters | Body Parameter Required |
Add user JSON parameters
Parameter | Description | Required |
---|---|---|
request_timestamp |
The epoc timestamp in millis. This is checked in Soldo. Requests with timestamp older than 5 seconds will be rejected. | Yes |
name |
The name of the user | Yes |
middlename |
The middlename of the user | No |
surname |
The surname of the user | Yes |
job_title |
The job title of the user | No |
email |
The email address of the user | No |
dob |
Date of birth | No |
mobile |
The mobile number of the user | No |
mobile_prefix |
The mobile number country code (e.g. +44) | No |
mobile_access |
Boolean property (true, false): it determines whether the user has mobile access | Yes |
web_access |
Boolean property (true, false): it determines whether the user has web access | Yes |
custom_reference_id |
The employee reference of the user in an external system | No |
Response Parameters
The return object is a single Order.
Update user data
Endpoint to update a parameter value of a specific User.
# update a parameter value of a specific user
curl -X PUT "https://api.soldo.com/business/v2/employees/{employeeId}" \
-H "Authorization: Bearer {access_token}" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}" \
-H "Content-Type: application/json" \
-d '{
"custom_reference_id": "mySecondCustomReference",
"job_title": "phd",
"mobile_number": "+3911123323232",
"mobile_prefix": "+39",
"email": "jsnow@soldo.com",
"enable_mobile_credential": true,
"enable_web_credential": false
}'
The above command returns JSON structured like this:
{
"id": "soldo-000027",
"name": "John",
"middlename": "William",
"surname": "Snow",
"email": "jsnow@soldo.com",
"mobile_prefix": "+39",
"mobile": "+3911123323232",
"status": "ACTIVE",
"visible": true,
"mobile_access": true,
"web_access": false,
"creation_time": "2020-07-15T11:00:10Z"
}
Fingerprint Order
custom_reference_id,job_title,mobile_number,mobile_prefix,email,enable_mobile_credential, enable_web_credential, token
Required scope
employee_write
HTTP Request
PUT
/business/v2/employees/{employeeId}
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
employeeId |
Public user ID | Path Parameter Required |
UpdateEmployee |
Update user JSON Parameters | Body Parameter Required |
Update user JSON parameters
Parameter | Description |
---|---|
custom_reference_id |
The employee reference of the user in an external system |
job_title |
The job title of the user, |
mobile_number |
The mobile number of the user including the country code (e.g. +447441234567) |
mobile_prefix |
The mobile number country code (e.g. +44), it must be the same included in the mobile_number field |
email |
The email of the user it is required for web credentials |
enable_mobile_credential |
True if the user has the mobile access enabled |
enable_web_credential |
True if the user has the web access enabled |
Response Parameters
The return object is a single User.
Delete user
Endpoint to delete a specific User.
# delete a specific user
curl -X DELETE "https://api.soldo.com/business/v2/employees/{employeeId}" \
-H "Authorization: Bearer {access_token}" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}"
Fingerprint Order
employeeId, token
Required scope
employee_write
HTTP Request
DELETE
/business/v2/employees/{employeeId}
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
employeeId |
Public user ID | Path Parameter Required |
Response Parameters
No Content as result (HTTP response status code 204 No Content).
Expense Review
Endpoints to the expenses and configure the expense review feature on your account.
Expense Review
The Expense Review object has the following structure:
Parameter | Description | Sortable |
---|---|---|
user_id |
The public ID of the User | No |
user_name |
The name of the User | Yes |
surname |
The surname of the User | Yes |
job_title |
The job title of the User | Yes |
to_review_transaction |
The number of the expenses having status TO_REVIEW |
No |
reviewed_transaction |
The number of the expenses already reviewed (status is not TO_REVIEW ) |
No |
total_transaction |
The number of all expenses made during the selected period | No |
transaction_to_review |
An array containing the public ID of the Expenses having status TO_REVIEW |
No |
transaction_reviewed |
An array containing the public ID of the Expenses already reviewed (status is not TO_REVIEW ) |
No |
Search Expenses
Endpoint to find users with Expenses to review using filters parameters.
# find last 30 days expenses (max 50 per Page)
curl -X GET "https://api.soldo.com/business/v2/expense-review" \
-H "Authorization: Bearer {access_token}"
# find last 30 days expenses with pagination
curl -X GET "https://api.soldo.com/business/v2/expense-review?p={page_number}&s={page_size}" \
-H "Authorization: Bearer {access_token}"
# find filtering with dates
curl -X GET "https://api.soldo.com/business/v2/expense-review?fromDate={fromDate}&toDate={toDate}" \
-H "Authorization: Bearer {access_token}"
# find filtering by text
curl -X GET "https://api.soldo.com/business/v2/expense-review?text={text}" \
-H "Authorization: Bearer {access_token}"
The above command return JSON structured like this:
{
"total": 2,
"pages": 1,
"page_size": 25,
"current_page": 0,
"results_size": 2,
"results": [
{
"user_id": "USER-000000",
"user_name": "Marco",
"user_surname": "Giusti",
"job_title": "job_title",
"to_review_transaction": 1,
"total_transaction": 4
},
{
"user_id": "USER-000007",
"user_name": "Fabio",
"user_surname": "Carta",
"job_title": "job_title",
"to_review_transaction": 0,
"total_transaction": 1
}
]
}
Required scope
expense_review_read
HTTP Request
GET
/business/v2/expense-review
Request Parameters
Parameter | Description | Type |
---|---|---|
fromDate |
The beginning of the period of the search fromDate included (i.e. greater than to)(Formats: yyyy-MM-dd, yyyy-MM-ddThh:mm:ss, yyyy-MM-ddThh:mm:ssZ) |
Query Parameter optional |
toDate |
The end of the period of the search toDate included (i.e. less than)(Formats: yyyy-MM-dd, yyyy-MM-ddThh:mm:ss, yyyy-MM-ddThh:mm:ssZ) |
Query Parameter optional |
text |
A simple text to search in the user's fields (name , surname ) |
Query Parameter optional |
Response Parameters
The result is an array containing users with expenses to review.
Get Expenses
Endpoint to get the Expenses of a specific User by its public ID.
# find the expenses by user_id
curl -X GET "https://api.soldo.com/business/v2/expense-review/{user_id}" \
-H "Authorization: Bearer {access_token}"
# find filtering with dates
curl -X GET "https://api.soldo.com/business/v2/expense-review/{user_id}?fromDate={fromDate}&toDate={toDate}" \
-H "Authorization: Bearer {access_token}"
# find filtering by multiple statuses (find reports with status1 or status2)
curl -X GET "https://api.soldo.com/business/v2/expense-review/{user_id}?status={status}&status={status}&fromDate={fromDate}&toDate={toDate}" \
-H "Authorization: Bearer {access_token}"
The above command return JSON structured like this:
{
"user_id": "USER-000000",
"user_name": "Marco",
"user_surname": "Giusti",
"to_review_transaction": 7,
"reviewed_transaction": 3,
"total_transaction": 10,
"transaction_to_review": [
"00000-100778713-1649149197317",
"0000-289758460-1639392555959",
"0000-289758460-1639149730737",
"0000-529339245-1637951886513",
"0000-529339245-1637763781783",
"0000-529339245-1637763788774",
"0000-289758460-1635177764695"
],
"transaction_reviewed": [
"0000-102708914-1648563925402",
"0000-101147699-1648563597018",
"0000-101147574-1647532107772"
]
}
Required scope
expense_review_read
HTTP Request
GET
/business/v2/expense-review/{user_id}
Request Parameters
Parameter | Description | Type |
---|---|---|
fromDate |
The beginning of the period of the search fromDate included (i.e. greater than to)(Formats: yyyy-MM-dd, yyyy-MM-ddThh:mm:ss, yyyy-MM-ddThh:mm:ssZ) |
Query Parameter optional |
toDate |
The end of the period of the search toDate included (i.e. less than)(Formats: yyyy-MM-dd, yyyy-MM-ddThh:mm:ss, yyyy-MM-ddThh:mm:ssZ) |
Query Parameter optional |
status |
The status of the expenses (APPROVED , DENIED , TO_REVIEW ) |
Query Parameter optional |
Expense Review status
An expense can assume the following status:
APPROVED
the expense is approved.DENIED
the expense is denied.TO_REVIEW
the expense has to be reviewed.
Response Parameters
The return object is a single Expense Review.
Download Expense Report
Endpoint to download an expense report for a specific User by its public ID.
# get link to download report
curl -X POST 'https://api.soldo.com/business/v2/expense-review/{user_id}/report' \
-H 'X-Soldo-Fingerprint: {fingerprint}' \
-H 'X-Soldo-Fingerprint-Signature: {fingerprint-signature}' \
-H 'Authorization: Bearer {access_token}' \
-H 'Content-Type: application/json' \
-d '{
"request_timestamp": 1652784063508,
"status": ["APPROVED","DENIED"],
"from_date": "2021-04-05T07:58:00",
"to_date": "2021-04-07T07:58:00",
"file_type": "PDF",
"language":"it"
}'
The above command return JSON structured like this:
{
"presigned_url": "https://statements-dev.s3.eu-west-1.amazonaws.com/business/temp/report/expense_report/3449/Report%20Spese%202021-04-05_2021-04-07.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220517T104244Z&X-Amz-SignedHeaders=host&X-Amz-Expires=1800&X-Amz-Credential=AKIAIQEWCK6CO73G6M5A%2F20220517%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Signature=83da22608862abc71853826d195731dd86e01b4823aae3eed79886285072b330"
}
Fingerprint Order
user_id, request_timestamp, from_date, to_date, file_type, language, token
Required scope
expense_review_read
HTTP Request
POST
/business/v2/expense-review/{user_id}/report
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
ExpenseReport |
Expense Report JSON Parameters | Body Parameters Required |
Expense Report JSON parameters
Parameter | Description | Required |
---|---|---|
request_timestamp |
The epoc timestamp in millis. This is checked in Soldo. Requests with timestamp older than 5 seconds will be rejected. | Yes |
from_date |
The beginning of the period of the search from_date included (i.e. greater than to)(Formats: yyyy-MM-dd, yyyy-MM-ddThh:mm:ss, yyyy-MM-ddThh:mm:ssZ) |
Yes |
to_date |
The end of the period of the search to_date included (i.e. less than)(Formats: yyyy-MM-dd, yyyy-MM-ddThh:mm:ss, yyyy-MM-ddThh:mm:ssZ) |
Yes |
status |
The status of the expenses (APPROVED , DENIED , TO_REVIEW ) |
Yes |
file_type |
The type of the report (PDF , PDF_WITH_ATTACHMENTS ), default is PDF_WITH_ATTACHMENTS |
No |
language |
The language of the report (it , en ) |
Yes |
Response Parameters
The return object is a link to download the expense report.
Send Reminder
Endpoint to send a reminder to a specific User by its public ID.
# send reminder
curl -X PUT 'https://api.soldo.com/business/v2/expense-review/{user_id}/reminder/' \
-H 'X-Soldo-Fingerprint: {fingerprint}' \
-H 'X-Soldo-Fingerprint-Signature: {fingerprint-signature}' \
-H 'Authorization: Bearer {access_token}' \
-H 'Content-Type: application/json' \
-d '{
"request_timestamp": 1652785522351,
"from_date": "2021-04-05T07:58:00",
"to_date": "2021-04-07T07:58:00"
}'
Fingerprint Order
user_id, request_timestamp, from_date, to_date, token
Required scope
expense_review_read
HTTP Request
POST
/business/v2/expense-review/{user_id}/reminder
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
ExpenseReminder |
Expense Reminder JSON Parameters | Body Parameters Required |
Expense Reminder JSON parameters
Parameter | Description | Required |
---|---|---|
request_timestamp |
The epoc timestamp in millis. This is checked in Soldo. Requests with timestamp older than 5 seconds will be rejected. | Yes |
from_date |
The beginning of the period of the search from_date included (i.e. greater than to)(Formats: yyyy-MM-dd, yyyy-MM-ddThh:mm:ss, yyyy-MM-ddThh:mm:ssZ) |
Yes |
to_date |
The end of the period of the search to_date included (i.e. less than)(Formats: yyyy-MM-dd, yyyy-MM-ddThh:mm:ss, yyyy-MM-ddThh:mm:ssZ) |
Yes |
Response Parameters
No Content as result (HTTP response status code 204 No Content).
Update Expense Status
Endpoint to update the status of a specific Expense.
# update expense status
curl -X PUT 'https://api.soldo.com/business/v2/transactions/{transaction_id}/expense-review/update-status' \
-H 'X-Soldo-Fingerprint: {fingerprint}' \
-H 'X-Soldo-Fingerprint-Signature: {fingerprint-signature}' \
-H 'Authorization: Bearer {access_token}' \
-H 'Content-Type: application/json' \
-d '{
"status": "TO_REVIEW",
"statusCategory": "PERSONAL_EXPENSE"
}'
Fingerprint Order
transaction_id, status, statusCategory, token
Required scope
expense_review_write
HTTP Request
PUT
/business/v2/transactions/{transaction_id}/expense-review/update-status
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
UpdateExpenseStatus |
Update Expense Status JSON Parameters | Body Parameters Required |
Update Expense Status JSON parameters
Parameter | Description | Required |
---|---|---|
id |
The public transaction ID | Yes |
status |
The status of approval of the expense (APPROVED , DENIED , TO_REVIEW ) |
No |
status_category |
The reason for the expense deny (AGAINST_POLICY , PERSONAL_EXPENSE , OTHER ). Only required in case of DENIED status |
No |
status_reason |
A text message describing the deny reason of the expense (only valid and required in case of DENIED status and OTHER category, max 60 chars) |
No |
Response Parameters
No Content as result (HTTP response status code 204 No Content).
Update Expense Type
Endpoint to update the type of a specific Expense.
# update expense type
curl -X PUT 'https://api.soldo.com/business/v2/transactions/{transaction_id}/expense-review/change-type' \
-H 'X-Soldo-Fingerprint: {fingerprint}' \
-H 'X-Soldo-Fingerprint-Signature: {fingerprint-signature}' \
-H 'Authorization: Bearer {access_token}' \
-H 'Content-Type: application/json' \
-d '{
"type": "COMPANY"
}'
Fingerprint Order
transaction_id, type, token
Required scope
expense_review_write
HTTP Request
PUT
/business/v2/transactions/{transaction_id}/expense-review/change-type/
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
UpdateExpenseType |
Update Expense Type JSON Parameters | Body Parameters Required |
Update Expense Type JSON parameters
Parameter | Description | Required |
---|---|---|
id |
The public transaction ID | Yes |
type |
The type of the expense (COMPANY , EMPLOYEE ) |
Yes |
Response Parameters
No Content as result (HTTP response status code 204 No Content).
Request Expense Info
Endpoint to request info to a User about a specific Expense.
# request expense info
curl -X PUT 'https://api.soldo.com/business/v2/transactions/{transaction_id}/expense-review/request-info' \
-H 'X-Soldo-Fingerprint: {fingerprint}' \
-H 'X-Soldo-Fingerprint-Signature: {fingerprint-signature}' \
-H 'Authorization: Bearer {access_token}' \
-H 'Content-Type: application/json' \
-d '{
"message": "Request info to employee"
}'
Fingerprint Order
transaction_id, message, token
Required scope
expense_review_write
HTTP Request
PUT
/business/v2/transactions/{transaction_id}/expense-review/request-info/
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
RequestExpenseInfo |
Request Expense Info JSON Parameters | Body Parameters Required |
Request Expense Info JSON parameters
Parameter | Description | Required |
---|---|---|
id |
The public transaction ID | Yes |
message |
A textual message describing the additional information requested to the user (max 500 chars) | Yes |
Response Parameters
No Content as result (HTTP response status code 204 No Content).
Expense Review Configuration
The expense review configuration object has the following structure:
Parameter | Description | Sortable |
---|---|---|
enabled |
The status of the expense review feature | No |
start_date |
The starting date from which the expenses can be reviewed | Yes |
update_timestamp |
The date and time when the configuration was last updated | Yes |
transaction_categories |
The categories of transactions considered as expenses to be reviewed (Payment ) |
No |
activity_groups |
The types of cards whose transactions are considered as expenses to be reviewed (USER , PURCHASE , COMPANY , SUBSCRIPTION , ONLINE_ADS ) |
No |
policy_url |
The url of the company spending policy | No |
locked |
The status of the configuration | No |
Get Expense Review Configuration
Endpoint to get the Expense Review Configuration of the account.
# get the expense review configuration
curl -X GET "https://api.soldo.com//business/v2/expense-review/configuration" \
-H "Authorization: Bearer {access_token}"
The above command return JSON structured like this:
{
"enabled": true,
"start_date": "2022-03-02T23:00:00Z",
"update_timestamp": "2022-05-13T16:14:44Z",
"transaction_categories": [
"Payment"
],
"activity_groups": [
"PURCHASE",
"COMPANY"
],
"policy_url": "https://www.web.policy.pdf",
"locked": false
}
Required scope
expense_review_read
HTTP Request
GET
/business/v2/expense-review/configuration
Response Parameters
The return object is a single Expense Review Configuration.
Add Expense Review Configuration
Endpoint to add a new Expense Review Configuration.
# add an expense review configuration
curl -X POST 'https://api.soldo.com/business/v2/expense-review/configuration' \
-H 'X-Soldo-Fingerprint: {fingerprint}' \
-H 'X-Soldo-Fingerprint-Signature: {fingerprint-signature}' \
-H 'Authorization: Bearer {access_token}' \
-H 'Content-Type: application/json' \
-d '{
"request_timestamp": 1652786470994,
"start_date": "2022-03-20T00:00:00Z",
"transaction_categories": ["Payment"],
"activity_groups": ["USER"],
"policy_url": "https://www.web.policy.pdf""
}'
The above command return JSON structured like this:
{
"enabled": true,
"start_date": "2022-03-20T00:00:00Z",
"update_timestamp": "2022-05-17T15:42:37.960Z",
"transaction_categories": [
"Payment"
],
"activity_groups": [
"PURCHASE",
"USER"
],
"policy_url": "https://www.policyurl.url",
"locked": true
}
Fingerprint Order
request_timestamp, start_date, policy_url, token
Required scope
expense_review_write
HTTP Request
POST
/business/v2/expense-review/configuration
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
AddExpenseConfiguration |
Add Expense Configuration JSON Parameters | Body Parameters Required |
Add Expense Configuration JSON parameters
Parameter | Description | Required |
---|---|---|
request_timestamp |
The epoc timestamp in millis. This is checked in Soldo. Requests with timestamp older than 5 seconds will be rejected. | Yes |
start_date |
The starting date from which the expenses can be reviewed. Can't be older than 90 days | Yes |
transaction_categories |
The categories of transactions considered as expenses to be reviewed (Payment ) |
No |
activity_groups |
The types of cards whose transactions are considered as expenses to be reviewed (USER , PURCHASE , COMPANY , SUBSCRIPTION , ONLINE_ADS ) |
Yes |
policy_url |
The url of the company spending policy | Yes |
Response Parameters
The return object is a single Expense Review Configuration.
Update Expense Review Configuration
Endpoint to update the Expense Review Configuration.
# example to update expense review configuration
curl -X PUT 'https://api.soldo.com/business/v2/expense-review/configuration' \
-H 'X-Soldo-Fingerprint: {fingerprint}' \
-H 'X-Soldo-Fingerprint-Signature: {fingerprint-signature}' \
-H 'Authorization: Bearer {access_token}' \
-H 'Content-Type: application/json' \
-d '{
"start_date": "2022-02-20T00:00:00Z",
"activity_groups": ["PURCHASE"],
"policy_url": "https://www.policy.pdf"
}'
The above command return JSON structured like this:
{
"enabled": true,
"start_date": "2022-02-20T00:00:00Z",
"update_timestamp": "2022-05-17T15:58:26.991Z",
"transaction_categories": [
"Payment"
],
"activity_groups": [
"PURCHASE"
],
"policy_url": "https://www.policy.pdf",
"locked": false
}
Fingerprint Order
request_timestamp, start_date, policy_url, enabled, token
Required scope
expense_review_write
HTTP Request
PUT
/business/v2/expense-review/configuration
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
UpdateExpenseConfiguration |
Update Expense Configuration JSON Parameters | Body Parameters Required |
Update Expense Configuration JSON parameters
Parameter | Description | Required |
---|---|---|
request_timestamp |
The epoc timestamp in millis. This is checked in Soldo. Requests with timestamp older than 5 seconds will be rejected. | Yes |
start_date |
The starting date from which the expenses can be reviewed. Only editable if less than 90 days have passed since the current start_date |
No |
transaction_categories |
The categories of transactions considered as expenses to be reviewed (Payment ) |
No |
activity_groups |
The types of cards whose transactions are considered as expenses to be reviewed (USER , PURCHASE , COMPANY , SUBSCRIPTION , ONLINE_ADS ) |
No |
policy_url |
The url of the company spending policy | No |
Response Parameters
The return object is a single Expense Review Configuration.
Groups
Endpoints to manage the Groups in your account.
Group
The group object has the following structure
Parameter | Description | Sortable |
---|---|---|
id |
The group ID | Yes |
name |
The name of the group | Yes |
custom_reference_id |
The group reference in an external system | Yes |
type |
The group type (TEAM ,PROJECT ,DEPARTMENT ,DIVISION ,SQUAD ,UNIT ,PRODUCTION ) |
No |
note |
Any notes about the group | No |
members |
A list of Users Id belonging to the group | No |
wallets |
A list of Wallets Id related to the group | No |
cards |
A list of Cards Id related to the group | No |
Search group
Endpoints to find Groups using filters parameters.
# find all the groups (max 50 per Page)
curl -X GET "https://api.soldo.com/business/v2/groups" \
-H "Authorization: Bearer {access_token}"
# find all the groups with pagination
curl -X GET "https://api.soldo.com/business/v2/groups?p={page_number}&s={page_size}" \
-H "Authorization: Bearer {access_token}"
# find filtering by group custom reference ID
curl -X GET "https://api.soldo.com/business/v2/groups?customreferenceId={customreference}" \
-H "Authorization: Bearer {access_token}"
# find filtering by group type
curl -X GET "https://api.soldo.com/business/v2/groups?type={type}" \
-H "Authorization: Bearer {access_token}"
The above commands returns JSON structured like this:
{
"total": 2,
"pages": 0,
"page_size": 50,
"current_page": 0,
"results_size": 2,
"results": [
{
"id": "f3dcb1c8-75fe-4165-8ec9-56d7d8e7e708",
"name": "group name 1",
"type": "TEAM",
"custom_reference_id": "extrefid1",
"note": "group notes 1"
},
{
"id": "ea0b866c-dc34-4fe8-86e9-9530344a4491",
"name": "group name 1",
"type": "PROJECT",
"custom_reference_id": "extrefid2",
"note": "group notes 1"
}
]
}
Required scope
group_read
HTTP Request
GET
/business/v2/groups
Request Parameters
Parameter | Description | Type |
---|---|---|
custom_reference_id |
The group reference in an external system | Query Parameter optional |
type |
The group's type (TEAM ,PROJECT ,DEPARTMENT ,DIVISION ,SQUAD ,UNIT ,PRODUCTION ) |
Query Parameter optional |
name |
The name of group | Query Parameter optional |
note |
The note of the group | Query Parameter optional |
text |
A text contained in the name or note of the group |
Query Parameter optional |
Response Parameters
The results array contains Group.
Get group
Endpoint to retrieve a specific Group by ID.
# find a specific group
curl -X GET "https://api.soldo.com/business/v2/groups/{groupId}" \
-H "Authorization: Bearer {access_token}"
The above command returns JSON structured like this:
{
"id": "f3dcb1c8-75fe-4165-8ec9-56d7d8e7e708",
"name": "group name 1",
"type": "TEAM",
"custom_reference_id": "extrefid1",
"note": "group notes 1",
"members": [
"SOLDO-000002",
"SOLDO-000007"
],
"wallets": [
"e8dcb1c8-75fe-4895-8ec9-56d7d8r9e719",
"a6dcb1c8-75fe-3562-8ec9-34t6d8e7e723"
],
"cards": [
"a6dcb1c8-75fe-3562-8ec9-34t6d8e7e723"
]
}
Required scope
group_read
HTTP Request
GET
/business/v2/groups/{groupId}
Request Parameters
Parameter | Description | Type |
---|---|---|
groupId |
The group ID | Path Parameter Required |
Response Parameters
The return object is a single Group.
Add group
Endpoint to add a new Group.
# add a new group
curl -X POST "https://api.soldo.com/business/v2/groups" \
-H "Authorization: Bearer {access_token}" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}" \
-d '{
"name": "group name 1",
"custom_reference_id": "extrefid1",
"note": "group notes 1"
}'
The above command returns JSON structured like this:
{
"id": "f3dcb1c8-75fe-4165-8ec9-56d7d8e7e708",
"name": "group name 1",
"custom_reference_id": "extrefid1",
"note": "group notes 1"
}
Fingerprint Order
name,type,custom_reference_id,note,token
Required scope
group_write
HTTP Request
POST
/business/v2/groups/
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
AddGroup |
Add group JSON Parameters | Body Parameter Required |
Add group JSON parameters
Parameter | Description |
---|---|
name |
The name of the Group |
custom_reference_id |
The Group reference in an external system |
note |
Any notes about the Group |
type |
The group's type (TEAM ,PROJECT ,DEPARTMENT ,DIVISION ,SQUAD ,UNIT ,PRODUCTION ) |
Response Parameters
The return object is a single Group.
Delete group
Endpoints to delete a Group.
# delete a group
curl -X DELETE "https://api.soldo.com/business/v2/groups/{groupId}" \
-H "Authorization: Bearer {access_token}" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}"
Fingerprint Order
id,token
Required scope
group_write
HTTP Request
DELETE
/business/v2/groups/{groupId}
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
groupId |
Group ID | Path Parameter Required |
Response Parameters
No Content as result (HTTP response status code 204 No Content).
Update group data
Endpoint to update a parameter value of a specific Group.
# update a parameter value of a specific group
curl -X PUT "https://api.soldo.com/business/v2/groups/{groupId}" \
-H "Authorization: Bearer {access_token}" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}" \
-H "Content-Type: application/json" \
-d '{
"name": "group name 1",
"custom_reference_id": "extrefid1",
"note": "group notes 1"
}'
The above command returns JSON structured like this:
{
"id": "f3dcb1c8-75fe-4165-8ec9-56d7d8e7e708",
"name": "group name 1",
"custom_reference_id": "extrefid1",
"note": "group notes 1"
}
Fingerprint Order
groupId,name,type,custom_reference_id,note,token
Required scope
group_write
HTTP Request
PUT
/business/v2/groups/{groupId}
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
groupId |
Group ID | Path Parameter Required |
UpdateGroup |
Update group JSON Parameters | Body Parameter Required |
Update group JSON parameters
Parameter | Description |
---|---|
name |
The name of the Group |
custom_reference_id |
The Group reference in an external system |
note |
Any notes about the Group |
type |
The group's type (TEAM ,PROJECT ,DEPARTMENT ,DIVISION ,SQUAD ,UNIT ,PRODUCTION ) |
Response Parameters
The return object is a single Group.
Add resource to group
Endpoints to add a new resource to a Group.
# add a new wallet to the group
curl -X POST "https://api.soldo.com/business/v2/groups/{groupId}/resource" \
-H "Authorization: Bearer {access_token}" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}" \
-H "Content-Type: application/json" \
-d '{
"id": "g6uyb1c8-75be-4555-8ez9-56d7d8e3n398",
"type": "WALLET"
}'
# add a new card to the group
curl -X POST "https://api.soldo.com/business/v2/groups/{groupId}/resource" \
-H "Authorization: Bearer {access_token}" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}" \
-H "Content-Type: application/json" \
-d '{
"id": "h6uyb2b8-75be-7855-8ez9-56d7d8e3n398",
"type": "CARD"
}'
# add a new employee as a member to the group
curl -X POST "https://api.soldo.com/business/v2/groups/{groupId}/resource" \
-H "Authorization: Bearer {access_token}" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}" \
-H "Content-Type: application/json" \
-d '{
"id": "SOLDO-000002",
"type": "USER",
"role": "MEMBER" | "LEADER"
}'
Fingerprint Order
id,type,token
Required scope
group_write
HTTP Request
POST
/business/v2/groups/{groupId}/resource
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
sign of the X-Soldo-Fingerprint |
Header Parameter Required |
GroupResource |
Group resource JSON Parameters | Body Parameter Required |
Group resource JSON parameters
Parameter | Description |
---|---|
id |
The ID of the resource (Users, Wallets, Cards). |
type |
The type of resource, available values (USER , WALLET , CARD ) |
Response Parameters
No Content as result (HTTP response status code 204 No Content).
Remove resource from group
Endpoints to remove a resource from a Group.
# remove wallet from the group
curl -X DELETE "https://api.soldo.com/business/v2/groups/{groupId}/resource" \
-H "Authorization: Bearer {access_token}" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}" \
-d '{
"id": "g6uy77c8-75be-4555-8ez9-56d7d8e3n398",
"type": "WALLET"
}'
# remove card from the group
curl -X DELETE "https://api.soldo.com/business/v2/groups/{groupId}/resource" \
-H "Authorization: Bearer {access_token}" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}" \
-d '{
"id": "g6uyb1c8-75be-1789-8ez9-56d7d8e3n398",
"type": "CARD"
}'
# remove employee as a member from the group
curl -X DELETE "https://api.soldo.com/business/v2/groups/{groupId}/resource" \
-H "Authorization: Bearer {access_token}" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}" \
-d '{
"id": "SOLDO-000002",
"type": "USER"
}'
Fingerprint Order
id,type,token
Required scope
group_write
HTTP Request
DELETE
/business/v2/groups/{groupId}/resource
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
GroupResource |
Group resource JSON Parameters | Body Parameter Required |
Group resource JSON parameters
Parameter | Description |
---|---|
id |
The ID of the resource (Users, Wallets, Cards). |
type |
The type of resource, available values (USER , WALLET , CARD ) |
Response Parameters
No Content as result (HTTP response status code 204 No Content).
Wallets
Endpoints to manage the wallets of your business account.
- A wallet represents the place where money is stored and also where money can be transferred and allocated for a specific user to spend
- A wallet is designed to behave like a segregated container of money, so optionally no payment method may be connected to it
- The native currencies supported by a wallet are EUR, GBP and USD
- Three different types of wallet exist: MAIN, COMPANY and EMPLOYEE
Wallet
The wallet Object has the following structure:
Parameter | Description | Sortable |
---|---|---|
id |
The public wallet ID | Yes |
name |
The name of the wallet | Yes |
currency_code |
The ISO 4217 code of the currency of the wallet (EUR , GBP , USD ) |
No |
available_amount |
The currently available balance of the wallet | No |
blocked_amount |
The blocked balance of the wallet (the overall amount of Transactions in authorised status) | No |
primary_user_type |
The type of resource assigned to the wallet (main , company , employee , dedicated ) |
No |
primary_user_public_id |
The public ID of the User if the wallet is of type employee , not available for others wallet types |
No |
custom_reference_id |
The custom reference of the User if the wallet is of type employee , not available for others wallet types |
Yes |
group_id |
The public ID of the Group the wallet is related to | No |
visible |
Boolean (true, false): it determines whether the wallet is visible on the web console | Yes |
creation_time |
The date and time when the wallet was created | Yes |
Search wallets
Endpoints to find Wallets using filters parameters.
# find all the wallets (max 50 per Page)
curl -X GET "https://api.soldo.com/business/v2/wallets" \
-H "Authorization: Bearer {access_token}"
# find all the wallets with pagination
curl -X GET "https://api.soldo.com/business/v2/wallets?p={page_number}&s={page_size}" \
-H "Authorization: Bearer {access_token}"
# find filtering by owner type (main, company, employee)
curl -X GET "https://api.soldo.com/business/v2/wallets?type={type}" \
-H "Authorization: Bearer {access_token}"
# find filtering by owner type (employee) and owner public ID
curl -X GET "https://api.soldo.com/business/v2/wallets?type=employee&publicId={publicId}" \
-H "Authorization: Bearer {access_token}"
# find filtering by owner type (employee) and custom reference ID
curl -X GET "https://api.soldo.com/business/v2/wallets?type=employee&customreferenceId={customreferenceId}" \
-H "Authorization: Bearer {access_token}"
The above commands returns JSON structured like this:
{
"total": 2,
"pages": 1,
"page_size": 25,
"current_page": 0,
"results_size": 2,
"results": [
{
"id": "585caa6e-096a-11e7-9088-0a2322c1c432",
"name": "WalletMain",
"currency_code": "EUR",
"available_amount": 14782,
"blocked_amount": 24.18,
"primary_user_type": "main",
"visible": true,
"creation_time": "2020-07-01T09:00:10Z"
},
{
"id": "585caa6e-096a-11e7-9088-0a3392c1c947",
"name": "Wallet1",
"currency_code": "EUR",
"available_amount": 1165,
"blocked_amount": 0,
"primary_user_type": "company",
"group_id": "785b6dbc-4dbe-489d-93ca-0c3f12844b26",
"visible": true,
"creation_time": "2020-07-15T11:00:10Z"
},
{
"id": "585ccf5d-096a-11e7-9088-0a3392c1c947",
"name": "EUR",
"currency_code": "EUR",
"available_amount": 500.6,
"blocked_amount": 0,
"primary_user_type": "employee",
"primary_user_public_id": "12621231",
"visible": true,
"creation_time": "2020-07-16T11:00:10Z"
}
]
}
Required scope
wallet_read
HTTP Request
GET
/business/v2/wallets
Request Parameters
Parameter | Description | Type |
---|---|---|
type |
The type of resource assigned to the wallet (main , company , employee , dedicated ) |
Query Parameter optional |
publicId |
The public ID of the type resource |
Query Parameter optional |
customreferenceId |
The custom reference ID of the type resource |
Query Parameter optional |
groupId |
The public ID of the Group the wallet is related to | Query Parameter optional |
Response Parameters
The result is an array containing Wallet.
Get Wallet
Endpoint to retrieve a specific Wallet by public ID.
# find the specific wallet
curl -X GET "https://api.soldo.com/business/v2/wallets/{walletId}" \
-H "Authorization: Bearer {access_token}"
The above command returns JSON structured like this:
{
"id": "585caa6e-096a-11e7-9088-0a3392c1c947",
"name": "Wallet1",
"currency_code": "EUR",
"available_amount": 14782,
"blocked_amount": 24.18,
"primary_user_type": "company",
"group_id": "785b6dbc-4dbe-489d-93ca-0c3f12844b26",
"visible": true,
"creation_time": "2020-07-15T11:00:10Z"
}
Required scope
wallet_read
HTTP Request
GET
/business/v2/wallets/{walletId}
Request Parameters
Parameter | Description | Type |
---|---|---|
walletId |
Public wallet ID | Path Parameter Required |
Response Parameters
The return object is a single Wallet.
Add Wallet
Endpoint to add a new Wallet.
# add a new wallet
curl -X POST "https://api.soldo.com/business/v2/wallets" \
-H "Authorization: Bearer {access_token}" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}" \
-H "Content-Type: application/json" \
-d '{
"request_timestamp": 1576850500000,
"owner_type": "company",
"currency": "EUR",
"name": "wallet name"
}'
The above command returns JSON structured like this:
{
"order_id": "order_id",
"status": "PLACED",
"is_valid": true,
"total_paid_amount": 0,
"total_paid_currency": "EUR",
"items" : [
{
"item_type" : "wallet"
}
],
"total_items": 1
}
Fingerprint Order
request_timestamp, owner_type, currency, name, token
Required scope
wallet_write
HTTP Request
POST
/business/v2/wallets/
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
AddWallet |
Add wallet JSON Parameters | Body Parameter Required |
Add wallet JSON parameters
Parameter | Description |
---|---|
request_timestamp |
The epoc timestamp in millis. This is checked in Soldo. Requests with timestamp older than 5 seconds will be rejected. |
owner_type |
The type of the resource the wallet is created for. Available value (company ) |
currency |
The wallet currency. Available values (EUR , GBP , USD ). |
name |
The wallet name |
Response Parameters
The return object is a single Order.
Internal transfer
Endpoint to transfer money between two wallets within the same business account.
# make an internal transfer
curl -X PUT "https://api.soldo.com/business/v2/wallets/internalTransfer/{fromWalletId}/{toWalletId}" \
-H "Authorization: Bearer {access_token}" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "amount={amount}¤cyCode={currencyCode}"
The above command returns JSON structured like this:
{
"amount": 10,
"currency": "EUR",
"datetime": "2017-03-29T07:25:17.968Z",
"from_wallet": {
"id": "585caa6e-096a-11e7-9088-0a3392c1c947",
"name": "Wallet1",
"currency_code": "EUR",
"available_amount": 14772,
"blocked_amount": 24.18,
"primary_user_type": "company",
"group_id": "785b6dbc-4dbe-489d-93ca-0c3f12844b26",
"visible": true
},
"to_wallet": {
"id": "585cab95-096a-11e7-9088-0a3392c1c947",
"name": "EURO",
"currency_code": "EUR",
"available_amount": 4601,
"blocked_amount": 0,
"primary_user_type": "employee",
"primary_user_public_id": "62464771",
"visible": true
}
}
Fingerprint Order
amount, currencyCode, fromWalletId, toWalletId, token
Required scope
wallet_write
HTTP Request
PUT
/business/v2/wallets/internalTransfer/{fromWalletId}/{toWalletId}
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
fromWalletId |
The public wallet ID of the source wallet | Path Parameter Required |
toWalletId |
The public wallet ID of the destination wallet | Path Parameter Required |
amount |
The amount to transfer | Body Parameter Required |
currencyCode |
The currency of the amount to transfer (EUR , GBP , USD ) |
Body Parameter Required |
Response Parameters
The result is a Transfer Result Object with the following structure:
Parameter | Description |
---|---|
amount |
The amount to transfer |
currency |
The currency of the amount to transfer (EUR , GBP , USD ) |
datetime |
The date and time of the transaction |
fromWallet |
The source wallet used for the transfer |
toWallet |
The destination wallet used for the transfer |
Cards
Endpoints to view and manage the cards on your account.
Card
The card Object has the following structure:
Parameter | Description | Sortable |
---|---|---|
id |
The public card ID | Yes |
name |
The name of the card | Yes |
label |
The label of the card | No |
masked_pan |
The masked PAN of the card | Yes |
expiration_date |
The expiration date and time of the card | Yes |
type |
The type of card (PLASTIC , VIRTUAL , FUEL , GOOGLE_CARD ) |
No |
status |
The status of the card (Normal , Do not honor , Lost card , Stolen card , Expired card , Restricted card , Security Violation , Cardholder to contact the issuer , Card Destroyed ) |
Yes |
owner_type |
The owner type (company , employee ) |
No |
card_holder |
The name and surname of the Cardholder of the card, only available when owner_type is employee |
Yes |
owner_public_id |
The public ID of the Cardholder available when owner_type is employee |
No |
wallet_id |
The public ID of the Wallet the card is linked to | No |
custom_reference_id |
The custom reference ID of the Cardholder | No |
currency_code |
The currency of the Wallet the card is linked to (ISO 4217 code) | No |
emboss_line4 |
The fourth line printed on the card | No |
active |
Boolean (true, false): it determines whether the card is active | Yes |
group_id |
The public ID of the Group the card is related to | No |
assignees |
List of Users public ID currently assigned to the card, when owner_type is employee there is only one assignee, when is company there could be none or more assignees |
No |
method3ds |
How the 3-D secure challenge is managed for the card (USER ) |
No |
sensitive_data |
The Card Sensitive Data | No |
creation_time |
The date and time when the card was created | Yes |
vehicle_id |
The public ID of the Vehicle assigned to the card | No |
Card type
Soldo business platform offers 4 types of card:
- PLASTIC
- VIRTUAL
- FUEL
- GOOGLE_CARD
Card status
A Soldo card can assume the following status:
Normal
, the card is active and ready to spendDo not honor
, the card is deactivatedLost card
, the card has been declared as lostStolen card
, the card has been declared as stolenExpired card
, the card has expiredRestricted card
, the card has been restricted to certain categories of transactions by the card processorSecurity Violation
, the card has failed a security check at the card processorCardholder to contact the issuer
, the card is blocked by SoldoCard Destroyed
, the card has been destroyed
Card Sensitive Data
This structure reports the sensible data of a card. All the values are encrypted using the public key of the customer. The encrypting algorithm is RSA/ECB/OAEPWithSHA-256ANDMGF1Padding This allows the customer to be the only one can decrypt them.
encrypted_full_pan
| The encrypted PAN of the card
encrypted_cvv
| The encrypted cvv of the card
encrypted_pin
| The encrypted pin of the card (only valid for PLASTIC
or FUEL
card type)
Search Cards
Endpoints to find Cards using filters parameters.
# find all the cards (max 50 per Page)
curl -X GET "https://api.soldo.com/business/v2/cards" \
-H "Authorization: Bearer {access_token}"
# find all the cards with pagination
curl -X GET "https://api.soldo.com/business/v2/cards?p={page_number}&s={page_size}" \
-H "Authorization: Bearer {access_token}"
# find filtering by owner type (company, employee)
curl -X GET "https://api.soldo.com/business/v2/cards?type={type}" \
-H "Authorization: Bearer {access_token}"
# find filtering by status
curl -X GET "https://api.soldo.com/business/v2/cards?status=Normal" \
-H "Authorization: Bearer {access_token}"
curl -X GET "https://api.soldo.com/business/v2/cards?status=Card%20Destroyed" \
-H "Authorization: Bearer {access_token}"
curl -X GET "https://api.soldo.com/business/v2/cards?status=Do%20not%20honor" \
-H "Authorization: Bearer {access_token}"
# find filtering by resource type (wallet, employee) and resource public ID
curl -X GET "https://api.soldo.com/business/v2/cards?type={type}&publicId={publicId}" \
-H "Authorization: Bearer {access_token}"
# find filtering by resource type (employee) and custom reference ID
curl -X GET "https://api.soldo.com/business/v2/cards?type=employee&customreferenceId={customreferenceId}" \
-H "Authorization: Bearer {access_token}"
# find filtering by name
curl -X GET "https://api.soldo.com/business/v2/cards?name={name}" \
-H "Authorization: Bearer {access_token}"
# find filtering by label
curl -X GET "https://api.soldo.com/business/v2/cards?label={label}" \
-H "Authorization: Bearer {access_token}"
The above commands returns JSON structured like this:
{
"total": 2,
"pages": 1,
"page_size": 25,
"current_page": 0,
"results_size": 2,
"results": [
{
"id": "47a09081-096a-11e7-9088-0a3392c1c947",
"name": "Blake D Ferguson",
"label": "Test Y",
"masked_pan": "999999******2662",
"card_holder": "Blake D Ferguson",
"expiration_date": "2019-10-31T23:59:59Z",
"type": "PLASTIC",
"status": "Cardholder to contact the issuer",
"owner_type": "employee",
"owner_public_id": "12621231",
"wallet_id": "585cce33-096a-11e7-9088-0a3392c1c947",
"currency_code": "EUR",
"emboss_line4": "EUR",
"active": true,
"creation_time": "2020-07-15T11:00:10Z",
"group_id": "LVRS6404-000006",
"method3ds": "USER"
},
{
"id": "47a09396-096a-11e7-9088-0a3392c1c947",
"name": "ACARDNAME",
"label": "Label X",
"masked_pan": "999999******8470",
"expiration_date": "2019-10-31T23:59:59Z",
"type": "PLASTIC",
"status": "Normal",
"owner_type": "company",
"wallet_id": "585cceca-096a-11e7-9088-0a3392c1c947",
"currency_code": "EUR",
"emboss_line4": "EUR",
"active": true,
"creation_time": "2020-07-15T11:32:10Z",
"method3ds": "USER"
}
]
}
Required scope
card_read
HTTP Request
GET
/business/v2/cards
Request Parameters
Parameter | Description | Type |
---|---|---|
type |
The resource type (wallet , company , employee ) |
Query Parameter optional |
publicId |
The public ID of the type resource, it's not applicable for company and it's not required for employee resources |
Query Parameter optional |
customreferenceId |
The custom reference ID of the type resource |
Query Parameter optional |
status |
One among the available Card Status of a card | Query Parameter optional |
groupId |
The public ID of the Group the card is related to | Query Parameter optional |
name |
The name of the card | Query Parameter optional |
label |
The label the card | Query Parameter optional |
Response Parameters
The results array contains Cards.
Get card
Endpoints to get a specific Card by public ID.
# find the specific card
curl -X GET "https://api.soldo.com/business/v2/cards/{cardId}" \
-H "Authorization: Bearer {access_token}"
# find the specific card showing encrypted sensitive data
curl -X GET "https://api.soldo.com/business/v2/cards/{cardId}?showSensitiveData=true" \
-H "Authorization: Bearer {access_token}"
The above command returns JSON structured like this for an employee card:
{
"id": "47a09396-096a-11e7-9088-0a3392c1c947",
"name": "Boris Smith",
"label": "Test X",
"masked_pan": "999999******8470",
"card_holder": "Boris Smith",
"expiration_date": "2019-10-31T23:59:59Z",
"type": "PLASTIC",
"status": "Normal",
"owner_type": "employee",
"owner_public_id": "53675864",
"wallet_id": "585cceca-096a-11e7-9088-0a3392c1c947",
"currency_code": "EUR",
"emboss_line4": "EUR",
"active": true,
"creation_time": "2020-07-15T11:00:10Z",
"group_id": "17a09732-096a-11e7-5058-0a3895s1s947",
"method3ds": "USER",
"sensitive_data": {
"encrypted_full_pan": "HeN1db3kIX+bAp0nr1aJjUl3k4ObhGrvNMGkPLGf7Jnk88xLvN1TS7sPchCLiVypP5Z+1dBRGXlBtTD3qxsjqnjtXf7leLBYtcDfXtkb/C8w6o2zdeU8+d4PkU3eFQAy3NSm9W0kl4TEfiG7Fqv9mWcVrM7xjWkaDG5qcSt1RJyMMPnZehbvoWDMw/skSELqUqIwdpZHcDpcNht1Cwubn96EyIg0gnBFLgMOyKQ9fQDFtflOYIukMFj9fMNDL23PdZIIrGn0G2mDT/pcyBnNL8+Uo9ADmxF9CpCdgBxhLgFj6hsd0CrS3Dl6KLlOi5SrrIvsUpnxYS5ebQLnzujprg==",
"encrypted_cvv": "NEj6Yf3YBW4eNcdNA9yl9cmjNqYvIM+grkDZ+xLFlaXtmK0NfdbqoqMSsC78MfgAMqodnsA14c81zXgL86yiBdUNylDBMHx+JCK4bsT5Ql+PQKGhw+uQI7XTme173rPupR0TrmuAuq3itzad+DQXq4fS/QLvr64gIr3C6K4jZGtsYuMp0mz5pGIb7Wnr6Qkl0+Qy7ziHwY+fePaagvPEaNfIaWmWo2ukomLRQtI21Us7jXtxWhaGw17c4SwdOuhUzeXcdC9pvh4GntVTvYxOPxbtCjy2Bv2tZp6/UAmMbEp489iPSsLpRWrdMoGBRYRm06LIFVwIDfqWInP4MK8K4Q==",
"encrypted_pin": "Kd6VtkRYH05Yvme2jYz0ss3TfhkxZDE3YJ5XKKFkbQSt9zK1S9dEzR/dx2zjA2pNzSe8X0dUequ+9q6jhlVf7fI3HRxDrUOkXEz5JXd/+BiS0jpuYdQlGjgIeuYYZpvHiTG7CPQQ05D39OAg1pXgFHrWuN0B7LcdUgkp+DgtReU6zHUdbzCNaNeA8LApPq4H1NBYgIMJs9deErVq7vODId7qwndlJX+MHCfTlPMHbi2t9UGmlpRhkVfKxhKUkK4gsm3OSPFod/SWaIlvIzuEe+SCdvXj931ug3XPWLgebJ/53aWiU+j2VMarJj3dDO3tWTu+5ItYS+PfHncmgjJXSA=="
},
"assignees": []
}
for a company card:
{
"id": "47a09396-096a-11e7-9088-0a3392c1c947",
"name": "ACARDNAME",
"label": "Plastic XYZ",
"masked_pan": "999999******8470",
"expiration_date": "2019-10-31T23:59:59Z",
"type": "PLASTIC",
"status": "Normal",
"owner_type": "company",
"wallet_id": "585cceca-096a-11e7-9088-0a3392c1c947",
"currency_code": "EUR",
"emboss_line4": "EUR",
"active": true,
"creation_time": "2020-07-15T11:00:10Z",
"group_id": "17a09732-096a-11e7-5058-0a3895s1s947",
"method3ds": "USER",
"sensitive_data": {
"encrypted_full_pan": "HeN1db3kIX+bAp0nr1aJjUl3k4ObhGrvNMGkPLGf7Jnk88xLvN1TS7sPchCLiVypP5Z+1dBRGXlBtTD3qxsjqnjtXf7leLBYtcDfXtkb/C8w6o2zdeU8+d4PkU3eFQAy3NSm9W0kl4TEfiG7Fqv9mWcVrM7xjWkaDG5qcSt1RJyMMPnZehbvoWDMw/skSELqUqIwdpZHcDpcNht1Cwubn96EyIg0gnBFLgMOyKQ9fQDFtflOYIukMFj9fMNDL23PdZIIrGn0G2mDT/pcyBnNL8+Uo9ADmxF9CpCdgBxhLgFj6hsd0CrS3Dl6KLlOi5SrrIvsUpnxYS5ebQLnzujprg==",
"encrypted_cvv": "NEj6Yf3YBW4eNcdNA9yl9cmjNqYvIM+grkDZ+xLFlaXtmK0NfdbqoqMSsC78MfgAMqodnsA14c81zXgL86yiBdUNylDBMHx+JCK4bsT5Ql+PQKGhw+uQI7XTme173rPupR0TrmuAuq3itzad+DQXq4fS/QLvr64gIr3C6K4jZGtsYuMp0mz5pGIb7Wnr6Qkl0+Qy7ziHwY+fePaagvPEaNfIaWmWo2ukomLRQtI21Us7jXtxWhaGw17c4SwdOuhUzeXcdC9pvh4GntVTvYxOPxbtCjy2Bv2tZp6/UAmMbEp489iPSsLpRWrdMoGBRYRm06LIFVwIDfqWInP4MK8K4Q==",
"encrypted_pin": "Kd6VtkRYH05Yvme2jYz0ss3TfhkxZDE3YJ5XKKFkbQSt9zK1S9dEzR/dx2zjA2pNzSe8X0dUequ+9q6jhlVf7fI3HRxDrUOkXEz5JXd/+BiS0jpuYdQlGjgIeuYYZpvHiTG7CPQQ05D39OAg1pXgFHrWuN0B7LcdUgkp+DgtReU6zHUdbzCNaNeA8LApPq4H1NBYgIMJs9deErVq7vODId7qwndlJX+MHCfTlPMHbi2t9UGmlpRhkVfKxhKUkK4gsm3OSPFod/SWaIlvIzuEe+SCdvXj931ug3XPWLgebJ/53aWiU+j2VMarJj3dDO3tWTu+5ItYS+PfHncmgjJXSA=="
},
"assignees": [
"53675864",
"53675865"
]
}
for a FUEL card:
{
"id": "c1cb2c24-23bf-4ba3-be3b-3633ca566e6d",
"name": "ACARDNAME",
"label": "FUEL XYZ",
"masked_pan": "999999******3236",
"card_holder": "ACARDNAME",
"expiration_date": "2025-01-31T23:59:59Z",
"creation_time": "2022-01-10T14:39:23Z",
"type": "FUEL",
"status": "Normal",
"owner_type": "employee",
"owner_public_id": "53675864",
"wallet_id": "585cceca-096a-11e7-9088-0a3392c1c947",
"custom_reference_id": "ema-st2n4",
"currency_code": "EUR",
"emboss_line4": "EUR",
"active": false,
"method3ds": "USER",
"vehicle_id": "12306ff8-6f83-4a87-8a07-8a65534c5ff9",
"assignees": []
}
Required scope
card_read
HTTP Request
GET
/business/v2/cards/{cardId}
Request Parameters
Parameter | Description | Type |
---|---|---|
cardId |
The card public ID | Path Parameter Required |
showSensitiveData |
Boolean (true, false): it determines whether to show Card Sensitive Data of the card | Query Parameter optional |
Response Parameters
The return object is a single Card.
Add Card
Endpoint to add a new Card. The created card has the same currency of the wallet it belongs to.
# add a new VIRTUAL employee card
curl -X POST "https://api.soldo.com/business/v2/cards" \
-H "Authorization: Bearer {access_token}" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}" \
-H "Content-Type: application/json" \
-d '{
"request_timestamp": 1576850500000,
"owner_type": "employee",
"owner_public_id": "soldo-0001",
"wallet_id": "soldo-wallet-id-0001",
"type": "VIRTUAL",
"card_label": "my card label",
"emboss_line4": "line four"
}'
# add a new VIRTUAL company card with reserved wallet
curl -X POST "https://api.soldo.com/business/v2/cards" \
-H "Authorization: Bearer {access_token}" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}" \
-H "Content-Type: application/json" \
-d '{
"request_timestamp": 1576850800000,
"owner_type": "company",
"owner_public_id": "soldo-0002",
"type": "VIRTUAL",
"reserved_wallet_currency": "EUR",
"card_label": "my card label",
"emboss_line4": "line four"
}'
# add a new GOOGLE_CARD company card
curl -X POST "https://api.soldo.com/business/v2/cards" \
-H "Authorization: Bearer {access_token}" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}" \
-H "Content-Type: application/json" \
-d '{
"request_timestamp": 1576850800000,
"owner_type": "company",
"owner_public_id": "soldo-0002",
"wallet_id": "soldo-wallet-id-0002",
"type": "GOOGLE_CARD",
"name": "my card name",
"card_label": "my card label",
"emboss_line4": "line four"
}'
# add a new PLASTIC card
curl -X POST "https://api.soldo.com/business/v2/cards" \
-H "Authorization: Bearer {access_token}" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}" \
-H "Content-Type: application/json" \
-d '{
"request_timestamp": 1576850500000,
"owner_type": "employee",
"owner_public_id": "soldo-0001",
"wallet_id": "soldo-wallet-id-0001",
"type": "PLASTIC",
"card_label": "my card label",
"emboss_line4": "line four",
"address_id": "cf04ec33-84f0-484b-ac33-6ba0b2cc0827"
}'
# add a new FUEL card without address_id
curl -X POST "https://api.soldo.com/business/v2/cards" \
-H "Authorization: Bearer {access_token}" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}" \
-H "Content-Type: application/json" \
-d '{
"request_timestamp": 1576850500000,
"owner_type": "employee",
"owner_public_id": "soldo-0001",
"wallet_id": "soldo-wallet-id-0001",
"type": "FUEL",
"card_label": "my card label",
"emboss_line4": "line four"
}'
# add a FUEL card with vehicle
curl -X POST "https://api.soldo.com/business/v2/cards" \
-H "Authorization: Bearer {access_token}" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}" \
-H "Content-Type: application/json" \
-d '{
"request_timestamp": 1576850500000,
"owner_type": "employee",
"owner_public_id": "soldo-0001",
"wallet_id": "soldo-wallet-id-0001",
"type": "FUEL",
"card_label": "my card label",
"emboss_line4": "line four",
"vehicle_id": "12306ff8-6f83-4a87-8a07-8a65534c5ff9"
}'
The above commands return JSON structured like this:
{
"id": "order-id",
"status": "PLACED",
"creation_time": "2021-11-26T09:31:25",
"last_update_time": "2021-11-26T09:31:25",
"is_valid": true,
"total_paid_amount": 1,
"total_paid_currency": "EUR",
"items": [
{
"item_type": "virtual_card",
"category": "CARD"
}
]
}
Fingerprint Order
request_timestamp, owner_type, owner_public_id, wallet_id, address_id, vehicle_id, token
Required scope
card_write
HTTP Request
POST
/business/v2/cards/
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
AddCard |
Add card JSON Parameters | Body Parameter Required |
Add card JSON parameters
Parameter | Description | Required |
---|---|---|
request_timestamp |
The epoc timestamp in millis. This is checked in Soldo. Requests with timestamp older than 5 seconds will be rejected. | Yes |
owner_type |
The type of the resource the card is created for. Available values (company , employee ) |
Yes |
owner_public_id |
The public ID of the card owner. Only applicable when owner_type is employee . |
Yes |
wallet_id |
The wallet public ID, if not specified a reserved wallet will be created for the added card. | No |
reserved_wallet_currency |
The reserved wallet currency, only required when adding a dedicated card. | No |
type |
The type of the card. Available values: PLASTIC , VIRTUAL , FUEL , GOOGLE_CARD . |
Yes |
name |
The logical name of the card for a company card, for user card it is ignored and used the cardholder full name instead. | No |
card_label |
A Label for the Card (Max 20 chars). | No |
emboss_line4 |
The emboss line 4 of the card. | No |
address_id |
The public ID of the Address the card has to be shipped to, if empty the default shipping Address is used (default_shipping = true ). Only applicable for PLASTIC or FUEL cards. |
No |
vehicle_id |
The public ID of the Vehicle assigned to the card (only valid for FUEL card type) |
No |
Response Parameters
The results is an Order.
Update Card
Endpoint to add and remove assignees for company cards.
# update assignees value, adding more assignees
curl -X PUT "https://api.soldo.com/business/v2/cards/{cardId}" \
-H "Authorization: Bearer {access_token}" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}" \
-H "Content-Type: application/json" \
-d '{
"addCardAssignees": ["employeeId1", "employeeId2"]
}'
# update assignees value, removing some assignees
curl -X PUT "https://api.soldo.com/business/v2/cards/{cardId}" \
-H "Authorization: Bearer {access_token}" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}" \
-H "Content-Type: application/json" \
-d '{
"removeCardAssignees": ["employeeId1", "employeeId2"]
}'
# update label value
curl -X PUT "https://api.soldo.com/business/v2/cards/{cardId}" \
-H "Authorization: Bearer {access_token}" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}" \
-H "Content-Type: application/json" \
-d '{
"label": "a label for the card"
}'
# update the vehicle assigned to a card (only valid for `PLASTIC` or `FUEL` card type)
curl -X PUT "https://api.soldo.com/business/v2/cards/{cardId}" \
-H "Authorization: Bearer {access_token}" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}" \
-H "Content-Type: application/json" \
-d '{
"vehicle_id": "12306ff8-6f83-4a87-8a07-8a65534c5ff9"
}'
# remove the vehicle assigned to a card (only valid for `PLASTIC` or `FUEL` card type)
curl -X PUT "https://api.soldo.com/business/v2/cards/{cardId}" \
-H "Authorization: Bearer {access_token}" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}" \
-H "Content-Type: application/json" \
-d '{
"vehicle_id": ""
}'
The above command returns JSON structured like this:
{
"id": "47a09396-096a-11e7-9088-0a3392c1c947",
"name": "Boris Smith",
"label": "a label for the card",
"masked_pan": "999999******8470",
"card_holder": "Boris Smith",
"expiration_date": "2019-10-31T23:59:59Z",
"type": "PLASTIC",
"status": "Normal",
"owner_type": "employee",
"owner_public_id": "53675864",
"wallet_id": "585cceca-096a-11e7-9088-0a3392c1c947",
"currency_code": "EUR",
"emboss_line4": "EUR",
"active": true,
"creation_time": "2020-07-15T11:00:10Z",
"method3ds": "USER",
"vehicle_id": "12306ff8-6f83-4a87-8a07-8a65534c5ff9"
}
Fingerprint Order
cardId, addCardAssignees (joined), removeCardAssignees (joined), label, vehicle_id, token
Required scope
card_write
HTTP Request
PUT
/business/v2/cards/{cardId}
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
cardId |
Public card ID | Path Parameter Required |
UpdateCard |
Update card JSON Parameters | Body Parameter Required |
Update card JSON parameters
Parameter | Description |
---|---|
addCardAssignees |
Assignees to add |
removeCardAssignees |
Assignees to remove |
label |
A Label for the Card (Max 20 chars) |
vehicle_id |
The public ID of the Vehicle to be assigned to the card (only valid for PLASTIC or FUEL card type). To remove a Vehicle set the value to an empty string. |
Response Parameters
The results is a single Card.
Destroy card
Endpoint to destroy a Card.
# destroy a Card
curl -X DELETE "https://api.soldo.com/business/v2/cards/{cardId}" \
-H "Authorization: Bearer {access_token}"
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}"
Fingerprint Order
cardId, token
Required scope
card_write
HTTP Request
DELETE
/business/v2/cards/{cardId}
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
cardId |
The public card ID | Path Parameter Required |
Response Parameters
No Content as result (HTTP response status code 204 No Content).
Card rules
The card rule Object has the following structure:
Parameter | Description |
---|---|
name |
The name of the rule (see below) |
enabled |
Boolean (true, false): it determines whether the card rule is enabled |
amount |
Amount of the limit (only applicable to MaxPerTx ) |
Card rules names
OpenCloseMasterLock
, it determines the possibility for the admin of the account only to lock the cardOpenClose
, it determines the possibility for any user of the account to lock the cardOpenCloseAfterOneTx
, it determines the possibility to automatically lock the card after a single transactionOnline
, it determines the possibility to spend onlineAbroad
, it determines the possibility to spend abroad (which is outside of your company registration country)CashPoint
, it determines the possibility to withdraw money at ATMMaxPerTx
, it determines the possibility to spend up to a certain amount per transaction
List card rules
Endpoint to get the Rules of the card.
# find the card rules
curl -X GET "https://api.soldo.com/business/v2/cards/{cardId}/rules" \
-H "Authorization: Bearer {access_token}"
The above command returns JSON structured like this:
{
"rules": [
{
"name": "OpenCloseMasterLock",
"enabled": true
},
{
"name": "OpenClose",
"enabled": false
},
{
"name": "OpenCloseAfterOneTx",
"enabled": false
},
{
"name": "Online",
"enabled": false
},
{
"name": "Abroad",
"enabled": false
},
{
"name": "CashPoint",
"enabled": false
},
{
"name": "MaxPerTx",
"enabled": false,
"amount": 0
}
]
}
Required scope
card_read
HTTP Request
GET
/business/v2/cards/{cardId}/rules
Request Parameters
Parameter | Description | Type |
---|---|---|
cardId |
The public card ID | Path Parameter Required |
Response Parameters
The results is a list of Card Rules
Update Card Rules
Endpoint to update the Card Rules.
# update a rule for the card
curl -X PUT "https://api.soldo.com/business/v2/cards/{cardId}/rules" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {access_token}" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}" \
-H "Content-Type: application/json" \
-d '{
"name": "MaxPerTx",
"enabled": true,
"amount": 100
}'
The above command returns JSON structured like this:
{
"rules": [
{
"name": "OpenCloseMasterLock",
"enabled": true
},
{
"name": "OpenClose",
"enabled": false
},
{
"name": "OpenCloseAfterOneTx",
"enabled": false
},
{
"name": "Online",
"enabled": false
},
{
"name": "Abroad",
"enabled": false
},
{
"name": "CashPoint",
"enabled": false
},
{
"name": "MaxPerTx",
"enabled": true,
"amount": 100
}
]
}
Fingerprint Order
name, amount, enabled, token
Required scope
card_write
HTTP Request
PUT
/business/v2/cards/{cardId}/rules
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
cardId |
The public card ID | Path Parameter Required |
CardRule |
A card rule object Card Rules | Body Parameter Required |
Response Parameters
The result is the updated list of Card Rules.
Switch Card Wallet
Endpoint to switch the Card Wallet.
# switch a card wallet
curl -X PUT "https://api.soldo.com/business/v2/cards/{cardId}/move/{newWalletId}" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {access_token}" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}"
The above command returns JSON structured like this:
{
"id": "47a09396-096a-11e7-9088-0a3392c1c947",
"name": "Boris Smith",
"label": "Test X",
"masked_pan": "999999******8470",
"card_holder": "Boris Smith",
"expiration_date": "2019-10-31T23:59:59Z",
"type": "PLASTIC",
"status": "Normal",
"owner_type": "employee",
"owner_public_id": "53675864",
"wallet_id": "585cceca-096a-11e7-9088-0a3392c1c947",
"currency_code": "EUR",
"emboss_line4": "EUR",
"active": true,
"creation_time": "2020-07-15T11:00:10Z"
}
Fingerprint Order
cardId, newWalletId, token
Required scopes
card_write
, wallet_write
HTTP Request
PUT
/business/v2/cards/{cardId}/move/{newWalletId}
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
cardId |
The public card ID | Path Parameter Required |
newWalletId |
The new Wallet public ID | Path Parameter Required |
Response Parameters
The result is the updated Card.
Purchases
Endpoints to view and manage the purchases on your account.
Purchase
The purchase object has the following structure:
Parameter | Description | Sortable |
---|---|---|
id |
The public purchase ID | No |
status |
The status of the purchase (SUCCESSFUL , ACTIVE , ASSIGNED , DELETED ) |
No |
title |
The name of the purchase | No |
description |
The description of the purchase | No |
amount |
The maximum spendable amount of the purchase | No |
amount_currency |
The currency of the purchase (ISO 4217 code) | No |
wallet_id |
The public ID of the Wallet the money are taken from, the funding source of the purchase | No |
wallet_name |
The name of the Wallet the money are taken from, the funding source of the purchase | No |
has_attachments |
Boolean (true, false): it determines whether the purchase has one or more attachments | No |
notes |
The notes of the purchase | No |
assignee_id |
The public ID of the User assigned to the purchase | No |
assignee_custom_reference_id |
The custom reference of the User assigned to the purchase | No |
author_id |
The public ID of the User that created the purchase | No |
author_custom_reference_id |
The custom reference of the User that created the purchase | No |
card_id |
The public ID of the Card created by the purchase | No |
transaction_id |
The public ID of the Transaction originated by the purchase | No |
creation_time |
The date and time when the purchase was created | Yes |
last_update_time |
The date and time when the purchase was last updated | Yes |
completed_time |
The date and time when the purchase was completed | No |
Purchase status
A purchase can assume the following status:
ASSIGNED
the purchase is assigned. When a purchase is createdACTIVE
the purchase is activeSUCCESSFUL
the purchase is completed successfullyDELETED
the purchase is removed
Search Purchase
Endpoints to find Purchases using filters parameters.
# find last 30 days purchases (max 50 per Page)
curl -X GET "https://api.soldo.com/business/v2/purchases" \
-H "Authorization: Bearer {access_token}"
# find last 30 days the purchases with pagination
curl -X GET "https://api.soldo.com/business/v2/purchases?p={page_number}&s={page_size}" \
-H "Authorization: Bearer {access_token}"
# find filtering with dates (max 40 days range)
curl -X GET "https://api.soldo.com/business/v2/purchases?fromDate={fromDate}&toDate={toDate}" \
-H "Authorization: Bearer {access_token}"
# find filtering by status
curl -X GET "https://api.soldo.com/business/v2/purchases?status={status}" \
-H "Authorization: Bearer {access_token}"
# find filtering by text
curl -X GET "https://api.soldo.com/business/v2/purchases?text={text}" \
-H "Authorization: Bearer {access_token}"
The above commands returns JSON structured like this:
{
"total": 1,
"pages": 1,
"page_size": 50,
"current_page": 0,
"results_size": 1,
"results": [
{
"id": "7c873212-6353-4c6b-9197-21394c2c40bc",
"status": "SUCCESSFUL",
"title": "test search purchases",
"description": "search purchases",
"amount": 400.00,
"amount_currency": "EUR",
"wallet_id": "de29bffb-7da2-40f1-934a-241170762d3e",
"has_attachments": false,
"assignee_id": "assignee-000000",
"assignee_custom_reference_id": "reference assignee",
"author_id": "author-000000",
"author_custom_reference_id": "reference author",
"transaction_id": "8433-101147574-1647532107772",
"creation_time": "2022-03-17T15:41:34Z",
"last_update_time": "2022-03-17T15:47:21Z",
"completed_time": "2022-03-17T15:47:00Z"
}
]
}
Required scope
purchase_read
HTTP Request
GET
/business/v2/purchases
Request Parameters
Parameter | Description | Type |
---|---|---|
fromDate |
The beginning of the period of the search fromDate included (i.e. greater than or equal to)(Formats: yyyy-MM-dd, yyyy-MM-ddThh:mm:ss, yyyy-MM-ddThh:mm:ssZ) |
Query Parameter optional |
toDate |
The end of the period of the search toDate included (i.e. less than)(Formats: yyyy-MM-dd, yyyy-MM-ddThh:mm:ss, yyyy-MM-ddThh:mm:ssZ) |
Query Parameter optional |
dateType |
It determines the date to be considered for fromDate and toDate parameters. Available types are CREATION_TIME and COMPLETED_TIME |
Query Parameter optional, Default COMPLETED_TIME type |
status |
The purchase status (SUCCESSFUL , ACTIVE , ASSIGNED , DELETED ) |
Query Parameter optional |
text |
A simple text to search in the purchase data (title, description, assignee name | Query Parameter optional |
Response Parameters
The result is an array containing Purchases.
Get Purchase
Endpoints to get a specific Purchase by public ID.
# find the specific purchase
curl -X GET "https://api.soldo.com/business/v2/purchases/{purchaseId}" \
-H "Authorization: Bearer {access_token}"
The above command returns JSON structured like this
{
"id": "7c873212-6353-4c6b-9197-21394c2c40bc",
"status": "SUCCESSFUL",
"title": "test search purchase by id",
"description": "search purchase by id",
"amount": 400.00,
"amount_currency": "EUR",
"wallet_id": "de29bffb-7da2-40f1-934a-241170762d3e",
"wallet_name": "EURO VIBAN",
"has_attachments": false,
"assignee_id": "assignee-000000",
"assignee_custom_reference_id": "reference assignee",
"author_id": "author-000000",
"author_custom_reference_id": "reference author",
"card_id": "37742347-0ded-4e0c-bfc1-6c2fc50e1f02",
"transaction_id": "8433-101147574-1647532107772",
"creation_time": "2022-03-17T15:41:34Z",
"last_update_time": "2022-03-17T15:47:21Z",
"completed_time": "2022-03-17T15:47:00Z"
}
Required scope
purchase_read
HTTP Request
GET
/business/v2/purchases/{purchaseId}
Request Parameters
Parameter | Description | Type |
---|---|---|
id |
The public purchase ID | Path Parameter Required |
Response Parameters
The return object is a single Purchase.
Add Purchase
Endpoint to add a new Purchase.
# add a new purchase
curl -X POST 'https://api.soldo.com/business/v2/purchases' \
-H 'X-Soldo-Fingerprint: {fingerprint}' \
-H 'X-Soldo-Fingerprint-Signature: {fingerprint-signature}' \
-H 'Authorization: Bearer {access_token}' \
-H 'Content-Type: application/json' \
-d '{
"title": "test create purchase",
"assignee_id": "assignee-000000",
"amount": 20,
"description": "create purchase",
"currency": "EUR",
"notes": "add new purchase",
"wallet_id": "de29bffb-7da2-40f1-934a-241170762d3e"
}'
The above commands return JSON structured like this:
{
"id": "fd8f0125-01f4-4c46-b5d4-68e87100fd56",
"status": "ASSIGNED",
"title": "test create purchase",
"description": "create purchase",
"amount": 20.00,
"amount_currency": "EUR",
"wallet_id": "de29bffb-7da2-40f1-934a-241170762d3e",
"wallet_name": "EURO VIBAN",
"has_attachments": false,
"notes": "add new purchase",
"assignee_id": "assignee-000000",
"assignee_custom_reference_id": "assignee reference",
"author_id": "author-000000",
"author_custom_reference_id": "author reference",
"creation_time": "2022-03-17T17:00:31Z",
"last_update_time": "2022-03-17T17:00:31Z"
}
Fingerprint Order
title, assignee_id, wallet_id, amount, description, token
Required scope
purchase_write
HTTP Request
POST
/business/v2/purchases
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
AddPurchase |
Add purchase JSON Parameters | Body Parameters Required |
Add purchase JSON parameters
Parameter | Description | Required |
---|---|---|
title |
The name of the purchase | Yes |
assignee_id |
The public ID of the User assigned to the purchase | Yes |
wallet_id |
The public ID of the Wallet the money are taken from, the funding source of the purchase | Yes |
amount |
The maximum spendable amount of the purchase | Yes |
description |
The description of the purchase | Yes |
notes |
The notes of the purchase | No |
Response Parameters
The return object is a single Purchase.
Update Purchase
Endpoints to update a specific Purchase.
curl -X PUT 'https://api.soldo.com/business/v2/purchases/{purchaseId}' \
-H 'X-Soldo-Fingerprint: {fingerprint}' \
-H 'X-Soldo-Fingerprint-Signature: {fingerprint-signature}' \
-H 'Authorization: Bearer {access_token}' \
-H 'Content-Type: application/json' \
-d '{
"description": "update purchase",
"title": "test update purchase",
"notes": "update purchase"
}'
The above command return JSON structured like this:
{
"id": "fd8f0125-01f4-4c46-b5d4-68e87100fd56",
"status": "ASSIGNED",
"title": "test update purchase",
"description": "update purchase",
"amount": 20.00,
"amount_currency": "EUR",
"wallet_id": "de29bffb-7da2-40f1-934a-241170762d3e",
"wallet_name": "EURO VIBAN",
"has_attachments": false,
"assignee_id": "assignee-000000",
"assignee_custom_reference_id": "assignee reference",
"author_id": "author-000000",
"author_custom_reference_id": "author reference",
"creation_time": "2022-03-17T17:00:31Z",
"last_update_time": "2022-03-17T17:06:04Z"
}
Fingerprint Order
id, title, description, token
Required scope
purchase_write
HTTP Request
PUT
/business/v2/purchases/{purchaseId}
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
id |
The purchase public ID | Path Parameter Required |
UpdatePurchase |
Update purchase JSON Parameters | Body Parameters Required |
Update purchase JSON parameters
Parameter | Description | Required |
---|---|---|
id |
The public purchase ID | Yes |
title |
The name of the purchase | No |
description |
The description of the purchase | No |
notes |
The notes of the purchase | No |
Response Parameters
The return object is a single Purchase.
Delete Purchase
Endpoint to delete a specific Purchase.
curl -X DELETE 'https://api.soldo.com/business/v2/purchases/{purchaseId}' \
-H 'Authorization: Bearer {access_token}' \
-H 'Content-Type: application/json' \
-H 'X-Soldo-Fingerprint: {fingerprint}' \
-H 'X-Soldo-Fingerprint-Signature: {fingerprint-signature}' \
Fingerprint Order
Id, token
Required scope
purchase_write
HTTP Request
DELETE
/business/v2/purchases/{purchaseId}
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
id |
The purchase public ID | Path Parameter Required |
Response Parameters
No Content as result (HTTP response status code 204 No Content).
Transactions
Endpoints to view and manage the transactions in your account.
Transaction Status Diagram
The diagrams below show the ideal flow of the transaction's statuses for Payment
and Chargeback
categories.
Payment
Chargeback
Transaction
The transaction Object has the following structure:
Parameter | Description | Sortable |
---|---|---|
id |
The public transaction ID | Yes |
wallet_id |
The public ID of the Wallet from where the transaction has been authorised | No |
wallet_name |
The name of the Wallet from where the transaction has been authorised | No |
status |
The status of the transaction (Authorised , Settled , Cancelled , Declined , DisputeFailed , DisputeOpened , DisputeWon , Unknown ), see Transaction Status Diagram for more |
Yes |
category |
The category of the transaction (Payment , Refund , Load , LoadReversal , Transfer , Conversion , Wiretransfer , Withdrawal , SoldoActivity , Billing , RecurringBilling , SoldoCreditOperation , SoldoDebitOperation , NotRecognized , Chargeback , InboundFasterPayment , InboundFasterPaymentReversal , Fee , FeeReversal ) |
Yes |
transaction_sign |
The sign of the transaction amount (Negative , Positive , None ) |
No |
amount |
The amount of the transaction in the currency of the Wallet | No |
amount_currency |
The currency ISO 4217 code of the amount |
No |
tx_amount |
The amount of the transaction in the currency of the merchant | No |
tx_amount_currency |
The currency ISO 4217 code of the tx_amount |
No |
fee_amount |
The amount of the transaction fee in the currency of the Wallet | No |
fee_currency |
The currency ISO 4217 code of the fee_amount |
No |
exchange_rate |
The exchange rate applied at the Settled status |
No |
auth_exchange_rate |
The exchange rate applied at the Authorised status |
No |
expense_status |
The status of approval of the expense (APPROVED , DENIED , TO_REVIEW ) |
No |
expense_type |
The type of the expense (COMPANY , EMPLOYEE ) |
No |
expense_date |
The date and time of the last review of the expense | No |
expense_reviewer |
The public ID of the User who reviewed the expense | No |
date |
The date and time of the transaction at the Authorised status |
Yes |
settlement_date |
The date and time of the transaction at the Settled status |
Yes |
update_time |
The date and time of the last update to the transaction | Yes |
merchant |
The name of the Merchant of the transaction (only valid for Payment , Withdrawal , Refund transaction categories) |
No |
merchant_category |
The category of the merchant of the transaction (only valid for Payment , Withdrawal , Refund transaction categories) |
No |
tags |
The list of the Tags of the transaction | No |
card_id |
The public ID of the Card used for the transaction | No |
group_id |
The public ID of the Group the transaction belongs to | No |
masked_pan |
The masked PAN of the Card used for the transaction | Yes |
owner_id |
The public ID of the Cardholder who made the transaction (only available when owner_type is employee ) |
No |
custom_reference_id |
The custom reference ID of the Cardholder who made the transaction (only available when owner_type is employee ) |
No |
owner_type |
The owner type (company , employee ) |
No |
owner_name |
The name of the cardholder who made the transaction (only available when owner_type is employee ) |
No |
owner_surname |
The surname of the cardholder who made the transaction (only available when owner_type is employee ) |
No |
trx_owner_id |
For User Card transactions, when owner_type is employee , is the cardholder Public ID, for Company Card, when owner_type is company , is empty or one of the Card assignees |
No |
has_attachments |
Boolean (true, false): it determines whether the transaction has one or more Attachments | No |
metadata_ids |
A list of IDs related to custom generated Metadata of the transaction | No |
vat_amount |
The amount of the VAT in the currency of the Wallet | No |
vat_currency |
The currency ISO 4217 code of the vat_amount |
No |
vat_percentage |
The VAT percentage applied | No |
user_notes |
The notes defined by the User | No |
notes |
The notes defined by Soldo | No |
direct_url |
The direct URL to the transaction details page | No |
flags |
List of strings: forUser ,forAdmin or empty. It determines for which kinds of Users the transaction is flagged to |
No |
Merchant
The merchant Object has the following structure:
Parameter | Description |
---|---|
id |
The ID of the merchant |
name |
The name of the merchant (normalised) |
raw_name |
The raw name of the merchant |
code |
The Mastercard merchant code |
address |
The merchant address |
Merchant Category
The merchant category Object has the following structure:
Parameter | Description |
---|---|
code |
The merchant category code as defined in the Soldo platform. Deprecated use description instead. |
description |
The merchant category description as defined in the Soldo platform |
mcc |
The official Mastercard Merchant Category Code (MCC) |
mcc_description |
The official Mastercard Merchant category description |
sub_category |
The merchant sub-category as defined in the Soldo platform |
Transaction Details
The merchant detail Object has the following structure:
Parameter | Description |
---|---|
de022 |
Mastercard DE022 field |
de061 |
Mastercard DE061 field |
tx_country |
The country code where the transaction has been authorised |
is_card_present |
Boolean (true, false): it determines whether the card was there at the moment of the transaction |
is_atm_transaction |
Boolean (true, false): it determines whether the transaction is an ATM withdrawal |
denied_info_type |
The type of the denied reason of the transaction (only if the transaction is Declined ) |
denied_info_description |
The description of the denied reason (only if the transaction is Declined ) |
Transaction Fuel Details
The transaction fuel details Object has the following structure:
Parameter | Description |
---|---|
plate |
Vehicle's plate number |
vehicle_fuel_type |
Fuel type specified in the Vehicle's configuration page |
vat_deductibility_percentage |
The deductible VAT percentage configured for the vehicle |
mileage |
The vehicle mileage |
invoice_fuel_type |
Fuel type specified in the linked invoice |
quantity |
The fuel quantity as specified in the invoice |
to_be_ignored |
Boolean (true, false): If the transaction link status is set to ignored |
invoice_id |
Invoice ID |
invoice_number |
Invoice number |
invoice_date |
Invoice date |
invoice_total_amount |
Total amount of the linked invoice |
invoice_row |
Row of the linked invoice |
invoice_row_amount |
Amount of the transaction's row in the linked invoice |
supplier_vat_id |
Supplier VAT ID |
dri |
DRI (Documento Riepilogativo) code |
vehicle_id |
Vehicle public ID |
Search Transactions
Endpoints to find Transactions using filters parameters.
# find last 40 days transactions (max 50 per Page)
curl -X GET "https://api.soldo.com/business/v2/transactions" \
-H "Authorization: Bearer {access_token}"
-H "X-Soldo-Fingerprint: {fingerprint}"
-H "X-Soldo-Fingerprint-Signature: {fingerprint_signature}"
# find last 40 days the transactions with pagination
curl -X GET "https://api.soldo.com/business/v2/transactions?p={page_number}&s={page_size}" \
-H "Authorization: Bearer {access_token}"
-H "X-Soldo-Fingerprint: {fingerprint}"
-H "X-Soldo-Fingerprint-Signature: {fingerprint_signature}"
# find filtering by resource type (employee, wallet, card) and resource public ID
curl -X GET "https://api.soldo.com/business/v2/transactions?type={type}&publicId={publicId}" \
-H "Authorization: Bearer {access_token}"
-H "X-Soldo-Fingerprint: {fingerprint}"
-H "X-Soldo-Fingerprint-Signature: {fingerprint_signature}"
# find filtering by custom reference ID
curl -X GET "https://api.soldo.com/business/v2/transactions?customreferenceId={customreferenceId}" \
-H "Authorization: Bearer {access_token}"
-H "X-Soldo-Fingerprint: {fingerprint}"
-H "X-Soldo-Fingerprint-Signature: {fingerprint_signature}"
# find filtering with dates (max 40 days range)
curl -X GET "https://api.soldo.com/business/v2/transactions?fromDate={fromDate}&toDate={toDate}" \
-H "Authorization: Bearer {access_token}"
-H "X-Soldo-Fingerprint: {fingerprint}"
-H "X-Soldo-Fingerprint-Signature: {fingerprint_signature}"
# find filtering by status
curl -X GET "https://api.soldo.com/business/v2/transactions?status={status}" \
-H "Authorization: Bearer {access_token}"
-H "X-Soldo-Fingerprint: {fingerprint}"
-H "X-Soldo-Fingerprint-Signature: {fingerprint_signature}"
# find filtering by multiple statuses (find transactions with status1 or status2)
curl -X GET "https://api.soldo.com/business/v2/transactions?status={status}&status={status}" \
-H "Authorization: Bearer {access_token}"
-H "X-Soldo-Fingerprint: {fingerprint}"
-H "X-Soldo-Fingerprint-Signature: {fingerprint_signature}"
# find filtering by category
curl -X GET "https://api.soldo.com/business/v2/transactions?category={category}" \
-H "Authorization: Bearer {access_token}"
-H "X-Soldo-Fingerprint: {fingerprint}"
-H "X-Soldo-Fingerprint-Signature: {fingerprint_signature}"
# find filtering by multiple categories (find transactions with category1 or category2)
curl -X GET "https://api.soldo.com/business/v2/transactions?category={category}&category={category}" \
-H "Authorization: Bearer {access_token}"
-H "X-Soldo-Fingerprint: {fingerprint}"
-H "X-Soldo-Fingerprint-Signature: {fingerprint_signature}"
# find filtering by text
curl -X GET "https://api.soldo.com/business/v2/transactions?text=amazon" \
-H "Authorization: Bearer {access_token}"
-H "X-Soldo-Fingerprint: {fingerprint}"
-H "X-Soldo-Fingerprint-Signature: {fingerprint_signature}"
# find all the transactions with/without attachments
curl -X GET "https://api.soldo.com/business/v2/transactions?hasAttachment={true/false}" \
-H "Authorization: Bearer {access_token}"
-H 'X-Soldo-Fingerprint: {fingerprint}'
-H 'X-Soldo-Fingerprint-Signature: {fingerprint_signature}'
# find filtering by groupId
curl -X GET "https://api.soldo.com/business/v2/transactions?groupId={groupId}" \
-H "Authorization: Bearer {access_token}"
-H "X-Soldo-Fingerprint: {fingerprint}"
-H "X-Soldo-Fingerprint-Signature: {fingerprint_signature}"
The above commands returns JSON structured like this:
{
"total": 2,
"pages": 1,
"page_size": 25,
"current_page": 0,
"results_size": 2,
"results": [
{
"id": "8433-INV_3000134613",
"wallet_id": "de29bffb-7da2-40f1-934a-241170762d3e",
"wallet_name": "EURO",
"status": "Settled",
"category": "Billing",
"transaction_sign": "Negative",
"amount": 5.0,
"amount_currency": "EUR",
"tx_amount": 5.0,
"tx_amount_currency": "EUR",
"fee_amount": 0.0,
"fee_currency": "EUR",
"expense_status": "APPROVED",
"expense_type": "EMPLOYEE",
"date": "2021-02-23T09:23:50",
"settlement_date": "2021-02-23T09:23:50Z",
"update_time": "2021-02-23T09:23:50Z",
"merchant": {
"id": "",
"name": "",
"raw_name": ""
},
"merchant_category": {},
"tags": [],
"group_id": "d3e785ab-06ed-4032-8614-aba62590bb8a",
"owner_type": "company",
"has_attachments": false,
"metadata_ids": [],
"notes": "Billing withdraw for orderId:ef5a31d7-ead6-4d1f-a63e-4d8fe7b05e5c",
"flags": []
},
{
"id": "8433-289815371-1614693577364",
"wallet_id": "de29bffb-7da2-40f1-934a-241170762d3e",
"wallet_name": "EURO",
"status": "Settled",
"category": "Payment",
"transaction_sign": "Negative",
"amount": 3.0,
"amount_currency": "EUR",
"tx_amount": 3.0,
"tx_amount_currency": "EUR",
"fee_amount": 0.0,
"fee_currency": "EUR",
"date": "2021-03-02T13:58:00",
"settlement_date": "2021-03-02T14:01:13Z",
"update_time": "2021-03-02T14:01:15Z",
"merchant": {
"id": "057193000156182",
"name": "AMAZON SVCS EUROPE,SARLWWW.AMAZON.CO.LUX",
"raw_name": "AMAZON SVCS EUROPE,SARLWWW.AMAZON.CO.LUX"
},
"merchant_category": {
"description": "Shopping",
"mcc": "5942",
"mcc_description": "Book Stores",
"code": "Shopping",
"sub_category": "Books"
},
"tags": [
{
"id": "a60557b7-237a-11e8-b6ed-0a18a310bcfe",
"tag": "tagName",
"dictionary_id": "a3522a74-237a-11e8-b6ed-0a18a310bcfe",
"dictionary": "testApi",
"visible": true
},
{
"id": "a603d5f6-237a-11e8-b6ed-0a18a310bcfe",
"tag": "tagName2",
"dictionary_id": "a34d613f-237a-11e8-b6ed-0a18a310bcfe",
"dictionary": "testApi",
"visible": true
}
],
"card_id": "c2f91529-7e7d-4a20-b80b-629b5ba018f7",
"masked_pan": "511674******7230",
"group_id": "d3e785ab-06ed-4032-8614-aba62590bb8a",
"owner_type": "company",
"has_attachments": false,
"trx_owner_id": "soldo-000005",
"metadata_ids": [
"metadataId",
"metadataId2"
],
"notes": "",
"flags": []
}
]
}
Fingerprint Order
type, publicId, customReferenceId, groupId, fromDate, toDate, dateType, category, status, tagId, metadataId, text, token
Required scope
transaction_read
HTTP Request
GET
/business/v2/transactions
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
sign of the X-Soldo-Fingerprint |
Header Parameter Required |
type |
The resource type (company , employee , wallet , card ), to be used together with publicId |
Query Parameter optional |
publicId |
The public ID of the type resource |
Query Parameter optional |
customreferenceId |
The custom reference ID of the cardholder | Query Parameter optional |
fromDate |
The beginning of the period of the search fromDate included (i.e. greater than or equal to)(Formats: yyyy-MM-dd, yyyy-MM-ddThh:mm:ss, yyyy-MM-ddThh:mm:ssZ) |
Query Parameter optional |
toDate |
The end of the period of the search toDate included (i.e. less than)(Formats: yyyy-MM-dd, yyyy-MM-ddThh:mm:ss, yyyy-MM-ddThh:mm:ssZ) |
Query Parameter optional |
dateType |
It determines the date to be considered for fromDate and toDate parameters. Available types are TRANSACTION , SETTLEMENT or UPDATE date |
Query Parameter optional, Default TRANSACTION type |
category |
It determines the filter by category of the transaction (Payment , Refund , Load , LoadReversal , Transfer , Conversion , Wiretransfer , Withdrawal , SoldoActivity , Billing , RecurringBilling , SoldoCreditOperation , SoldoDebitOperation , NotRecognized ), multiple categories can be included |
Query Parameter optional |
status |
It determines the filter by status of the transaction (Authorised , Settled , Cancelled , Declined , DisputeFailed , DisputeOpened , DisputeWon , Unknown ), multiple statuses can be included |
Query Parameter optional |
tagId |
The public ID of the Tag of the transaction | Query Parameter optional |
metadataId |
(No longer supported) The ID of the custom generated Metadata of the transaction | Query Parameter optional |
text |
A simple text to search in the transaction data (merchant, merchant category, user notes, tag, list, masked pan, card name, tx amount, vehicle plate, vehicle description) | Query Parameter optional |
hasAttachment |
Looks whether or not an attachment is present (true/false) | Query Parameter optional |
groupId |
The Group of the transactions | Query Parameter optional |
Response Parameters
The results array contains Transaction.
Get Transaction
Endpoints to get a specific Transaction by public ID.
# find the specific transaction
curl -X GET "https://api.soldo.com/business/v2/transactions/{transactionId}" \
-H "Authorization: Bearer {access_token}"
-H "X-Soldo-Fingerprint: {fingerprint}"
-H "X-Soldo-Fingerprint-Signature: {fingerprint_signature}"
# find the specific transaction with details
curl -X GET "https://api.soldo.com/business/v2/transactions/{transactionId}?showDetails=true" \
-H "Authorization: Bearer {access_token}"
-H "X-Soldo-Fingerprint: {fingerprint}"
-H "X-Soldo-Fingerprint-Signature: {fingerprint_signature}"
# find the specific transaction with details and fuel details
curl -X GET "https://api.soldo.com/business/v2/transactions/{transactionId}?showDetails=true&showFuelDetails=true" \
-H "Authorization: Bearer {access_token}"
-H "X-Soldo-Fingerprint: {fingerprint}"
-H "X-Soldo-Fingerprint-Signature: {fingerprint_signature}"
The above command returns JSON structured like this:
{
"id": "562-182421003-1485958599394",
"wallet_id": "585d6a1c-096a-11e7-9088-0a3392c1c947",
"wallet_name": "EURO",
"status": "Settled",
"category": "Payment",
"transaction_sign": "Negative",
"amount": 10,
"amount_currency": "EUR",
"tx_amount": 10,
"tx_amount_currency": "EUR",
"fee_amount": 0,
"fee_currency": "EUR",
"expense_status": "APPROVED",
"expense_type": "EMPLOYEE",
"expense_date": "2017-02-13T15:19:22Z",
"expense_reviewer": "LVRS6404-000084",
"date": "2017-02-01T14:15:00",
"settlement_date": "2017-02-01T14:15:39Z",
"update_time": "2019-10-03T11:40:17Z",
"merchant": {
"id": "63957883",
"name": "Ishtar Restaurant",
"raw_name": "ISHTAR RESTAURANT LONDON W1U GBR",
"code": "apple",
"address": ""
},
"merchant_category": {
"description": "Services",
"mcc": "5812",
"mcc_description": "CATERERS",
"code": "5812"
},
"tags": [
{
"id": "a60557b7-237a-11e8-b6ed-0a18a310bcfe",
"tag": "tagName",
"dictionary_id": "a3522a74-237a-11e8-b6ed-0a18a310bcfe",
"dictionary": "testApi",
"visible": true
}
],
"card_id": "47a15e93-096a-11e7-9088-0a3392c1c947",
"masked_pan": "999999******6952",
"owner_id": "soldo-000011",
"owner_type": "company",
"group_id": "2d9b3d6d-6108-4df8-a44e-ceb7bc8f86fa",
"owner_name": "IT",
"has_attachments": true,
"trx_owner_id": "soldo-000006",
"metadata_ids": [
"metadataId",
"metadatad2"
],
"details": {
"de022": "051",
"de061": "0250260000010000800826W1U6AZ",
"tx_country": "GBR",
"is_card_present": true,
"is_atm_transaction": false
},
"fuel_details": {
"plate": "AB123CD",
"vehicle_fuel_type": "DIESEL",
"vat_deductibility_percentage": "40%",
"mileage": "25234",
"invoice_fuel_type": "DIESEL",
"quantity": "25.23",
"to_be_ignored": true,
"invoice_id": "67460",
"invoice_number": "819/19",
"invoice_date": "2019-07-31",
"invoice_total_amount": "108.00",
"invoice_row": "1",
"invoice_row_amount": "107.00",
"supplier_vat_id": "12345678901",
"dri": "2019_1",
"vehicle_id": "3f0104e9-f305-4a75-b8c1-f923bd40df8b"
}
}
Fingerprint Order
transactionId, token
Required scope
transaction_read
HTTP Request
GET
/business/v2/transactions/{transactionId}
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
transactionId |
The public transaction ID | Path Parameter Required |
showDetails |
Boolean (true, false): it determines whether to show further Details of the transaction | Query Parameter optional |
showFuelDetails |
Boolean (true, false): it determines whether to show further Fuel Details of the transaction | Query Parameter optional |
Response Parameters
The return object is a single Transaction.
Update Transaction Assignee
Endpoint to update the assignee of a specific Transaction by public ID.
This method is only available for Company Card transactions and the trx_owner_id
must be one of the Card assignees.
# update the transaction assignee
curl -X PUT "https://api.soldo.com/business/v2/transactions/{transactionId}" \
-H "Authorization: Bearer {access_token}"
-H "X-Soldo-Fingerprint: {fingerprint}"
-H "X-Soldo-Fingerprint-Signature: {fingerprint_signature}"
-H "Content-Type: application/json" \
-d '{
"trx_owner_id": "soldo-000005"
}'
The above command returns JSON structured like this:
{
"id": "8433-289815371-1614693577364",
"wallet_id": "de29bffb-7da2-40f1-934a-241170762d3e",
"wallet_name": "EURO",
"status": "Settled",
"category": "Payment",
"transaction_sign": "Negative",
"amount": 3.00,
"amount_currency": "EUR",
"tx_amount": 3.00,
"tx_amount_currency": "EUR",
"fee_amount": 0.00,
"fee_currency": "EUR",
"date": "2021-03-02T13:58:00",
"settlement_date": "2021-03-02T14:01:13Z",
"update_time": "2021-03-02T14:01:15Z",
"merchant": {
"id": "057193000156182",
"name": "AMAZON SVCS EUROPE,SARLWWW.AMAZON.CO.LUX",
"raw_name": "AMAZON SVCS EUROPE,SARLWWW.AMAZON.CO.LUX"
},
"merchant_category": {
"description": "Shopping",
"mcc": "5942",
"mcc_description": "Book Stores",
"code": "Shopping",
"sub_category": "Books"
},
"tags": [],
"card_id": "c2f91529-7e7d-4a20-b80b-629b5ba018f7",
"masked_pan": "511674******7230",
"group_id": "d3e785ab-06ed-4032-8614-aba62590bb8a",
"owner_type": "company",
"has_attachments": false,
"trx_owner_id": "soldo-000005",
"metadata_ids": [],
"notes": "",
"flags": []
}
Fingerprint Order
transactionId, trx_owner_id, token
Required scope
transaction_write
HTTP Request
PUT
/business/v2/transactions/{transactionId}
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
UpdateTransaction |
Update transaction assignee JSON Parameters | Body Parameter Required |
Update transaction assignee JSON parameters
Parameter | Description |
---|---|
trx_owner_id |
The transaction assignee, one of the User public ID assigned to the Company Card |
Response Parameters
The return object is a single Transaction.
Add a Tag
Endpoint to assign a Tag to a Transaction.
# assign a Tag to a transaction
curl -X POST \
"https://api.soldo.com/business/v2/transactions/{transactionId}/tags/{tagId}" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "X-Soldo-Fingerprint: {fingerprint}"
-H "X-Soldo-Fingerprint-Signature: {fingerprint_signature}"
Fingerprint Order
transactionId, tagId, token
Required scope
transaction_write
HTTP Request
POST
/business/v2/transactions/{transactionId}/tags/{tagId}
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint | Header Parameter Required |
transactionId |
The public transaction ID | Path Parameter Required |
tagId |
The public Tag ID | Path Parameter Required |
Response Parameters
No Content as result (HTTP response status code 204 No Content).
Remove a Tag
Endpoint to remove a Tag from a Transaction.
# remove a tag from a transaction
curl -X DELETE \
"https://api.soldo.com/business/v2/transactions/{transactionId}/tags/{tagId}" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "X-Soldo-Fingerprint: {fingerprint}"
-H "X-Soldo-Fingerprint-Signature: {fingerprint_signature}"
Fingerprint Order
transactionId, tagId, token
Required scope
transaction_write
HTTP Request
DELETE
/business/v2/transactions/{transactionId}/tags/{tagId}
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint | Header Parameter Required |
transactionId |
The public transaction ID | Path Parameter Required |
tagId |
The public Tag ID | Path Parameter Required |
Response Parameters
No Content as result (HTTP response status code 204 No Content).
Transaction Metadata
The transaction metadata Object has the following structure:
Parameter | Description | Sortable |
---|---|---|
id |
The ID related to the custom generated Metadata of the transaction | Yes |
metadata |
A generic JSON | No |
List Metadata
Endpoint to get the list of Metadata of a Transaction.
# find the metadata of a transaction ordered by customer defined ID
curl -X GET \
"https://api.soldo.com/business/v2/transactions/{transactionId}/metadata/?props=id&d=desc" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json"
The above command returns JSON structured like this:
{
"total": 2,
"pages": 1,
"page_size": 25,
"current_page": 0,
"results_size": 2,
"results": [
{
"id": "externalId2",
"metadata": {
"message_x": "value X"
}
},
{
"id": "externalId",
"metadata": {
"message_y": "value Y"
}
}
]
}
Required scope
transaction_read
HTTP Request
GET
/business/v2/transactions/{transactionId}/metadata
Request Parameters
Parameter | Description | Type |
---|---|---|
transactionId |
The public transaction ID | Path Parameter Required |
Response Parameters
The results array contains Metadata.
Get Metadata
Endpoint to get the Metadata of a Transaction by ID.
# get metadata of a transaction by customer defined ID
curl -X GET \
"https://api.soldo.com/business/v2/transactions/{transactionId}/metadata/{metadataId}" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json"
The above command returns JSON structured like this:
{
"message_x": "value X"
}
Required scope
transaction_read
HTTP Request
GET
/business/v2/transactions/{transactionId}/metadata/{metadataId}
Request Parameters
Parameter | Description | Type |
---|---|---|
transactionId |
The public transaction ID | Path Parameter Required |
metadataId |
The ID related to the custom generated Metadata of the transaction | Path Parameter Required |
Response Parameters
The return object is a generic JSON.
Add Metadata
Endpoint to add Metadata to a Transaction.
# add a metadata to a transaction
curl -X POST \
"https://api.soldo.com/business/v2/transactions/{transactionId}/metadata/{metadataId}" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint_signature}"
-d '{metadata_json}'
Fingerprint Order
transactionId, metadataId, metadata, token
Required scope
transaction_write
HTTP Request
POST
/business/v2/transactions/{transactionId}/metadata/{metadataId}
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint | Header Parameter Required |
transactionId |
The public transaction ID | Path Parameter Required |
metadataId |
The ID related to the new custom generated Metadata of the transaction | Path Parameter Required |
metadata |
A generic JSON | Body parameter Required |
Response Parameters
No Content as result (HTTP response status code 204 No Content).
Update Metadata
Endpoint to update Metadata of a Transaction.
# update the metadata of a transaction by customer defined ID
curl -X PUT \
"https://api.soldo.com/business/v2/transactions/{transactionId}/metadata/{metadataId}" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint_signature}"
-d '{metadata_json}'
Fingerprint Order
transactionId, metadataId, metadata, token
Required scope
transaction_write
HTTP Request
POST
/business/v2/transactions/{transactionId}/metadata/{metadataId}
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint | Header Parameter Required |
transactionId |
The public transaction ID | Path Parameter Required |
metadataId |
The ID related to the custom generated Metadata of the transaction | Path Parameter Required |
metadata |
A generic JSON | Body parameter Required |
Response Parameters
No Content as result (HTTP response status code 204 No Content).
Delete Metadata
Endpoint to delete Metadata of a Transaction.
# delete a metadata of a transaction by customer defined ID
curl -X DELETE \
"https://api.soldo.com/business/v2/transactions/{transactionId}/metadata/{metadataId}" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-H "X-Soldo-Fingerprint: {fingerprint}"
-H "X-Soldo-Fingerprint-Signature: {fingerprint_signature}"
Fingerprint Order
transactionId, metadataId, Token
Required scope
transaction_write
HTTP Request
DELETE
/business/v2/transactions/{transactionId}/metadata/{metadataId}
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint | Header Parameter Required |
transactionId |
The public transaction ID | Path Parameter Required |
metadataId |
The ID related to the custom generated Metadata of the transaction | Path Parameter Required |
Response Parameters
No Content as result (HTTP response status code 204 No Content).
Transaction Attachments
The Soldo platform allows a maximum of 3 attachments for each transaction.
The upload process consists of three steps:
- Get a temporary authorised URL to upload the attachment to the transaction
- Upload the file to this URL
- Confirm the completion of the attachment upload to the transaction
The transaction attachment Object has the following structure:
Parameter | Description |
---|---|
attachment_id |
The public attachment ID |
transaction_id |
The public Transaction ID the file is attached to |
file_name |
The file name of the attachment |
file_extension |
The file extension of the attachment |
file_size |
The file size in bytes |
file_url |
The Base64 string of the File URL encrypted by DES in ECB mode, Pkcs7 padding scheme and using Token for key |
url_type |
The URL type (DOWNLOAD_URL to download the attachment; UPLOAD_URL to upload the attachment) |
attachment_type |
The type of attachment (RECEIPT , INVOICE , MAIL , OTHER ) |
read_only |
Boolean (true, false): it determines whether the attachment can be removed or updated. |
content_type |
The type of the attachment content (default: 'binary/octet-stream') |
upload_time |
The date of upload |
attachment_user_id |
The public ID of the User that uploaded the attachment |
upload_user_channel |
The type of attachment (WEB , MOBILE , BO_USER , business ) |
compressed_file |
The Compressed version of the attachment, Soldo automatically generate a compressed version of any image type (e.g. JPG , JPEG , PNG ) attachment having a size greater than 2.5MB |
metadata |
The metadata of the attachment |
Compressed File
The compressed file Object has the following structure:
Parameter | Description |
---|---|
file_name |
The file name of the compressed attachment |
file_extension |
The file extension of the compressed attachment |
file_size |
The file size of the compressed attachment in bytes |
file_url |
The Base64 string of the Compressed File URL encrypted by DES in ECB mode, Pkcs7 padding scheme and using Token for key |
url_type |
The URL type (DOWNLOAD_URL to download the attachment; UPLOAD_URL to upload the attachment) |
Example: decrypt an attachment file url using the JavaScript library of crypto standards 'CryptoJS'.
var internal_token = "<token>";
var file_url = "<file_url_encrypted>";
function decryptByDES(ciphertext, key) {
var keyHex = CryptoJS.enc.Utf8.parse(key);
// direct decrypt ciphertext
var decrypted = CryptoJS.DES.decrypt({
ciphertext: CryptoJS.enc.Base64.parse(ciphertext)
}, keyHex, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
return decrypted.toString(CryptoJS.enc.Utf8);
}
console.log("decrypted url:" + decryptByDES(file_url, internal_token))
List Attachments
Endpoint to get the list of Attachment of a Transaction.
# list of the transaction attachments
curl -X GET \
"https://api.soldo.com/business/v2/transactions/{transactionId}/attachments" \
-H "Authorization: Bearer {access_token}"
-H "X-Soldo-Fingerprint: {fingerprint}"
-H "X-Soldo-Fingerprint-Signature: {fingerprint_signature}"
The above command returns JSON structured like this:
{
"attachments": [
{
"attachment_id": "1517840981837.jpg",
"file_name": "file1.jpg",
"file_extension": "jpg",
"file_size": 586549,
"file_url": "{encrypted_url}",
"url_type": "DOWNLOAD_URL",
"attachment_type": "INVOICE",
"read_only": false,
"content_type": "binary/octet-stream",
"upload_time": "2018-02-05T14:29:43.989Z",
"attachment_user_id": "soldo-000005",
"upload_user_channel": "WEB",
"compressed_file": {
"file_name": "compressed_1517840981837.jpg",
"file_extension": "jpg",
"file_size": 10547,
"file_url": "{compressed_file_encrypted_url}",
"url_type": "DOWNLOAD_URL"
},
"metadata": {}
},
{
"attachment_id": "1518099474227.pdf",
"file_name": "file2.pdf",
"file_extension": "pdf",
"file_size": 586549,
"file_url": "{encrypted_url}",
"url_type": "DOWNLOAD_URL",
"read_only": false,
"content_type": "binary/octet-stream",
"upload_time": "2018-02-08T14:19:16.831Z",
"attachment_user_id": "soldo-000006",
"upload_user_channel": "MOBILE",
"metadata": {
"key1": "val1",
"key2": "val2"
}
}
]
}
Fingerprint Order
transactionId, token
Required scope
transaction_read
HTTP Request
GET
/business/v2/transactions/{transactionId}/attachments
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint | Header Parameter Required |
transactionId |
The public transaction ID | Path Parameter Required |
Response Parameters
The results array contains Attachment.
Get Attachment
Endpoint to get a specific attachment of a Transaction by attachment ID.
# find a the specific attachment
curl -X GET "https://api.soldo.com/business/v2/transactions/{transactionId}/attachments/{attachmentId}" \
-H "Authorization: Bearer {access_token}"
-H "X-Soldo-Fingerprint: {fingerprint}"
-H "X-Soldo-Fingerprint-Signature: {fingerprint_signature}"
The above command returns JSON structured like this:
{
"attachment_id": "1517840981837.pdf",
"file_name": "file1.pdf",
"file_extension": "pdf",
"file_size": 586549,
"file_url": "{encrypted_url}",
"url_type": "DOWNLOAD_URL",
"attachment_type": "INVOICE",
"read_only": false,
"content_type": "binary/octet-stream",
"upload_time": "2018-02-05T14:29:43.989Z",
"attachment_user_id": "soldo-000006",
"upload_user_channel": "MOBILE",
"metadata": {
"key1": "val1",
"key2": "val2"
}
}
# example of Request for download a the specific attachment
curl -X GET -v -o "{file_name}" \
"{download_file_url_decrypted}" \
-H "Content-Type: {content_type}"
Fingerprint Order
transactionId, attachmentId, token
Required scope
transaction_read
HTTP Request
GET
/business/v2/transactions/{transactionId}/attachments/{attachmentId}
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint | Header Parameter Required |
transactionId |
The public transaction ID | Path Parameter Required |
attachmentId |
The attachment ID | Path Parameter Required |
Response Parameters
The return object is a single Attachment.
Upload Attachment
Endpoint to upload an Attachment to a transaction.
- The first step is to get a temporary URL where to upload the attachment file.
# get upload url for a new transaction attachment
curl -X POST \
"https://api.soldo.com/business/v2/transactions/{transactionId}/attachments" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}" \
-d "fileName=example.pdf&fileType=pdf"
# example of request for upload a the specific attachment
curl -X PUT -v --upload-file "{file_name}" \
"{upload_file_url_decrypted}" \
-H "Content-Type: {content_type}"
The above command returns JSON structured like this:
{
"attachment_id": "1521132759035.pdf",
"file_name": "example.pdf",
"file_extension": "pdf",
"file_url": "{encrypted_url}",
"url_type": "UPLOAD_URL",
"read_only": false,
"content_type": "binary/octet-stream"
}
Fingerprint Order
transactionId, fileName, fileType, token
Required scope
transaction_write
HTTP Request
POST
/business/v2/transactions/{transactionId}/attachments
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint | Header Parameter Required |
transactionId |
The public transaction ID | Path Parameter Required |
fileName |
The file name of the attachment | Form Parameter Required |
fileType |
The file type of the attachment | Form Parameter Required |
Response Parameters
The return object is a single Attachment.
Attachment confirmation
After you got the temporary file URL of type UPLOAD_URL
and the attachment file is uploaded, the upload of the Attachment must be confirmed.
# confirm the completion of the attachment upload to the transaction
curl -X POST \
"https://api.soldo.com/business/v2/transactions/{transactionId}/attachments/{attachmentId}" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}" \
-d "fileName=example.pdf&fileType=pdf"
The above command returns JSON structured like this:
{
"attachment_id": "1521132759035.pdf",
"file_name": "example.pdf",
"file_extension": "pdf",
"file_size": 642172,
"file_url": "{encrypted_url}",
"url_type": "DOWNLOAD_URL",
"read_only": false,
"content_type": "binary/octet-stream",
"upload_time": "2018-01-01T01:01:01.000Z"
}
Fingerprint Order
transactionId, attachmentId, fileName, fileType, token
Required scope
transaction_write
HTTP Request
POST
/business/v2/transactions/{transactionId}/attachments/{attachmentId}
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint | Header Parameter Required |
transactionId |
The public transaction ID | Path Parameter Required |
attachmentId |
The attachment ID | Path Parameter Required |
fileName |
The file name of the attachment | Form Parameter Required |
fileType |
The file type of the attachment | Form Parameter Required |
Response Parameters
The return object is a single Attachment.
Delete Attachment
Endpoint to delete an Attachment of a Transaction by attachment ID.
# delete transaction attachment
curl -X DELETE \
"https://api.soldo.com/business/v2/transactions/{transactionId}/attachments/{attachmentId}" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}"
Fingerprint Order
transactionId, attachmentId, token
Required scope
transaction_write
HTTP Request
DELETE
/business/v2/transactions/{transactionId}/attachments/{attachmentId}
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint | Header Parameter Required |
transactionId |
The public transaction ID | Path Parameter Required |
attachmentId |
The attachment ID | Path Parameter Required |
Response Parameters
No Content as result (HTTP response status code 204 No Content).
Update Attachment Metadata
Endpoint to update the Attachment Metadata of an Attachment by attachment ID.
# update attachment metadata
curl -X PUT \
"https://api.soldo.com/business/v2/transactions/{transactionId}/attachments/{attachmentId}" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}"
-d '{
"readonly": false,
"metadata": {
"metadata1_key": "metadata1_value",
"metadata2_key": "metadata2_value"
}
}'
Fingerprint Order
transactionId, attachmentId, token
Required scope
transaction_write
HTTP Request
PUT
/business/v2/transactions/{transactionId}/attachments/{attachmentId}
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint | Header Parameter Required |
transactionId |
The public transaction ID | Path Parameter Required |
attachmentId |
The attachment ID | Path Parameter Required |
UpdateTransactionAttachment |
Update transaction attachment JSON parameters | Body Parameter Required |
Update transaction attachment JSON parameters
Parameter | Description |
---|---|
readonly |
True if the attachment is not editable |
metadata |
Generic map of custom metadata |
Response Parameters
The return object is a single Attachment.
Lists
Endpoints to view and manage the lists of your business account.
List
A List is a flexible Object that can be used to enrich a transaction with additional metadata and it has the following structure:
Parameter | Description |
---|---|
id |
The public ID of the list |
dictionary |
The name of the list |
is_unique_select_tag |
Boolean (true, false): it determines whether multiple tags of the list can be selected |
visible |
Boolean (true, false): it determines whether the list is active |
required |
Boolean (true, false): it determines whether the list requires a mandatory selection in a transaction detail |
editable |
Boolean managed by Soldo only (true): it determines whether the list can be edited (name, adding tags, removing tags, having any of the tag changed in its attributes). |
highlighted |
Boolean managed by Soldo only (true): it determines whether the list is visible in the transaction detail. |
type |
List type (GENERIC , CATEGORY , TAX_RATE ): it determines the type of list |
integrations |
A list of integration codes managed by Soldo only: every code is reserved to an external platform integration |
List type
Soldo business API offers 3 types of lists:
TAX_RATE
: it is a type of list dedicated to manage the Tax ratesCATEGORY
: it is a type of list dedicated to manage an expense category (as of today it is enabled for Xero integration only)GENERIC
: it is a type of list for any kind of custom use
Search Lists
Endpoint to find the Lists using filter parameters.
# get lists
curl -X GET "https://api.soldo.com/business/v2/dictionaries" \
-H "Authorization: Bearer {access_token}"
The above commands returns JSON structured like this:
{
"dictionaries": [
{
"id": "a34d613f-237a-11e8-b6ed-0a18a310bcfe",
"dictionary": "list1",
"type": "GENERIC",
"integrations": [],
"is_unique_select_tag": true,
"visible": true,
"required": false,
"editable": true,
"highlighted": true
},
{
"id": "a3521eb0-237a-11e8-b6ed-0a18a310bcfe",
"dictionary": "list2",
"type": "GENERIC",
"integrations": [],
"is_unique_select_tag": false,
"visible": true,
"required": false,
"editable": true,
"highlighted": true
},
{
"id": "a3521f3c-237a-11e8-b6ed-0a18a310bcfe",
"dictionary": "list3",
"type": "CATEGORY",
"integrations": [
"XERO",
"XERO_CATEGORY"
],
"is_unique_select_tag": false,
"visible": false,
"required": false,
"editable": false,
"highlighted": true
}
]
}
Required scope
tag_read
HTTP Request
GET
/business/v2/dictionaries
Request Parameters
Parameter | Description | Type |
---|---|---|
visible |
Boolean (true, false): it determines whether the list is active | Query Parameter optional |
Response Parameters
The results array contains the Lists.
Get List
Endpoint to get a specific List by public ID.
# find the specific list by public ID
curl -X GET "https://api.soldo.com/business/v2/dictionaries/{listId}" \
-H "Authorization: Bearer {access_token}"
The above command returns JSON structured like this:
{
"id": "7adb1e8a-f73c-4362-bced-4bc30dff6977",
"dictionary": "list1",
"type": "GENERIC",
"integrations": [],
"is_unique_select_tag": false,
"visible": true,
"required": false,
"editable": true,
"highlighted": true
}
Required scope
tag_read
HTTP Request
GET
/business/v2/dictionaries/{listId}
Request Parameters
Parameter | Description | Type |
---|---|---|
listId |
List public ID | Path Parameter Required |
Response Parameters
The return object is a single List.
New List
Endpoint to create a new List.
# create a new list
curl -X POST "https://api.soldo.com/business/v2/dictionaries/" \
-H "Authorization: Bearer {access_token}"
-H "Content-Type: application/x-www-form-urlencoded" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}" \
-d "uniqueSelectTag=false&required=false&dictionary=listNew"
The above command returns JSON structured like this:
{
"id": "7adb1e8a-f73c-4362-bced-4bc30dff6922",
"dictionary": "listNew",
"type": "GENERIC",
"integrations": [],
"is_unique_select_tag": false,
"visible": true,
"required": false,
"editable": true,
"highlighted": true
}
Fingerprint Order
dictionary, uniqueSelectTag, required, token
Required scope
tag_write
HTTP Request
POST
/business/v2/dictionaries/
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
dictionary |
Name of the list | Form Parameter Required |
uniqueSelectTag |
Boolean (true, false): it determines whether multiple tags of the list can be selected | Form Parameter optional |
required |
Boolean (true, false): it determines whether the list requires a mandatory selection in a transaction detail | Form Parameter optional |
Response Parameters
The return object is a single List.
Update List
Endpoint to update the parameter values of a List.
# update list data
curl -X PUT "https://api.soldo.com/business/v2/dictionaries/{listId}" \
-H "Authorization: Bearer {access_token}"
-H "Content-Type: application/x-www-form-urlencoded" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}" \
-d "uniqueSelectTag=false&required=false&visible=true&dictionary=listRename"
The above command returns JSON structured like this:
{
"id": "7adb1e8a-f73c-4362-bced-4bc30dff6922",
"dictionary": "listRename",
"type": "GENERIC",
"integrations": [],
"is_unique_select_tag": false,
"visible": true,
"required": false,
"editable": true,
"highlighted": true
}
Fingerprint Order
listId, dictionary, uniqueSelectTag, required, visible, token
Required scope
tag_write
HTTP Request
PUT
/business/v2/dictionaries/{listId}
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
listId |
List public ID | Path Parameter Required |
dictionary |
Name of the list | Form Parameter optional |
uniqueSelectTag |
Boolean (true, false): it determines whether multiple tags of the list can be selected | Form Parameter optional |
visible |
Boolean (true, false): it determines whether the list is active | Form Parameter optional |
required |
Boolean (true, false): it determines whether the list requires a mandatory selection in a transaction detail | Form Parameter optional |
Response Parameters
The return object is a single List.
Delete List
Endpoint to delete a List.
# remove a list
curl -X DELETE "https://api.soldo.com/business/v2/dictionaries/{listId}" \
-H "Authorization: Bearer {access_token}"
-H "Content-Type: application/x-www-form-urlencoded" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}"
Fingerprint Order
listId, token
Required scope
tag_write
HTTP Request
DELETE
/business/v2/dictionaries/{listId}
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
listId |
List public ID | Path Parameter Required |
Response Parameters
No Content as result (HTTP response status code 204 No Content).
Tag
The tag Object is an item of the List and it has the following structure
Parameter | Description | Sortable |
---|---|---|
id |
Public tag ID | No |
dictionary_id |
List public ID | No |
dictionary |
Name of the list where the tag is listed | No |
tag |
Name of the tag | Yes |
description |
Description of the tag | No |
code |
Code (Internal property managed by Soldo only) | No |
percentage |
Percentage value: valid for TAX_RATE type only |
No |
visible |
Boolean (true, false): it determines whether the tag is visible in the transaction detail | Yes |
update_permissions |
Update Permissions is managed by Soldo only | No |
creation_time |
The date and time when the tag was created | Yes |
Update Permissions
The permission to update the tag properties can be enabled or disabled. By default the permission is enabled and it is not editable because it is managed by Soldo only.
Parameter | Description |
---|---|
name |
Boolean (true, false): it determines whether the tag name can be updated |
visible |
Boolean (true, false): it determines whether the visibility of the tag in the transaction detail can be updated |
delete |
Boolean (true, false): it determines whether the tag can be removed |
description |
Boolean (true, false): it determines whether the tag description can be updated |
percentage |
Boolean (true, false): it determines whether the percentage value can be updated (valid for tags in TAX_RATE list type only). |
Search Tags
Endpoint to find Tags of a List using filter parameters.
# find tags of a list order by properties visible and tag desc
curl -X GET "https://api.soldo.com/business/v2/dictionaries/{listId}/tags?&d=desc&props=visible&props=tag" \
-H "Authorization: Bearer {access_token}"
The above command returns JSON structured like this:
{
"total": 1,
"pages": 1,
"page_size": 25,
"current_page": 0,
"results_size": 1,
"results": [
{
"id": "582011f5-84d9-4c31-89d6-d2a598aead7d",
"tag": "tagName",
"dictionary_id": "7adb1e8a-f73c-4362-bced-4bc30dff6977",
"dictionary": "list1",
"description": "tag description",
"visible": true,
"creation_time": "2020-07-15T11:00:10Z",
"update_permissions": {
"name": true,
"visible": true,
"delete": true,
"description": true
}
}
]
}
Required scope
tag_read
HTTP Request
GET
/business/v2/dictionaries/{listId}/tags
Request Parameters
Parameter | Description | Type |
---|---|---|
listId |
List public ID | Path Parameter Required |
visible |
Boolean (true, false): it determines whether the tag is active | Query Parameter optional |
name |
The name of the tag to search. IF isNameLike is true , for a part of the name is allowed |
Query Parameter optional |
isNameLike |
Boolean (true, false): it determines whether if the search of a tag name is in like mode and by default the value is false | Query Parameter optional |
Response Parameters
The results array contains Tag.
Get Tag
Endpoint to get a specific Tag of a List by public ID.
# get tag of a list
curl -X GET "https://api.soldo.com/business/v2/dictionaries/{listId}/tags/{tagId}/" \
-H "Authorization: Bearer {access_token}"
The above command returns JSON structured like this:
{
"id": "582011f5-84d9-4c31-89d6-d2a598aead7d",
"tag": "tagName",
"dictionary_id": "7adb1e8a-f73c-4362-bced-4bc30dff6977",
"dictionary": "list1",
"description": "tag description",
"visible": true,
"creation_time": "2020-07-15T11:00:10Z",
"update_permissions": {
"rename": true,
"visible": true,
"delete": true,
"description": true
}
}
Required scope
tag_read
HTTP Request
GET
/business/v2/dictionaries/{listId}/tags/{tagId}
Request Parameters
Parameter | Description | Type |
---|---|---|
listId |
List public ID | Path Parameter Required |
tagId |
Public tag ID | Path Parameter Required |
Response Parameters
The return object is a single Tag.
Add Tag
Endpoint to add a Tag into a List.
# add a tag to the list
curl -X POST "https://api.soldo.com/business/v2/dictionaries/{listId}/tags/" \
-H "Authorization: Bearer {access_token}"
-H "Content-Type: application/x-www-form-urlencoded" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}" \
-d "tag=newTag&description=tagDescription"
The above command returns JSON structured like this:
{
"id": "582011f5-84d9-4c31-89d6-d2a598aead7d",
"tag": "newTag",
"dictionary_id": "7adb1e8a-f73c-4362-bced-4bc30dff6977",
"dictionary": "list1",
"description": "tagDescription",
"visible": true
}
Fingerprint Order
listId, tag, description, percentage, token
Required scope
tag_write
HTTP Request
POST
/business/v2/dictionaries/{listId}/tags
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signautre of the X-Soldo-Fingerprint |
Header Parameter Required |
listId |
List public ID | Path Parameter Required |
tag |
Name of the tag | Form Parameter Required |
description |
Description of the tag (not for tags in TAX_RATE list type) |
Form Parameter |
percentage |
Percentage value: valid for tags in TAX_RATE list type only |
Form Parameter |
Response Parameters
The return object is a single Tag.
Update Tag
Endpoint to update Tag data of a List.
# update tag data of a list
curl -X PUT "https://api.soldo.com/business/v2/dictionaries/{listId}/tags/{tagId}" \
-H "Authorization: Bearer {access_token}"
-H "Content-Type: application/x-www-form-urlencoded" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}" \
-d "tag=newTagName&visible=true&description=tagDescription"
The above command returns JSON structured like this:
{
"id": "582011f5-84d9-4c31-89d6-d2a598aead7d",
"tag": "newTagName",
"dictionary_id": "7adb1e8a-f73c-4362-bced-4bc30dff6977",
"dictionary": "list1",
"description": "tagDescription",
"visible": true
}
Fingerprint Order
listId, tagId, tag, visible, description, percentage, token
Required scope
tag_write
HTTP Request
PUT
/business/v2/dictionaries/{listId}/tags/{tagId}
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
listId |
List public ID | Path Parameter Required |
tagId |
Public tag ID | Path Parameter Required |
tag |
Name of the tag | Form Parameter |
visible |
Boolean (true, false): it determines whether the tag is visible in the transaction detail | Form Parameter |
description |
Description of the tag (not valid for tags in TAX_RATE list type) |
Form Parameter |
percentage |
Percentage value: valid for tags in TAX_RATE list type only |
Form Parameter |
Response Parameters
The return object is a single Tag.
Delete Tag
Endpoint to delete Tag of a List.
# delete a tag of a list
curl -X DELETE "https://api.soldo.com/business/v2/dictionaries/{listId}/tags/{tagId}" \
-H "Authorization: Bearer {access_token}"
-H "Content-Type: application/x-www-form-urlencoded" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}"
Fingerprint Order
listId, tagId, token
Required scope
tag_write
HTTP Request
DELETE
/business/v2/dictionaries/{listId}/tags/{tagId}
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
listId |
The list public ID | Path Parameter Required |
tagId |
The tag public ID | Path Parameter Required |
Response Parameters
No Content as result (HTTP response status code 204 No Content).
Orders
Endpoints to manage your orders.
Order
The order Object has the following structure
Parameter | Description | Sortable |
---|---|---|
id |
The order public ID | No |
status |
The status of the order. Available values: PENDING , ERROR , PLACED , CANCELLED , COMPLETED , COMPLETED_WITH_CREDIT |
No |
creation_time |
The creation date of the order | Yes |
last_update_time |
The last update date of the order | No |
is_valid |
Boolean. True if the order is valid. | No |
error_code |
Report the error code of the order. This is filled if is_valid is false |
No |
total_paid_amount |
The total amount of the order | No |
total_paid_currency |
The currency of the total_paid_amount |
No |
total_items |
The number of the Item included in the order | No |
creation_time |
The date and time when the order was created | Yes |
Order Item
Parameter | Description |
---|---|
item_type |
The type of the item. The available type are employee , group , wallet , virtual_card , plastic_card , fuel_card , other |
item_public_id |
The public ID of the item_type |
Search orders
Endpoint to retrieve your orders.
curl -X GET "https://api.soldo.com/business/v2/orders/" \
-H "Authorization: Bearer {access_token}"
The above command returns JSON structured like this:
{
"total": 2,
"pages": 1,
"page_size": 25,
"current_page": 0,
"results_size": 2,
"results": [
{
"id": "4e7b395d-234c-48cf-a69a-f73d2dfdc531",
"status": "PENDING",
"creation_time": "2020-01-30T16:05:52Z",
"last_update_time": "2020-01-30T16:05:55Z",
"is_valid": true,
"total_paid_amount": 5.000000,
"total_paid_currency": "EUR",
"total_items": 1,
"creation_time": "2020-07-15T11:00:10Z"
},
{
"id": "4e7b395d-234c-48cf-a69a-f73d4abdc310",
"status": "COMPLETED",
"creation_time": "2020-01-10T10:10:17Z",
"last_update_time": "2020-01-10T10:10:19Z",
"is_valid": true,
"total_paid_amount": 1.000000,
"total_paid_currency": "EUR",
"total_items": 1,
"creation_time": "2020-07-15T11:00:10Z"
}
]
}
Required scope
company_read
HTTP Request
GET
/business/v2/orders
Request Parameters
Parameter | Description | Type |
---|---|---|
id |
The order public ID | Query Parameter optional |
status |
The status of the order | Query Parameter optional |
fromDate |
The beginning of the period of the search fromDate included (i.e. greater than or equal to)(Formats: yyyy-MM-dd, yyyy-MM-ddThh:mm:ss, yyyy-MM-ddThh:mm:ssZ) |
Query Parameter optional |
toDate |
The end of the period of the search toDate included (i.e. less than)(Formats: yyyy-MM-dd, yyyy-MM-ddThh:mm:ss, yyyy-MM-ddThh:mm:ssZ) |
Query Parameter optional |
Response Parameters
The results array contains Order.
Get order
Endpoint to retrieve a specific order.
curl -X GET "https://api.soldo.com/business/v2/orders/{orderId}" \
-H "Authorization: Bearer {access_token}"
The above command returns JSON structured like this:
{
"id": "order-id-2",
"status": "COMPLETED",
"is_valid": true,
"total_paid_amount": 0,
"total_paid_currency": "EUR",
"items" : [
{
"item_type": "virtual_card",
"item_public_id": "card-public-id-01"
}
],
"total_items": 1,
"creation_time": "2020-07-15T11:00:10Z"
}
Required scope
company_read
HTTP Request
GET
/business/v2/orders/{orderId}
Request Parameters
Parameter | Description | Type |
---|---|---|
orderId |
Public order ID | Path Parameter Required |
Response Parameters
The return object is a single Order.
Delete order
Endpoint to delete a specific order. Only orders in status ERROR
or PLACED
can be deleted.
curl -X DELETE "https://api.soldo.com/business/v2/orders/{orderId}" \
-H "Authorization: Bearer {access_token}" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}"
Fingerprint Order
orderId, token
Required scope
company_write
HTTP Request
DELETE
/business/v2/orders/{orderId}
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
orderId |
Public order ID | Path Parameter Required |
Response Parameters
No Content as result (HTTP response status code 204 No Content).
Vehicles
Endpoints to view and manage the vehicles on your account
Vehicle
The vehicle Object has the following structure:
Parameter | Description | Sortable |
---|---|---|
id |
The vehicle ID | No |
number_plate |
The plate number of the vehicle | Yes |
description |
The description of the vehicle | No |
vat_deductible |
The VAT deductibility rate (NONE , 40 , 100 ) |
No |
fuel_type |
The fuel type (PETROL , DIESEL , METHANE , LPG , LNG , ELECTRIC , UNKNOWN ) |
No |
status |
The vehicle status (ACTIVE , ARCHIVED ) |
No |
creation_time |
The date and time when the vehicle was created | Yes |
last_update_time |
The last date and time when the vehicle was updated | Yes |
card_ids |
The list of Card public ID associated with the vehicle | No |
Vehicle status
A vehicle can assume the following status:
ACTIVE
the vehicle is active. When a vehicle is created this status is automatically assignedARCHIVED
the vehicle is archivedDELETED
the vehicle is removed (only sent as part of the delete vehicle Webhook Event)
Search vehicle
Endpoints to find Vehicles using filters parameters
# find all the vehicles (max 50 per Page)
curl -X GET "https://api.soldo.com/business/v2/vehicles" \
-H "Authorization: Bearer {access_token}"
# find all the vehicles with pagination
curl -X GET "https://api.soldo.com/business/v2/vehicles?p={page_number}&s={page_size}" \
-H "Authorization: Bearer {access_token}"
# find filtering by text
curl -X GET "https://api.soldo.com/business/v2/vehicles?text={text}" \
-H "Authorization: Bearer {access_token}"
The above commands returns JSON structured like this:
{
"total": 1,
"pages": 0,
"page_size": 1,
"current_page": 50,
"results_size": 1,
"results": [
{
"id": "6f3bab8e-5d78-11ec-93fc-0ab7380ae409",
"number_plate": "PL00019",
"description": "test car 12",
"vat_deductible": "40",
"fuel_type": "DIESEL",
"status": "ACTIVE",
"creation_time": "2019-03-15T16:47:20Z",
"last_update_time": "2021-12-17T09:13:26Z",
"card_ids": []
}
]
}
Required scope
vehicle_read
HTTP Request
GET
/business/v2/vehicles
Request Parameters
Parameter | Description | Type |
---|---|---|
text |
A text to be searched on the number plate and description field | Query Parameter optional |
Response Parameters
The results array contains Vehicle.
Get vehicle
Endpoints to get a specific Vehicle by public ID.
# find the specific vehicle
curl -X GET "https://api.soldo.com/business/v2/vehicles/{vehicleId}" \
-H "Authorization: Bearer {access_token}"
The above command returns JSON structured like this
{
"id": "6f3bab8e-5d78-11ec-93fc-0ab7380ae409",
"number_plate": "PL00019",
"description": "test car 12",
"vat_deductible": "40",
"fuel_type": "DIESEL",
"status": "ARCHIVED",
"creation_time": "2019-03-15T16:47:20Z",
"last_update_time": "2021-12-15T17:11:19Z",
"card_ids": []
}
Required scope
vehicle_read
HTTP Request
GET
/business/v2/vehicles/{vehicleId}
Request Parameters
Parameter | Description | Type |
---|---|---|
vehicleId |
The vehicle ID | Path Parameter Required |
Response Parameters
The return object is a single Vehicle.
Add Vehicle
Endpoint to add a new Vehicle.
# add a new vehicle
curl -X POST 'https://api.soldo.com/business/v2/vehicles/' \
-H 'X-Soldo-Fingerprint: {fingerprint}' \
-H 'X-Soldo-Fingerprint-Signature: {fingerprint-signature}' \
-H 'Authorization: Bearer {access_token}' \
-H 'Content-Type: application/json' \
-d '{
"number_plate": "PL00019",
"description" : "test car 12",
"vat_deductible" : "40",
"fuel_type": "DIESEL"
}'
The above commands return JSON structured like this:
{
"id": "5f94373a-e32b-4164-b422-dfd3aa46e6a8",
"number_plate": "PL00019",
"description": "test car 12",
"vat_deductible": "40",
"fuel_type": "DIESEL",
"status": "ACTIVE",
"creation_time": "2021-12-15T14:40:06.722Z",
"last_update_time": "2021-12-15T14:40:06.722Z",
"card_ids": []
}
Fingerprint Order
number_plate, description, vat_deductible, fuel_type, token
Required scope
vehicle_write
HTTP Request
POST
/business/v2/vehicles/
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
AddVehicle |
Add vehicle JSON Parameters | Body Parameters Required |
Add vehicle JSON parameters
Parameter | Description | Required |
---|---|---|
number_plate |
The plate number of the vehicle | Yes |
decription |
The description of the vehicle | Yes |
vat_deductible |
The VAT deductibility rate. Available values are NONE , 40 , 100 |
Yes |
fuel_type |
The fuel type of the vehicle. Available values are PETROL , DIESEL , METHANE , LPG , LNG , ELECTRIC , UNKNOWN |
Yes |
Response Parameters
The result is a Vehicle
Update Vehicle
Endpoints to update a specific Vehicle
curl -X PUT 'https://api.soldo.com/business/v2/vehicles/6f3bab8e-5d78-11ec-93fc-0ab7380ae409' \
-H 'X-Soldo-Fingerprint: {fingerprint}' \
-H 'X-Soldo-Fingerprint-Signature: {fingerprint-signature}' \
-H 'Authorization: Bearer {access_token}' \
-H 'Content-Type: application/json' \
-d '{
"number_plate": "PL00019",
"description" : "test car 12",
"vat_deductible" : "40",
"fuel_type": "DIESEL",
"status": "ACTIVE"
}'
The above command return JSON structured like this:
{
"id": "6f3bab8e-5d78-11ec-93fc-0ab7380ae409",
"number_plate": "PL00019",
"description": "test car 12",
"vat_deductible": "40",
"fuel_type": "DIESEL",
"status": "ACTIVE",
"creation_time": "2019-03-15T16:47:20Z",
"last_update_time": "2021-12-15T17:16:05Z",
"card_ids": []
}
Fingerprint Order
vehicle_id, number_plate, description, vat_deductible, fuel_type, status token
Required scope
vehicle_write
HTTP Request
PUT
/business/v2/vehicles/{vehicle_id}
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
vehicle_id |
The vehicle public ID | Path Parameter Required |
UpdateVehicle |
Update vehicle JSON Parameters | Body Parameters Required |
Update vehicle JSON parameters
Parameter | Description | Required |
---|---|---|
number_plate |
The plate number of the vehicle | Yes |
decription |
The description of the vehicle | Yes |
vat_deductible |
The VAT deductibility rate. Available values are NONE , 40 , 100 |
Yes |
fuel_type |
The fuel type of the vehicle. Available values are PETROL , DIESEL , METHANE , LPG , LNG , ELECTRIC , UNKNOWN |
Yes |
status |
The status of the vehicle. Available values are ACTIVE , ARCHIVED |
Yes |
Response Parameters
The result is a Vehicle
Delete Vehicle
Endpoint to delete a specific Vehicle
curl -X DELETE 'https://api.soldo.com/business/v2/vehicles/6f3bab8e-5d78-11ec-93fc-0ab7380ae409' \
-H 'Authorization: Bearer {access_token}' \
-H 'Content-Type: application/json' \
-H 'X-Soldo-Fingerprint: {fingerprint}' \
-H 'X-Soldo-Fingerprint-Signature: {fingerprint-signature}' \
Fingerprint Order
vehicleId, token
Required scope
vehicle_write
HTTP Request
DELETE
/business/v2/vehicles/{vehicleId}
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
vehicleID |
The vehicle public ID | Path Parameter Required |
Response Parameters
No Content as result (HTTP response status code 204 No Content).
Webhooks
A webhook allows you to receive near real-time notifications of events happening in your account.
Some events may not be the result of an API request (e.g. a payment or any other type of transaction) and therefore those events can be managed with webhooks.
Registering a webhook
Each time a matching event occurs, Soldo makes a POST call to the URL you provide. To register a new webhook, please contact us.
Events
The list of events currently supported:
Type | Name | Description |
---|---|---|
Card | card_activated |
a card is activated |
Card | card_change_status |
card change status |
Card | card_creation |
a new card is created |
Card | card_destroyed |
a card is destroyed |
Card | card_lost |
card is reported as lost |
Card | card_replaced |
a card is replaced |
Card | card_stolen |
card is reported as stolen |
Group | add_resources_card |
a card is added to a group |
Group | add_resources_member |
a member is added to a group |
Group | add_resources_wallet |
a wallet is added to a group |
Group | create_group |
a new group is created |
Group | delete_group |
a group is deleted |
Group | move_resources_card |
a card is moved to another group |
Group | move_resources_member |
a member is moved to another group |
Group | move_resources_wallet |
a wallet is moved to another group |
Group | remove_resources_card |
a card is removed from a group |
Group | remove_resources_member |
a member is removed from a group |
Group | remove_resources_wallet |
a wallet is removed from a group |
Group | update_group |
a group is updated |
Order | store_order_completed |
an order is completed |
Order | store_order_placed |
an order is placed |
Transaction | balanced_transfer |
balanced internal transfer to top-up a wallet |
Transaction | billing |
billing related to Card/User purchase |
Transaction | card_authorization |
transaction authorisation is requested |
Transaction | conversion |
transfer between wallets with different currency |
Transaction | customer_care_deposit |
deposit performed by customer care support |
Transaction | customer_care_withdraw |
withdrawal performed by customer care support |
Transaction | edit_tag |
a tag is added or removed from a transaction |
Transaction | inbound_payment |
inbound payment from Faster Payment |
Transaction | inbound_payment_reversal |
reversal of an inbound payment from Faster Payment |
Transaction | internal_transfer |
transfer between wallets with the same currency |
Transaction | joule_feed |
transaction is settled/reversed |
Transaction | load_failed |
failed load for company wallet |
Transaction | load_money |
load money on company wallet |
Transaction | recurring_billing |
monthly billing |
Transaction | scheduled_transfer |
scheduled internal transfer to top-up a wallet |
Transaction | transaction_adjustment |
a transactions is adjusted |
Transaction | unload_money |
unload money from a company wallet |
Transaction | wiretransfer |
deposit in |
TransactionAttachment | upload_completed |
an attachment is uploaded to a transaction |
User | new_user |
a new user is created |
User | user_status_changed |
the status of the user is changed |
User | user_updated |
an user is updated |
Wallet | wallet_created |
a new wallet is created |
Wallet | wallet_deleted |
a wallet is deleted |
Vehicle | vehicle_create |
a vehicle is created |
Vehicle | vehicle_update |
a vehicle is updated |
Vehicle | vehicle_delete |
a vehicle is deleted |
Purchase | purchase_create |
a purchase is created |
Purchase | purchase_update |
a purchase is updated |
Purchase | purchase_delete |
a purchase is deleted |
Purchase | purchase_redeem_card |
a card of purchase is redeemed |
ExpenseReview | created_expense_configuration |
a configuration is created |
ExpenseReview | disabled_expense_configuration |
a configuration is disabled |
ExpenseReview | updated_expense_configuration |
a configuration is updated |
ExpenseReview | completed_transactions_import |
a transaction is completed |
ExpenseReview | updated_transaction |
a transaction is update |
Payload structure
The endpoint you expose receives a JSON payload.
# webhook notification
curl -X POST "https://yourdomain.com/yourpath/" \
-H "Content-Type: application/json" \
-H "X-Soldo-Fingerprint-Order: {fingerprintorder}" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}" \
-d '{
"event_type": "{event_type}",
"event_name": "{event_name}",
"data": ...
}'
HTTP Request
POST
https://yourdomain.com/yourpath/
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint-Order |
The comma separated fields signed with SHA512 | Header Parameter Required |
X-Soldo-Fingerprint |
The fingerprint generated with SHA512 | Header Parameter Required |
X-Soldo-Fingerprint-signature |
The signed X-Soldo-Fingerprint , it must be verified using the Soldo public key |
Header Parameter Required (not available yet) |
event_type |
The type of the event (Card , Group , Order , ThreeDomainSecure , Transaction , TransactionAttachment , User , Wallet ) |
JSON field Required |
event_name |
The event name | JSON field Required |
data |
The data of the type defined in the event_type where the available types are Card, Group, Order, Transaction, TransactionAttachment, User, Wallet, Vehicle, Purchase, ExpenseReview |
JSON field Required |
Response
Soldo Public Key
Webhook Fingerprint
To access more securely to the information received, you need to check and validate the authenticity of the Soldo fingerprint.
X-Soldo-Fingerprint-Order
andX-Soldo-Fingerprint
are always the header parameters and they must be used to verify Soldo as the real sender of the notification.X-Soldo-Fingerprint-Order
contains comma separated fields used to produce theX-Soldo-Fingerprint
with the SHA512 algorithm.X-Soldo-Fingerprint-Order
always containstoken
as one of the parameters.X-Soldo-Fingerprint
is signed with SHA512withRSA encoded Base64 and passed as header parameterX-Soldo-Fingerprint-signature
X-Soldo-Fingerprint-signature
must be verified using the Soldo public key. (not available yet)token
is released by Soldo to a Business customer (provided together withclient_id
andclient_secret
).token
is never used in server to server communications (API requests): this to ensure that only you and Soldo know about thetoken
.
Verify notification
To further check the notification, you can use the API request to retrieve the specific resource and compare with the one received. To have the query use data.id
.
Errors
The Soldo business API uses uses conventional HTTP response codes to indicate errors, and includes more detailed information on the exact nature of an error in the HTTP response.
The error response JSON structure:
{
"error_code": "INVALID_FINGERPRINT",
"message": "invalid fingerprint"
}
Error Code | Meaning |
---|---|
400 | Bad Request -- Your request has missing arguments or is malformed |
401 | Unauthorized -- Your request is not authenticated |
404 | Page Not Found -- The endpoint requested does not exist |
405 | Method Not Allowed -- The API key you are using is not granted with the necessary permissions |
500 | Internal Server Error -- Something is wrong on our end |
Deprecated
Expense Centres
Endpoints to manage expense centres in your account.
- An expense centre is an entity that represents the possibility to have non-nominative cards to use for company expenses
- An expense centre may have one or more wallets to which may be connected one or more cards (plastic, virtual or fuel)
- An expense centre does not have a direct access to the web console or the mobile app
Expense Centre
The expense center Object has the following structure
Parameter | Description | Sortable |
---|---|---|
id |
The public expense centre ID | Yes |
name |
The name of the expense centre | Yes |
assignee |
The assignee of the expense centre is just a string and it is not directly connected to a user of the platform | Yes |
custom_reference_id |
The expense centre reference in an external system | Yes |
status |
The status of the expense centre (ACTIVE , BLOCKED , SUSPENDED , PENDING , ARCHIVED |
Yes |
visible |
Boolean property (true, false): it determines whether the expense centre is visible in the web console | Yes |
creation_time |
The date and time when the expense center was created | Yes |
Search Expense Centres
Endpoints to find Expense Centres using filters parameters.
# find all the expense centres (max 50 per Page)
curl -X GET "https://api.soldo.com/business/v2/expensecentres" \
-H "Authorization: Bearer {access_token}"
# find all the expense centres with pagination
curl -X GET "https://api.soldo.com/business/v2/expensecentres?p={page_number}&s={page_size}" \
-H "Authorization: Bearer {access_token}"
# find filtering by customer reference
curl -X GET "https://api.soldo.com/business/v2/expensecentres?customreferenceId={customreferenceId}" \
-H "Authorization: Bearer {access_token}"
# find filtering by status 'ACTIVE' and name = 'Marketing'
curl -X GET "https://api.soldo.com/business/v2/expensecentres?status=ACTIVE&name=Marketing" \
-H "Authorization: Bearer {access_token}"
The above commands returns JSON structured like this:
{
"total": 2,
"pages": 1,
"page_size": 25,
"current_page": 0,
"results_size": 2,
"results": [
{
"id": "soldo-000008",
"name": "Test Department",
"custom_reference_id": "mySecondCustomReference",
"status": "ACTIVE",
"visible": true,
"creation_time": "2020-07-15T11:00:10Z"
},
{
"id": "soldo-000009",
"name": "Marketing",
"status": "ACTIVE",
"visible": true,
"creation_time": "2020-07-15T11:00:10Z"
}
]
}
Required scope
expensecentre_read
HTTP Request
GET
/business/v2/expensecentres
Request Parameters
Parameter | Description | Type |
---|---|---|
id |
The ID of the expense centre | Query Parameter optional |
name |
The name of the expense centre | Query Parameter optional |
customreferenceId |
The custom reference of the expense centre | Query Parameter optional |
status |
The status of the expense centre | Query Parameter optional |
visible |
The visibility of the expense centre | Query Parameter optional |
assignee |
The string assignee of the expense centre | Query Parameter optional |
Response Parameters
The results array contains Expense Centre.
Get Expense Centre
Endpoint to get a specific Expense Centre by public ID.
# find the specific expense centre
curl -X GET "https://api.soldo.com/business/v2/expensecentres/{expenseCentreId}" \
-H "Authorization: Bearer {access_token}"
The above command returns JSON structured like this:
{
"id": "soldo-000008",
"name": "Test Department",
"custom_reference_id": "mySecondCustomReference",
"status": "ACTIVE",
"visible": true,
"creation_time": "2020-07-15T11:00:10Z"
}
Required scope
expensecentre_read
HTTP Request
GET
/business/v2/expensecentres/{expenseCentreId}
Request Parameters
Parameter | Description | Type |
---|---|---|
expenseCentreId |
Public expense centre ID | Path Parameter Required |
Response Parameters
The return object is a single Expense Centre.
Add Expense Centre
Endpoint to add a new Expense Centre.
# add a new expense centre
curl -X POST "https://api.soldo.com/business/v2/expensecentres" \
-H "Authorization: Bearer {access_token}" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}" \
-H "Content-Type: application/json" \
-d '{
"request_timestamp": 1576850500000,
"name": "aname",
"assignee": "assignee",
"custom_reference_id": "areference_id"
}'
The above command returns JSON structured like this:
{
"id": "order-id",
"status": "PLACED",
"is_valid": true,
"error_code": "",
"total_paid_amount": 0,
"total_paid_currency": "EUR",
"items" : [
{
"item_type" : "expensecentre"
}
],
"total_items": 1
}
Fingerprint Order
request_timestamp, name, assignee, custom_reference_id, token
Required scope
expensecentre_write
HTTP Request
POST
/business/v2/expensecentres/
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
AddExpenseCentre |
Add expense centre JSON Parameters | Body Parameter Required |
Add expense centre JSON parameters
Parameter | Description |
---|---|
request_timestamp |
The epoc timestamp in millis. This is checked in Soldo. Requests with timestamp older than 5 seconds will be rejected. |
name |
The name of the expense centre |
assignee |
The assignee of the expense centre |
custom_reference_id |
The expense centre reference in an external system |
Response Parameters
The return object is a single Order.
Update Expense Centre Data
Endpoint to updates a specific Expense Centre by public ID.
curl -X PUT "https://api.soldo.com/business/v2/expensecentres/{expenseCentreId}" \
-H "Authorization: Bearer {access_token}" \
-H "X-Soldo-Fingerprint: {fingerprint}" \
-H "X-Soldo-Fingerprint-Signature: {fingerprint-signature}" \
-H "Content-Type: application/json" \
-d '{
"custom_reference_id": "IT expenses",
"assignee": "Mr B."
}'
The above command returns JSON structured like this:
{
"id": "soldo-000008",
"name": "Test Department",
"custom_reference_id": "IT expenses",
"assignee": "Mr B.",
"status": "ACTIVE",
"visible": true
}
Fingerprint Order
custom_reference_id, assignee, token
Required scope
expensecentre_write
HTTP Request
PUT
/business/v2/expensecentres/{expenseCentreId}
Request Parameters
Parameter | Description | Type |
---|---|---|
X-Soldo-Fingerprint |
SHA512SUM of the Fingerprint order values | Header Parameter Required |
X-Soldo-Fingerprint-Signature |
signature of the X-Soldo-Fingerprint |
Header Parameter Required |
expenseCentreId |
Public expense centre ID | Path Parameter Required |
UpdateExpenseCentre |
Update Expense Centre JSON Parameters | Body Parameter Required |
Update Expense Centre Parameters
Parameter | Description |
---|---|
custom_reference_id |
The custom reference of the expense centre |
assignee |
The string assignee of the expense centre |
Response Parameters
The return object is a single Expense Centre.