Business API
Retrieve a list of expenses
api
get
/expenses

Retrieve a list of expenses

Get all your expenses, or use the query parameters to filter the results.

The expenses are sorted by the expense_date value in reverse chronological order, and they're paginated. The maximum number of expenses returned per page is specified by the count parameter. To get the next page of results, make a new request and use the expense_date value from the last item of the previous page as the value for the to parameter.

note

The API returns a maximum of 500 expenses per request.

note

To be compliant with PSD2 SCA regulations, businesses on the Revolut Business Freelancer plans can only access information older than 90 days within 5 minutes of the first authorisation.

note

This feature is not available in Sandbox.

For more information, see the guides: Retrieve expenses and receipts.

Access Token

Each Business API request must contain an authorization header in the following format to make a call: Bearer <your_access_token>.

The access token will be obtained the first time you set up your application and has an expiration of 40 minutes. During setup, a refresh_token will also be obtained which allows to obtain a new access_token.

danger

Never share your client-assertion JWT (JSON web token), access_token and refresh_token with anyone, as these can be used to access your banking data and initiate transactions.

Access tokens can be issued with four security scopes and require a JWT (JSON Web Token) signature to be obtained:

  • READ: Permissions for GET operations.

  • WRITE: Permissions to update counterparties, webhooks, and issue payment drafts.

  • PAY: Permissions to initiate or cancel transactions and currency exchanges.

  • READ_SENSITIVE_CARD_DATA: Permissions to retrieve sensitive card details.

    caution

    If you enable the READ_SENSITIVE_CARD_DATA scope for your access token, you must set up IP whitelisting. Failing to do so will prevent you from accessing any Business API endpoint.

    IP whitelisting means that you must specify an IP or a set of IPs which will be the only IPs from which requests to the API will be accepted. To do so:

    1. Go to the Revolut Business web app settings -> APIs -> Business API.
    2. Select the corresponding API certificate.
    3. In Production IP whitelist, provide the IP(s) which should be whitelisted, and save.

To configure your JWT and obtain the refresh and first access tokens, complete the following steps:

  1. Sign up for a Revolut Business account
  2. Prepare your Sandbox environment
  3. Make your first API request

Request

Query Parameters
Query Parameters

The date and time to retrieve the expenses from, including this date-time. Corresponds to the value of expense_date. Provided in ISO 8601 format.

Used also for pagination. To get back to the previous page of results, make a new request and use the expense_date value from the first item of the current page as the value for the from parameter.

The date and time to retrieve the expenses to, excluding this date-time. Corresponds to the value of expense_date. Provided in ISO 8601 format. The default value is the date and time at which you're calling the endpoint.

Used also for pagination. To get back to the next page of results, make a new request and use the expense_date value from the last item of the previous (current) page as the value for the to parameter.

Possible values: >= 1 and <= 500

Default value: 100

The maximum number of the expenses to retrieve per page. To get the next page of results, make a new request and use the expense_date value from the last item of the previous page as the value for the to parameter.

Possible values: [missing_info, awaiting_review, reverted, refund_requested, refunded, approved, rejected]

Retrieves the expenses in the specified state.

Possible values: [atm, card_payment, fee, transfer, external]

The type of the transaction related to the expense. If provided, only expenses with transactions of this type are returned.

Response

List of expenses

Response body
Body array

The ID of the expense.

Possible values: [missing_info, awaiting_review, rejected, refund_requested, refunded, approved, reverted]

Indicates the state of the expense. Possible values:

  • missing_info: The expense is missing some required information.

    This is the initial state of the expense when it's first created. Once the missing information is provided, the expense is ready to be submitted.

  • awaiting_review: The expense is awaiting approval before it can be completed.

    The approver can approve, reject, or request refund for the expense. It is also possible for the submitter to undo the submission at this stage.

  • rejected: The expense has been rejected by the approver.

    The expense submitter (typically, the payer) should fix the issue that was the reason for the rejection and resubmit the expense.

  • refund_requested: The expense has been rejected and refund has been requested.*

    This state is possible for card transactions. It indicates that following the review, the approver rejected the expense and requested that it be refunded back to the business account. This can happen, for example, if an employee accidentally makes a personal purchase with their business card. Once refunded, the admin can mark this expense as refunded.

  • refunded: The expense has been refunded.*

    This state indicates that the admin has marked the expense as refunded.

  • approved: The expense has been approved and is now completed.*

  • reverted: The expense has been reverted.

    This status indicates that the transaction related to the expense has been reverted. In such a case, the expense status is automatically set to reverted, and the expense is completed. This can happen, for example, when the transaction has been reverted by the merchant.

*Additionally, if an admin has previously approved the expense, marked it as refunded, or requested a refund, they can revert their decision. In such a case, the expense goes back to the initial missing_info state.

For more information, see the guides: Retrieve expenses and receipts.

Possible values: [atm, card_payment, fee, transfer, external]

The type of the transaction related to the expense.

The description of the expense.

The date and time the expense was submitted in ISO 8601 format.

The date and time the expense was completed in ISO 8601 format.

The name of the team member who made the transaction, refund request, or ATM withdrawal, or the name of the business if the related transaction is of type fee.

The name of the merchant.

The ID of the transaction related to the expense. Not available for transactions of type external.

The expense data depends on the type of the expense and whether it has been completed.

Typically, it's the date and time of the expense transaction in ISO 8601 format.

  • If the transaction related to the expense is completed, it is the date and time of its completion (completed_at).
  • Otherwise, it is the date and time of its creation (created_at).

For reimbursements, it's the payment date provided in the reimbursement request.

The labels added to the expense, organised in groups.

You can have up to five label groups, with unlimited number of labels in each group.

The labels are provided as an object, where each key is a name of a label group, and the values corresponding to the keys are arrays of labels from those groups.

The splits of the expense.

A single expense can be divided into multiple parts (splits), for example, to allocate different portions of the expense to different categories.

The original amount of the expense split.

The amount of money.

Possible values: Value must match regular expression ^[A-Z]{3}$

ISO 4217 currency code in upper case.

The category of the expense split.

The name of the category.

The code of the category.

The tax rate applied to the expense split.

The name of the tax.

The tax rate percentage applied to the taxable amount. For example, 23 for 23%.

The IDs of the receipts related to the expense.

The expense amount in billed currency.

The amount of money.

Possible values: Value must match regular expression ^[A-Z]{3}$

ISO 4217 currency code in upper case.

Was this page helpful?
Loading...