The Revolut Open Banking API is the gateway for third-party providers to interact with Revolut customers and products.
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:
- Account management
- Transaction management
- Payment management:
- Application management
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:
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.pemcertificate 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 toclient_credentialsto get the access token.scope: Must be set toaccounts.
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
apiKeyAuthorizationEach 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
These endpoints let you manage your applications.
Applications can also be created in the Developer Portal.
For more information, see:
Get a distinguished name (DN)
Get the distinguished name (DN) of your transport certificate which is used to identify your requests.
This parameter is needed in order to register or update your application via DCR.
Response
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
Register an application via DCR. This endpoint accepts only JWT, which needs to be precalculated.
For more information, see Register your application using DCR: Create a JWT.
Request
A JWT calculated for your application, signed with a valid signing key.
Response
Successfully created application
curl -X POST "https://oba-auth.revolut.com/register" \
-H "Authorization: Bearer <yourSecretApiKey>"Authorization
apiKeyAuthorizationEach 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
Response
Application data
curl -X GET "https://oba-auth.revolut.com/register/string" \
-H "Authorization: Bearer <yourSecretApiKey>"Authorization
apiKeyAuthorizationEach 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
A new JWT calculated for your application, signed with a valid signing key.
Response
Application data
curl -X PUT "https://oba-auth.revolut.com/register/string" \
-H "Authorization: Bearer <yourSecretApiKey>"Authorization
apiKeyAuthorizationEach 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
Response
No content
curl -X DELETE "https://oba-auth.revolut.com/register/string" \
-H "Authorization: Bearer <yourSecretApiKey>"Authorization
apiKeyAuthorizationEach 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
Accounts
Open Banking Accounts API is implemented as specified in the Open Banking API documentation: Account and Transaction API Specification.
See also Tutorials: Get account and transaction information.
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
| PERMISSIONS | DEPENDENCIES |
|---|---|
| ReadAccountsBasic | None |
| ReadAccountsDetail | None |
| ReadBalances | None |
| ReadBeneficiariesBasic | None |
| ReadBeneficiariesDetail | None |
| ReadDirectDebits | None |
| ReadScheduledPaymentsBasic | None |
| ReadScheduledPaymentsDetail | None |
| ReadStandingOrdersBasic | None |
| ReadStandingOrdersDetail | None |
| ReadTransactionsBasic | None |
| ReadTransactionsCredits | ReadTransactionsBasic OR ReadTransactionsDetail |
| ReadTransactionsDebits | ReadTransactionsBasic OR ReadTransactionsDetail |
| ReadTransactionsDetail | None |
See also Tutorials: Get account and transaction information.
Request
Response
Account Access Consents Created
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
apiKeyAuthorizationEach 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
}
}Retrieve an account access consent
Get the details of the account access consent as described in the Open Banking official documentation.
See also Tutorials: Get account and transaction information.
Request
Response
Account Access Consents Read
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
apiKeyAuthorizationEach 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
}
}Delete an account access consent
Use this endpoint to:
- Reject a consent if it is in the
AwaitingAuthorisationstate or any error occurs while the consent is being authorised. - Revoke a consent if it is in the
Authorisedstate.
See also Tutorials: Get account and transaction information.
Request
Response
Account Access Consent Deleted
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
apiKeyAuthorizationEach 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 all accounts
Get a list of user accounts.
See also Tutorials: Get account and transaction information.
Request
Response
Accounts Read
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
apiKeyAuthorizationEach 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
Response
Accounts Read
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
apiKeyAuthorizationEach 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
Get the balance of an account.
See also Tutorials: Get account and transaction information.
Request
Response
Balances Read
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
apiKeyAuthorizationEach 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
Response
Beneficiaries Read
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
apiKeyAuthorizationEach 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
Open Banking Transactions API is implemented as specified in the Open Banking API documentation: Account and Transaction API Specification.
See also Tutorials: Get account and transaction information.
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
Response
Direct Debits Read
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
apiKeyAuthorizationEach 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
Response
Standing Orders Read
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
apiKeyAuthorizationEach 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
Response
Transactions Read
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
apiKeyAuthorizationEach 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.
See also Domestic scheduled payments and Domestic standing orders.
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
Response
Domestic Payment Consents Created
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
apiKeyAuthorizationEach 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.
apiKeyx-jws-signatureOpen 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
}
}Retrieve a domestic payment consent
Get the details of a domestic payment consent.
See also Tutorials: Initiate your first payment.
Request
Response
Domestic Payment Consents Read
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
apiKeyAuthorizationEach 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
}
}Get funds confirmation for a domestic payment consent
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
Response
Domestic Payment Consents Funds Confirmation Read
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
apiKeyAuthorizationEach 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
Response
Domestic Payment Created
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
apiKeyAuthorizationEach 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.
apiKeyx-jws-signatureOpen 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
Get the status of a domestic payment.
See also Tutorials: Initiate your first payment.
Request
Response
Domestic Payments Read
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
apiKeyAuthorizationEach 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.
See also Domestic payments and Domestic standing orders.
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
Response
Domestic Scheduled Payment Consents Created
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
apiKeyAuthorizationEach 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.
apiKeyx-jws-signatureOpen 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
}
}Retrieve a domestic scheduled payment consent
Get the details of a domestic scheduled payment consent.
See also Tutorials: Initiate your first payment.
Request
Response
Domestic Scheduled Payment Consents Read
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
apiKeyAuthorizationEach 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
Response
Domestic Scheduled Payments Created
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
apiKeyAuthorizationEach 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.
apiKeyx-jws-signatureOpen 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
Get the status of a domestic scheduled payment.
See also Tutorials: Initiate your first payment.
Request
Response
Domestic Scheduled Payments Read
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
apiKeyAuthorizationEach 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.
See also Domestic payments and Domestic scheduled payments.
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:
| FREQUENCY | EXAMPLE | DETAILS |
|---|---|---|
EvryDay | EvryDay | daily, supported only for personal accounts |
IntrvlWkDay | IntrvlWkDay:01 | weekly on a specified week day, only 1 week interval is supported |
IntrvlMnthDay | IntrvlMnthDay:01 | monthly on a specified day of month, only 1 month interval is supported |
See also Tutorials: Initiate your first payment.
Request
Response
Domestic Standing Order Consents Created
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
apiKeyAuthorizationEach 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.
apiKeyx-jws-signatureOpen 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
}
}Retrieve a domestic standing order consent
Get the details of a domestic standing order consent.
See also Tutorials: Initiate your first payment.
Request
Response
Domestic Standing Order Consents Read
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
apiKeyAuthorizationEach 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
Response
Domestic Standing Orders Created
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
apiKeyAuthorizationEach 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.
apiKeyx-jws-signatureOpen 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
Get the status of a domestic standing order.
See also Tutorials: Initiate your first payment.
Request
Response
Domestic Standing Orders Read
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
apiKeyAuthorizationEach 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
Response
File Payment Consents Created
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
apiKeyAuthorizationEach 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.
apiKeyx-jws-signatureOpen 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
}
}Retrieve an uploaded payment file
Get the payment file that was uploaded with the given consent.
See also Tutorials: Create a file payment.
Request
Response
File Payment Consents Read
The payment file that was uploaded with the specified consent.
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
apiKeyAuthorizationEach 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"Upload a payment file
Use this endpoint to upload a file for the given file payment consent.
For the format of the CSV file, check the request body details.
Download an example CSV file.
For more information, see Tutorials: Create a file payment.
Request
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:
| FIELD | REQUIRED | DESCRIPTION |
|---|---|---|
Name | Yes | Can 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 type | Yes | Can be either INDIVIDUAL or COMPANY. |
Account number | For UK transfers | Must contain valid account number if provided. |
Sort code | For UK transfers | Must contain valid sort code if provided. |
Routing number | For US transfers | Must contain valid routing number if provided. |
IBAN | For SEPA transfers | Must contain valid IBAN if provided. |
BIC | For SEPA transfers | Must contain valid BIC if provided. |
Recipient bank country | Yes | Must contain valid ISO 3166-1 country code. |
Currency | Yes | Must contain valid ISO 4217 currency code. |
Amount | Yes | Must match the following pattern [0-9]*(\.[0-9]*)?. |
Payment reference | Yes | Can contain up to 100 characters. |
Recipient country | No | Must contain valid ISO 3166-1 country code if provided. |
State or province | No | Can contain up to 50 characters. |
Address line 1 | No | Can contain up to 50 characters. |
Address line 2 | No | Can contain up to 50 characters. |
City | No | Can contain up to 50 characters. |
Postal code | No | Can contain up to 50 characters. |
Response
File Payment CSV Uploaded
An empty JSON object ({}) is returned.
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
apiKeyAuthorizationEach 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.
apiKeyx-jws-signatureOpen 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
Response
File Payments Created
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
apiKeyAuthorizationEach 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.
apiKeyx-jws-signatureOpen 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
Get the state of a file payment.
For more information, see Tutorials: Create a file payment.
Request
Response
File Payments Read
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
apiKeyAuthorizationEach 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
Response
File Payments Read
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
apiKeyAuthorizationEach 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
Response
International Payment Consents Created
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
apiKeyAuthorizationEach 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.
apiKeyx-jws-signatureOpen 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
}
}Retrieve an international payment consent
Get the details of an international payment consent.
See also Tutorials: Initiate your first payment.
Request
Response
International Payment Consents Read
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
apiKeyAuthorizationEach 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
}
}Get funds confirmation for an international payment consent
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
Response
International Payment Consents Read
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
apiKeyAuthorizationEach 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
Response
International Payments Created
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
apiKeyAuthorizationEach 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.
apiKeyx-jws-signatureOpen 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
Get the state of an international payment.
See also Tutorials: Initiate your first payment.
Request
Response
International Payments Read
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
apiKeyAuthorizationEach 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.
See also: International payments and International standing orders .
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
Response
International Scheduled Payment Consents Created
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
apiKeyAuthorizationEach 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
}
}Retrieve an international scheduled payment consent
Get the details of an international scheduled payment consent.
See also Tutorials: Initiate your first payment.
Request
Response
International Scheduled Payment Consents Read
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
apiKeyAuthorizationEach 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
}
}Get funds confirmation for an international scheduled payment
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
Response
International Payment Consents Read
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
apiKeyAuthorizationEach 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
Response
International Scheduled Payments Created
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
apiKeyAuthorizationEach 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.
apiKeyx-jws-signatureOpen 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
Get the status of an international scheduled payment.
See also Tutorials: Initiate your first payment.
Request
Response
International Scheduled Payments Read
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
apiKeyAuthorizationEach 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.
See also International payments and International scheduled payments.
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:
| FREQUENCY | EXAMPLE | DETAILS |
|---|---|---|
EvryDay | EvryDay | daily, supported only for personal accounts |
IntrvlWkDay | IntrvlWkDay:01:03 | weekly on a specified week day, only 1 week interval is supported |
IntrvlMnthDay | IntrvlMnthDay:01:03 | monthly on a specified day of month, only 1 month interval is supported |
See also Tutorials: Initiate your first payment.
Request
Response
International Standing Order Consents Created
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
apiKeyAuthorizationEach 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.
apiKeyx-jws-signatureOpen 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
}
}Retrieve an international standing order consent
Get the details of an international standing order consent.
See also Tutorials: Initiate your first payment.
Request
Response
International Standing Order Consents Read
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
apiKeyAuthorizationEach 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
Response
International Standing Orders Created
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
apiKeyAuthorizationEach 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.
apiKeyx-jws-signatureOpen 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
Get the status of an international standing order.
See also Tutorials: Initiate your first payment.
Request
Response
International Standing Orders Read
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
apiKeyAuthorizationEach 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
Get draft payments list sorted by creation time in descending order.
See also Tutorials: Work with draft payments and Tutorials: Create your first draft payment.
Request
Response
Draft Payment List
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
apiKeyAuthorizationEach 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
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:
| FIELD | REQUIRED | DESCRIPTION |
|---|---|---|
Name | Yes | Can 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 type | Yes | Can be either INDIVIDUAL or COMPANY. |
Account number | For non-IBAN accounts | Must contain a valid account number if provided. |
Sort code | For UK transfers | Must contain valid sort code if provided. |
Routing number | For US transfers | Must contain valid routing number if provided. |
IBAN | For IBAN accounts | Must contain a valid IBAN if provided. |
BIC | All the countries except for UK/US local | Must contain a valid BIC if provided. |
Recipient bank country | Yes | Must contain a valid ISO 3166-1 country code. |
Currency | Yes | Must contain a valid ISO 4217 currency code. |
Amount | Yes | Match the pattern: [0-9]*(\\.[0-9]*)? |
Payment reference | Yes | Can contain up to 100 characters. |
Recipient country | No | Must contain a valid ISO 3166-1 country code if provided. |
State or province | No | Can contain up to 50 characters. |
Address line 1 | No | Can contain up to 50 characters. |
Address line 2 | No | Can contain up to 50 characters. |
City | No | Can contain up to 50 characters. |
Postal code | No | Can contain up to 50 characters. |
Response
Draft Payment Details
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
apiKeyAuthorizationEach 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
Delete a specific draft payment transfer with the given draft payment transfer ID. A draft payment transfer can be deleted only if the user hasn't taken any action upon it, for example, approved or executed the draft payment.
See also Tutorials: Work with draft payments and Tutorials: Create your first draft payment.
Request
Response
No content
curl -X DELETE "https://oba-auth.revolut.com/draft-payments/UUID/transfers/UUID" \
-H "Authorization: Bearer <yourSecretApiKey>"Authorization
apiKeyAuthorizationEach 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
Get the details about a specific draft payment with the given draft payment ID.
See also Tutorials: Create your first draft payment and Tutorials: Work with draft payments.
Request
Response
Draft Payment Details
curl -X GET "https://oba-auth.revolut.com/draft-payments/UUID" \
-H "Authorization: Bearer <yourSecretApiKey>"Authorization
apiKeyAuthorizationEach 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
Delete a specific draft payment with the given draft payment ID. A draft payment can be deleted only if the user hasn't taken any action upon it, for example, approved or executed the draft payment.
See also Tutorials: Work with draft payments and Tutorials: Create your first draft payment.
Request
Response
No content
curl -X DELETE "https://oba-auth.revolut.com/draft-payments/UUID" \
-H "Authorization: Bearer <yourSecretApiKey>"Authorization
apiKeyAuthorizationEach 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
Retrieve a file payment consent
Get the details of a file payment consent.
See also Tutorials: Create a file payment.
Request
Response
File Payment Consents Read
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
apiKeyAuthorizationEach 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
}
}