Expenses for Revolut Business allow you to capture receipts, categorise, and reconcile all your business expenses in one place, so you can save time on admin work.
To learn more about the Expenses feature and how to use it in the Revolut Business app, see the Customer help documentation.
The Business API lets you retrieve your expenses and receipts related to those expenses. You can:
This feature is not available in Sandbox.
To get information about a specific expense, make a request and provide the expense ID.
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.
To see example requests and responses:
To download a receipt related to a specific expense, make a request and provide both the expense ID and the receipt ID.
To find the receipt ID, refer to the expense's details.
The IDs of receipts related to that expense are returned under receipt_ids
.
To see example requests and responses:
You can retrieve a full list of the expenses for your business.
The results are sorted by the expense_date
value in reverse chronological order (from newest at the top to oldest at the bottom), and they are paginated.
The API returns a maximum of 500 expenses per request.
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.
To see example requests and responses:
You can also filter the list of expenses by adding one or more of the query parameters listed below to the URL:
curl https://b2b.revolut.com/api/1.0/expenses? \
from=2024-08-01 \
&to=2024-09-10 \
&count=10 \
-H "Authorization: Bearer <your access token>"
Parameter | Description | Required | Schema |
---|---|---|---|
from | The date and time to retrieve the expenses from. Corresponds to expense_date . | No | ISO date/time |
to | The date and time you retrieve the expenses to. Corresponds to expense_date . The default value is the current date and time at which you are calling the endpoint. | No | ISO date/time |
count | The number of the historical expenses to retrieve. The maximum number is 500 . The default number is 100 . Used for pagination. | No | Number |
state | The state of the expenses to retrieve. If provided, only the expenses in this state are returned. Possible values are: missing_info , awaiting_review , reverted , refund_requested , refunded , approved , or rejected . | No | Text |
transaction_type | The type of the transaction related to the expense. If provided, only expenses with transactions of this type are returned. Possible values are: atm , card_payment , fee , transfer , or external . | No | Text |
The /expenses
endpoint supports time-based pagination. It returns expenses in reverse chronological order (from
<= expense_date
< to
) limited to the most recent count
entities. 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 to
.
When an expense is created, it typically goes to the missing_info
state, until all the required information is provided and the expense is submitted.
Depending on what happens next and whether the expense is subject to an approval process, it can go into one of the following states:
To understand what each expense state means and how it maps to the expense status displayed in the Revolut Business app, refer to this table:
State in API | State description | Status in app |
---|---|---|
missing_info | The expense is missing required information. The initial state of the expense when it's first created. Once the missing information is provided, the expense is ready to be submitted. | Expense info required |
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. | Pending review |
rejected | The expense has been rejected by the approver. The expense submitter should correct the expense and resubmit it. | Rejected |
refund_requested | 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.* | Refund requested |
refunded | The admin marked the expense as refunded. The expense is now completed.* | Refunded |
approved | The expense has been approved and is now completed.* | 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. | Transaction reverted |
*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.
With Revolut Business approval processes, you can specify whether you want your expenses to require approvals before they can be completed, in what circumstances, and who can approve them.
Expenses are reviewed in the Revolut Business app. They can be approved by designated expense reviewers or expense admins.
Reviewers, also referred to as Approvers, can approve, reject, or request refunds for expenses pending review for which they are designated as reviewers. Any team member can be designated as a reviewer, without requiring any expenses permissions.
Admins (with the permission Manage Expenses
) have full powers and can override approvals by force approving, force rejecting, or force requesting refund
for any expense.
They are also the only ones who can mark an expense as refunded.
transaction_id
from expense details and retrieve the transaction details.