Sandbox
Help

Open Banking APIv3.1.0

The Revolut Open Banking API is the gateway for third-party providers to interact with Revolut customers and products.

Before you get started

To learn more about the Open Banking API and its features, check the user guides.

You can reach them at any time from the main navigation bar → Guides → Open Banking.

You can take advantage of the Open Banking API to build your banking applications whether you are:

  • A regulated third party provider that wants to get account and transaction information of Revolut customers and initiate different types of payments, or
  • An innovative service provider that is looking to seamlessly integrate Revolut functions into your own applications.

As such, you can use the Open Banking API to leverage the following features:

Browse the menu on the left to see the reference for the specific endpoints and operations of this API. You can also go to Updates to learn about upcoming changes and other news related to the Open Banking API.

Test the Open Banking API

You can test the Open Banking API in Postman by forking this collection:

View in Postman

Get Access token

Certificates

You must use a transport certificate and its private key in order to request an access token.

  • For Sandbox testing, you can use the transport.pem certificate file which you obtained in Convert certificates together with the private key generated in step Generate a CSR.

  • For Production, you will need to use a valid OBIE or eIDAS transport certificate from a regulated Certificate Authority, and its corresponding private key.

Revolut Open Banking API servers use certificates issued by Open Banking Limited.

You can find the root and issuing certificates here if you need to add them to your truststore.

Headers

  • Content-Type: application/x-www-form-urlencoded

Parameters

  • grant_type: Must be set to client_credentials to get the access token.
  • scope: Must be set to accounts.

Example

The parameters -k or --insecure are not necessary if you added Open Banking Root and Issuing certificates to your truststore.

For production:

curl -k --cert transport.pem --key private.key \
--location -X POST 'https://oba-auth.revolut.com/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
-d 'grant_type=client_credentials' \
-d 'scope=accounts' \

For sandbox:

curl -k --cert transport.pem --key private.key \
--location -X POST 'https://sandbox-oba-auth.revolut.com/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
-d 'grant_type=client_credentials' \
-d 'scope=accounts' \

Response

The response contains the following JSON object:

{
    "access_token":"<access token>",
    "token_type":"Bearer",
    "expires_in":2399
}

What's next

Use this access token as the authentication bearer for all subsequent requests to the API, as described in the Tutorials section. When your certificate expires, repeat the steps above to create a new one.

Authentication

Security scheme type:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Applications

Get a distinguished name (DN)

Response

Distinguished name

Body
object
tls_client_auth_dn
stringrequired
get/distinguished-name
curl -X GET "https://oba-auth.revolut.com/distinguished-name"

Response body samples

{
  "tls_client_auth_dn": "organizationIdentifier=PSDUK-REVCA-95248b85-bc39-413a-8a16-b5abbf6202cb,CN=2kiXQyo0tedjW2somjSgH7,OU=001580000103UAvAAM,O=Revolut,C=GB"
}

Register an application

Request

Request body

A JWT calculated for your application, signed with a valid signing key.

Response

Successfully created application

Body
object
iss
string
iat
integer
exp
integer
application_type
string
client_id
string
token_endpoint_auth_method
string
tls_client_auth_dn
string
software_statement
string
id_token_signed_response_alg
string
request_object_signing_alg
string
redirect_uris
array
org_jwks_endpoint
string(uri)
grant_types
array
scope
string
post/register
curl -X POST "https://oba-auth.revolut.com/register" \
  -H "Authorization: Bearer <yourSecretApiKey>"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Request body samples

"eyJhbGciOiJQUzI1NiIsImtpZCI6ImFwcDIwMjMwNTE2In0.eyJpc3MiOiJleGFtcGxlLmNvbSIsImF1ZCI6InJldm9sdXQiLCJleHAiOjE4OTk3OTYyNTQsImlhdCI6MTcwNTMyMDk5MCwiaWRfdG9rZW5fc2lnbmVkX3Jlc3BvbnNlX2FsZyI6IlBTMjU2IiwicmVxdWVzdF9vYmplY3Rfc2lnbmluZ19hbGciOiJQUzI1NiIsInRva2VuX2VuZHBvaW50X2F1dGhfbWV0aG9kIjoidGxzX2NsaWVudF9hdXRoIiwiYXBwbGljYXRpb25fdHlwZSI6IndlYiIsInJlZGlyZWN0X3VyaXMiOlsiaHR0cHM6Ly9leGFtcGxlLmNvbSJdLCJzY29wZSI6Im9wZW5pZCBwYXltZW50cyBhY2NvdW50cyIsInRsc19jbGllbnRfYXV0aF9kbiI6Im9yZ2FuaXphdGlvbklkZW50aWZpZXI9UFNEVUstUkVWQ0EtOTUyNDhiODUtYmMzOS00MTNhLThhMTYtYjVhYmJmNjIwMmNiLENOPTJraVhReW8wdGVkalcyc29talNnSDcsT1U9MDAxNTgwMDAwMTAzVUF2QUFNLE89UmV2b2x1dCxDPUdCIiwic29mdHdhcmVfc3RhdGVtZW50IjoiZXlKaGJHY2lPaUp1YjI1bEluMD0uZXlKemIyWjBkMkZ5WlY5amJHbGxiblJmYm1GdFpTSTZJa1JEVWlCQmNIQnNhV05oZEdsdmJpQXhOekExTXpJd09Ua3dJaXdpYjNKblgycDNhM05mWlc1a2NHOXBiblFpT2lKb2RIUndjem92TDJWNFlXMXdiR1V1WTI5dEwyMTVhbmRyY3k1cWMyOXVJaXdpYzI5bWRIZGhjbVZmY21Wa2FYSmxZM1JmZFhKcGN5STZXeUpvZEhSd2N6b3ZMMlY0WVcxd2JHVXVZMjl0SWwxOS4ifQ.6XAf_Vy7R7ihta_dS91ISFhTsL5ro8UrLVSw2md_IyviGK1HKf-Ua6QwZJxVnyIkJO-Ik9Nqr20v8CA7v0i1Apr6iqy5IvsKP3md6xjAPdrqYrLHqlL0MCycyCpu-9mo53LHxR32uJ2lEz8ITx84_zjeiHVMCsH-7u386uA8HhA7WEii9OlYfp6AOnSQIRBmIcdYWE9RPdAKfnzVJ8FiEnxxBnebIrkhD1Eacx_BqhfqafJHO3DUuCNNIt08L9NgRMMABXxjiA0zS_qXCSgCGhxbFQMdLXNSIgbDEXx7ET3sNTwmu_U14Yh5qJ_uGSkNhWB7qae5uq2dQCO63d7I43"

Response body samples

{
  "iss": "example.com",
  "iat": 1705330836,
  "exp": 1899796254,
  "application_type": "web",
  "client_id": "e63d14ae-3b0b-4b6b-85e3-0b221e245c4e",
  "token_endpoint_auth_method": "tls_client_auth",
  "tls_client_auth_dn": "organizationIdentifier=PSDUK-REVCA-95248b85-bc39-413a-8a16-b5abbf6202cb,CN=2kiXQyo0tedjW2somjSgH7,OU=001580000103UAvAAM,O=Revolut,C=GB",
  "software_statement": "eyJhbGciOiJub25lIn0=.eyJzb2Z0d2FyZV9jbGllbnRfbmFtZSI6IkRDUiBBcHBsaWNhdGlvbiAxNzA1MzIwOTkwIiwib3JnX2p3a3NfZW5kcG9pbnQiOiJodHRwczovL2V4YW1wbGUuY29tL215andrcy5qc29uIiwic29mdHdhcmVfcmVkaXJlY3RfdXJpcyI6WyJodHRwczovL2V4YW1wbGUuY29tIl19.",
  "id_token_signed_response_alg": "PS256",
  "request_object_signing_alg": "PS256",
  "redirect_uris": [
    "https://example.com"
  ],
  "org_jwks_endpoint": "https://example.com/",
  "grant_types": [],
  "scope": "openid payments accounts"
}

Get an application

Retrieve an already registered application.

Request

Path parameters
ClientId
stringrequired

Response

Application data

Body
object
client_id
string
token_endpoint_auth_method
string
tls_client_auth_dn
string
id_token_signed_response_alg
string
request_object_signing_alg
string
redirect_uris
array
org_jwks_endpoint
string(uri)
org_name
string
scope
string
get/register/{ClientId}
curl -X GET "https://oba-auth.revolut.com/register/string" \
  -H "Authorization: Bearer <yourSecretApiKey>"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Response body samples

{
  "client_id": "6136922a-6163-4c66-a4be-9059bf6a1730",
  "token_endpoint_auth_method": "tls_client_auth",
  "tls_client_auth_dn": "organizationIdentifier=PSDUK-REVCA-95248b85-bc39-413a-8a16-b5abbf6202cb,CN=2kiXQyo0tedjW2somjSgH7,OU=001580000103UAvAAM,O=Revolut,C=GB",
  "id_token_signed_response_alg": "PS256",
  "request_object_signing_alg": "PS256",
  "redirect_uris": [
    "https://example.com"
  ],
  "org_jwks_endpoint": "https://example.com/myjwks.json",
  "org_name": "ACME Payments Ltd",
  "scope": "openid payments accounts"
}

Update an application

Update an existing application.

This endpoint only accepts JWT, which must be precalculated as described in Create a JWT.

Request

Path parameters
ClientId
stringrequired
Request body

A new JWT calculated for your application, signed with a valid signing key.

Response

Application data

Body
object
client_id
string
token_endpoint_auth_method
string
tls_client_auth_dn
string
id_token_signed_response_alg
string
request_object_signing_alg
string
redirect_uris
array
org_jwks_endpoint
string(uri)
org_name
string
scope
string
put/register/{ClientId}
curl -X PUT "https://oba-auth.revolut.com/register/string" \
  -H "Authorization: Bearer <yourSecretApiKey>"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Request body samples

"eyJhbGciOiJQUzI1NiIsImtpZCI6ImFwcDIwMjMwNTE2In0.eyJpc3MiOiJleGFtcGxlLmNvbSIsImF1ZCI6InJldm9sdXQiLCJleHAiOjE4OTk3OTYyNTQsImlhdCI6MTcwNTMyMDk5MCwiaWRfdG9rZW5fc2lnbmVkX3Jlc3BvbnNlX2FsZyI6IlBTMjU2IiwicmVxdWVzdF9vYmplY3Rfc2lnbmluZ19hbGciOiJQUzI1NiIsInRva2VuX2VuZHBvaW50X2F1dGhfbWV0aG9kIjoidGxzX2NsaWVudF9hdXRoIiwiYXBwbGljYXRpb25fdHlwZSI6IndlYiIsInJlZGlyZWN0X3VyaXMiOlsiaHR0cHM6Ly9leGFtcGxlLmNvbSJdLCJzY29wZSI6Im9wZW5pZCBwYXltZW50cyBhY2NvdW50cyIsInRsc19jbGllbnRfYXV0aF9kbiI6Im9yZ2FuaXphdGlvbklkZW50aWZpZXI9UFNEVUstUkVWQ0EtOTUyNDhiODUtYmMzOS00MTNhLThhMTYtYjVhYmJmNjIwMmNiLENOPTJraVhReW8wdGVkalcyc29talNnSDcsT1U9MDAxNTgwMDAwMTAzVUF2QUFNLE89UmV2b2x1dCxDPUdCIiwic29mdHdhcmVfc3RhdGVtZW50IjoiZXlKaGJHY2lPaUp1YjI1bEluMD0uZXlKemIyWjBkMkZ5WlY5amJHbGxiblJmYm1GdFpTSTZJa1JEVWlCQmNIQnNhV05oZEdsdmJpQXhOekExTXpJd09Ua3dJaXdpYjNKblgycDNhM05mWlc1a2NHOXBiblFpT2lKb2RIUndjem92TDJWNFlXMXdiR1V1WTI5dEwyMTVhbmRyY3k1cWMyOXVJaXdpYzI5bWRIZGhjbVZmY21Wa2FYSmxZM1JmZFhKcGN5STZXeUpvZEhSd2N6b3ZMMlY0WVcxd2JHVXVZMjl0SWwxOS4ifQ.6XAf_Vy7R7ihta_dS91ISFhTsL5ro8UrLVSw2md_IyviGK1HKf-Ua6QwZJxVnyIkJO-Ik9Nqr20v8CA7v0i1Apr6iqy5IvsKP3md6xjAPdrqYrLHqlL0MCycyCpu-9mo53LHxR32uJ2lEz8ITx84_zjeiHVMCsH-7u386uA8HhA7WEii9OlYfp6AOnSQIRBmIcdYWE9RPdAKfnzVJ8FiEnxxBnebIrkhD1Eacx_BqhfqafJHO3DUuCNNIt08L9NgRMMABXxjiA0zS_qXCSgCGhxbFQMdLXNSIgbDEXx7ET3sNTwmu_U14Yh5qJ_uGSkNhWB7qae5uq2dQCO63d7I43"

Response body samples

{
  "client_id": "6136922a-6163-4c66-a4be-9059bf6a1730",
  "token_endpoint_auth_method": "tls_client_auth",
  "tls_client_auth_dn": "organizationIdentifier=PSDUK-REVCA-95248b85-bc39-413a-8a16-b5abbf6202cb,CN=2kiXQyo0tedjW2somjSgH7,OU=001580000103UAvAAM,O=Revolut,C=GB",
  "id_token_signed_response_alg": "PS256",
  "request_object_signing_alg": "PS256",
  "redirect_uris": [
    "https://example.com"
  ],
  "org_jwks_endpoint": "https://example.com/myjwks.json",
  "org_name": "ACME Payments Ltd",
  "scope": "openid payments accounts"
}

Delete an application

Delete an existing application.

Request

Path parameters
ClientId
stringrequired

Response

No content

delete/register/{ClientId}
curl -X DELETE "https://oba-auth.revolut.com/register/string" \
  -H "Authorization: Bearer <yourSecretApiKey>"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Response body samples

No contentThis response does not have a body.

Create an account access consent

Before you can access any data from a Revolut user, you must create an access consent to read data from the user's profile.

When you create an account access consent, you must include a specific permission that follows the rules in the table below; otherwise, you get a 400 Bad request error.

Request Permissions

PERMISSIONSDEPENDENCIES
ReadAccountsBasicNone
ReadAccountsDetailNone
ReadBalancesNone
ReadBeneficiariesBasicNone
ReadBeneficiariesDetailNone
ReadDirectDebitsNone
ReadScheduledPaymentsBasicNone
ReadScheduledPaymentsDetailNone
ReadStandingOrdersBasicNone
ReadStandingOrdersDetailNone
ReadTransactionsBasicNone
ReadTransactionsCreditsReadTransactionsBasic OR ReadTransactionsDetail
ReadTransactionsDebitsReadTransactionsBasic OR ReadTransactionsDetail
ReadTransactionsDetailNone

See also Tutorials: Get account and transaction information.

Request

Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-customer-user-agent
string
Request body
Data
objectrequired
Risk
objectrequired

Response

Account Access Consents Created

Body
object
Data
objectrequired
Risk
objectrequired
Links
objectrequired
Meta
objectrequired
post/account-access-consents
curl -X POST "https://oba-auth.revolut.com/account-access-consents" \
  -H "Content-Type: application/json" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-customer-user-agent: string" \
  -d '{
  "Data": {
    "Permissions": [
      "ReadAccountsBasic",
      "ReadAccountsDetail"
    ],
    "ExpirationDateTime": "2022-12-02T00:00:00+00:00",
    "TransactionFromDateTime": "2022-09-03T00:00:00+00:00",
    "TransactionToDateTime": "2022-12-03T00:00:00+00:00"
  },
  "Risk": {}
}'
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Request body samples

{
  "Data": {
    "Permissions": [
      "ReadAccountsBasic",
      "ReadAccountsDetail"
    ],
    "ExpirationDateTime": "2022-12-02T00:00:00+00:00",
    "TransactionFromDateTime": "2022-09-03T00:00:00+00:00",
    "TransactionToDateTime": "2022-12-03T00:00:00+00:00"
  },
  "Risk": {}
}

Response body samples

{
  "Data": {
    "Status": "AwaitingAuthorisation",
    "StatusUpdateDateTime": "2022-09-22T11:47:10.366163Z",
    "CreationDateTime": "2022-09-22T11:47:10.366163Z",
    "TransactionToDateTime": "2022-12-03T00:00:00+00:00",
    "ExpirationDateTime": "2022-12-02T00:00:00+00:00",
    "Permissions": [
      "ReadAccountsBasic",
      "ReadAccountsDetail"
    ],
    "ConsentId": "e0bdfd78-2388-xxxx-xxxx-acc0b84c9210",
    "TransactionFromDateTime": "2022-09-03T00:00:00+00:00"
  },
  "Risk": {},
  "Links": {
    "Self": "https://oba-auth.revolut.com/account-access-consents"
  },
  "Meta": {
    "TotalPages": 1
  }
}

Request

Path parameters
ConsentId
stringrequired
Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-customer-user-agent
string

Response

Account Access Consents Read

Body
object
Data
objectrequired
Risk
objectrequired
Links
objectrequired
Meta
objectrequired
get/account-access-consents/{ConsentId}
curl -X GET "https://oba-auth.revolut.com/account-access-consents/string" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-customer-user-agent: string"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Response body samples

{
  "Data": {
    "Status": "AwaitingAuthorisation",
    "StatusUpdateDateTime": "2022-09-22T11:47:10.366163Z",
    "CreationDateTime": "2022-09-22T11:47:10.366163Z",
    "TransactionToDateTime": "2022-12-03T00:00:00+00:00",
    "ExpirationDateTime": "2022-12-02T00:00:00+00:00",
    "Permissions": [
      "ReadAccountsBasic",
      "ReadAccountsDetail"
    ],
    "ConsentId": "e0bdfd78-2388-xxxx-xxxx-acc0b84c9210",
    "TransactionFromDateTime": "2022-09-03T00:00:00+00:00"
  },
  "Risk": {},
  "Links": {
    "Self": "https://oba-auth.revolut.com/account-access-consents/e0bdfd78-2388-xxxx-xxxx-acc0b84c9210"
  },
  "Meta": {
    "TotalPages": 1
  }
}

Use this endpoint to:

  • Reject a consent if it is in the AwaitingAuthorisation state or any error occurs while the consent is being authorised.
  • Revoke a consent if it is in the Authorised state.

See also Tutorials: Get account and transaction information.

Request

Path parameters
ConsentId
stringrequired
Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-customer-user-agent
string

Response

Account Access Consent Deleted

delete/account-access-consents/{ConsentId}
curl -X DELETE "https://oba-auth.revolut.com/account-access-consents/string" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-customer-user-agent: string"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Response body samples

No contentThis response does not have a body.

Retrieve all accounts

Request

Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-customer-user-agent
string

Response

Accounts Read

Body
object
Data
objectrequired
Links
objectrequired
Meta
objectrequired
get/accounts
curl -X GET "https://oba-auth.revolut.com/accounts" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-customer-user-agent: string"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Response body samples

{
  "Data": {
    "Account": [
      {
        "AccountId": "d3779729-xxxx-xxxx-bb43-fb5159b7c166",
        "Currency": "GBP",
        "AccountType": "Personal",
        "AccountSubType": "CurrentAccount",
        "Account": [
          {
            "SchemeName": "UK.OBIE.IBAN",
            "Identification": "GB95REVO00997053872360",
            "Name": "John Smith"
          },
          {
            "SchemeName": "UK.OBIE.SortCodeAccountNumber",
            "Identification": "00000001611667",
            "Name": "John Smith"
          }
        ]
      }
    ]
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/accounts"
  },
  "Meta": {
    "TotalPages": 1
  }
}

Retrieve an account

Get the information about a specific account by ID.

In compliance with PSD2 SCA regulations, access to this endpoint is only allowed within the first 5 minutes after the Revolut user has authorised the consent. After those 5 minutes, access to this endpoint is denied, and an HTTP 403 error is returned.

See also Tutorials: Get account and transaction information.

Request

Path parameters
AccountId
stringrequired
Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-customer-user-agent
string

Response

Accounts Read

Body
object
Data
objectrequired
Links
objectrequired
Meta
objectrequired
get/accounts/{AccountId}
curl -X GET "https://oba-auth.revolut.com/accounts/string" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-customer-user-agent: string"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Response body samples

{
  "Data": {
    "Account": [
      {
        "AccountId": "d3779729-xxxx-xxxx-bb43-fb5159b7c166",
        "Currency": "GBP",
        "AccountType": "Personal",
        "AccountSubType": "CurrentAccount",
        "Account": [
          {
            "SchemeName": "UK.OBIE.IBAN",
            "Identification": "GB95REVO00997053872360",
            "Name": "John Smith"
          },
          {
            "SchemeName": "UK.OBIE.SortCodeAccountNumber",
            "Identification": "00000001611667",
            "Name": "John Smith"
          }
        ]
      }
    ]
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/accounts/d3779729-xxxx-xxxx-bb43-fb5159b7c166"
  },
  "Meta": {
    "TotalPages": 1
  }
}

Retrieve an account balance

Request

Path parameters
AccountId
stringrequired
Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-customer-user-agent
string

Response

Balances Read

Body
object
Data
objectrequired
Links
objectrequired
Meta
objectrequired
get/accounts/{AccountId}/balances
curl -X GET "https://oba-auth.revolut.com/accounts/string/balances" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-customer-user-agent: string"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Response body samples

{
  "Data": {
    "Balance": [
      {
        "AccountId": "d3779729-xxxx-xxxx-bb43-fb5159b7c166",
        "Amount": {
          "Amount": "970.49",
          "Currency": "GBP"
        },
        "CreditDebitIndicator": "Credit",
        "Type": "InterimAvailable",
        "DateTime": "2022-09-22T08:32:02.775972Z"
      }
    ]
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/accounts/d3779729-xxxx-xxxx-bb43-fb5159b7c166/balances"
  },
  "Meta": {
    "TotalPages": 1
  }
}

Retrieve all account's beneficiaries

Get all the beneficiaries of a specific user account.

In compliance with PSD2 SCA regulations, access to this endpoint is only allowed within the first 5 minutes after the Revolut user has authorised the consent. After those 5 minutes, access to this endpoint is denied, and an HTTP 403 error is returned.

See also Tutorials: Get account and transaction information.

Request

Path parameters
AccountId
stringrequired
Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-customer-user-agent
string

Response

Beneficiaries Read

Body
object
Data
objectrequired
Links
objectrequired
Meta
objectrequired
get/accounts/{AccountId}/beneficiaries
curl -X GET "https://oba-auth.revolut.com/accounts/string/beneficiaries" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-customer-user-agent: string"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Response body samples

{
  "Data": {
    "Beneficiary": [
      {
        "AccountId": "d3779729-xxxx-xxxx-1234-fb5159b7c166",
        "BeneficiaryId": "619e270c-989f-44ca-1234-a161be65d5f4",
        "CreditorAccount": {
          "SchemeName": "UK.OBIE.SortCodeAccountNumber",
          "Identification": "11223321325698",
          "Name": "Receiver Co."
        }
      }
    ]
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/accounts/d3779729-xxxx-xxxx-1234-fb5159b7c166/beneficiaries"
  },
  "Meta": {
    "TotalPages": 1
  }
}

Transactions

Retrieve all account's direct debits

Get a list of all the direct debits for a specific user account.

In compliance with PSD2 SCA regulations, access to this endpoint is only allowed within the first 5 minutes after the Revolut user has authorised the consent. After those 5 minutes, access to this endpoint is denied, and an HTTP 403 error is returned.

See also Tutorials: Get account and transaction information.

Request

Path parameters
AccountId
stringrequired
Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-customer-user-agent
string

Response

Direct Debits Read

Body
object
Data
objectrequired
Links
objectrequired
Meta
objectrequired
get/accounts/{AccountId}/direct-debits
curl -X GET "https://oba-auth.revolut.com/accounts/string/direct-debits" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-customer-user-agent: string"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Response body samples

{
  "Data": {
    "DirectDebit": [
      {
        "AccountId": "d48e9496-xxxx-4af1-xxxx-8b20fc362bd3",
        "DirectDebitId": "631b8ea1-5678-48d1-1234-25ccba25eb40",
        "MandateIdentification": "a028-45ee",
        "DirectDebitStatusCode": "Active",
        "Name": "DirectDebit name",
        "PreviousPaymentAmount": {
          "Amount": "50.00",
          "Currency": "EUR"
        }
      }
    ]
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/accounts/d48e9496-xxxx-4af1-xxxx-8b20fc362bd3/direct-debits"
  },
  "Meta": {
    "TotalPages": 1
  }
}

Retrieve all account's standing orders

Get a list of all the standing orders for a specific user account.

In compliance with PSD2 SCA regulations, access to this endpoint is only allowed within the first 5 minutes after the Revolut user has authorised the consent. After those 5 minutes, access to this endpoint is denied, and an HTTP 403 error is returned.

See also Tutorials: Get account and transaction information.

Request

Path parameters
AccountId
stringrequired
Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-customer-user-agent
string

Response

Standing Orders Read

Body
object
Data
objectrequired
Links
objectrequired
Meta
objectrequired
get/accounts/{AccountId}/standing-orders
curl -X GET "https://oba-auth.revolut.com/accounts/string/standing-orders" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-customer-user-agent: string"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Response body samples

{
  "Data": {
    "StandingOrder": [
      {
        "AccountId": "d48e9496-xxxx-4af1-xxxx-8b20fc362bd3",
        "StandingOrderId": "fb02306c-1234-4260-5678-371ea6dc6ea3",
        "Frequency": "EvryDay",
        "Reference": "Reference1234",
        "FirstPaymentAmount": {
          "Amount": 3.48,
          "Currency": "GBP"
        },
        "FirstPaymentDateTime": "2023-09-24T00:00",
        "NextPaymentAmount": {
          "Amount": 3.48,
          "Currency": "GBP"
        },
        "StandingOrderStatusCode": "Active",
        "CreditorAccount": {
          "SchemeName": "UK.OBIE.SortCodeAccountNumber",
          "Identification": "11223321325698",
          "Name": "Receiver Co."
        }
      }
    ]
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/accounts/d48e9496-xxxx-4af1-xxxx-8b20fc362bd3/standing-orders"
  },
  "Meta": {
    "TotalPages": 1
  }
}

Retrieve all transactions

Get all the recent transactions for an account.

In compliance with PSD2 SCA regulations, full transaction history can only be accessed within the first 5 minutes after the Revolut user has authorised the consent. After those 5 minutes, transaction history is restricted to the last 90 days counting from the moment the API request is made, and older transactions are not returned.

Additionally, after those 5 minutes, unless the user is present and actively requesting data, you should not retrieve transaction data of an individual account more than 4 times within a 24-hour period.

See also Tutorials: Get account and transaction information.

Request

Path parameters
AccountId
stringrequired
Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-customer-user-agent
string
Query parameters
fromBookingDateTime
string(date-time)
toBookingDateTime
string(date-time)

Response

Transactions Read

Body
object
Data
objectrequired
Links
objectrequired
Meta
objectrequired
get/accounts/{AccountId}/transactions
curl -X GET "https://oba-auth.revolut.com/accounts/string/transactions?fromBookingDateTime=2024-01-01T00%3A00%3A00Z&toBookingDateTime=2024-01-01T00%3A00%3A00Z" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-customer-user-agent: string"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Response body samples

{
  "Data": {
    "Transaction": [
      {
        "AccountId": "c362263a-xxxx-xxxx-xxxx-70ee3d4fede9",
        "Amount": {
          "Amount": "20.54",
          "Currency": "GBP"
        },
        "Balance": {
          "Amount": {
            "Amount": "2088.55",
            "Currency": "GBP"
          },
          "CreditDebitIndicator": "Credit",
          "Type": "InterimBooked"
        },
        "BookingDateTime": "2024-12-27T06:05:20.625880Z",
        "ValueDateTime": "2024-12-27T06:05:21.162872Z",
        "CreditDebitIndicator": "Debit",
        "CurrencyExchange": {
          "InstructedAmount": {
            "Amount": "20.54",
            "Currency": "GBP"
          },
          "SourceCurrency": "GBP",
          "TargetCurrency": "EUR",
          "UnitCurrency": "GBP",
          "ExchangeRate": "1.07123405660663439638574742941974304"
        },
        "CreditorAccount": {
          "SchemeName": "UK.OBIE.IBAN",
          "Identification": "LT111111111111111111",
          "Name": "Receiver Co."
        },
        "DebtorAccount": {
          "SchemeName": "UK.OBIE.IBAN",
          "Identification": "GB95REVO00997053872360",
          "Name": "John Doe"
        },
        "ProprietaryBankTransactionCode": {
          "Code": "TRANSFER",
          "Issuer": "Revolut"
        },
        "Status": "Booked",
        "TransactionId": "676e43a0-a0e9-ad9a-xxxx-a0e99aea6678",
        "TransactionInformation": "To Receiver Co.",
        "SupplementaryData": {
          "UserComments": "test"
        }
      },
      {
        "AccountId": "c362263a-xxxx-xxxx-xxxx-70ee3d4fede9",
        "Amount": {
          "Amount": "11.00",
          "Currency": "GBP"
        },
        "Balance": {
          "Amount": {
            "Amount": "2109.09",
            "Currency": "GBP"
          },
          "CreditDebitIndicator": "Credit",
          "Type": "InterimBooked"
        },
        "BookingDateTime": "2024-12-27T06:01:57.925579Z",
        "ValueDateTime": "2024-12-27T06:01:58.958920Z",
        "CreditDebitIndicator": "Debit",
        "CreditorAccount": {
          "SchemeName": "UK.OBIE.SortCodeAccountNumber",
          "Identification": "11223300000000",
          "Name": "Receiver Co."
        },
        "DebtorAccount": {
          "SchemeName": "UK.OBIE.IBAN",
          "Identification": "GB95REVO00997053872360",
          "Name": "John Doe"
        },
        "ProprietaryBankTransactionCode": {
          "Code": "TRANSFER",
          "Issuer": "Revolut"
        },
        "Status": "Booked",
        "TransactionId": "67972281-bed3-a4dc-xxxx-81447ebe5717",
        "TransactionInformation": "To Water Company LIMITED",
        "SupplementaryData": {
          "UserComments": "Some other test 2"
        }
      }
    ]
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/accounts/c362263a-xxxx-xxxx-xxxx-70ee3d4fede9/transactions?toBookingDateTime=2024-12-27T06:05:21.259576Z'",
    "Next": "https://oba-auth.revolut.com/accounts/c362263a-xxxx-xxxx-xxxx-70ee3d4fede9/transactions?fromBookingDateTime=2024-10-30T15:28:17.173&toBookingDateTime=2024-12-25T06:09:34.558291'"
  },
  "Meta": {}
}

Domestic payment

Domestic payments, which you can use for local payments in the local currency of the user.

Revolut supports only GBP as local in the UK and EUR in Single Euro Payments Area (SEPA) countries.

As a regulated third party provider, you can use the provided endpoints to initiate a domestic payment in the following high-level workflow:

  • Create a consent.
  • Get the consent.
  • Create a payment.
  • Get the payment.

Before you begin, ensure that you've registered your application with the payments scope. For more information, see Tutorials: Initiate your first payment.

Create a domestic payment consent

Create a domestic payment consent described in the Open Banking API documentation: Account and Transaction API Specification.

Use domestic payments for local payments in the local currency of the user.

Revolut supports only GBP as local in the UK and EUR in Single Euro Payments Area (SEPA) countries.

Because Revolut Business users can have multiple accounts in the same currency, they can choose which account they want to be charged in the consent authorization UI.

When you make the API call, ensure that you pass the corresponding JSON Web Signature (JWS) in the x-jws-signature request header. Note:

  • The JWS is generated from the request body with the TPP signing key that is specified in the JWS header.
  • The JWS consists of a header and a signature in the <jws_header>..<jws_signature> format.

To see how to create a JWS, see the guide: Work with JSON Web Signatures.

See also Tutorials: Initiate your first payment.

Request

Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-idempotency-key
stringrequired
x-jws-signature
stringrequired
x-customer-user-agent
string
Request body
Data
objectrequired
Risk
objectrequired

Response

Domestic Payment Consents Created

Body
object
Data
objectrequired
Risk
objectrequired
Links
objectrequired
Meta
objectrequired
post/domestic-payment-consents
curl -X POST "https://oba-auth.revolut.com/domestic-payment-consents" \
  -H "Content-Type: application/json" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-idempotency-key: string" \
  -H "x-jws-signature: string" \
  -H "x-customer-user-agent: string" \
  -d '{
  "Data": {
    "Initiation": {
      "InstructionIdentification": "ID412",
      "EndToEndIdentification": "E2E123",
      "InstructedAmount": {
        "Amount": "10.0",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698",
        "Name": "Receiver Co."
      },
      "RemittanceInformation": {
        "Unstructured": "Shipment fee"
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "EcommerceGoods",
    "MerchantCategoryCode": "5967",
    "MerchantCustomerIdentification": "1238808123123",
    "DeliveryAddress": {
      "AddressLine": [
        "7"
      ],
      "StreetName": "Apple Street",
      "BuildingNumber": "1",
      "PostCode": "E2 7AA",
      "TownName": "London",
      "Country": "UK"
    }
  }
}'
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

SecuritySchemaType:apiKey
Header parameter name:x-jws-signature

Open Banking API Payment requests additionally require a JSON Web Signature (JWS) which needs to be added to the header of the request. The JWS signature must be obtained using the full content of the payload.

Request body samples

{
  "Data": {
    "Initiation": {
      "InstructionIdentification": "ID412",
      "EndToEndIdentification": "E2E123",
      "InstructedAmount": {
        "Amount": "10.0",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698",
        "Name": "Receiver Co."
      },
      "RemittanceInformation": {
        "Unstructured": "Shipment fee"
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "EcommerceGoods",
    "MerchantCategoryCode": "5967",
    "MerchantCustomerIdentification": "1238808123123",
    "DeliveryAddress": {
      "AddressLine": [
        "7"
      ],
      "StreetName": "Apple Street",
      "BuildingNumber": "1",
      "PostCode": "E2 7AA",
      "TownName": "London",
      "Country": "UK"
    }
  }
}

Response body samples

{
  "Data": {
    "Status": "AwaitingAuthorisation",
    "StatusUpdateDateTime": "2022-09-23T08:34:43.275221Z",
    "CreationDateTime": "2022-09-23T08:34:43.275221Z",
    "ConsentId": "0d4b6692-xxxx-4938-xxxx-99e125231cf9",
    "Initiation": {
      "InstructionIdentification": "ID412",
      "EndToEndIdentification": "E2E123",
      "InstructedAmount": {
        "Amount": "10.0",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698",
        "Name": "Receiver Co."
      },
      "RemittanceInformation": {
        "Unstructured": "Shipment fee"
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "EcommerceGoods",
    "MerchantCategoryCode": "5967",
    "MerchantCustomerIdentification": "1238808123123",
    "DeliveryAddress": {
      "AddressLine": [
        "7"
      ],
      "StreetName": "Apple Street",
      "BuildingNumber": "1",
      "PostCode": "E2 7AA",
      "TownName": "London",
      "Country": "UK"
    }
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/domestic-payment-consents/0d4b6692-xxxx-4938-xxxx-99e125231cf9"
  },
  "Meta": {
    "TotalPages": 1
  }
}

Request

Path parameters
ConsentId
stringrequired
Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-customer-user-agent
string

Response

Domestic Payment Consents Read

Body
object
Data
objectrequired
Risk
objectrequired
Links
objectrequired
Meta
objectrequired
get/domestic-payment-consents/{ConsentId}
curl -X GET "https://oba-auth.revolut.com/domestic-payment-consents/string" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-customer-user-agent: string"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Response body samples

{
  "Data": {
    "Status": "AwaitingAuthorisation",
    "StatusUpdateDateTime": "2022-09-23T08:34:43.275221Z",
    "CreationDateTime": "2022-09-23T08:34:43.275221Z",
    "ConsentId": "0d4b6692-xxxx-4938-xxxx-99e125231cf9",
    "Initiation": {
      "CreditorAccount": {
        "Name": "Receiver Co.",
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698"
      },
      "InstructedAmount": {
        "Amount": "10.0",
        "Currency": "GBP"
      },
      "RemittanceInformation": {
        "Unstructured": "Shipment fee"
      },
      "EndToEndIdentification": "E2E123",
      "InstructionIdentification": "ID412"
    }
  },
  "Risk": {
    "DeliveryAddress": {
      "Country": "UK",
      "PostCode": "E2 7AA",
      "TownName": "London",
      "StreetName": "Apple Street",
      "AddressLine": [
        "7"
      ],
      "BuildingNumber": "1"
    },
    "PaymentContextCode": "EcommerceGoods",
    "MerchantCategoryCode": "5967",
    "MerchantCustomerIdentification": "1238808123123"
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/domestic-payment-consents/0d4b6692-xxxx-4938-xxxx-99e125231cf9"
  },
  "Meta": {
    "TotalPages": 1
  }
}

Check the funds for a domestic payment with the given consent. You can get the information only if the user has authorized the related consent.

See also Tutorials: Initiate your first payment.

Request

Path parameters
ConsentId
stringrequired
Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-customer-user-agent
string

Response

Domestic Payment Consents Funds Confirmation Read

Body
object
Data
objectrequired
Links
objectrequired
Meta
objectrequired
get/domestic-payment-consents/{ConsentId}/funds-confirmation
curl -X GET "https://oba-auth.revolut.com/domestic-payment-consents/string/funds-confirmation" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-customer-user-agent: string"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Response body samples

{
  "Data": {
    "FundsAvailableResult": {
      "FundsAvailableDateTime": "2022-09-23T09:08:27.508922Z",
      "FundsAvailable": true
    }
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/domestic-payment-consents/e3884854-be36-xxxx-xxxx-9ce807ab1335/funds-confirmation"
  },
  "Meta": {
    "TotalPages": 1
  }
}

Create a domestic payment

Create a domestic payment.

As is defined in the Open Banking Specifications, the /Data/Initiation and the /Data/Risk sections of the request must be an exact match for the related consent passed in ConsentId.

See also Tutorials: Initiate your first payment.

Request

Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-idempotency-key
stringrequired
x-jws-signature
stringrequired
x-customer-user-agent
string
Request body
Data
objectrequired
Risk
objectrequired

Response

Domestic Payment Created

Body
object
Data
objectrequired
Links
objectrequired
Meta
objectrequired
post/domestic-payments
curl -X POST "https://oba-auth.revolut.com/domestic-payments" \
  -H "Content-Type: application/json" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-idempotency-key: string" \
  -H "x-jws-signature: string" \
  -H "x-customer-user-agent: string" \
  -d '{
  "Data": {
    "ConsentId": "ec62477b-xxxx-41e2-xxxx-4d760c425a3e",
    "Initiation": {
      "InstructionIdentification": "ID412",
      "EndToEndIdentification": "E2E123",
      "InstructedAmount": {
        "Amount": "10.0",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698",
        "Name": "Receiver Co."
      },
      "RemittanceInformation": {
        "Unstructured": "Shipment fee"
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "EcommerceGoods",
    "MerchantCategoryCode": "5967",
    "MerchantCustomerIdentification": "1238808123123",
    "DeliveryAddress": {
      "AddressLine": [
        "7"
      ],
      "StreetName": "Apple Street",
      "BuildingNumber": "1",
      "PostCode": "E2 7AA",
      "TownName": "London",
      "Country": "UK"
    }
  }
}'
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

SecuritySchemaType:apiKey
Header parameter name:x-jws-signature

Open Banking API Payment requests additionally require a JSON Web Signature (JWS) which needs to be added to the header of the request. The JWS signature must be obtained using the full content of the payload.

Request body samples

{
  "Data": {
    "ConsentId": "ec62477b-xxxx-41e2-xxxx-4d760c425a3e",
    "Initiation": {
      "InstructionIdentification": "ID412",
      "EndToEndIdentification": "E2E123",
      "InstructedAmount": {
        "Amount": "10.0",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698",
        "Name": "Receiver Co."
      },
      "RemittanceInformation": {
        "Unstructured": "Shipment fee"
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "EcommerceGoods",
    "MerchantCategoryCode": "5967",
    "MerchantCustomerIdentification": "1238808123123",
    "DeliveryAddress": {
      "AddressLine": [
        "7"
      ],
      "StreetName": "Apple Street",
      "BuildingNumber": "1",
      "PostCode": "E2 7AA",
      "TownName": "London",
      "Country": "UK"
    }
  }
}

Response body samples

{
  "Data": {
    "ConsentId": "ec62477b-xxxx-41e2-xxxx-4d760c425a3e",
    "CreationDateTime": "2022-09-23T14:57:45.899155Z",
    "DomesticPaymentId": "632dc969-xxxx-ae29-xxxx-50cefc4ceae7",
    "Initiation": {
      "CreditorAccount": {
        "Identification": "11223321325698",
        "Name": "Receiver Co.",
        "SchemeName": "UK.OBIE.SortCodeAccountNumber"
      },
      "EndToEndIdentification": "E2E123",
      "InstructedAmount": {
        "Amount": "10.0",
        "Currency": "GBP"
      },
      "InstructionIdentification": "ID412",
      "RemittanceInformation": {
        "Unstructured": "Shipment fee"
      },
      "DebtorAccount": {
        "SchemeName": "UK.OBIE.IBAN",
        "Identification": "GB95REVO00997053872360",
        "Name": "John Doe"
      }
    },
    "Status": "Pending",
    "StatusUpdateDateTime": "2022-09-23T14:57:45.899155Z"
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/domestic-payments/632dc969-xxxx-ae29-xxxx-50cefc4ceae7"
  },
  "Meta": {
    "TotalPages": 1
  }
}

Retrieve a domestic payment

Request

Path parameters
DomesticPaymentId
stringrequired
Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-customer-user-agent
string

Response

Domestic Payments Read

Body
object
Data
objectrequired
Links
objectrequired
Meta
objectrequired
get/domestic-payments/{DomesticPaymentId}
curl -X GET "https://oba-auth.revolut.com/domestic-payments/string" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-customer-user-agent: string"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Response body samples

{
  "Data": {
    "DomesticPaymentId": "632dce07-xxxx-xxxx-9950-6614f70f0009",
    "Status": "Pending",
    "StatusUpdateDateTime": "2022-09-23T15:17:27.904903Z",
    "CreationDateTime": "2022-09-23T15:17:27.904903Z",
    "ConsentId": "e6c8ea6c-xxxx-42ec-xxxx-aeab34c33f4a",
    "Initiation": {
      "CreditorAccount": {
        "Name": "Receiver Co.",
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698"
      },
      "DebtorAccount": {
        "SchemeName": "UK.OBIE.IBAN",
        "Identification": "GB95REVO00997053872360",
        "Name": "John Doe"
      },
      "InstructedAmount": {
        "Amount": "10.0",
        "Currency": "GBP"
      },
      "RemittanceInformation": {
        "Unstructured": "Shipment fee"
      },
      "EndToEndIdentification": "E2E123",
      "InstructionIdentification": "ID412"
    }
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/domestic-payments/632dce07-xxxx-xxxx-9950-6614f70f0009"
  },
  "Meta": {
    "TotalPages": 1
  }
}

Domestic scheduled payment

Domestic scheduled payments, which you can use for local payments in the local currency of the user.

Revolut supports only GBP as local in the UK and EUR in Single Euro Payments Area (SEPA) countries.

As a regulated third party provider, you can use the provided endpoints to initiate a payment in the following high-level workflow:

  • Create a consent.
  • Get the consent.
  • Create a payment.
  • Get the payment.

Before you begin, ensure that you've registered your application with the payments scope. For more information, see Tutorials: Initiate your first payment.

Create a domestic scheduled payment consent

Create a scheduled payment consent as described in the Open Banking API documentation: Account and Transaction API Specification.

Use domestic scheduled payments for local scheduled payments in the local currency of the user.

Revolut supports only GBP as local in the UK and EUR in SEPA countries.

Because Revolut Business users can have multiple accounts in the same currency, they can select which account they want to be charged in the consent authorization UI.

When you make the API call, ensure that you pass the corresponding JSON Web Signature (JWS) in the x-jws-signature request header. Note:

  • The JWS is generated from the request body with the TPP signing key that is specified in the JWS header.
  • The JWS consists of a header and a signature in the <jws_header>..<jws_signature> format.

To see how to create a JWS, see the guide: Work with JSON Web Signatures.

The domestic scheduled payments API is in beta.

See also Tutorials: Initiate your first payment.

Request

Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-idempotency-key
stringrequired
x-jws-signature
stringrequired
x-customer-user-agent
string
Request body
Data
objectrequired
Risk
objectrequired

Response

Domestic Scheduled Payment Consents Created

Body
object
Data
objectrequired
Risk
objectrequired
Links
objectrequired
Meta
objectrequired
post/domestic-scheduled-payment-consents
curl -X POST "https://oba-auth.revolut.com/domestic-scheduled-payment-consents" \
  -H "Content-Type: application/json" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-idempotency-key: string" \
  -H "x-jws-signature: string" \
  -H "x-customer-user-agent: string" \
  -d '{
  "Data": {
    "Permission": "Create",
    "Initiation": {
      "InstructionIdentification": "ID412",
      "EndToEndIdentification": "E2E123",
      "RequestedExecutionDateTime": "2023-08-24T14:15:22Z",
      "InstructedAmount": {
        "Amount": "10.0",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698",
        "Name": "Receiver Co."
      },
      "RemittanceInformation": {
        "Unstructured": "Shipment fee"
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "BillPayment"
  }
}'
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

SecuritySchemaType:apiKey
Header parameter name:x-jws-signature

Open Banking API Payment requests additionally require a JSON Web Signature (JWS) which needs to be added to the header of the request. The JWS signature must be obtained using the full content of the payload.

Request body samples

{
  "Data": {
    "Permission": "Create",
    "Initiation": {
      "InstructionIdentification": "ID412",
      "EndToEndIdentification": "E2E123",
      "RequestedExecutionDateTime": "2023-08-24T14:15:22Z",
      "InstructedAmount": {
        "Amount": "10.0",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698",
        "Name": "Receiver Co."
      },
      "RemittanceInformation": {
        "Unstructured": "Shipment fee"
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "BillPayment"
  }
}

Response body samples

{
  "Data": {
    "Status": "AwaitingAuthorisation",
    "StatusUpdateDateTime": "2022-09-23T16:24:44.538265Z",
    "CreationDateTime": "2022-09-23T16:24:44.538265Z",
    "Permission": "Create",
    "ConsentId": "334fxxxx-e6e8-xxxx-a823-acaf8c93a6af",
    "Initiation": {
      "InstructionIdentification": "ID412",
      "EndToEndIdentification": "E2E123",
      "RequestedExecutionDateTime": "2023-08-24T14:15:22Z",
      "InstructedAmount": {
        "Amount": "10.0",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698",
        "Name": "Receiver Co."
      },
      "RemittanceInformation": {
        "Unstructured": "Shipment fee"
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "BillPayment"
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/domestic-scheduled-payment-consents/334fxxxx-e6e8-xxxx-a823-acaf8c93a6af"
  },
  "Meta": {
    "TotalPages": 1
  }
}

Request

Path parameters
ConsentId
stringrequired
Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-customer-user-agent
string

Response

Domestic Scheduled Payment Consents Read

Body
object
Data
objectrequired
Risk
objectrequired
Links
objectrequired
Meta
objectrequired
get/domestic-scheduled-payment-consents/{ConsentId}
curl -X GET "https://oba-auth.revolut.com/domestic-scheduled-payment-consents/string" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-customer-user-agent: string"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Response body samples

{
  "Data": {
    "Status": "AwaitingAuthorisation",
    "StatusUpdateDateTime": "2022-09-23T16:30:48.724988Z",
    "CreationDateTime": "2022-09-23T16:30:48.724988Z",
    "Permission": "Create",
    "ConsentId": "9709f508-xxxx-44bd-xxxx-94cb8d574d2f",
    "Initiation": {
      "CreditorAccount": {
        "Name": "Receiver Co.",
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698"
      },
      "InstructedAmount": {
        "Amount": "10.0",
        "Currency": "GBP"
      },
      "RemittanceInformation": {
        "Unstructured": "Shipment fee"
      },
      "EndToEndIdentification": "E2E123",
      "InstructionIdentification": "ID412",
      "RequestedExecutionDateTime": "2023-08-24T14:15:22Z"
    }
  },
  "Risk": {
    "PaymentContextCode": "BillPayment"
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/domestic-scheduled-payment-consents/9709f508-xxxx-44bd-xxxx-94cb8d574d2f"
  },
  "Meta": {
    "TotalPages": 1
  }
}

Create a domestic scheduled payment

Create a domestic scheduled payment.

As is defined in the Open Banking Specifications, the /Data/Initiation and the /Data/Risk sections of the request must be an exact match for the related consent passed in ConsentId.

See also Tutorials: Initiate your first payment.

Request

Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-idempotency-key
stringrequired
x-jws-signature
stringrequired
x-customer-user-agent
string
Request body
Data
objectrequired
Risk
objectrequired

Response

Domestic Scheduled Payments Created

Body
object
Data
objectrequired
Links
objectrequired
Meta
objectrequired
post/domestic-scheduled-payments
curl -X POST "https://oba-auth.revolut.com/domestic-scheduled-payments" \
  -H "Content-Type: application/json" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-idempotency-key: string" \
  -H "x-jws-signature: string" \
  -H "x-customer-user-agent: string" \
  -d '{
  "Data": {
    "ConsentId": "9709f508-xxxx-44bd-xxxx-94cb8d574d2f",
    "Initiation": {
      "InstructionIdentification": "ID412",
      "EndToEndIdentification": "E2E123",
      "RequestedExecutionDateTime": "2023-08-24T14:15:22Z",
      "InstructedAmount": {
        "Amount": "10.0",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698",
        "Name": "Receiver Co."
      },
      "RemittanceInformation": {
        "Unstructured": "Shipment fee"
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "BillPayment"
  }
}'
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

SecuritySchemaType:apiKey
Header parameter name:x-jws-signature

Open Banking API Payment requests additionally require a JSON Web Signature (JWS) which needs to be added to the header of the request. The JWS signature must be obtained using the full content of the payload.

Request body samples

{
  "Data": {
    "ConsentId": "9709f508-xxxx-44bd-xxxx-94cb8d574d2f",
    "Initiation": {
      "InstructionIdentification": "ID412",
      "EndToEndIdentification": "E2E123",
      "RequestedExecutionDateTime": "2023-08-24T14:15:22Z",
      "InstructedAmount": {
        "Amount": "10.0",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698",
        "Name": "Receiver Co."
      },
      "RemittanceInformation": {
        "Unstructured": "Shipment fee"
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "BillPayment"
  }
}

Response body samples

{
  "Data": {
    "ConsentId": "163cefc8-830b-xxxx-xxxx-34022a19a556",
    "CreationDateTime": "2022-09-23T16:36:48.416214Z",
    "DomesticScheduledPaymentId": "12345678-xxxx-422b-9270-482770c42379",
    "Initiation": {
      "CreditorAccount": {
        "Identification": "11223321325698",
        "Name": "Receiver Co.",
        "SchemeName": "UK.OBIE.SortCodeAccountNumber"
      },
      "EndToEndIdentification": "E2E123",
      "InstructedAmount": {
        "Amount": "10.0",
        "Currency": "GBP"
      },
      "InstructionIdentification": "ID412",
      "RemittanceInformation": {
        "Unstructured": "Shipment fee"
      },
      "RequestedExecutionDateTime": "2023-08-24T14:15:22Z",
      "DebtorAccount": {
        "SchemeName": "UK.OBIE.IBAN",
        "Identification": "GB95REVO00997053872360",
        "Name": "John Doe"
      }
    },
    "Permission": "Create",
    "Status": "InitiationPending",
    "StatusUpdateDateTime": "2022-09-23T16:36:48.416214Z"
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/domestic-scheduled-payments/12345678-xxxx-422b-9270-482770c42379"
  },
  "Meta": {
    "TotalPages": 1
  }
}

Retrieve a domestic scheduled payment

Request

Path parameters
DomesticScheduledPaymentId
stringrequired
Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-customer-user-agent
string

Response

Domestic Scheduled Payments Read

Body
object
Data
objectrequired
Links
objectrequired
Meta
objectrequired
get/domestic-scheduled-payments/{DomesticScheduledPaymentId}
curl -X GET "https://oba-auth.revolut.com/domestic-scheduled-payments/string" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-customer-user-agent: string"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Response body samples

{
  "Data": {
    "Status": "InitiationPending",
    "StatusUpdateDateTime": "2022-09-23T16:36:48.416214Z",
    "CreationDateTime": "2022-09-23T16:36:48.416214Z",
    "Permission": "Create",
    "DomesticScheduledPaymentId": "12345678-xxxx-422b-9270-482770c42379",
    "ConsentId": "163cefc8-830b-xxxx-xxxx-34022a19a556",
    "Initiation": {
      "CreditorAccount": {
        "Name": "Receiver Co.",
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698"
      },
      "DebtorAccount": {
        "SchemeName": "UK.OBIE.IBAN",
        "Identification": "GB95REVO00997053872360",
        "Name": "John Doe"
      },
      "InstructedAmount": {
        "Amount": "10.0",
        "Currency": "GBP"
      },
      "RemittanceInformation": {
        "Unstructured": "Shipment fee"
      },
      "EndToEndIdentification": "E2E123",
      "InstructionIdentification": "ID412",
      "RequestedExecutionDateTime": "2023-08-24T14:15:22Z"
    }
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/domestic-scheduled-payments/12345678-xxxx-422b-9270-482770c42379"
  },
  "Meta": {
    "TotalPages": 1
  }
}

Domestic standing order

Domestic standing orders, which you can use for local payments in the local currency of the user.

Revolut supports only GBP as local in the UK and EUR in Single Euro Payments Area (SEPA) countries.

As a regulated third party provider, you can use the provided endpoints to initiate a domestic payment in the following high-level workflow:

  • Create a consent.
  • Get the consent.
  • Create a payment.
  • Get the payment.

Before you begin, ensure that you've registered your application with the payments scope. For more information, see Tutorials: Initiate your first payment.

Create a domestic standing order consent

Create a domestic standing order consent described in the Open Banking API documentation: Account and Transaction API Specification.

Use domestic standing orders for local recurring payments in the local currency of the user.

Revolut supports only GBP as local in the UK and EUR in Single Euro Payments Area (SEPA) countries.

Because Revolut Business users can have multiple accounts in the same currency, they can choose which account they want to be charged in the consent authorization UI.

When you make the API call, ensure that you pass the corresponding JSON Web Signature (JWS) in the x-jws-signature request header. Note:

  • The JWS is generated from the request body with the TPP signing key that is specified in the JWS header.
  • The JWS consists of a header and a signature in the <jws_header>..<jws_signature> format.

To see how to create a JWS, see the guide: Work with JSON Web Signatures.

The following types of standing orders frequency are supported:

FREQUENCYEXAMPLEDETAILS
EvryDayEvryDaydaily, supported only for personal accounts
IntrvlWkDayIntrvlWkDay:01
weekly on a specified week day, only 1 week interval is supported
IntrvlMnthDayIntrvlMnthDay:01
monthly on a specified day of month, only 1 month interval is supported

See also Tutorials: Initiate your first payment.

Request

Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-idempotency-key
stringrequired
x-jws-signature
stringrequired
x-customer-user-agent
string
Request body
Data
objectrequired
Risk
objectrequired

Response

Domestic Standing Order Consents Created

Body
object
Data
objectrequired
Risk
objectrequired
Links
objectrequired
Meta
objectrequired
post/domestic-standing-order-consents
curl -X POST "https://oba-auth.revolut.com/domestic-standing-order-consents" \
  -H "Content-Type: application/json" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-idempotency-key: string" \
  -H "x-jws-signature: string" \
  -H "x-customer-user-agent: string" \
  -d '{
  "Data": {
    "Permission": "Create",
    "Initiation": {
      "Frequency": "EvryDay",
      "Reference": "Reference1234",
      "FirstPaymentDateTime": "2022-09-23T14:15:22Z",
      "FirstPaymentAmount": {
        "Amount": "1.00",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698",
        "Name": "Receiver Co."
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "BillPayment"
  }
}'
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

SecuritySchemaType:apiKey
Header parameter name:x-jws-signature

Open Banking API Payment requests additionally require a JSON Web Signature (JWS) which needs to be added to the header of the request. The JWS signature must be obtained using the full content of the payload.

Request body samples

{
  "Data": {
    "Permission": "Create",
    "Initiation": {
      "Frequency": "EvryDay",
      "Reference": "Reference1234",
      "FirstPaymentDateTime": "2022-09-23T14:15:22Z",
      "FirstPaymentAmount": {
        "Amount": "1.00",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698",
        "Name": "Receiver Co."
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "BillPayment"
  }
}

Response body samples

{
  "Data": {
    "Status": "AwaitingAuthorisation",
    "StatusUpdateDateTime": "2022-09-23T17:29:11.18491Z",
    "CreationDateTime": "2022-09-23T17:29:11.18491Z",
    "Permission": "Create",
    "ConsentId": "a8987204-xxxx-4c26-xxxx-f7a3effea6f3",
    "Initiation": {
      "Frequency": "EvryDay",
      "Reference": "Reference1234",
      "FirstPaymentDateTime": "2022-09-24T14:15:22Z",
      "FirstPaymentAmount": {
        "Amount": "1.00",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698",
        "Name": "Receiver Co."
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "BillPayment"
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/domestic-standing-order-consents/a8987204-xxxx-4c26-xxxx-f7a3effea6f3"
  },
  "Meta": {
    "TotalPages": 1
  }
}

Request

Path parameters
ConsentId
stringrequired
Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-customer-user-agent
string

Response

Domestic Standing Order Consents Read

Body
object
Data
objectrequired
Risk
objectrequired
Links
objectrequired
Meta
objectrequired
get/domestic-standing-order-consents/{ConsentId}
curl -X GET "https://oba-auth.revolut.com/domestic-standing-order-consents/string" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-customer-user-agent: string"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Response body samples

{
  "Data": {
    "Status": "AwaitingAuthorisation",
    "StatusUpdateDateTime": "2022-09-23T17:29:11.18491Z",
    "CreationDateTime": "2022-09-23T17:29:11.18491Z",
    "Permission": "Create",
    "ConsentId": "a8987204-xxxx-4c26-xxxx-f7a3effea6f3",
    "Initiation": {
      "Frequency": "EvryDay",
      "Reference": "Reference1234",
      "CreditorAccount": {
        "Name": "Receiver Co.",
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698"
      },
      "FirstPaymentAmount": {
        "Amount": "1.00",
        "Currency": "GBP"
      },
      "FirstPaymentDateTime": "2022-09-24T14:15:22Z"
    }
  },
  "Risk": {
    "PaymentContextCode": "BillPayment"
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/domestic-standing-order-consents/a8987204-xxxx-4c26-xxxx-f7a3effea6f3"
  },
  "Meta": {
    "TotalPages": 1
  }
}

Create a domestic standing order

Create a domestic standing order.

As is defined in the Open Banking Specifications, the /Data/Initiation and the /Data/Risk sections of the request must be an exact match for the related consent passed in ConsentId.

See also Tutorials: Initiate your first payment.

Request

Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-idempotency-key
stringrequired
x-jws-signature
stringrequired
x-customer-user-agent
string
Request body
Data
objectrequired
Risk
objectrequired

Response

Domestic Standing Orders Created

Body
object
Data
objectrequired
Links
objectrequired
Meta
objectrequired
post/domestic-standing-orders
curl -X POST "https://oba-auth.revolut.com/domestic-standing-orders" \
  -H "Content-Type: application/json" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-idempotency-key: string" \
  -H "x-jws-signature: string" \
  -H "x-customer-user-agent: string" \
  -d '{
  "Data": {
    "ConsentId": "a8987204-xxxx-4c26-xxxx-f7a3effea6f3",
    "Initiation": {
      "Frequency": "EvryDay",
      "Reference": "Reference1234",
      "FirstPaymentDateTime": "2022-09-24T14:15:22Z",
      "FirstPaymentAmount": {
        "Amount": "1.00",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698",
        "Name": "Receiver Co."
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "BillPayment"
  }
}'
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

SecuritySchemaType:apiKey
Header parameter name:x-jws-signature

Open Banking API Payment requests additionally require a JSON Web Signature (JWS) which needs to be added to the header of the request. The JWS signature must be obtained using the full content of the payload.

Request body samples

{
  "Data": {
    "ConsentId": "a8987204-xxxx-4c26-xxxx-f7a3effea6f3",
    "Initiation": {
      "Frequency": "EvryDay",
      "Reference": "Reference1234",
      "FirstPaymentDateTime": "2022-09-24T14:15:22Z",
      "FirstPaymentAmount": {
        "Amount": "1.00",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698",
        "Name": "Receiver Co."
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "BillPayment"
  }
}

Response body samples

{
  "Data": {
    "ConsentId": "a8987204-xxxx-4c26-xxxx-f7a3effea6f3",
    "CreationDateTime": "2022-09-23T17:37:46.190063Z",
    "DomesticStandingOrderId": "4c31965f-3de0-xxxx-8946-2f4f0e50dcda",
    "Initiation": {
      "CreditorAccount": {
        "Identification": "11223321325698",
        "Name": "Receiver Co.",
        "SchemeName": "UK.OBIE.SortCodeAccountNumber"
      },
      "FirstPaymentAmount": {
        "Amount": "1.00",
        "Currency": "GBP"
      },
      "FirstPaymentDateTime": "2022-09-24T14:15:22Z",
      "Frequency": "EvryDay",
      "Reference": "Reference1234",
      "DebtorAccount": {
        "SchemeName": "UK.OBIE.IBAN",
        "Identification": "GB95REVO00997053872360",
        "Name": "John Doe"
      }
    },
    "Permission": "Create",
    "Status": "InitiationCompleted",
    "StatusUpdateDateTime": "2022-09-23T17:37:46.190063Z"
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/domestic-standing-orders/4c31965f-3de0-xxxx-8946-2f4f0e50dcda"
  },
  "Meta": {
    "TotalPages": 1
  }
}

Retrieve a domestic standing order

Request

Path parameters
DomesticStandingOrderId
stringrequired
Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-customer-user-agent
string

Response

Domestic Standing Orders Read

Body
object
Data
objectrequired
Links
objectrequired
Meta
objectrequired
get/domestic-standing-orders/{DomesticStandingOrderId}
curl -X GET "https://oba-auth.revolut.com/domestic-standing-orders/string" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-customer-user-agent: string"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Response body samples

{
  "Data": {
    "Status": "InitiationCompleted",
    "StatusUpdateDateTime": "2022-09-23T17:37:46.190063Z",
    "CreationDateTime": "2022-09-23T17:37:46.190063Z",
    "Permission": "Create",
    "DomesticStandingOrderId": "4c31965f-3de0-xxxx-8946-2f4f0e50dcda",
    "ConsentId": "a8987204-xxxx-4c26-xxxx-f7a3effea6f3",
    "Initiation": {
      "Frequency": "EvryDay",
      "Reference": "Reference1234",
      "CreditorAccount": {
        "Name": "Receiver Co.",
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698"
      },
      "DebtorAccount": {
        "SchemeName": "UK.OBIE.IBAN",
        "Identification": "GB95REVO00997053872360",
        "Name": "John Doe"
      },
      "FirstPaymentAmount": {
        "Amount": "1.00",
        "Currency": "GBP"
      },
      "FirstPaymentDateTime": "2022-09-24T14:15:22Z"
    }
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/domestic-standing-orders/4c31965f-3de0-xxxx-8946-2f4f0e50dcda"
  },
  "Meta": {
    "TotalPages": 1
  }
}

File payment

File payments, which you can use to process all individual payments in an uploaded CSV file that you specify.

As a regulated third party provider, you can use the provided endpoints to initiate a payment in the following high-level workflow:

  • Create a consent.
  • Get the consent.
  • Create a payment.
  • Get the payment.

Before you begin, ensure that you've registered your application with the payments scope. For more information, see Tutorials: Create a file payment.

Create a file payment consent

Create a file payment consent described in the Open Banking API documentation: Account and Transaction API Specification.

File Payments are available only for Revolut Business users. Currently only the text/csv file type is supported for File Payments.

When you make the API call, ensure that you pass the corresponding JSON Web Signature (JWS) in the x-jws-signature request header. Note:

  • The JWS is generated from the request body with the TPP signing key that is specified in the JWS header.
  • The JWS consists of a header and a signature in the <jws_header>..<jws_signature> format.

To see how to create a JWS, see the guide: Work with JSON Web Signatures.

For more information, see Tutorials: Create a file payment.

Request

Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-idempotency-key
stringrequired
x-jws-signature
stringrequired
x-customer-user-agent
string
Request body
Data
objectrequired

Response

File Payment Consents Created

Body
object
Data
objectrequired
Links
objectrequired
Meta
objectrequired
post/file-payment-consents
curl -X POST "https://oba-auth.revolut.com/file-payment-consents" \
  -H "Content-Type: application/json" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-idempotency-key: string" \
  -H "x-jws-signature: string" \
  -H "x-customer-user-agent: string" \
  -d '{
  "Data": {
    "Initiation": {
      "FileType": "text/csv",
      "FileHash": "a31f80c0-4946-11ed-b878-0242ac120002",
      "FileReference": "reference1234"
    }
  }
}'
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

SecuritySchemaType:apiKey
Header parameter name:x-jws-signature

Open Banking API Payment requests additionally require a JSON Web Signature (JWS) which needs to be added to the header of the request. The JWS signature must be obtained using the full content of the payload.

Request body samples

{
  "Data": {
    "Initiation": {
      "FileType": "text/csv",
      "FileHash": "a31f80c0-4946-11ed-b878-0242ac120002",
      "FileReference": "reference1234"
    }
  }
}

Response body samples

{
  "Data": {
    "Status": "AwaitingUpload",
    "StatusUpdateDateTime": "2022-10-11T13:17:08.140705Z",
    "CreationDateTime": "2022-10-11T13:17:08.140705Z",
    "ConsentId": "d2ca7407-1234-466e-xxxx-00010770a4ff",
    "Initiation": {
      "FileType": "text/csv",
      "FileHash": "7YuW8NQJ78/cHthltcqeJd1234BlATBS92IzoBXqQz0=",
      "FileReference": "reference1234"
    }
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/file-payment-consents/d2ca7407-1234-466e-xxxx-00010770a4ff"
  },
  "Meta": {
    "TotalPages": 1
  }
}

Request

Path parameters
ConsentId
stringrequired
Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-customer-user-agent
string

Response

File Payment Consents Read

Body
string

The payment file that was uploaded with the specified consent.

get/file-payment-consents/{ConsentId}/file
curl -X GET "https://oba-auth.revolut.com/file-payment-consents/string/file" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-customer-user-agent: string"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Response body samples

"Name,Recipient type,Account number,Sort code,Routing number,IBAN,BIC,Recipient bank country,Currency,Amount,Payment reference,Recipient country,State or province,Address line 1,Address line 2,City,Postal code\nJohn Smith,INDIVIDUAL,40513598,207409,,,GB,GBP,10,User comment,GB,,Revolutest LTD,Somewhere in London,London,E14 5AB"

Request

Path parameters
ConsentId
stringrequired
Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-idempotency-key
stringrequired
x-jws-signature
stringrequired
x-customer-user-agent
string
Request body

The CSV payments file. Provided as CSV-formatted text representing file payments, or as the path to the CSV payments file preceded by @. For the format of the CSV file, check the details below.

The format of the payment file:
FIELDREQUIREDDESCRIPTION
NameYesCan contain up to 80 characters. If recipient type is INDIVIDUAL, this field must contain a first and a last name, separated by a space.
Recipient typeYesCan be either INDIVIDUAL or COMPANY.
Account numberFor UK transfersMust contain valid account number if provided.
Sort codeFor UK transfersMust contain valid sort code if provided.
Routing numberFor US transfersMust contain valid routing number if provided.
IBANFor SEPA transfersMust contain valid IBAN if provided.
BICFor SEPA transfersMust contain valid BIC if provided.
Recipient bank countryYesMust contain valid ISO 3166-1 country code.
CurrencyYesMust contain valid ISO 4217 currency code.
AmountYesMust match the following pattern [0-9]*(\.[0-9]*)?.
Payment referenceYesCan contain up to 100 characters.
Recipient countryNoMust contain valid ISO 3166-1 country code if provided.
State or provinceNoCan contain up to 50 characters.
Address line 1NoCan contain up to 50 characters.
Address line 2NoCan contain up to 50 characters.
CityNoCan contain up to 50 characters.
Postal codeNoCan contain up to 50 characters.

Response

File Payment CSV Uploaded

Body
object | null

An empty JSON object ({}) is returned.

post/file-payment-consents/{ConsentId}/file
curl -X POST "https://oba-auth.revolut.com/file-payment-consents/string/file" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-idempotency-key: string" \
  -H "x-jws-signature: string" \
  -H "x-customer-user-agent: string"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

SecuritySchemaType:apiKey
Header parameter name:x-jws-signature

Open Banking API Payment requests additionally require a JSON Web Signature (JWS) which needs to be added to the header of the request. The JWS signature must be obtained using the full content of the payload.

Request body samples

"Name,Recipient type,Account number,Sort code,Recipient bank country,Currency,Amount,Payment reference,Payment reference,Recipient country,State or province,Address line 1,Address line 2,City,Postal code\nJohn Smith,INDIVIDUAL,40513598,207409,,,GB,GBP,10,User comment,GB,,Revolutest LTD,Somewhere in London,London,E14 5AB\nJohn Doe,INDIVIDUAL,90352556,600001,GB,GBP,10,Second comment,,,,,,"

Response body samples

{}

Create a file payment

Create a file payment.

As is defined in the Open Banking Specifications, the /Data/Initiation and the /Data/Risk sections of the request must be an exact match for the related consent passed in ConsentId.

For more information, see Tutorials: Create a file payment.

Request

Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-idempotency-key
stringrequired
x-jws-signature
stringrequired
x-customer-user-agent
string
Request body
Data
objectrequired

Response

File Payments Created

Body
object
Data
objectrequired
Links
objectrequired
Meta
objectrequired
post/file-payments
curl -X POST "https://oba-auth.revolut.com/file-payments" \
  -H "Content-Type: application/json" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-idempotency-key: string" \
  -H "x-jws-signature: string" \
  -H "x-customer-user-agent: string" \
  -d '{
  "Data": {
    "ConsentId": "7ffe4969-1234-1234-acab-d24e89855fdd",
    "Initiation": {
      "FileType": "text/csv",
      "FileHash": "7YuW8NQJ78/cHthltcqeJdJKX3BlATBS92IzoBXqQz0=",
      "FileReference": "reference1234"
    }
  }
}'
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

SecuritySchemaType:apiKey
Header parameter name:x-jws-signature

Open Banking API Payment requests additionally require a JSON Web Signature (JWS) which needs to be added to the header of the request. The JWS signature must be obtained using the full content of the payload.

Request body samples

{
  "Data": {
    "ConsentId": "7ffe4969-1234-1234-acab-d24e89855fdd",
    "Initiation": {
      "FileType": "text/csv",
      "FileHash": "7YuW8NQJ78/cHthltcqeJdJKX3BlATBS92IzoBXqQz0=",
      "FileReference": "reference1234"
    }
  }
}

Response body samples

{
  "Data": {
    "ConsentId": "7ffe4969-1234-1234-acab-d24e89855fdd",
    "CreationDateTime": "2022-10-12T14:06:27.883606Z",
    "FilePaymentId": "6036c4d7-b311-xxxx-xxxx-b37a0a1395e0",
    "Initiation": {
      "DebtorAccount": {
        "SchemeName": "UK.OBIE.IBAN",
        "Identification": "GB95REVO00997053872360",
        "Name": "John Doe"
      },
      "FileHash": "7YuW8NQJ78/cHthltcqeJd1234BlATBS92IzoBXqQz0=",
      "FileReference": "reference1234",
      "FileType": "text/csv"
    },
    "Status": "InitiationCompleted",
    "StatusUpdateDateTime": "2022-10-12T14:06:27.883606Z"
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/file-payments/6036c4d7-b311-xxxx-xxxx-b37a0a1395e0"
  },
  "Meta": {
    "TotalPages": 1
  }
}

Retrieve a file payment

Request

Path parameters
FilePaymentId
stringrequired
Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-customer-user-agent
string

Response

File Payments Read

Body
object
Data
objectrequired
Links
objectrequired
Meta
objectrequired
get/file-payments/{FilePaymentId}
curl -X GET "https://oba-auth.revolut.com/file-payments/string" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-customer-user-agent: string"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Response body samples

{
  "Data": {
    "Status": "InitiationCompleted",
    "StatusUpdateDateTime": "2022-10-12T14:06:28.48358Z",
    "CreationDateTime": "2022-10-12T14:06:27.883606Z",
    "FilePaymentId": "6036c4d7-b311-xxxx-xxxx-b37a0a1395e0",
    "ConsentId": "7ffe4969-1234-1234-acab-d24e89855fdd",
    "Initiation": {
      "FileHash": "7YuW8NQJ78/cHthltcqeJd1234BlATBS92IzoBXqQz0=",
      "FileType": "text/csv",
      "FileReference": "reference1234",
      "DebtorAccount": {
        "SchemeName": "UK.OBIE.IBAN",
        "Identification": "GB95REVO00997053872360",
        "Name": "John Doe"
      }
    }
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/file-payments/6036c4d7-b311-xxxx-xxxx-b37a0a1395e0"
  },
  "Meta": {
    "TotalPages": 1
  }
}

Retrieve all payments of a file payment

Get the state of all individual payments for the given file payment.

Currently only the JSON format is supported.

For more information, see Tutorials: Create a file payment.

Request

Path parameters
FilePaymentId
stringrequired
Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-customer-user-agent
string

Response

File Payments Read

Body
object
Payments
arrayrequired
get/file-payments/{FilePaymentId}/report-file
curl -X GET "https://oba-auth.revolut.com/file-payments/string/report-file" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-customer-user-agent: string"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Response body samples

{
  "Payments": [
    {
      "Amount": {
        "Amount": "10.00",
        "Currency": "GBP"
      },
      "Reference": "First of my two payments in the file",
      "Status": "Created"
    },
    {
      "Amount": {
        "Amount": "213.00",
        "Currency": "GBP"
      },
      "Reference": "Second of my two payments in the file",
      "Status": "Created"
    }
  ]
}

International payment

International payments, which you can use for international SWIFT payments in all currencies that Revolut supports.

As a regulated third party provider, you can use the provided endpoints to initiate a payment in the following high-level workflow:

  • Create a consent.
  • Get the consent.
  • Create a payment.
  • Get the payment.

Before you begin, ensure that you've registered your application with the payments scope. For more information, see Tutorials: Initiate your first payment.

Create an international payment consent

Create an international payment consent described in the Open Banking API documentation: Account and Transaction API Specification.

Use international payments for international SWIFT payments in all currencies supported by Revolut.

Only the payments with InstructedAmount in the same currency as CurrencyOfTransfer are supported.

However, users can select which account they want to be charged in the consent authorization UI even if the selected account is in a different currency.

In such a case, the ExchangeRateInformation response field contains information about the ExchangeRate between SourceCurrency and CurrencyOfTransfer. If the user doesn't have enough funds on the selected account, the consent authorization is rejected.

For international payment initiation consents, we recommend including the creditor's name and address. Otherwise, the API may return the error Address is required for this beneficiary if the address is not provided for international payments.

When you make the API call, ensure that you pass the corresponding JSON Web Signature (JWS) in the x-jws-signature request header. Note:

  • The JWS is generated from the request body with the TPP signing key that is specified in the JWS header.
  • The JWS consists of a header and a signature in the <jws_header>..<jws_signature> format.

To see how to create a JWS, see the guide: Work with JSON Web Signatures.

See also Tutorials: Initiate your first payment.

Request

Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-idempotency-key
stringrequired
x-jws-signature
stringrequired
x-customer-user-agent
string
Request body
Data
objectrequired
Risk
objectrequired

Response

International Payment Consents Created

Body
object
Data
objectrequired
Risk
objectrequired
Links
objectrequired
Meta
objectrequired
post/international-payment-consents
curl -X POST "https://oba-auth.revolut.com/international-payment-consents" \
  -H "Content-Type: application/json" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-idempotency-key: string" \
  -H "x-jws-signature: string" \
  -H "x-customer-user-agent: string" \
  -d '{
  "Data": {
    "Initiation": {
      "InstructionIdentification": "Reference1234",
      "EndToEndIdentification": "E2E1234",
      "CurrencyOfTransfer": "EUR",
      "InstructedAmount": {
        "Amount": "10.0",
        "Currency": "EUR"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698",
        "Name": "Receiver Co."
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "BillPayment"
  }
}'
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

SecuritySchemaType:apiKey
Header parameter name:x-jws-signature

Open Banking API Payment requests additionally require a JSON Web Signature (JWS) which needs to be added to the header of the request. The JWS signature must be obtained using the full content of the payload.

Request body samples

{
  "Data": {
    "Initiation": {
      "InstructionIdentification": "Reference1234",
      "EndToEndIdentification": "E2E1234",
      "CurrencyOfTransfer": "EUR",
      "InstructedAmount": {
        "Amount": "10.0",
        "Currency": "EUR"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698",
        "Name": "Receiver Co."
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "BillPayment"
  }
}

Response body samples

{
  "Data": {
    "Status": "AwaitingAuthorisation",
    "StatusUpdateDateTime": "2022-09-26T09:07:30.952882Z",
    "CreationDateTime": "2022-09-26T09:07:30.952882Z",
    "ConsentId": "3446d4b6-xxxx-4e4f-xxxx-6605eeff5d1f",
    "Initiation": {
      "InstructionIdentification": "Reference1234",
      "EndToEndIdentification": "E2E1234",
      "CurrencyOfTransfer": "EUR",
      "InstructedAmount": {
        "Amount": "10.0",
        "Currency": "EUR"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698",
        "Name": "Receiver Co."
      }
    },
    "ExchangeRateInformation": {
      "UnitCurrency": "EUR",
      "RateType": "Indicative",
      "ExchangeRate": "1.0000"
    }
  },
  "Risk": {
    "PaymentContextCode": "BillPayment"
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/international-payment-consents/3446d4b6-xxxx-4e4f-xxxx-6605eeff5d1f"
  },
  "Meta": {
    "TotalPages": 1
  }
}

Request

Path parameters
ConsentId
stringrequired
Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-customer-user-agent
string

Response

International Payment Consents Read

Body
object
Data
objectrequired
Risk
objectrequired
Links
objectrequired
Meta
objectrequired
get/international-payment-consents/{ConsentId}
curl -X GET "https://oba-auth.revolut.com/international-payment-consents/string" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-customer-user-agent: string"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Response body samples

{
  "Data": {
    "Status": "AwaitingAuthorisation",
    "StatusUpdateDateTime": "2022-09-26T09:07:30.952882Z",
    "CreationDateTime": "2022-09-26T09:07:30.952882Z",
    "ConsentId": "3446d4b6-xxxx-4e4f-xxxx-6605eeff5d1f",
    "Initiation": {
      "CreditorAccount": {
        "Name": "Receiver Co.",
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698"
      },
      "InstructedAmount": {
        "Amount": "10.0",
        "Currency": "EUR"
      },
      "CurrencyOfTransfer": "EUR",
      "EndToEndIdentification": "E2E1234",
      "InstructionIdentification": "Reference1234"
    },
    "ExchangeRateInformation": {
      "UnitCurrency": "EUR",
      "RateType": "Indicative",
      "ExchangeRate": "1.0000"
    }
  },
  "Risk": {
    "PaymentContextCode": "BillPayment"
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/international-payment-consents/3446d4b6-xxxx-4e4f-xxxx-6605eeff5d1f"
  },
  "Meta": {
    "TotalPages": 1
  }
}

Check the funds for an international payment with the given consent. You can get the information only if the user has authorized the related consent.

See also Tutorials: Initiate your first payment.

Request

Path parameters
ConsentId
stringrequired
Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-customer-user-agent
string

Response

International Payment Consents Read

Body
object
Data
objectrequired
Links
objectrequired
Meta
objectrequired
get/international-payment-consents/{ConsentId}/funds-confirmation
curl -X GET "https://oba-auth.revolut.com/international-payment-consents/string/funds-confirmation" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-customer-user-agent: string"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Response body samples

{
  "Data": {
    "FundsAvailableResult": {
      "FundsAvailableDateTime": "2022-09-26T14:13:46.585307Z",
      "FundsAvailable": true
    }
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/international-payment-consents/323673db-babc-xxxx-xxxx-148cd24c390e/funds-confirmation"
  },
  "Meta": {
    "TotalPages": 1
  }
}

Create an international payment

Create an international payment.

As is defined in the Open Banking Specifications, the /Data/Initiation and the /Data/Risk sections of the request must be an exact match for the related consent passed in ConsentId.

See also Tutorials: Initiate your first payment.

Request

Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-idempotency-key
stringrequired
x-jws-signature
stringrequired
x-customer-user-agent
string
Request body
Data
objectrequired
Risk
objectrequired

Response

International Payments Created

Body
object
Data
objectrequired
Links
objectrequired
Meta
objectrequired
post/international-payments
curl -X POST "https://oba-auth.revolut.com/international-payments" \
  -H "Content-Type: application/json" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-idempotency-key: string" \
  -H "x-jws-signature: string" \
  -H "x-customer-user-agent: string" \
  -d '{
  "Data": {
    "ConsentId": "65067c5d-e752-410d-a922-c9da2aeb8e6b",
    "Initiation": {
      "InstructionIdentification": "Reference1234",
      "EndToEndIdentification": "E2E1234",
      "CurrencyOfTransfer": "EUR",
      "InstructedAmount": {
        "Amount": "10.0",
        "Currency": "EUR"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698",
        "Name": "Receiver Co."
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "BillPayment"
  }
}'
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

SecuritySchemaType:apiKey
Header parameter name:x-jws-signature

Open Banking API Payment requests additionally require a JSON Web Signature (JWS) which needs to be added to the header of the request. The JWS signature must be obtained using the full content of the payload.

Request body samples

{
  "Data": {
    "ConsentId": "65067c5d-e752-410d-a922-c9da2aeb8e6b",
    "Initiation": {
      "InstructionIdentification": "Reference1234",
      "EndToEndIdentification": "E2E1234",
      "CurrencyOfTransfer": "EUR",
      "InstructedAmount": {
        "Amount": "10.0",
        "Currency": "EUR"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698",
        "Name": "Receiver Co."
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "BillPayment"
  }
}

Response body samples

{
  "Data": {
    "ConsentId": "2373df19-xxxx-43a9-xxxx-b5fd14e5920f",
    "CreationDateTime": "2022-09-26T09:29:10.152499Z",
    "Initiation": {
      "CreditorAccount": {
        "Identification": "11223321325698",
        "Name": "Receiver Co.",
        "SchemeName": "UK.OBIE.SortCodeAccountNumber"
      },
      "CurrencyOfTransfer": "GBP",
      "EndToEndIdentification": "E2E1234",
      "InstructedAmount": {
        "Amount": "10.0",
        "Currency": "GBP"
      },
      "InstructionIdentification": "Reference1234",
      "DebtorAccount": {
        "SchemeName": "UK.OBIE.IBAN",
        "Identification": "GB95REVO00997053872360",
        "Name": "John Doe"
      }
    },
    "InternationalPaymentId": "633170e6-xxxx-xxxx-xxxx-e90e7f88abee",
    "Status": "Pending",
    "StatusUpdateDateTime": "2022-09-26T09:29:10.152499Z"
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/international-payments/633170e6-xxxx-xxxx-xxxx-e90e7f88abee"
  },
  "Meta": {
    "TotalPages": 1
  }
}

Retrieve an international payment

Request

Path parameters
InternationalPaymentId
stringrequired
Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-customer-user-agent
string

Response

International Payments Read

Body
object
Data
objectrequired
Links
objectrequired
Meta
objectrequired
get/international-payments/{InternationalPaymentId}
curl -X GET "https://oba-auth.revolut.com/international-payments/string" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-customer-user-agent: string"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Response body samples

{
  "Data": {
    "Status": "Pending",
    "StatusUpdateDateTime": "2022-09-26T14:28:00.178343Z",
    "CreationDateTime": "2022-09-26T14:28:00.178343Z",
    "InternationalPaymentId": "12345678-6992-a81e-xxxx-01f9c376f047",
    "ConsentId": "dd8b3bc7-xxxx-498e-xxxx-72d31ca13970",
    "Initiation": {
      "CreditorAccount": {
        "Name": "Receiver Co.",
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698"
      },
      "DebtorAccount": {
        "SchemeName": "UK.OBIE.IBAN",
        "Identification": "GB95REVO00997053872360",
        "Name": "John Doe"
      },
      "InstructedAmount": {
        "Amount": "10.0",
        "Currency": "GBP"
      },
      "CurrencyOfTransfer": "GBP",
      "EndToEndIdentification": "E2E1234",
      "InstructionIdentification": "Reference1234"
    }
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/international-payments/12345678-6992-a81e-xxxx-01f9c376f047"
  },
  "Meta": {
    "TotalPages": 1
  }
}

International scheduled payment

International scheduled payments, which you can use for international SWIFT payments in all currencies that Revolut supports.

As a regulated third party provider, you can use the provided endpoints to initiate a payment in the following high-level workflow:

  • Create a consent.
  • Get the consent.
  • Create a payment.
  • Get the payment.

Before you begin, ensure that you've registered your application with the payments scope. For more information, see Tutorials: Initiate your first payment.

Create an international scheduled payment consent

Create an international scheduled payment consent described in the Open Banking API documentation: Account and Transaction API Specification.

Use international scheduled payments for international SWIFT payments in all currencies supported by Revolut.

Only the payments with InstructedAmount in the same currency as CurrencyOfTransfer are supported.

However, users can select which account they want to be charged in the consent authorization UI even if the selected account is in a different currency.

In such a case, the ExchangeRateInformation response field contains information about the ExchangeRate between SourceCurrency and CurrencyOfTransfer. If the user doesn't have enough funds on the selected account, the consent authorization is rejected.

When you make the API call, ensure that you pass the corresponding JSON Web Signature (JWS) in the x-jws-signature request header. Note:

  • The JWS is generated from the request body with the TPP signing key that is specified in the JWS header.
  • The JWS consists of a header and a signature in the <jws_header>..<jws_signature> format.

To see how to create a JWS, see the guide: Work with JSON Web Signatures.

See also Tutorials: Initiate your first payment.

Request

Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-idempotency-key
stringrequired
x-jws-signature
stringrequired
x-customer-user-agent
string
Request body
Data
objectrequired
Risk
objectrequired

Response

International Scheduled Payment Consents Created

Body
object
Data
objectrequired
Risk
objectrequired
Links
objectrequired
Meta
objectrequired
post/international-scheduled-payment-consents
curl -X POST "https://oba-auth.revolut.com/international-scheduled-payment-consents" \
  -H "Content-Type: application/json" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-idempotency-key: string" \
  -H "x-jws-signature: string" \
  -H "x-customer-user-agent: string" \
  -d '{
  "Data": {
    "Permission": "Create",
    "Initiation": {
      "InstructionIdentification": "Reference1234",
      "EndToEndIdentification": "E2E1234",
      "RequestedExecutionDateTime": "2022-10-01T14:15:22Z",
      "CurrencyOfTransfer": "GBP",
      "InstructedAmount": {
        "Amount": "10.0",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698",
        "Name": "Receiver Co."
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "BillPayment"
  }
}'
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Request body samples

{
  "Data": {
    "Permission": "Create",
    "Initiation": {
      "InstructionIdentification": "Reference1234",
      "EndToEndIdentification": "E2E1234",
      "RequestedExecutionDateTime": "2022-10-01T14:15:22Z",
      "CurrencyOfTransfer": "GBP",
      "InstructedAmount": {
        "Amount": "10.0",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698",
        "Name": "Receiver Co."
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "BillPayment"
  }
}

Response body samples

{
  "Data": {
    "Status": "AwaitingAuthorisation",
    "StatusUpdateDateTime": "2022-09-27T07:21:28.523356Z",
    "CreationDateTime": "2022-09-27T07:21:28.523356Z",
    "Permission": "Create",
    "ConsentId": "4c31ba68-aea8-xxxx-xxxx-12349fa9a975",
    "Initiation": {
      "InstructionIdentification": "Reference1234",
      "EndToEndIdentification": "E2E1234",
      "RequestedExecutionDateTime": "2022-10-01T14:15:22Z",
      "CurrencyOfTransfer": "GBP",
      "InstructedAmount": {
        "Amount": "12.0",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698",
        "Name": "Receiver Co."
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "BillPayment"
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/international-scheduled-payment-consents/4c31ba68-aea8-xxxx-xxxx-12349fa9a975"
  },
  "Meta": {
    "TotalPages": 1
  }
}

Request

Path parameters
ConsentId
stringrequired
Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-customer-user-agent
string

Response

International Scheduled Payment Consents Read

Body
object
Data
objectrequired
Risk
objectrequired
Links
objectrequired
Meta
objectrequired
get/international-scheduled-payment-consents/{ConsentId}
curl -X GET "https://oba-auth.revolut.com/international-scheduled-payment-consents/string" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-customer-user-agent: string"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Response body samples

{
  "Data": {
    "Status": "AwaitingAuthorisation",
    "StatusUpdateDateTime": "2022-09-27T07:21:28.523356Z",
    "CreationDateTime": "2022-09-27T07:21:28.523356Z",
    "Permission": "Create",
    "ConsentId": "4c31ba68-aea8-xxxx-xxxx-12349fa9a975",
    "Initiation": {
      "CreditorAccount": {
        "Name": "Receiver Co.",
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698"
      },
      "InstructedAmount": {
        "Amount": "12.0",
        "Currency": "GBP"
      },
      "CurrencyOfTransfer": "GBP",
      "EndToEndIdentification": "E2E1234",
      "InstructionIdentification": "Reference1234",
      "RequestedExecutionDateTime": "2022-10-01T14:15:22Z"
    }
  },
  "Risk": {
    "PaymentContextCode": "BillPayment"
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/international-scheduled-payment-consents/4c31ba68-aea8-xxxx-xxxx-12349fa9a975"
  },
  "Meta": {
    "TotalPages": 1
  }
}

Check the funds for an international scheduled payment with the given consent. You can get the information only if the user has authorized the related consent.

See also Tutorials: Initiate your first payment.

Request

Path parameters
ConsentId
stringrequired
Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-customer-user-agent
string

Response

International Payment Consents Read

Body
object
Data
objectrequired
Links
objectrequired
Meta
objectrequired
get/international-scheduled-payment-consents/{ConsentId}/funds-confirmation
curl -X GET "https://oba-auth.revolut.com/international-scheduled-payment-consents/string/funds-confirmation" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-customer-user-agent: string"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Response body samples

{
  "Data": {
    "FundsAvailableResult": {
      "FundsAvailableDateTime": "2022-09-27T07:45:59.760463Z",
      "FundsAvailable": true
    }
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/international-scheduled-payment-consents/0e3c0734-fb1c-4d9d-a275-123412341111/funds-confirmation"
  },
  "Meta": {
    "TotalPages": 1
  }
}

Create an international scheduled payment

Create an international scheduled payment.

As is defined in the Open Banking Specifications, the /Data/Initiation and the /Data/Risk sections of the request must be an exact match for the related consent passed in ConsentId.

See also Tutorials: Initiate your first payment.

Request

Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-idempotency-key
stringrequired
x-jws-signature
stringrequired
x-customer-user-agent
string
Request body
Data
objectrequired
Risk
objectrequired

Response

International Scheduled Payments Created

Body
object
Data
objectrequired
Links
objectrequired
Meta
objectrequired
post/international-scheduled-payments
curl -X POST "https://oba-auth.revolut.com/international-scheduled-payments" \
  -H "Content-Type: application/json" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-idempotency-key: string" \
  -H "x-jws-signature: string" \
  -H "x-customer-user-agent: string" \
  -d '{
  "Data": {
    "ConsentId": "50335ba3-xxxx-4874-xxxx-2191f1fe1114",
    "Initiation": {
      "InstructionIdentification": "Reference1234",
      "EndToEndIdentification": "E2E1234",
      "RequestedExecutionDateTime": "2022-10-01T14:15:22Z",
      "CurrencyOfTransfer": "GBP",
      "InstructedAmount": {
        "Amount": "12.0",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698",
        "Name": "Receiver Co."
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "BillPayment"
  }
}'
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

SecuritySchemaType:apiKey
Header parameter name:x-jws-signature

Open Banking API Payment requests additionally require a JSON Web Signature (JWS) which needs to be added to the header of the request. The JWS signature must be obtained using the full content of the payload.

Request body samples

{
  "Data": {
    "ConsentId": "50335ba3-xxxx-4874-xxxx-2191f1fe1114",
    "Initiation": {
      "InstructionIdentification": "Reference1234",
      "EndToEndIdentification": "E2E1234",
      "RequestedExecutionDateTime": "2022-10-01T14:15:22Z",
      "CurrencyOfTransfer": "GBP",
      "InstructedAmount": {
        "Amount": "12.0",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698",
        "Name": "Receiver Co."
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "BillPayment"
  }
}

Response body samples

{
  "Data": {
    "Status": "InitiationPending",
    "StatusUpdateDateTime": "2022-09-27T07:35:53.474112Z",
    "CreationDateTime": "2022-09-27T07:35:53.474112Z",
    "InternationalScheduledPaymentId": "12345678-a0de-466a-1234-e9fc413d0916",
    "Permission": "Create",
    "ConsentId": "14aee295-xxxx-4147-xxxx-a397c3e5ff9d",
    "Initiation": {
      "CreditorAccount": {
        "Name": "Receiver Co.",
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698"
      },
      "InstructedAmount": {
        "Amount": "12.0",
        "Currency": "GBP"
      },
      "CurrencyOfTransfer": "GBP",
      "EndToEndIdentification": "E2E1234",
      "InstructionIdentification": "Reference1234",
      "RequestedExecutionDateTime": "2022-10-01T14:15:22Z",
      "DebtorAccount": {
        "SchemeName": "UK.OBIE.IBAN",
        "Identification": "GB95REVO00997053872360",
        "Name": "John Doe"
      }
    }
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/international-scheduled-payments/12345678-a0de-466a-1234-e9fc413d0916"
  },
  "Meta": {
    "TotalPages": 1
  }
}

Retrieve an international scheduled payment

Request

Path parameters
InternationalScheduledPaymentId
stringrequired
Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-customer-user-agent
string

Response

International Scheduled Payments Read

Body
object
Data
objectrequired
Links
objectrequired
Meta
objectrequired
get/international-scheduled-payments/{InternationalScheduledPaymentId}
curl -X GET "https://oba-auth.revolut.com/international-scheduled-payments/string" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-customer-user-agent: string"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Response body samples

{
  "Data": {
    "Status": "InitiationPending",
    "StatusUpdateDateTime": "2022-09-27T07:35:53.474112Z",
    "CreationDateTime": "2022-09-27T07:35:53.474112Z",
    "InternationalScheduledPaymentId": "12345678-a0de-466a-1234-e9fc413d0916",
    "Permission": "Create",
    "ConsentId": "14aee295-xxxx-4147-xxxx-a397c3e5ff9d",
    "Initiation": {
      "CreditorAccount": {
        "Name": "Receiver Co.",
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698"
      },
      "DebtorAccount": {
        "SchemeName": "UK.OBIE.IBAN",
        "Identification": "GB95REVO00997053872360",
        "Name": "John Doe"
      },
      "InstructedAmount": {
        "Amount": "12.0",
        "Currency": "GBP"
      },
      "CurrencyOfTransfer": "GBP",
      "EndToEndIdentification": "E2E1234",
      "InstructionIdentification": "Reference1234",
      "RequestedExecutionDateTime": "2022-10-01T14:15:22Z"
    }
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/international-scheduled-payments/12345678-a0de-466a-1234-e9fc413d0916"
  },
  "Meta": {
    "TotalPages": 1
  }
}

International standing order

International standing orders, which you can use for international SWIFT payments in all currencies that Revolut supports.

As a regulated third party provider, you can use the provided endpoints to initiate a payment in the following high-level workflow:

  • Create a consent.
  • Get the consent.
  • Create a payment.
  • Get the payment.

Before you begin, ensure that you've registered your application with the payments scope. For more information, see Tutorials: Initiate your first payment.

Create an international standing order consent

Creating an international standing order consent described in the Open Banking API documentation: Account and Transaction API Specification.

Use international standing orders for international SWIFT payments in all currencies supported by Revolut.

Only the payments with InstructedAmount in the same currency as CurrencyOfTransfer are supported.

However, users can select which account they want to be charged in the consent authorization UI even if the selected account is in a different currency.

In such a case, the ExchangeRateInformation response field contains information about the ExchangeRate between SourceCurrency and CurrencyOfTransfer. If the user doesn't have enough funds on the selected account, the consent authorization is rejected.

When you make the API call, ensure that you pass the corresponding JSON Web Signature (JWS) in the x-jws-signature request header. Note:

  • The JWS is generated from the request body with the TPP signing key that is specified in the JWS header.
  • The JWS consists of a header and a signature in the <jws_header>..<jws_signature> format.

To see how to create a JWS, see the guide: Work with JSON Web Signatures.

Only the following types of standing orders frequency are supported:

FREQUENCYEXAMPLEDETAILS
EvryDayEvryDaydaily, supported only for personal accounts
IntrvlWkDayIntrvlWkDay:01:03weekly on a specified week day, only 1 week interval is supported
IntrvlMnthDayIntrvlMnthDay:01:03monthly on a specified day of month, only 1 month interval is supported

See also Tutorials: Initiate your first payment.

Request

Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-idempotency-key
stringrequired
x-jws-signature
stringrequired
x-customer-user-agent
string
Request body
Data
objectrequired
Risk
objectrequired

Response

International Standing Order Consents Created

Body
object
Data
objectrequired
Risk
objectrequired
Links
objectrequired
Meta
objectrequired
post/international-standing-order-consents
curl -X POST "https://oba-auth.revolut.com/international-standing-order-consents" \
  -H "Content-Type: application/json" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-idempotency-key: string" \
  -H "x-jws-signature: string" \
  -H "x-customer-user-agent: string" \
  -d '{
  "Data": {
    "Permission": "Create",
    "Initiation": {
      "Frequency": "EvryDay",
      "Reference": "Reference1234",
      "FirstPaymentDateTime": "2022-10-01T14:15:22Z",
      "CurrencyOfTransfer": "GBP",
      "InstructedAmount": {
        "Amount": "10.0",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698",
        "Name": "Receiver Co."
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "BillPayment"
  }
}'
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

SecuritySchemaType:apiKey
Header parameter name:x-jws-signature

Open Banking API Payment requests additionally require a JSON Web Signature (JWS) which needs to be added to the header of the request. The JWS signature must be obtained using the full content of the payload.

Request body samples

{
  "Data": {
    "Permission": "Create",
    "Initiation": {
      "Frequency": "EvryDay",
      "Reference": "Reference1234",
      "FirstPaymentDateTime": "2022-10-01T14:15:22Z",
      "CurrencyOfTransfer": "GBP",
      "InstructedAmount": {
        "Amount": "10.0",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698",
        "Name": "Receiver Co."
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "BillPayment"
  }
}

Response body samples

{
  "Data": {
    "Status": "AwaitingAuthorisation",
    "StatusUpdateDateTime": "2022-09-27T08:20:12.498289Z",
    "CreationDateTime": "2022-09-27T08:20:12.498289Z",
    "Permission": "Create",
    "ConsentId": "b918fd8a-xxx-xxx-xxx-27a984683bd1",
    "Initiation": {
      "Frequency": "EvryDay",
      "Reference": "Reference1234",
      "FirstPaymentDateTime": "2022-10-01T14:15:22Z",
      "CurrencyOfTransfer": "GBP",
      "InstructedAmount": {
        "Amount": "10.0",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698",
        "Name": "Receiver Co."
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "BillPayment"
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/international-standing-order-consents/b918fd8a-xxx-xxx-xxx-27a984683bd1"
  },
  "Meta": {
    "TotalPages": 1
  }
}

Request

Path parameters
ConsentId
stringrequired
Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-customer-user-agent
string

Response

International Standing Order Consents Read

Body
object
Data
objectrequired
Risk
objectrequired
Links
objectrequired
Meta
objectrequired
get/international-standing-order-consents/{ConsentId}
curl -X GET "https://oba-auth.revolut.com/international-standing-order-consents/string" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-customer-user-agent: string"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Response body samples

{
  "Data": {
    "Status": "AwaitingAuthorisation",
    "StatusUpdateDateTime": "2022-09-27T08:20:12.498289Z",
    "CreationDateTime": "2022-09-27T08:20:12.498289Z",
    "Permission": "Create",
    "ConsentId": "b918fd8a-xxx-xxx-xxx-27a984683bd1",
    "Initiation": {
      "Frequency": "EvryDay",
      "Reference": "Reference1234",
      "CreditorAccount": {
        "Name": "Receiver Co.",
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698"
      },
      "InstructedAmount": {
        "Amount": "10.0",
        "Currency": "GBP"
      },
      "CurrencyOfTransfer": "GBP",
      "FirstPaymentDateTime": "2022-10-01T14:15:22Z"
    }
  },
  "Risk": {
    "PaymentContextCode": "BillPayment"
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/international-standing-order-consents/b918fd8a-xxx-xxx-xxx-27a984683bd1"
  },
  "Meta": {
    "TotalPages": 1
  }
}

Create an international standing order

Create an international standing order.

As is defined in the Open Banking Specifications, the /Data/Initiation and the /Data/Risk sections of the request must be an exact match for the related consent passed in ConsentId.

See also Tutorials: Initiate your first payment.

Request

Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-idempotency-key
stringrequired
x-jws-signature
stringrequired
x-customer-user-agent
string
Request body
Data
objectrequired
Risk
objectrequired

Response

International Standing Orders Created

Body
object
Data
objectrequired
Links
objectrequired
Meta
objectrequired
post/international-standing-orders
curl -X POST "https://oba-auth.revolut.com/international-standing-orders" \
  -H "Content-Type: application/json" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-idempotency-key: string" \
  -H "x-jws-signature: string" \
  -H "x-customer-user-agent: string" \
  -d '{
  "Data": {
    "ConsentId": "b918fd8a-xxx-xxx-xxx-27a984683bd1",
    "Initiation": {
      "Frequency": "EvryDay",
      "Reference": "Reference1234",
      "FirstPaymentDateTime": "2022-10-01T14:15:22Z",
      "CurrencyOfTransfer": "GBP",
      "InstructedAmount": {
        "Amount": "12.0",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698",
        "Name": "Receiver Co."
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "BillPayment"
  }
}'
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

SecuritySchemaType:apiKey
Header parameter name:x-jws-signature

Open Banking API Payment requests additionally require a JSON Web Signature (JWS) which needs to be added to the header of the request. The JWS signature must be obtained using the full content of the payload.

Request body samples

{
  "Data": {
    "ConsentId": "b918fd8a-xxx-xxx-xxx-27a984683bd1",
    "Initiation": {
      "Frequency": "EvryDay",
      "Reference": "Reference1234",
      "FirstPaymentDateTime": "2022-10-01T14:15:22Z",
      "CurrencyOfTransfer": "GBP",
      "InstructedAmount": {
        "Amount": "12.0",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698",
        "Name": "Receiver Co."
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "BillPayment"
  }
}

Response body samples

{
  "Data": {
    "ConsentId": "b918fd8a-xxx-xxx-xxx-27a984683bd1",
    "CreationDateTime": "2022-09-27T08:42:10.249638Z",
    "Initiation": {
      "CreditorAccount": {
        "Identification": "11223321325698",
        "Name": "Receiver Co.",
        "SchemeName": "UK.OBIE.SortCodeAccountNumber"
      },
      "CurrencyOfTransfer": "GBP",
      "FirstPaymentDateTime": "2022-10-01T14:15:22Z",
      "Frequency": "EvryDay",
      "InstructedAmount": {
        "Amount": "10.0",
        "Currency": "GBP"
      },
      "Reference": "Reference1234",
      "DebtorAccount": {
        "SchemeName": "UK.OBIE.IBAN",
        "Identification": "GB95REVO00997053872360",
        "Name": "John Doe"
      }
    },
    "InternationalStandingOrderId": "b3096891-1234-1234-ae1e-1c8a6fbc5874",
    "Permission": "Create",
    "Status": "InitiationCompleted",
    "StatusUpdateDateTime": "2022-09-27T08:42:10.249638Z"
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/international-standing-orders/b3096891-1234-1234-ae1e-1c8a6fbc5874"
  },
  "Meta": {
    "TotalPages": 1
  }
}

Retrieve an international standing order

Request

Path parameters
InternationalStandingOrderId
stringrequired
Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-customer-user-agent
string

Response

International Standing Orders Read

Body
object
Data
objectrequired
Links
objectrequired
Meta
objectrequired
get/international-standing-orders/{InternationalStandingOrderId}
curl -X GET "https://oba-auth.revolut.com/international-standing-orders/string" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-customer-user-agent: string"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Response body samples

{
  "Data": {
    "Status": "InitiationCompleted",
    "StatusUpdateDateTime": "2022-09-27T08:42:10.249638Z",
    "CreationDateTime": "2022-09-27T08:42:10.249638Z",
    "Permission": "Create",
    "InternationalStandingOrderId": "12345678-54c1-45ff-xxxx-1c8a6fbc5874",
    "ConsentId": "b918fd8a-xxx-xxx-xxx-27a984683bd1",
    "Initiation": {
      "Frequency": "EvryDay",
      "Reference": "Reference1234",
      "CreditorAccount": {
        "Name": "Receiver Co.",
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698"
      },
      "DebtorAccount": {
        "SchemeName": "UK.OBIE.IBAN",
        "Identification": "GB95REVO00997053872360",
        "Name": "John Doe"
      },
      "InstructedAmount": {
        "Amount": "10.0",
        "Currency": "GBP"
      },
      "CurrencyOfTransfer": "GBP",
      "FirstPaymentDateTime": "2022-10-01T14:15:22Z"
    }
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/international-standing-orders/12345678-54c1-45ff-xxxx-1c8a6fbc5874"
  },
  "Meta": {
    "TotalPages": 1
  }
}

Draft payment

You can create a draft payment to initiate a payment on behalf of a user, and request the approval for the draft payment in the user account.

Then, you can retrieve or delete a draft payment.

The draft payments API is available only for Revolut Business customers. If you'd like to use this endpoint, reach out to us.

For more information, see Tutorials: Work with draft payments.

List draft payments

Request

Query parameters
from
string(date-time)
to
string(date-time)
limit
integer(int32)

Response

Draft Payment List

Body
object
Items
arrayrequired
Links
objectrequired
get/draft-payments
curl -X GET "https://oba-auth.revolut.com/draft-payments?from=2024-01-01T00%3A00%3A00Z&to=2024-01-01T00%3A00%3A00Z&limit=123" \
  -H "Authorization: Bearer <yourSecretApiKey>"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Response body samples

{
  "Items": [
    {
      "Id": "27d92ade-xxxx-438c-xxxx-06d63a411d67",
      "CreatedAt": "2022-09-29T12:24:31.985323Z",
      "Status": "Awaiting"
    }
  ],
  "Links": {}
}

Create a draft payment

Before you begin, ensure that you've got an access token. For information about getting the access token, see Tutorial: Create your first draft payment. Then, you can use the /draft_payments endpoint to create a draft payment on behalf of a user, and the draft payment appears in the user account where they can approve or reject.

In addition, you can use this endpoint to make multiple draft payments by creating new rows for new drafts with the supported CSV format shown in the following tables.

For each draft payment request you make, ensure that the same currency is used. Upon a successful request for multiple draft payments, you receive a DraftPaymentID that represents all the draft payments associated with this request.

Please note that the maximum number of rows in a CSV file is 50 and all the payments must be in the same currency.

Download an example CSV file.

For the format of the CSV file, check the request body details.

See also Tutorials: Work with draft payments.

Request

Query parameters
scheduledDate
string(YYYY-MM-DD)
title
string
Header parameters
x-idempotency-key
string(UUID)required
Request body

The CSV payment file. Provided as CSV-formatted text representing file payments, or as the path to the CSV payments file preceded by @. For the format of the CSV file, check the details below.

The format of the draft payment CSV file:
FIELDREQUIREDDESCRIPTION
NameYesCan contain up to 80 characters. If recipient type is INDIVIDUAL, this field must contain a first and a last name, separated by a space.
Recipient typeYesCan be either INDIVIDUAL or COMPANY.
Account numberFor non-IBAN accountsMust contain a valid account number if provided.
Sort codeFor UK transfersMust contain valid sort code if provided.
Routing numberFor US transfersMust contain valid routing number if provided.
IBANFor IBAN accountsMust contain a valid IBAN if provided.
BICAll the countries except for UK/US localMust contain a valid BIC if provided.
Recipient bank countryYesMust contain a valid ISO 3166-1 country code.
CurrencyYesMust contain a valid ISO 4217 currency code.
AmountYesMatch the pattern: [0-9]*(\\.[0-9]*)?
Payment referenceYesCan contain up to 100 characters.
Recipient countryNoMust contain a valid ISO 3166-1 country code if provided.
State or provinceNoCan contain up to 50 characters.
Address line 1NoCan contain up to 50 characters.
Address line 2NoCan contain up to 50 characters.
CityNoCan contain up to 50 characters.
Postal codeNoCan contain up to 50 characters.

Response

Draft Payment Details

Body
object
DraftPaymentId
string(uuid)required
RequestedExecutionDate
string(YYYY-MM-DD)
Status
stringrequired
Transfers
arrayrequired
post/draft-payments
curl -X POST "https://oba-auth.revolut.com/draft-payments?scheduledDate=YYYY-MM-DD&title=string" \
  -H "Authorization: Bearer <yourSecretApiKey>" \
  -H "x-idempotency-key: UUID"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Request body samples

"@draft_payments.csv"

Response body samples

{
  "DraftPaymentId": "27d92ade-xxxx-438c-xxxx-06d63a411d67",
  "Status": "Awaiting",
  "Transfers": [
    {
      "Id": "a1265ecc-1234-4cb2-bec8-1234b9c32f01",
      "InstructedAmount": {
        "Amount": "10.00",
        "Currency": "GBP"
      },
      "Reference": "reference1234",
      "Status": "Created",
      "Index": 1
    }
  ]
}

Delete a draft payment transfer

Request

Path parameters
DraftPaymentId
string(UUID)required
DraftPaymentTransferId
string(UUID)required

Response

No content

delete/draft-payments/{DraftPaymentId}/transfers/{DraftPaymentTransferId}
curl -X DELETE "https://oba-auth.revolut.com/draft-payments/UUID/transfers/UUID" \
  -H "Authorization: Bearer <yourSecretApiKey>"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Response body samples

""

Retrieve a draft payment

Request

Path parameters
DraftPaymentId
string(UUID)required

Response

Draft Payment Details

Body
object
DraftPaymentId
string(uuid)required
RequestedExecutionDate
string(YYYY-MM-DD)
Status
stringrequired
Transfers
arrayrequired
get/draft-payments/{DraftPaymentId}
curl -X GET "https://oba-auth.revolut.com/draft-payments/UUID" \
  -H "Authorization: Bearer <yourSecretApiKey>"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Response body samples

{
  "DraftPaymentId": "27d92ade-xxxx-438c-xxxx-06d63a411d67",
  "Status": "Awaiting",
  "Transfers": [
    {
      "Id": "a1265ecc-1234-4cb2-bec8-1234b9c32f01",
      "InstructedAmount": {
        "Amount": "10.00",
        "Currency": "GBP"
      },
      "Reference": "reference1234",
      "Status": "Created",
      "Index": 1
    }
  ]
}

Delete a draft payment

Request

Path parameters
DraftPaymentId
string(UUID)required

Response

No content

delete/draft-payments/{DraftPaymentId}
curl -X DELETE "https://oba-auth.revolut.com/draft-payments/UUID" \
  -H "Authorization: Bearer <yourSecretApiKey>"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Response body samples

""

Untagged

Request

Path parameters
ConsentId
stringrequired
Header parameters
x-fapi-financial-id
stringrequired
x-fapi-customer-last-logged-time
string
x-fapi-customer-ip-address
string
x-fapi-interaction-id
string
Authorization
stringrequired
x-customer-user-agent
string

Response

File Payment Consents Read

Body
object
Data
objectrequired
Links
objectrequired
Meta
objectrequired
get/file-payment-consents/{ConsentId}
curl -X GET "https://oba-auth.revolut.com/file-payment-consents/string" \
  -H "x-fapi-financial-id: string" \
  -H "x-fapi-customer-last-logged-time: string" \
  -H "x-fapi-customer-ip-address: string" \
  -H "x-fapi-interaction-id: string" \
  -H "Authorization: string" \
  -H "x-customer-user-agent: string"
Authorization
SecuritySchemaType:apiKey
Header parameter name:Authorization

Each Open Banking API must contain an authorization header in the following format to make a call: Bearer <yourAccessToken>.

Before you start, ensure that you've got an access token with the correct scope using the /token endpoint. You need to get the authorization code first and exchange it for an access token.

For more information, see Tutorial: Get account and transaction information and Tutorial: Initiate your first payment as examples.

Response body samples

{
  "Data": {
    "Status": "AwaitingUpload",
    "StatusUpdateDateTime": "2022-11-22T17:16:28.350197Z",
    "CreationDateTime": "2022-11-22T17:16:28.350197Z",
    "ConsentId": "6fb10dd9-xxxx-yyyy-zzzz-430e37f8cea0",
    "Initiation": {
      "FileHash": "7YuW8NQJ78/cHthltcqeJd1234BlATBS92IzoBXqQz0=",
      "FileType": "text/csv",
      "FileReference": "reference1234"
    }
  },
  "Links": {
    "Self": "https://oba-auth.revolut.com/file-payment-consents/6fb10dd9-xxxx-yyyy-zzzz-430e37f8cea0"
  },
  "Meta": {
    "TotalPages": 1
  }
}