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.

The data enriched by the user, for example, VAT and cost centre, is returned under splits[].tax_rate and splits[].labels, respectively.

:::note

  • The API returns a maximum of 500 expenses per request.
  • This feature is not available in Sandbox. :::

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

get/expenses

Request

  • Base URL
    https://b2b.revolut.com/api/1.0
  • Auth
    HTTP bearer

Query parameters

fromstring date-time

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.

tostring date-time

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.

countinteger

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.

state'missing_info' | 'awaiting_review' | 'reverted' | 'pending_reimbursement' | 'refund_requested' | 'refunded' | 'approved' | 'rejected'

Retrieves the expenses in the specified state.

transaction_type'atm' | 'card_payment' | 'fee' | 'transfer' | 'external' | 'mileage_reimbursement' | 'rev_payment'

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

Response

List of expenses

idstring uuid required

The ID of the expense.

state'missing_info' | 'awaiting_review' | 'rejected' | 'pending_reimbursement' | 'refund_requested' | 'refunded' | 'approved' | 'reverted' required

Indicates the state of the expense. Possible values:

ValueDescription
missing_infoThe 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_reviewThe expense is awaiting approval before it can be completed. The approver can approve, reject, or request repayment for the expense. It is also possible for the submitter to undo the submission at this stage.
rejectedThe 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.
pending_reimbursementThe reimbursement request has been approved, and the expense is awaiting reimbursement. This state is possible for reimbursements (transaction type = External).
refund_requestedThe expense has been rejected and repayment 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 paid back to the business account. This can happen, for example, if an employee accidentally makes a personal purchase with their business card. Once the money has been returned, the admin can mark this expense as repaid.
refundedThe expense has been repaid.* This state indicates that the admin has marked the expense as repaid.
approvedThe expense has been approved and is now completed.*
revertedThe 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 repaid/completed, or requested repayment, 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.

transaction_type'atm' | 'card_payment' | 'fee' | 'transfer' | 'external' | 'mileage_reimbursement' | 'rev_payment' required

The type of the transaction related to the expense.

descriptionstring

The description of the expense.

submitted_atstring date-time

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

completed_atstring date-time

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

payerstring

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.

merchantstring

The name of the merchant.

transaction_idstring uuid

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

expense_datestring date-time required

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.

labelsobject required

:::warning [Deprecated] This field is deprecated. Labels are now assigned per split and returned in splits[].labels. During the deprecation period, this field is still returned for backwards compatibility, and the labels are filled as follows:

  • For expenses created before the migration, the expense-level label is copied to all splits of the expense.
  • For new expenses, the labels are set at the split level, and the expense-level label is populated with the label from the first split. This field will be removed in a future release. :::

The labels added to the expense, organised in groups.

You can have up to 5 label groups, with max. 1 label per group.

The labels are provided as an object, where each key is the name of a label group, and each value is a single-element array containing the selected label from that group.

This field is always returned, but it can be an empty object ({}) if no label is assigned.

receipt_idsstring[] required

The IDs of the receipts related to the expense.

Example response

[
  {
    "labels": {
      "Office supplies": [
        "Photocopying"
      ],
      "Department": [
        "HR"
      ]
    },
    "splits": [
      {
        "labels": {
          "Office supplies": [
            "Photocopying"
          ]
        }
      }
    ]
  }
]

Changes

No recorded changes to this operation across all 1 revision of this API.