Transfers

Create a transfer to another account or card

Make a payment to a counterparty. You can choose either a bank transfer or a card transfer. The resulting transaction has the type transfer.

If you make the payment to another Revolut account, either business or personal, the transaction is executed instantly.

If the counterparty has multiple payment methods available, for example, 2 accounts, or 1 account and 1 card, you must specify the account or card to which you want to transfer the money (receiver.account_id or receiver.card_id respectively).

For more details, see the guides: Send money via bank transfer and Card transfers.

post/pay

Request

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

Request body

request_idstring required

A unique identifier for the transaction, provided by you.
This is used for idempotency to prevent duplicate payments. There are no strict format requirements, but we recommend using UUID v4 values.

:::tip[Retrying requests safely with idempotency] If you do not receive a response (for example, due to a network error or timeout), you can safely retry the request using the same request_id.

If a transaction with the same request_id was already created, the API will not create a duplicate transaction.

:::warning[Idempotency expiry] Idempotency checks apply only to transactions created within the last 2 weeks. Reusing a request_id after this period may result in a new transaction being created. :::

account_idstring uuid required

The ID of the account that you send the funds from.

amountnumber double required

The amount to transfer.

currencystring required

ISO 4217 currency code in upper case.

referencestring

The reference for the payment.

  • For BRL/KRW/VND/COP/LKR/CLP/NPR company transfers, and all INR transfers:

    This field must specify the commercial invoice number.

  • For other corridors:

    A piece of text or number you provide to help identify what the payment relates to. It can be used, for example, for reconciliation or tracking purposes.

    You might include an invoice number, account or transaction ID, or any other reference meaningful to you.

If the provided reference is longer than 140 characters, it will be truncated. Note that some recipient banks might truncate the reference even further.

charge_bearer'shared' | 'debtor' | 'prefer_debtor'

The party to which any transaction fees are charged if the resulting transaction route has associated fees:

ValueDescription
sharedAlso known as SHA. The transaction route fees are split between the sender and the recipient. The sender pays the fees charged by their bank, while the recipient pays the fees charged by the receiving and any intermediary banks.
debtorAlso known as OUR. The sender pays all explicit transaction fees.
prefer_debtorSelects the SWIFT OUR option when available. If the payment doesn't offer the OUR option, this value is ignored and the default fee handling applies — no error 3287 is returned.

:::note Some transactions with fees might not support forced charge bearer selection. If this is the case, the request will return an error. This does not apply to prefer_debtor, which falls back to default if debtor is not available. :::

transfer_reason_codestring

The reason code for the transaction. Transactions to certain countries and currencies might require you to provide a transfer reason. You can check available reason codes with the GET /transfer-reasons operation.

If a transfer reason is not required for the given currency and country, this field is ignored.

exchange_reason_codestring

The reason code for the exchange. Depending on the country and the amount of funds to be exchanged, you might be required to provide an exchange reason. You can check available reason codes with the GET /exchange-reasons operation.

If an exchange reason is not required, this field is ignored.

fiscal_codestring

Fiscal code of the payer, required for payments to Romanian tax authority beneficiaries (counterparty BIC: TREZROBUXXX).

The business's own tax identification number (TIN) is attached automatically from the business profile.

name_validation_idstring uuid

The identifier returned by a preceding account name validation (CoP) check.

Pass this to link the CoP check to the payment, preventing rate-limiting issues in regions like Romania, where CoP queries are limited to 3 per 24 hours without an initiated payment.

Example request

{
  "transfer_reason_code": "property_rental",
  "exchange_reason_code": "fund_transfer_and_intracompany_payment",
  "fiscal_code": "RO12345678",
  "name_validation_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}

Response

The information about the created transfer

idstring required

The ID of the transaction created.

state'created' | 'pending' | 'completed' | 'declined' | 'failed' | 'reverted' required

Indicates the transaction state. Possible values:

ValueDescription
createdThe transaction has been created and is either processed asynchronously or scheduled for a later time.
pendingThe transaction is pending until it's being processed. If the transfer is made between Revolut accounts, this state is skipped and the transaction is executed instantly.
completedThe transaction was successful.
declinedThe transaction was unsuccessful. This can happen for a variety of reasons, for example, insufficient account balance, wrong receiver information, etc.
failedThe transaction was unsuccessful. This can happen for a variety of reasons, for example, invalid API calls, blocked payments, etc.
revertedThe transaction was reverted. This can happen for a variety of reasons, for example, the receiver being inaccessible.
created_atstring date-time required

The date and time the transaction was created in ISO 8601 format.

completed_atstring date-time

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

Changes

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