Business API
Create a transfer to another account or card
api
post
/pay

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) .

caution

Due to PSD2 Strong Customer Authentication regulations, the /pay endpoint is only available for customers on Revolut Business Company plans. If you're a freelancer and wish to make payments via our API, we advise that you instead leverage our Payment drafts (/payment-drafts) endpoint.

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

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

Create a transfer

Request body
Body object

Possible values: <= 40 characters

The ID of the transaction, provided by you.

caution

Always provide a unique request ID for each individual payment. This allows you to safely retry the payment in the event of any network issues; if the payment was successful, a second attempt with the same request ID won't be processed.

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

The details of the transfer recipient.

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

The ID of the receiving counterparty.

The ID of the receiving counterparty's account, which can be own account. Used for bank transfers.

If the counterparty has multiple payment methods available, use it to specify the account to which you want to send the money.

The ID of the receiving counterparty's card. Used for card transfers.

If the counterparty has multiple payment methods available, use it to specify the card to which you want to send the money.

The amount to transfer.

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

ISO 4217 currency code in upper case.

The reference for the transaction.

Possible values: [shared, debtor]

The party to which any transaction fees are charged if the resulting transaction route has associated fees. Some transactions with fees might not be possible with the specified option, in which case error 3287 is returned.

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 getTransferReasons operation.

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

Response

The information about the created transfer

Response body
Body object

The ID of the transaction created.

Possible values: [created, pending, completed, declined, failed, reverted]

Indicates the transaction state. Possible values:

  • created: The transaction has been created and is either processed asynchronously or scheduled for a later time.
  • pending: The 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.
  • completed: The transaction was successful.
  • declined: The transaction was unsuccessful. This can happen for a variety of reasons, for example, insufficient account balance, wrong receiver information, etc.
  • failed: The transaction was unsuccessful. This can happen for a variety of reasons, for example, invalid API calls, blocked payments, etc.
  • reverted: The transaction was reverted. This can happen for a variety of reasons, for example, the receiver being inaccessible.

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

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

Was this page helpful?
Loading...