NAV Navbar

Open Banking API

Getting started

Introduction

Welcome to the Revolut Open Banking API v3.1.1! Here you will find all the information to get started with Open Banking API. We’re building a financial superapp and we’re excited to have you on board.

There are two ways to access our Open Banking API:

This Open Banking API can be used to access the accounts of customers of both Revolut Ltd (UK) and Revolut Payments UAB (Lithuania).

Open Banking Developer Portal

What is Open Banking Developer Portal?

If you are building a great app and would like to test it's integration with Revolut, then Open Banking Developer Portal is for you. Open Banking Developer Portal allows you to easily obtain your test user account and certificates for our Sandbox via the user interface.

1. Sign up to Open Banking Developer Portal

To get access to the Open Banking Developer Portal you need to sign up to developers.revolut.com/portal/signup.

2. Get sandbox certificates

If you don't have your own certificates, you can easily obtain new pair using the Certificate Signing Request on this page.

  1. Just generate RSA key using this command: openssl genrsa -out server.key 2048
  2. Then Generate X.509 Certificate Signing Request (CSR): openssl req -sha256 -new -key server.key -out server.csr -outform der
  3. Upload the generated request and after finishing the process you will be able to download new certificates from open banking page

You will also be able to generate new pair of certificates if you think that something was wrong

3. Get a sandbox user account

Once you created your account, you can generate your sandbox account credentials using the button on your open banking page in Test account section.

In order to create Revolut Business demo account, please refer to the instructions on previously mentioned open banking page or follow directly to the sandbox-business.revolut.com

4. Create your apps

Then you can create Open Banking Applications using the dynamic client registration endpoint.

Open Id Configuration URLs

Usage and limits

In order to ensure safe and fair resource sharing, we define the following usage limits:

Please make sure to stay under this limit. Should you estimate this limit to be a problem for your use case of our API, please reach out to us directly.

Dynamic Client Registration

In order to create an Application you will need to use Dynamic Registration.

The register endpoint is implemented as it is described in the official documentation.

Register client

curl -X POST https://sandbox-oba.revolut.com/register
curl -X POST https://oba.revolut.com/register

In order to delete an Application you may use the DELETE registration endpoint.

The DELETE endpoint is implemented as it is described in the official documentation.

Delete client

curl -X DELETE https://sandbox-oba.revolut.com/register/17b2738f-26b1-46f9-a979-debbf1f39365
curl -X DELETE https://oba.revolut.com/register/17b2738f-26b1-46f9-a979-debbf1f39365

Registration request

Registration request should satisfy the following format:

Example JWT header

{
  "kid": "test-kid",
  "alg": "PS256"
}
JWT header claim Format Description
kid String key ID of a public key from JWKS file
alg String signing algorithm, currently only PS256 is supported

Example JWT payload

{
  "iss": "test-iss",
  "iat": 1591352490,
  "exp": 1591356090,
  "aud": "https://revolut.com",
  "scope": ["openid", "payments", "accounts", "fundsconfirmations"],
  "redirect_uris": ["http://url/one"],
  "token_endpoint_auth_method": "tls_client_auth",
  "application_type": "web",
  "id_token_signed_response_alg": "PS256",
  "request_object_signing_alg": "PS256",
  "tls_client_auth_dn": "test-dn",
  "software_statement": "ewogICJhbGciOiAibm9uZSIKfQ.ewogICJvcmdfaWQiOiAiNzc3NTgwMDAwMTAzVUF2QUFNIiwKICAib3JnX25hbWUiOiAiUmV2b2x1dCBUUFAiLAogICJzb2Z0d2FyZV9jbGllbnRfbmFtZSI6ICJSZXZvbHV0IFRQUCIsCiAgIm9yZ19qd2tzX2VuZHBvaW50IjogImh0dHA6Ly9vcGVuYmFua2luZy5vcmcudWsvZW5kcG9pbnQiLAogICJzb2Z0d2FyZV9yZWRpcmVjdF91cmlzIjogWwogICAgImh0dHA6Ly91cmwvb25lIgogIF0KfQ."
}
JWT payload claim Format Description
iss String identifies the principal that issued the JWT
iat Numeric identifies the time at which the JWT was issued
exp Numeric JWT expiration time
aud String identifies the recipients that the JWT is intended for
scope String[] list of scopes, supported scopes are openid (required), accounts, payments, fundsconfirmations
redirect_uris String[] list of allowed redirect URLs
token_endpoint_auth_method String currently only tls_client_auth is supported
application_type String application type
id_token_signed_response_alg String signing algorithm, currently only PS256 is supported
request_object_signing_alg String signing algorithm, currently only PS256 is supported
tls_client_auth_dn String claim MUST contain the DN of the certificate that the TPP will use, how to obtain the DN of your certificate is described in next paragraph
software_statement String software statement assertion issued by the issuer in JWT format

JWT signature is constructed by encrypting concatenated (using period '.' character) base64url encoded header and payload.

Concatenating (using period '.' characters) base64url encoded header, payload and signature yields complete JWT.

Open Banking software statement

If you are registering with Open Banking certificate, you should use the software statement signed by Open Banking which you can obtain from Directory

Self-signed software statement

In order to directly register with eIDAS certificate, it’s possible to use a self-signed software statement. In such case software statement should satisfy the following format:

Example self-signed software statement header

{
  "alg": "none"
}
SSA header claim Format Description
alg String none value has to be used to indicate self-signed software statement

Example self-signed software statement payload

{
  "org_name": "Revolut TPP",
  "software_client_name": "Revolut TPP",
  "org_jwks_endpoint": "http://openbanking.org.uk/endpoint",
  "software_redirect_uris": ["http://url/one"]
}
SSA payload claim Format Description
org_jwks_endpoint URL a JWKS endpoint, this endpoint has to contain a signing key (QSealC) matching with a kid provided in JWT header of the registration request
org_name String a name of a software (shown in the UI), alternatively software_client_name can be used
software_client_name String a name of a software (shown in the UI)
software_redirect_uris URL[] a list of allowed redirect URLs, has to contain all redirect URLs from JWT redirect_uris claim

Signature of self-signed software statement should be an empty string.

JWKS file format

JWKS (JWK Set) is a JSON data structure that represents a set of JWKs. A JSON Web Key (JWK) is a (JSON) data structure that represents a cryptographic key. Mandatory JWK parameters are described below.

JWK mandatory fields Description
kid (key ID) is used to match a specific key
kty identifies the cryptographic algorithm family used with the key
e contains the exponent value for the RSA public key, represented as a Base64urlUInt-encoded value
n contains the modulus value for the RSA public key, represented as a Base64urlUInt-encoded value
use identifies the intended use of the public key (should always be set to sig)

Certificate DN for using in registration request

To obtain the DN of your certificate in this format, you may use the following command for DER certificates:

openssl x509 -in /path/to/your/cert.der -inform der -noout -subject -nameopt RFC2253

or, for certificates in PEM format:

openssl x509 -in /path/to/your/cert.pem -inform pem -noout -subject -nameopt RFC2253

Open Banking Security Profile

Open Banking security profile is implemented as it is described in the official documentation.

Authorization Endpoint

Authorize consent

https://sandbox-oba.revolut.com/ui/index.html
https://oba.revolut.com/ui/index.html

/ui/index.html endpoint is for your application to redirect Revolut customer to authorize consent

Token Endpoint

Allows you to get an access token, please refer to Open Banking specification for more information about the semantics of this API.

Get access token

curl -X POST https://sandbox-oba-auth.revolut.com/token
curl -X POST https://oba-auth.revolut.com/token

/token endpoint served via Revolut authorization server. This endpoint requires client certificate authentication for MATLS.

Account and Transaction API

Open Banking Account and Transaction API is implemented as specified in the official documentation

The Interfaces already implemented are below. We continue implementing other endpoints (mandatory endpoints first). We will be updating this documentation as we progress.

Reject or revoke Consent

curl -X DELETE https://sandbox-oba.revolut.com/account-access-consents/{consent-id}
curl -X DELETE https://oba.revolut.com/account-access-consents/{consent-id}

This endpoint:

Get consent details

curl -X GET https://sandbox-oba.revolut.com/account-access-consents/{consent-id}
curl -X GET https://oba.revolut.com/account-access-consents/{consent-id}

This endpoint returns consent details as it is described in the official documentation.

Create consent

curl -X POST https://sandbox-oba.revolut.com/account-access-consents
curl -X POST https://oba.revolut.com/account-access-consents

Request:

{
  "Data": {
    "Permissions": [
      "ReadAccountsBasic",
      "ReadAccountsDetail",
      "ReadBalances",
      "ReadBeneficiariesBasic",
      "ReadBeneficiariesDetail",
      "ReadDirectDebits",
      "ReadScheduledPaymentsBasic",
      "ReadScheduledPaymentsDetail",
      "ReadStandingOrdersBasic",
      "ReadStandingOrdersDetail",
      "ReadTransactionsBasic",
      "ReadTransactionsCredits",
      "ReadTransactionsDebits",
      "ReadTransactionsDetail"
    ],
    "ExpirationDateTime": "2017-05-02T00:00:00+00:00",
    "TransactionFromDateTime": "2017-05-03T00:00:00+00:00",
    "TransactionToDateTime": "2017-12-03T00:00:00+00:00"
  },
  "Risk": {}
}

This endpoint creates a consent to be authorized by the Revolut user.

The following combinations of permissions are not allowed, and such account-access-consents will be rejected with a 400 response code:

We support the following list of Permissions:

  1. ReadAccountsBasic
  2. ReadAccountsDetail
  3. ReadBalances
  4. ReadBeneficiariesBasic
  5. ReadBeneficiariesDetail
  6. ReadDirectDebits
  7. ReadScheduledPaymentsBasic
  8. ReadScheduledPaymentsDetail
  9. ReadStandingOrdersBasic
  10. ReadStandingOrdersDetail
  11. ReadTransactionsBasic
  12. ReadTransactionsCredits
  13. ReadTransactionsDebits
  14. ReadTransactionsDetail

Get Accounts

Get list of accounts

curl -X GET https://sandbox-oba.revolut.com/accounts
curl -X GET https://oba.revolut.com/accounts

Response

{
  "Data": {
    "Account": [
      {
        "AccountId": "A1086696-D134-472D-B83E-A3F4D201C058",
        "Currency": "GBP",
        "AccountType": "Personal",
        "AccountSubType": "CurrentAccount",
        "Nickname": "Bills",
        "Account": [
          {
            "SchemeName": "UK.OBIE.SortCodeAccountNumber",
            "Identification": "80200110203345",
            "Name": "Mr Kevin",
            "SecondaryIdentification": "00021"
          }
        ]
      }
    ]
  },
  "Links": {
    "Self": "https://oba.revolut.com/accounts/"
  },
  "Meta": {
    "TotalPages": 1
  }
}

This endpoint returns a list of the user accounts.

Get Account Details

Get account details

curl -X GET https://sandbox-oba.revolut.com/accounts/{account-id}
curl -X GET https://oba.revolut.com/accounts/{account-id}

Response

{
  "Data": {
    "Account": [
      {
        "AccountId": "A1086696-D134-472D-B83E-A3F4D201C058",
        "Currency": "GBP",
        "AccountType": "Personal",
        "AccountSubType": "CurrentAccount",
        "Nickname": "Bills",
        "Account": [
          {
            "SchemeName": "UK.OBIE.SortCodeAccountNumber",
            "Identification": "80200110203345",
            "Name": "Mr Kevin",
            "SecondaryIdentification": "00021"
          }
        ]
      }
    ]
  },
  "Links": {
    "Self": "https://oba.revolut.com/accounts/"
  },
  "Meta": {
    "TotalPages": 1
  }
}

This endpoint retrieves individual account details.

Get Account Balances

Get account balances

curl -X GET https://sandbox-oba.revolut.com/accounts/{account-id}/balances
curl -X GET https://oba.revolut.com/accounts/{account-id}/balances

Response

{
  "Data": {
    "Balance": [
      {
        "AccountId": "A1086696-D134-472D-B83E-A3F4D201C058",
        "Amount": {
          "Amount": "11.00",
          "Currency": "GBP"
        },
        "CreditLine": {
          "Included": false,
          "Type": "Available",
          "Amount": {
            "Amount": "150.23",
            "Currency": "GBP"
          }
        },
        "CreditDebitIndicator": "Debit",
        "Type": "InterimAvailable",
        "DateTime": "2017-05-02T00:00:00+00:00"
      }
    ]
  },
  "Links": {
    "Self": "https://oba.revolut.com/accounts/A1086696-D134-472D-B83E-A3F4D201C058/balances"
  },
  "Meta": {
    "TotalPages": 1
  }
}

This endpoint retrieves balances for an account.

Get Account Transactions

Get account transactions

curl -X GET https://sandbox-oba.revolut.com/accounts/{account-id}/transactions
curl -X GET https://oba.revolut.com/accounts/{account-id}/transactions

Response

{
  "Data": {
    "Transaction": [
      {
        "AccountId": "A1086696-D134-472D-B83E-A3F4D201C058",
        "Amount": {
          "Amount": "25.00",
          "Currency": "GBP"
        },
        "Balance": {
          "Amount": {
            "Amount": "11.00",
            "Currency": "GBP"
          },
          "CreditDebitIndicator": "Debit",
          "Type": "InterimBooked"
        },
        "BookingDateTime": "2017-05-02T00:00:00+00:00",
        "ChargeAmount": {
          "Amount": "1.00",
          "Currency": "GBP"
        },
        "CreditDebitIndicator": "Debit",
        "ProprietaryBankTransactionCode": {
          "Code": "ATM",
          "Issuer": "Revolut"
        },
        "Status": "Booked",
        "TransactionId": "acd157de-f877-44f1-9190-58051bec3815",
        "TransactionInformation": "description",
        "SupplementaryData": {
          "UserComments": "Transaction"
        }
      }
    ]
  }
}

This endpoint retrieves the recent transactions for an account.

Field Description Format
SupplementaryData.UserComments a user provided payment comments Text

Get Account Beneficiaries

Get a list of account beneficiaries

curl -X GET https://sandbox-oba.revolut.com/accounts/{account-id}/beneficiaries
curl -X GET https://oba.revolut.com/accounts/{account-id}/beneficiaries

Response

{
  "Data": {
    "Beneficiary": [
      {
        "AccountId": "c68a6bb5-a63c-47cd-86c8-16a0a6890f09",
        "BeneficiaryId": "beb87058-2ded-4593-b7b6-f816c8539ee5",
        "CreditorAccount": {
          "SchemeName": "UK.OBIE.IBAN",
          "Identification": "GB60LTZD85909994434483",
          "Name": "testFirstName testLastName"
        }
      },
      {
        "AccountId": "c68a6bb5-a63c-47cd-86c8-16a0a6890f09",
        "BeneficiaryId": "c1eb6796-cf38-41d6-ba75-8bdbaf9ccbe7",
        "CreditorAccount": {
          "SchemeName": "UK.OBIE.SortCodeAccountNumber",
          "Identification": "55887712345678",
          "Name": "testFirstName testLastName"
        }
      }
    ]
  },
  "Links": {
    "Self": "https://oba.revolut.com/accounts/c68a6bb5-a63c-47cd-86c8-16a0a6890f09/beneficiaries"
  },
  "Meta": {
    "TotalPages": 1
  }
}

This endpoint returns the list of beneficiaries for a specific user account.

Get Account Direct Debits

Get a list of account direct debits

curl -X GET https://sandbox-oba.revolut.com/accounts/{account-id}/direct-debits
curl -X GET https://oba.revolut.com/accounts/{account-id}/direct-debits

Response

{
  "Data": {
    "DirectDebit": [
      {
        "AccountId": "5b81470d-a24b-491c-b6f8-ae4f27cb0447",
        "DirectDebitId": "f36e19d2-e870-438b-b4f5-32ac9a05d375",
        "MandateIdentification": "testIdentification",
        "DirectDebitStatusCode": "Active",
        "Name": "testName",
        "PreviousPaymentAmount": {
          "Amount": "12.00",
          "Currency": "GBP"
        }
      },
      {
        "AccountId": "5b81470d-a24b-491c-b6f8-ae4f27cb0447",
        "DirectDebitId": "ffaa70b6-d94c-479e-b5c4-b570036280ba",
        "MandateIdentification": "someOtherIdentification",
        "DirectDebitStatusCode": "Inactive",
        "Name": "someOtherName",
        "PreviousPaymentAmount": {
          "Amount": "0.43",
          "Currency": "GBP"
        }
      }
    ]
  },
  "Links": {
    "Self": "https://oba.revolut.com/accounts/5b81470d-a24b-491c-b6f8-ae4f27cb0447/direct-debits"
  },
  "Meta": {
    "TotalPages": 1
  }
}

This endpoint returns the list of direct debits for a specific user account.

Get Account Standing Orders

Get a list of account standing orders

curl -X GET https://sandbox-oba.revolut.com/accounts/{account-id}/standing-orders
curl -X GET https://oba.revolut.com/accounts/{account-id}/standing-orders

Response

{
  "Data": {
    "StandingOrder": [
      {
        "AccountId": "5148bfeb-8d52-4fe3-bf3c-a56897160040",
        "StandingOrderId": "00ef453c-8ca8-44d7-917a-15b54b24b8e2",
        "Frequency": "IntrvlWkDay:01:05",
        "Reference": "Pocket money for Damien",
        "FirstPaymentDateTime": "2020-04-10T00:00",
        "StandingOrderStatusCode": "Inactive"
      },
      {
        "AccountId": "5148bfeb-8d52-4fe3-bf3c-a56897160040",
        "StandingOrderId": "7dd9ee20-8e5d-41cb-b785-ef1b8ab5d6bb",
        "Frequency": "EvryDay",
        "Reference": "Pocket money for Damien",
        "FirstPaymentDateTime": "2020-04-10T00:00",
        "StandingOrderStatusCode": "Active"
      }
    ]
  },
  "Links": {
    "Self": "https://oba.revolut.com/accounts/5148bfeb-8d52-4fe3-bf3c-a56897160040/standing-orders"
  },
  "Meta": {
    "TotalPages": 1
  }
}

This endpoint returns the list of standing orders for a specific user account.

Expenses API - Beta

Get Expenses

Get a list of all expenses

curl -X GET https://sandbox-oba.revolut.com/expenses
curl -X GET https://oba.revolut.com/expenses

List all expenses related to the account with the option to specify a beginning and ending date using a dateTime format

Name Located in Description Required Schema
from query All expenses created after this point in time will be returned (by default creation date of first expense) No dateTime
to query All expenses created up untill this point in time will be returned (default is now) No dateTime

Response

{
  "Data": {
    "Expenses": [
      {
        "ExpenseId": "69606e15-cd93-4bd1-a7aa-c22fc5bb421e",
        "TransactionId": "453b244b-adba-4716-8a9f-09d8189b7724",
        "Amount": "20.00",
        "Currency": "GBP",
        "CreationDateTime": "2020-08-14T13:16:15.425157Z",
        "Description": "Payment description",
        "Receipts": [
          {
            "Id": "address453b244b-adba-4716-8a9f-09d8189b7724",
            "ContentType": "png"
          },
          {
            "Id": "2address453b244b-adba-4716-8a9f-09d8189b7724",
            "ContentType": "jpeg"
          }
        ],
        "Category": {
          "Id": "cada8c04-1ff6-47b2-b67b-593ee9d8bb2a",
          "Name": "categoryName"
        },
        "TaxRate": {
          "Name": "taxRateName",
          "Type": "taxRateType",
          "Percentage": "10"
        }
      },
      {
        "ExpenseId": "38ed34ed-af82-48b7-9622-beab1d49b266",
        "TransactionId": "6d74b119-6d56-4fb7-a844-3d1a10742ed0",
        "Amount": "50.00",
        "Currency": "GBP",
        "CreationDateTime": "2020-08-14T13:16:15.34771Z",
        "Description": "Txn description",
        "Merchant": "Merchant",
        "Receipts": [
          {
            "Id": "address6d74b119-6d56-4fb7-a844-3d1a10742ed0",
            "ContentType": "png"
          },
          {
            "Id": "2address6d74b119-6d56-4fb7-a844-3d1a10742ed0",
            "ContentType": "jpeg"
          }
        ],
        "Category": {
          "Id": "c112db3f-ddfd-451c-875b-5e06b78b55bf",
          "Name": "categoryName"
        },
        "TaxRate": {
          "Name": "taxRateName",
          "Type": "taxRateType",
          "Percentage": "10"
        }
      }
    ]
  },
  "Links": { "Self": "http://localhost:33453/expenses" },
  "Meta": { "TotalPages": 1 }
}
Code Description
200 List of business expenses
default Unexpected error
Security Schema Scopes
AccessToken read

Get Receipt Information

Get a list of all expenses

curl -X GET https://sandbox-oba.revolut.com/transactions/{ TransactionId}/receipt/{ ReceiptId }
curl -X GET https://oba.revolut.com/transactions/{ TransactionId}/receipt/{ ReceiptId }

The /transactions/{ TransactionId }/receipt/{ ReceiptId } endpoint allows you to fetch the actual reciept tied to a transaction and receipt ID

Name Located in Description Required Schema
TransactionId path The id of the transaction for which {ReceiptId} should be retrieved Yes string (UUID)
ReceiptId path Id of a receipt Yes string

Response

This response is a stream of bytes.
Code Description
200 Receipt
default Unexpected error
Security Schema Scopes
AccessToken read

Payment Initiation API Specification

Create Domestic Payment Consent

curl -X POST https://sandbox-oba.revolut.com/domestic-payment-consents
curl -X POST https://oba.revolut.com/domestic-payment-consents

Request:

{
  "Data": {
    "Initiation": {
      "InstructionIdentification": "ID412",
      "EndToEndIdentification": "E2E123",
      "InstructedAmount": {
        "Amount": "55.00",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698",
        "Name": "Receiver Co."
      },
      "RemittanceInformation": {
        "Reference": "ReceiverRef",
        "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"
    }
  }
}

This endpoint is for creating payment consent as described in Open Banking API documentation. Domestic payments are used 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.

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

As part of the API requirement you must pass x-jws-signature header in your request. The signature must be generated from the request body with the TPP signing key that is specified in the JWS header. As specified in the documentation, you must only pass head and signature in <jws_head>..<jws_signature> format.

Get Domestic Payment Consent details

curl -X GET https://sandbox-oba.revolut.com/domestic-payment-consents/{consent_id}
curl -X GET https://oba.revolut.com/domestic-payment-consents/{consent_id}

Response

{
  "Data": {
    "ConsentId": "14083aa6-3f22-495d-a9e7-75abd118d8e9",
    "Status": "AwaitingAuthorisation",
    "CreationDateTime": "2018-05-05T15:15:13+00:00",
    "StatusUpdateDateTime": "2018-05-05T15:15:13+00:00",
    "Initiation": {
      "InstructionIdentification": "ID412",
      "EndToEndIdentification": "E2E123",
      "InstructedAmount": {
        "Amount": "55.00",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698",
        "Name": "Receiver Co."
      },
      "RemittanceInformation": {
        "Reference": "ReceiverRef",
        "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.revolut.com/domestic-payment-consents/14083aa6-3f22-495d-a9e7-75abd118d8e9"
  },
  "Meta": { "TotalPages": 1 }
}

This endpoint returns consent details as it is described in the official documentation.

Get Domestic Payment Funds Confirmation

Get Funds Confirmation

curl -X GET https://sandbox-oba.revolut.com/domestic-payment-consents/{consent_id}/funds-confirmation
curl -X GET https://oba.revolut.com/domestic-payment-consents/{consent_id}/funds-confirmation

This endpoint allows for the checking of funds with the given consent. This endpoint returns successful only if the user has authorized the related consent.

Response

{
  "Data": {
    "FundsAvailableResult": {
      "FundsAvailableDateTime": "2017-06-05T15:15:23+00:00",
      "FundsAvailable": true
    }
  },
  "Links": {
    "Self": "https://oba.revolut.com/domestic-payment-consents/14083aa6-3f22-495d-a9e7-75abd118d8e9/funds-confirmation"
  },
  "Meta": {}
}

Create Domestic Payment

Create Domestic Payment

curl -X POST https://sandbox-oba.revolut.com/domestic-payments
curl -X POST https://oba.revolut.com/domestic-payments

Request:

{
  "Data": {
    "ConsentId": "14083aa6-3f22-495d-a9e7-75abd118d8e9",
    "Initiation": {
      "InstructionIdentification": "ID412",
      "EndToEndIdentification": "E2E123",
      "InstructedAmount": {
        "Amount": "55.00",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698",
        "Name": "Receiver Co."
      },
      "RemittanceInformation": {
        "Reference": "ReceiverRef",
        "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"
    }
  }
}

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

Get Domestic Payment

Get Domestic Payment details

curl -X GET https://sandbox-oba.revolut.com/domestic-payments/{payment_id}
curl -X GET https://oba.revolut.com/domestic-payments/{payment_id}

Response

{
  "Data": {
    "DomesticPaymentId": "a51bafa2-1b9f-466e-ae30-168672f0661c",
    "Status": "AcceptedSettlementInProcess",
    "CreationDateTime": "2017-06-05T15:15:22+00:00",
    "StatusUpdateDateTime": "2017-06-05T15:15:13+00:00",
    "ConsentId": "14083aa6-3f22-495d-a9e7-75abd118d8e9",
    "Initiation": {
      "InstructionIdentification": "ID412",
      "EndToEndIdentification": "E2E123",
      "InstructedAmount": {
        "Amount": "55.00",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11223321325698",
        "Name": "Receiver Co."
      },
      "RemittanceInformation": {
        "Reference": "ReceiverRef",
        "Unstructured": "Shipment fee"
      }
    }
  },
  "Links": {
    "Self": "https://oba.revolut.com/domestic-payments/a51bafa2-1b9f-466e-ae30-168672f0661c"
  },
  "Meta": { "TotalPages": 1 }
}

This endpoint returns state of a payment.

Create Domestic Standing Order Consent

curl -X POST https://sandbox-oba.revolut.com/domestic-satnding-order-consents
curl -X POST https://oba.revolut.com/domestic-standing-order-consents

Request:

{
  "Data": {
    "Permission": "Create",
    "Initiation": {
      "Frequency": "EvryDay",
      "Reference": "Pocket money for Damien",
      "FirstPaymentDateTime": "1976-06-06T06:06:06+00:00",
      "FirstPaymentAmount": {
        "Amount": "6.66",
        "Currency": "GBP"
      },
      "DebtorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11280001234567",
        "Name": "Andrea Smith"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "08080021325698",
        "Name": "Bob Clements"
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "PartyToParty"
  }
}

This endpoint is for creating standing order consent as described in Open Banking API documentation. Domestic Standing Orders are used for local recurring payments in the local currency of the user. Revolut supports only GBP as local in the UK and EUR in SEPA countries.

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

As part of the API requirement you must pass the x-jws-signature header in your request. The signature must be generated from request body with the TPP signing key that is specified in the JWS header. As specified in the documentation, you must only pass head and signature in <jws_head>..<jws_signature> format.

We support only the following types of standing orders frequency:

Frequency Example Details
EvryDay EvryDay daily, supported only for personal accounts
IntrvlWkDay IntrvlWkDay:01:03 weekly on a specified week day, only 1 week intervals are supported
IntrvlWkDay IntrvlMnthDay:01:03 monthly on a specified day of month, only 1 month intervals are supported

Get Domestic Standing Order Consent details

curl -X GET https://sandbox-oba.revolut.com/domestic-standing-order-consents/{consent_id}
curl -X GET https://oba.revolut.com/domestic-standing-order-consents/{consent_id}

Response

{
  "Data": {
    "ConsentId": "14083aa6-3f22-495d-a9e7-75abd118d8e9",
    "Permission": "Create",
    "Status": "AwaitingAuthorisation",
    "CreationDateTime": "2018-05-05T15:15:13+00:00",
    "StatusUpdateDateTime": "2018-05-05T15:15:13+00:00",
    "Initiation": {
      "Frequency": "EvryDay",
      "Reference": "Pocket money for Damien",
      "FirstPaymentDateTime": "1976-06-06T06:06:06+00:00",
      "FirstPaymentAmount": {
        "Amount": "6.66",
        "Currency": "GBP"
      },
      "DebtorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11280001234567",
        "Name": "Andrea Smith"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "08080021325698",
        "Name": "Bob Clements"
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "PartyToParty"
  },
  "Links": {
    "Self": "https://oba.revolut.com/domestic-standing-order-consents/14083aa6-3f22-495d-a9e7-75abd118d8e9"
  },
  "Meta": { "TotalPages": 1 }
}

This endpoint returns consent details as it is described in the official documentation.

Create Domestic Standing Order

Create Domestic Standing Order

curl -X POST https://sandbox-oba.revolut.com/domestic-standing-orders
curl -X POST https://oba.revolut.com/domestic-standing-orders

Request:

{
  "Data": {
    "ConsentId": "14083aa6-3f22-495d-a9e7-75abd118d8e9",
    "Permission": "Create",
    "Initiation": {
      "Frequency": "EvryDay",
      "Reference": "Pocket money for Damien",
      "FirstPaymentDateTime": "1976-06-06T06:06:06+00:00",
      "FirstPaymentAmount": {
        "Amount": "6.66",
        "Currency": "GBP"
      },
      "RecurringPaymentAmount": {
        "Amount": "6.66",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "08080021325698",
        "Name": "Bob Clements"
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "PartyToParty"
  }
}

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

Get Domestic Standing Order

Get Domestic Standing Order

curl -X GET https://sandbox-oba.revolut.com/domestic-standing-orders/{standing_order_id}
curl -X GET https://oba.revolut.com/domestic-standing-orders/{standing_order_id}

Response

{
  "Data": {
    "DomesticStandingOrderId": "537e2fb4-7eb7-44fe-83fd-2152e360c5b3",
    "ConsentId": "14083aa6-3f22-495d-a9e7-75abd118d8e9",
    "Status": "InitiationCompleted",
    "CreationDateTime": "2017-06-05T15:15:13+00:00",
    "StatusUpdateDateTime": "2017-06-05T15:15:13+00:00",
    "Permission": "Create",
    "Initiation": {
      "Frequency": "EvryDay",
      "Reference": "Pocket money for Damien",
      "FirstPaymentDateTime": "1976-06-06T06:06:06+00:00",
      "FirstPaymentAmount": {
        "Amount": "6.66",
        "Currency": "GBP"
      },
      "RecurringPaymentAmount": {
        "Amount": "6.66",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "08080021325698",
        "Name": "Bob Clements"
      }
    }
  },
  "Links": {
    "Self": "https://oba.revolut.com/domestic-standing-orders/537e2fb4-7eb7-44fe-83fd-2152e360c5b3"
  },
  "Meta": { "TotalPages": 1 }
}

This endpoint returns state of a standing order.

Create Domestic Scheduled Payment Consent

curl -X POST https://sandbox-oba.revolut.com/domestic-scheduled-payment-consents
curl -X POST https://oba.revolut.com/domestic-scheduled-payment-consents

Request:

{
  "Data": {
    "Permission": "Create",
    "Initiation": {
      "InstructionIdentification": "89f0a53a91ee47f6a383536f851d6b5a",
      "RequestedExecutionDateTime": "2018-08-06T00:00:00+00:00",
      "InstructedAmount": {
        "Amount": "200.00",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "08080021325698",
        "Name": "Bob Clements"
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "PartyToParty"
  }
}

This endpoint is for creating scheduled payment consent as described in Open Banking API documentation. Domestic Scheduled Payments are used 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.

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

As part of the API requirement, you must pass the x-jws-signature header in your request. The signature must be generated from a request body with the TPP signing key that is specified in the JWS header. As specified in the documentation, you must only pass head and signature in <jws_head>..<jws_signature> format.

Get Domestic Scheduled Payment Consent details

curl -X GET https://sandbox-oba.revolut.com/domestic-scheduled-payment-consents/{consent_id}
curl -X GET https://oba.revolut.com/domestic-scheduled-payment-consents/{consent_id}

Response

{
  "Data": {
    "ConsentId": "14083aa6-3f22-495d-a9e7-75abd118d8e9",
    "Permission": "Create",
    "Status": "AwaitingAuthorisation",
    "CreationDateTime": "2018-05-05T15:15:13+00:00",
    "StatusUpdateDateTime": "2018-05-05T15:15:13+00:00",
    "Initiation": {
      "InstructionIdentification": "89f0a53a91ee47f6a383536f851d6b5a",
      "RequestedExecutionDateTime": "2018-08-06T00:00:00+00:00",
      "InstructedAmount": {
        "Amount": "200.00",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "08080021325698",
        "Name": "Bob Clements"
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "PartyToParty"
  },
  "Links": {
    "Self": "https://oba.revolut.com/domestic-scheduled-payment-consents/14083aa6-3f22-495d-a9e7-75abd118d8e9"
  },
  "Meta": { "TotalPages": 1 }
}

This endpoint returns consent details as it is described in the official documentation.

Create Domestic Scheduled Payment

Create Domestic Scheduled Payment

curl -X POST https://sandbox-oba.revolut.com/domestic-scheduled-payments
curl -X POST https://oba.revolut.com/domestic-scheduled-payments

Request:

{
  "Data": {
    "ConsentId": "14083aa6-3f22-495d-a9e7-75abd118d8e9",
    "Initiation": {
      "InstructionIdentification": "89f0a53a91ee47f6a383536f851d6b5a",
      "RequestedExecutionDateTime": "2018-08-06T00:00:00+00:00",
      "InstructedAmount": {
        "Amount": "200.00",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "08080021325698",
        "Name": "Bob Clements"
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "PartyToParty"
  }
}

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

Get Domestic Scheduled Payment

Get Domestic Scheduled Payment

curl -X GET https://sandbox-oba.revolut.com/domestic-scheduled-payments/{domestic_scheduled_payment_id}
curl -X GET https://oba.revolut.com/domestic-scheduled-payments/{domestic_scheduled_payment_id}

Response

{
  "Data": {
    "DomesticScheduledPaymentId": "537e2fb4-7eb7-44fe-83fd-2152e360c5b3",
    "ConsentId": "14083aa6-3f22-495d-a9e7-75abd118d8e9",
    "Status": "InitiationCompleted",
    "CreationDateTime": "2017-06-05T15:15:13+00:00",
    "StatusUpdateDateTime": "2017-06-05T15:15:13+00:00",
    "Initiation": {
      "InstructionIdentification": "89f0a53a91ee47f6a383536f851d6b5a",
      "RequestedExecutionDateTime": "2018-08-06T00:00:00+00:00",
      "InstructedAmount": {
        "Amount": "200.00",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "08080021325698",
        "Name": "Bob Clements"
      }
    }
  },
  "Links": {
    "Self": "https://oba.revolut.com/domestic-scheduled-payments/537e2fb4-7eb7-44fe-83fd-2152e360c5b3"
  },
  "Meta": { "TotalPages": 1 }
}

This endpoint returns state of a domestic scheduled payment.

Create International Payment Consent

curl -X POST https://sandbox-oba.revolut.com/international-payment-consents
curl -X POST https://oba.revolut.com/international-payment-consents

Request:

{
  "Data": {
    "Initiation": {
      "InstructionIdentification": "ACME412",
      "EndToEndIdentification": "FRESCO.21302.GFX.20",
      "InstructionPriority": "Normal",
      "CurrencyOfTransfer": "USD",
      "InstructedAmount": {
        "Amount": "165.88",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.IBAN",
        "Identification": "DE89370400440532013000",
        "Name": "ACME Inc",
        "SecondaryIdentification": "0002"
      },
      "DebtorAccount": {
        "SchemeName": "UK.OBIE.IBAN",
        "Identification": "GB38REVO00996907112483",
        "Name": "Revolut LTD",
        "SecondaryIdentification": "0002"
      },
      "RemittanceInformation": {
        "Reference": "FRESCO-101",
        "Unstructured": "Internal ops code 5120101"
      },
      "ExchangeRateInformation": {
        "UnitCurrency": "GBP",
        "RateType": "Indicative"
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "EcommerceGoods",
    "MerchantCategoryCode": "5967",
    "MerchantCustomerIdentification": "053598653254",
    "DeliveryAddress": {
      "AddressLine": ["Flat 7", "Acacia Lodge"],
      "StreetName": "Acacia Avenue",
      "BuildingNumber": "27",
      "PostCode": "GU31 2ZZ",
      "TownName": "Sparsholt",
      "Country": "UK"
    }
  }
}

This endpoint is for creating payment consent as described in Open Banking API documentation. International Payments are used for international SWIFT payments in all currencies supported by Revolut.

Only payments with InstructedAmount in the same currency as CurrencyOfTransfer are supported. However, we allow users to change which account they want to be charged in consent authorization UI. Even if it is in a different currency. In such a case, the response field ExchangeRateInformation will contain information about the fx rate between source account currency and CurrencyOfTransfer. In case the user doesn't have enough funds on the selected account, the consent authorisation will be rejected.

As part of the API requirement, you must pass the x-jws-signature header in your request. The signature must be generated from a request body with the TPP signing key that is specified in the JWS header. As specified in the documentation, you must only pass head and signature in <jws_head>..<jws_signature> format.

Get International Payment Consent details

curl -X GET https://sandbox-oba.revolut.com/international-payment-consents/{consent_id}
curl -X GET https://oba.revolut.com/international-payment-consents/{consent_id}

Response

{
  "Data": {
    "ConsentId": "b4206fed-5265-48ce-91af-cb7182018991",
    "Status": "AwaitingAuthorisation",
    "CreationDateTime": "2019-07-06T16:17:22+00:00",
    "StatusUpdateDateTime": "2019-07-07T13:25:22+00:00",
    "Initiation": {
      "InstructionIdentification": "ACME412",
      "EndToEndIdentification": "FRESCO.21302.GFX.20",
      "InstructionPriority": "Normal",
      "CurrencyOfTransfer": "USD",
      "InstructedAmount": {
        "Amount": "165.88",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.IBAN",
        "Identification": "DE89370400440532013000",
        "Name": "ACME Inc",
        "SecondaryIdentification": "0002"
      },
      "DebtorAccount": {
        "SchemeName": "UK.OBIE.IBAN",
        "Identification": "GB38REVO00996907112483",
        "Name": "Revolut LTD",
        "SecondaryIdentification": "0002"
      },
      "RemittanceInformation": {
        "Reference": "FRESCO-101",
        "Unstructured": "Internal ops code 5120101"
      },
      "ExchangeRateInformation": {
        "UnitCurrency": "GBP",
        "RateType": "Indicative"
      }
    },
    "ExchangeRateInformation": {
      "UnitCurrency": "GBP",
      "ExchangeRate": "1.6050",
      "RateType": "Indicative"
    }
  },
  "Risk": {
    "PaymentContextCode": "EcommerceGoods",
    "MerchantCategoryCode": "5967",
    "MerchantCustomerIdentification": "053598653254",
    "DeliveryAddress": {
      "AddressLine": ["Flat 7", "Acacia Lodge"],
      "StreetName": "Acacia Avenue",
      "BuildingNumber": "27",
      "PostCode": "GU31 2ZZ",
      "TownName": "Sparsholt",
      "Country": "UK"
    }
  },
  "Links": {
    "Self": "https://oba.revolut.com/international-payment-consents/b4206fed-5265-48ce-91af-cb7182018991"
  },
  "Meta": { "TotalPages": 1 }
}

This endpoint returns consent details as it is described in the official documentation.

Get Funds Confirmation

curl -X GET https://sandbox-oba.revolut.com/international-payment-consents/{consent_id}/funds-confirmation
curl -X GET https://oba.revolut.com/international-payment-consents/{consent_id}/funds-confirmation

Response

{
  "Data": {
    "FundsAvailableResult": {
      "FundsAvailableDateTime": "2019-07-06T16:16:22+00:00",
      "FundsAvailable": true
    }
  },
  "Links": {
    "Self": "https://oba.revolut.com/international-payment-consents/a0f338f1-1827-49a3-82f7-eaa3783cadb6/funds-confirmation"
  },
  "Meta": {}
}

This endpoint allows checking funds for the given consent. This endpoint returns successfully only if the user has authorized the related consent.

Create International Payment

Create International Payment

curl -X POST https://sandbox-oba.revolut.com/international-payments
curl -X POST https://oba.revolut.com/international-payments

Request:

{
  "Data": {
    "ConsentId": "14083aa6-3f22-495d-a9e7-75abd118d8e9",
    "Initiation": {
      "InstructionIdentification": "ACME412",
      "EndToEndIdentification": "FRESCO.21302.GFX.20",
      "InstructionPriority": "Normal",
      "CurrencyOfTransfer": "USD",
      "InstructedAmount": {
        "Amount": "165.88",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.IBAN",
        "Identification": "DE89370400440532013000",
        "Name": "ACME Inc",
        "SecondaryIdentification": "0002"
      },
      "DebtorAccount": {
        "SchemeName": "UK.OBIE.IBAN",
        "Identification": "GB38REVO00996907112483",
        "Name": "Revolut LTD",
        "SecondaryIdentification": "0002"
      },
      "RemittanceInformation": {
        "Reference": "FRESCO-101",
        "Unstructured": "Internal ops code 5120101"
      },
      "ExchangeRateInformation": {
        "UnitCurrency": "GBP",
        "RateType": "Indicative"
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "EcommerceGoods",
    "MerchantCategoryCode": "5967",
    "MerchantCustomerIdentification": "1238808123123",
    "DeliveryAddress": {
      "AddressLine": ["7"],
      "StreetName": "Apple Street",
      "BuildingNumber": "1",
      "PostCode": "E2 7AA",
      "TownName": "London",
      "Country": "UK"
    }
  }
}

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

Get International Payment

Get International Payment details

curl -X GET https://sandbox-oba.revolut.com/international-payments/{payment_id}
curl -X GET https://oba.revolut.com/international-payments/{payment_id}

Response

{
  "Data": {
    "InternationalPaymentId": "a51bafa2-1b9f-466e-ae30-168672f0661c",
    "Status": "AcceptedSettlementInProcess",
    "CreationDateTime": "2017-06-05T15:15:22+00:00",
    "StatusUpdateDateTime": "2017-06-05T15:15:13+00:00",
    "ConsentId": "14083aa6-3f22-495d-a9e7-75abd118d8e9",
    "Initiation": {
      "InstructionIdentification": "ACME412",
      "EndToEndIdentification": "FRESCO.21302.GFX.20",
      "InstructionPriority": "Normal",
      "CurrencyOfTransfer": "USD",
      "InstructedAmount": {
        "Amount": "165.88",
        "Currency": "GBP"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.IBAN",
        "Identification": "DE89370400440532013000",
        "Name": "ACME Inc",
        "SecondaryIdentification": "0002"
      },
      "DebtorAccount": {
        "SchemeName": "UK.OBIE.IBAN",
        "Identification": "GB38REVO00996907112483",
        "Name": "Revolut LTD",
        "SecondaryIdentification": "0002"
      },
      "RemittanceInformation": {
        "Reference": "FRESCO-101",
        "Unstructured": "Internal ops code 5120101"
      },
      "ExchangeRateInformation": {
        "UnitCurrency": "GBP",
        "RateType": "Indicative"
      }
    }
  },
  "Links": {
    "Self": "https://oba.revolut.com/international-payments/a51bafa2-1b9f-466e-ae30-168672f0661c"
  },
  "Meta": { "TotalPages": 1 }
}

This endpoint returns a state of a payment.

Create International Standing Order Consent

curl -X POST https://sandbox-oba.revolut.com/international-satnding-order-consents
curl -X POST https://oba.revolut.com/international-standing-order-consents

Request:

{
  "Data": {
    "Permission": "Create",
    "Initiation": {
      "Frequency": "EvryDay",
      "Reference": "Pocket money for Damien",
      "CurrencyOfTransfer": "USD",
      "InstructedAmount": {
        "Amount": "6.66",
        "Currency": "USD"
      },
      "FirstPaymentDateTime": "1976-06-06T06:06:06+00:00",
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.IBAN",
        "Identification": "GB76LOYD30949301273801",
        "Name": "ACME Inc",
        "SecondaryIdentification": "0002"
      },
      "Creditor": {
        "Name": "Bob Clements",
        "PostalAddress": {
          "AddressType": "Correspondence",
          "StreetName": "Liberty",
          "BuildingNumber": "1",
          "PostCode": "AB1 2CD",
          "TownName": "London",
          "AddressLine": ["one", "two"],
          "Country": "UK"
        }
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "PartyToParty"
  }
}

This endpoint is for creating standing order consent as described in Open Banking API documentation. International Standing Orders are used for international SWIFT payments in all currencies supported by Revolut.

Only payments with InstructedAmount in the same currency as CurrencyOfTransfer are supported. However, we allow users to change which account they want to be charged in consent authorization UI. Even if it is in a different currency. In case the user doesn't have enough funds on the selected account, the consent authorisation will be rejected.

As part of the API requirement, you must pass the x-jws-signature header in your request. The signature must be generated from a request body with the TPP signing key that is specified in the JWS header. As specified in the documentation, you must only pass head and signature in <jws_head>..<jws_signature> format.

We support only the following types of standing orders frequency:

Frequency Example Details
EvryDay EvryDay daily, supported only for personal accounts
IntrvlWkDay IntrvlWkDay:01:03 weekly on a specified week day, only 1 week intervals are supported
IntrvlWkDay IntrvlMnthDay:01:03 monthly on a specified day of month, only 1 month intervals are supported

Get International Standing Order Consent details

curl -X GET https://sandbox-oba.revolut.com/international-standing-order-consents/{consent_id}
curl -X GET https://oba.revolut.com/international-standing-order-consents/{consent_id}

Response

{
  "Data": {
    "ConsentId": "14083aa6-3f22-495d-a9e7-75abd118d8e9",
    "Permission": "Create",
    "Status": "AwaitingAuthorisation",
    "CreationDateTime": "2017-06-05T15:15:13+00:00",
    "StatusUpdateDateTime": "2017-06-05T15:15:13+00:00",
    "Initiation": {
      "Frequency": "EvryDay",
      "Reference": "Pocket money for Damien",
      "CurrencyOfTransfer": "USD",
      "InstructedAmount": {
        "Amount": "165.88",
        "Currency": "USD"
      },
      "FirstPaymentDateTime": "$startDate",
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.IBAN",
        "Identification": "GB76LOYD30949301273801",
        "Name": "ACME Inc",
        "SecondaryIdentification": "0002"
      },
      "Creditor": {
        "Name": "Bob Clements",
        "PostalAddress": {
          "AddressType": "Correspondence",
          "StreetName": "Liberty",
          "BuildingNumber": "1",
          "PostCode": "AB1 2CD",
          "TownName": "London",
          "AddressLine": ["one", "two"],
          "Country": "UK"
        }
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "PartyToParty"
  },
  "Links": {
    "Self": "https://oba.revolut.com/international-standing-order-consents/14083aa6-3f22-495d-a9e7-75abd118d8e9"
  },
  "Meta": { "TotalPages": 1 }
}

This endpoint returns consent details as it is described in the official documentation.

Create International Standing Order

Create International Standing Order

curl -X POST https://sandbox-oba.revolut.com/international-standing-orders
curl -X POST https://oba.revolut.com/international-standing-orders

Request:

{
  "Data": {
    "ConsentId": "14083aa6-3f22-495d-a9e7-75abd118d8e9",
    "Initiation": {
      "InstructionIdentification": "ACME412",
      "EndToEndIdentification": "FRESCO.21302.GFX.20",
      "InstructionPriority": "Normal",
      "CurrencyOfTransfer": "USD",
      "InstructedAmount": {
        "Amount": "165.88",
        "Currency": "USD"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.IBAN",
        "Identification": "GB76LOYD30949301273801",
        "Name": "ACME Inc",
        "SecondaryIdentification": "0002"
      },
      "Creditor": {
        "PostalAddress": {
          "AddressType": "Correspondence",
          "StreetName": "Liberty",
          "BuildingNumber": "1",
          "PostCode": "AB1 2CD",
          "TownName": "London",
          "AddressLine": ["one", "two"],
          "Country": "UK"
        }
      },
      "RemittanceInformation": {
        "Reference": "FRESCO-101",
        "Unstructured": "Internal ops code 5120101"
      },
      "ExchangeRateInformation": {
        "UnitCurrency": "USD",
        "RateType": "Indicative"
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "PartyToParty"
  }
}

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

Get International Standing Order

Get International Standing Order

curl -X GET https://sandbox-oba.revolut.com/international-standing-orders/{standing_order_id}
curl -X GET https://oba.revolut.com/international-standing-orders/{standing_order_id}

Response

{
  "Data": {
    "InternationalStandingOrderId": "a0f338f1-1827-49a3-82f7-eaa3783cadb6",
    "ConsentId": "14083aa6-3f22-495d-a9e7-75abd118d8e9",
    "CreationDateTime": "2018-01-01T06:06:36+00:00",
    "Status": "InitiationCompleted",
    "StatusUpdateDateTime": "2018-01-01T06:36:06+00:00",
    "Initiation": {
      "InstructionIdentification": "ACME412",
      "EndToEndIdentification": "FRESCO.21302.GFX.20",
      "InstructionPriority": "Normal",
      "CurrencyOfTransfer": "USD",
      "InstructedAmount": {
        "Amount": "165.88",
        "Currency": "USD"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.IBAN",
        "Identification": "GB76LOYD30949301273801",
        "Name": "ACME Inc",
        "SecondaryIdentification": "0002"
      },
      "Creditor": {
        "PostalAddress": {
          "AddressType": "Correspondence",
          "StreetName": "Liberty",
          "BuildingNumber": "1",
          "PostCode": "AB1 2CD",
          "TownName": "London",
          "AddressLine": ["one", "two"],
          "Country": "UK"
        }
      },
      "RemittanceInformation": {
        "Reference": "FRESCO-101",
        "Unstructured": "Internal ops code 5120101"
      },
      "ExchangeRateInformation": {
        "UnitCurrency": "USD",
        "RateType": "Indicative"
      }
    }
  },
  "Links": {
    "Self": "https://oba.revolut.com/international-standing-orders/a0f338f1-1827-49a3-82f7-eaa3783cadb6"
  },
  "Meta": { "TotalPages": 1 }
}

This endpoint returns state of a standing order.

Create International Scheduled Payment Consent

curl -X POST https://sandbox-oba.revolut.com/international-scheduled-payment-consents
curl -X POST https://oba.revolut.com/international-scheduled-payment-consents

Request:

{
  "Data": {
    "Permission": "Create",
    "Initiation": {
      "InstructionIdentification": "ACME412",
      "RequestedExecutionDateTime": "2021-08-06T00:00:00+00:00",
      "CurrencyOfTransfer": "USD",
      "InstructedAmount": {
        "Amount": "6.66",
        "Currency": "USD"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.IBAN",
        "Identification": "GB76LOYD30949301273801",
        "Name": "ACME Inc",
        "SecondaryIdentification": "0002"
      },
      "Creditor": {
        "Name": "Bob Clements",
        "PostalAddress": {
          "AddressType": "Correspondence",
          "StreetName": "Liberty",
          "BuildingNumber": "1",
          "PostCode": "AB1 2CD",
          "TownName": "London",
          "AddressLine": ["one", "two"],
          "Country": "UK"
        }
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "PartyToParty"
  }
}

This endpoint is for creating scheduled payment consent as described in Open Banking API documentation. International Scheduled Payments are used for international SWIFT payments in all currencies supported by Revolut.

Only payments with InstructedAmount in the same currency as CurrencyOfTransfer are supported. However, we allow users to change which account they want to be charged in consent authorization UI. Even if it is in a different currency. In case the user doesn't have enough funds on the selected account, the consent authorisation will be rejected.

As part of the API requirement, you must pass the x-jws-signature header in your request. The signature must be generated from a request body with the TPP signing key that is specified in the JWS header. As specified in the documentation, you must only pass head and signature in <jws_head>..<jws_signature> format.

Get International Scheduled Payment Consent details

curl -X GET https://sandbox-oba.revolut.com/international-scheduled-payment-consents/{consent_id}
curl -X GET https://oba.revolut.com/international-scheduled-payment-consents/{consent_id}

Response

{
  "Data": {
    "ConsentId": "14083aa6-3f22-495d-a9e7-75abd118d8e9",
    "Permission": "Create",
    "Status": "AwaitingAuthorisation",
    "CreationDateTime": "2017-06-05T15:15:13+00:00",
    "StatusUpdateDateTime": "2017-06-05T15:15:13+00:00",
    "Initiation": {
      "InstructionIdentification": "ACME412",
      "RequestedExecutionDateTime": "2021-08-06T00:00:00+00:00",
      "CurrencyOfTransfer": "USD",
      "InstructedAmount": {
        "Amount": "165.88",
        "Currency": "USD"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.IBAN",
        "Identification": "GB76LOYD30949301273801",
        "Name": "ACME Inc",
        "SecondaryIdentification": "0002"
      },
      "Creditor": {
        "Name": "Bob Clements",
        "PostalAddress": {
          "AddressType": "Correspondence",
          "StreetName": "Liberty",
          "BuildingNumber": "1",
          "PostCode": "AB1 2CD",
          "TownName": "London",
          "AddressLine": ["one", "two"],
          "Country": "UK"
        }
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "PartyToParty"
  },
  "Links": {
    "Self": "https://oba.revolut.com/international-scheduled-payment-consents/14083aa6-3f22-495d-a9e7-75abd118d8e9"
  },
  "Meta": { "TotalPages": 1 }
}

This endpoint returns consent details as it is described in the official documentation.

Get Funds Confirmation

curl -X GET https://sandbox-oba.revolut.com/international-scheduled-payment-consents/{consent_id}/funds-confirmation
curl -X GET https://oba.revolut.com/international-scheduled-payment-consents/{consent_id}/funds-confirmation

Response

{
  "Data": {
    "FundsAvailableResult": {
      "FundsAvailableDateTime": "2019-07-06T16:16:22+00:00",
      "FundsAvailable": true
    }
  },
  "Links": {
    "Self": "https://oba.revolut.com/international-scheduled-payment-consents/a0f338f1-1827-49a3-82f7-eaa3783cadb6/funds-confirmation"
  },
  "Meta": {}
}

This endpoint allows checking funds for the given consent. This endpoint returns successfully only if user has authorized the related consent.

Create International Scheduled Payment

Create International Scheduled Payment

curl -X POST https://sandbox-oba.revolut.com/international-scheduled-payments
curl -X POST https://oba.revolut.com/international-scheduled-payments

Request:

{
  "Data": {
    "ConsentId": "14083aa6-3f22-495d-a9e7-75abd118d8e9",
    "Initiation": {
      "InstructionIdentification": "ACME412",
      "RequestedExecutionDateTime": "2021-08-06T00:00:00+00:00",
      "CurrencyOfTransfer": "USD",
      "InstructedAmount": {
        "Amount": "165.88",
        "Currency": "USD"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.IBAN",
        "Identification": "GB76LOYD30949301273801",
        "Name": "ACME Inc",
        "SecondaryIdentification": "0002"
      },
      "Creditor": {
        "PostalAddress": {
          "AddressType": "Correspondence",
          "StreetName": "Liberty",
          "BuildingNumber": "1",
          "PostCode": "AB1 2CD",
          "TownName": "London",
          "AddressLine": ["one", "two"],
          "Country": "UK"
        }
      },
      "RemittanceInformation": {
        "Reference": "FRESCO-101",
        "Unstructured": "Internal ops code 5120101"
      },
      "ExchangeRateInformation": {
        "UnitCurrency": "USD",
        "RateType": "Indicative"
      }
    }
  },
  "Risk": {
    "PaymentContextCode": "PartyToParty"
  }
}

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

Get International Scheduled Payment

Get International Scheduled Payment

curl -X GET https://sandbox-oba.revolut.com/international-scheduled-payments/{scheduled_payment_id}
curl -X GET https://oba.revolut.com/international-scheduled-payments/{scheduled_payment_id}

Response

{
  "Data": {
    "InternationalScheduledPaymentId": "a0f338f1-1827-49a3-82f7-eaa3783cadb6",
    "ConsentId": "14083aa6-3f22-495d-a9e7-75abd118d8e9",
    "Status": "InitiationCompleted",
    "CreationDateTime": "2018-05-05T15:15:13+00:00",
    "StatusUpdateDateTime": "2018-05-05T15:15:13+00:00",
    "Initiation": {
      "InstructionIdentification": "ACME412",
      "RequestedExecutionDateTime": "2021-08-06T00:00:00+00:00",
      "CurrencyOfTransfer": "USD",
      "InstructedAmount": {
        "Amount": "165.88",
        "Currency": "USD"
      },
      "CreditorAccount": {
        "SchemeName": "UK.OBIE.IBAN",
        "Identification": "GB76LOYD30949301273801",
        "Name": "ACME Inc",
        "SecondaryIdentification": "0002"
      },
      "Creditor": {
        "PostalAddress": {
          "AddressType": "Correspondence",
          "StreetName": "Liberty",
          "BuildingNumber": "1",
          "PostCode": "AB1 2CD",
          "TownName": "London",
          "AddressLine": ["one", "two"],
          "Country": "UK"
        }
      },
      "RemittanceInformation": {
        "Reference": "FRESCO-101",
        "Unstructured": "Internal ops code 5120101"
      },
      "ExchangeRateInformation": {
        "UnitCurrency": "USD",
        "RateType": "Indicative"
      }
    }
  },
  "Links": {
    "Self": "https://oba.revolut.com/international-scheduled-payments/a0f338f1-1827-49a3-82f7-eaa3783cadb6"
  },
  "Meta": { "TotalPages": 1 }
}

This endpoint returns state of a scheduled payment.

Create File Payment Consent

curl -X POST https://sandbox-oba.revolut.com/file-payment-consents
curl -X POST https://oba.revolut.com/file-payment-consents

Request:

{
  "Data": {
    "Initiation": {
      "FileType": "text/csv",
      "FileHash": "05IAiRfAhurUnWtxvqJffXo00LnkZQpfrHVLNn8m7f4=",
      "DebtorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11280001234567",
        "Name": "Andrea Frost"
      }
    }
  }
}

This endpoint is for creating file payment consent as described in Open Banking API documentation.

File Payments is available only for Revolut Business users.

Currently only text/csv file type is supported for File Payments.

As part of the API requirement, you must pass the x-jws-signature header in your request. The signature must be generated from a request body with the TPP signing key that is specified in the JWS header. As specified in the documentation, you must only pass head and signature in <jws_head>..<jws_signature> format.

Get File Payment Consent details

curl -X GET https://sandbox-oba.revolut.com/file-payment-consents/{consent_id}
curl -X GET https://oba.revolut.com/file-payment-consents/{consent_id}

Response

{
  "Data": {
    "ConsentId": "14083aa6-3f22-495d-a9e7-75abd118d8e9",
    "Status": "AwaitingUpload",
    "CreationDateTime": "2018-06-05T15:15:13+00:00",
    "StatusUpdateDateTime": "2018-06-05T15:15:13+00:00",
    "Initiation": {
      "FileType": "text/csv",
      "FileHash": "05IAiRfAhurUnWtxvqJffXo00LnkZQpfrHVLNn8m7f4=",
      "DebtorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11280001234567",
        "Name": "Andrea Frost"
      }
    }
  },
  "Links": {
    "Self": "https://oba.revolut.com/file-payment-consents/14083aa6-3f22-495d-a9e7-75abd118d8e9"
  },
  "Meta": { "TotalPages": 1 }
}

This endpoint returns consent details as it is described in the official documentation.

Upload File for File Payment Consent

curl -X POST https://sandbox-oba.revolut.com/file-payment-consents/{consent_id}/file
curl -X POST https://oba.revolut.com/file-payment-consents/{consent_id}/file

Request:

Name        ,Recipient type,Account number ,Sort code or 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
Andrea Frost,INDIVIDUAL    ,40513598       ,207409                     ,    ,   ,GB                    ,GBP     ,10    ,User comment     ,GB               ,                 ,"Revolutest LTD, Level 39",Somewhere in London,London,E14 5AB

This endpoint allows to upload a file for given file payment consent as described in Open Banking API documentation.

Only CSV files with structure as in the example are supported (whitespaces are only for display purposes).

Field Required Description
Name Yes Can contain up to 80 characters. If INDIVIDUAL recipient type is provided this field must contain first and last name separated by white space
Recipient type Yes Can be either INDIVIDUAL or COMPANY
Account number For UK transfers Must contain valid account number if provided
Sort code or Routing number For UK transfers Must contain valid sort code or 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 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

Columns with optional values can be omitted in the uploaded file.

Maximum accepted file size is 10 MB.

Example UK transfer (whitespaces are only for display purposes)

Name        ,Recipient type,Account number,Sort code,Recipient bank country,Currency,Amount,Payment reference
Andrea Frost,INDIVIDUAL    ,40513598      ,207409   ,GB                    ,GBP     ,10    ,User comment

Get File for File Payment Consent

curl -X GET https://sandbox-oba.revolut.com/file-payment-consents/{consent_id}/file
curl -X GET https://oba.revolut.com/file-payment-consents/{consent_id}/file

Response

 Name,Recipient type,Account number,Sort code,Recipient bank country,Currency,Amount,Payment reference
 Andrea Frost,INDIVIDUAL,40513598,207409,GB,GBP,10,User comment

This endpoint returns file uploaded for given consent as it is described in the official documentation.

Create File Payment

Create File Payment

curl -X POST https://sandbox-oba.revolut.com/file-payments
curl -X POST https://oba.revolut.com/file-payments

Request:

{
  "Data": {
    "ConsentId": "14083aa6-3f22-495d-a9e7-75abd118d8e9",
    "Initiation": {
      "FileType": "text/csv",
      "FileHash": "05IAiRfAhurUnWtxvqJffXo00LnkZQpfrHVLNn8m7f4=",
      "DebtorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11280001234567",
        "Name": "Andrea Frost"
      }
    }
  }
}

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

Get File Payment

Get File Payment

curl -X GET https://sandbox-oba.revolut.com/file-payments/{file_payment_id}
curl -X GET https://oba.revolut.com/file-payments/{file_payment_id}

Response

{
  "Data": {
    "FilePaymentId": "a0f338f1-1827-49a3-82f7-eaa3783cadb6",
    "ConsentId": "14083aa6-3f22-495d-a9e7-75abd118d8e9",
    "Status": "InitiationCompleted",
    "CreationDateTime": "2018-05-05T15:15:13+00:00",
    "StatusUpdateDateTime": "2018-05-05T15:15:13+00:00",
    "Initiation": {
      "FileType": "text/csv",
      "FileHash": "05IAiRfAhurUnWtxvqJffXo00LnkZQpfrHVLNn8m7f4=",
      "DebtorAccount": {
        "SchemeName": "UK.OBIE.SortCodeAccountNumber",
        "Identification": "11280001234567",
        "Name": "Andrea Frost"
      }
    }
  },
  "Links": {
    "Self": "https://oba.revolut.com/file-payments/a0f338f1-1827-49a3-82f7-eaa3783cadb6"
  },
  "Meta": { "TotalPages": 1 }
}

This endpoint returns state of a file payment.

Get File Payment Report File

Get File Payment Report File

curl -X GET https://sandbox-oba.revolut.com/file-payments/{file_payment_id}/report-file
curl -X GET https://oba.revolut.com/file-payments/{file_payment_id}/report-file

Response

{
  "Payments": [
    {
      "Amount": {
        "Amount": "20.10",
        "Currency": "GBP"
      },
      "Reference": "Ref 1",
      "Status": "Created"
    },
    {
      "Amount": {
        "Amount": "250.00",
        "Currency": "EUR"
      },
      "Reference": "Ref 2",
      "Status": "Completed"
    },
    {
      "Amount": {
        "Amount": "1.10",
        "Currency": "GBP"
      },
      "Reference": "Ref 3",
      "Status": "Failed"
    }
  ]
}

This endpoint returns state of all payments for given file payment. Currently only JSON format is supported.

Confirmation of funds

The Open Banking Funds Confirmation API is implemented as specified in the official documentation.

Create Funds Confirmation Consent

curl -X POST https://sandbox-oba.revolut.com/funds-confirmation-consents
curl -X POST https://oba.revolut.com/funds-confirmation-consents

Request:

{
  "Data": {
    "DebtorAccount": {
      "SchemeName": "UK.OBIE.SortCodeAccountNumber",
      "Identification": "00000069994595"
    }
  }
}

This API allows the CBPII to create a new funds-confirmation-consent resource, implemented as described in the Open Banking API documentation.

Get Funds Confirmation Consent

curl -X GET https://sandbox-oba.revolut.com/funds-confirmation-consents/{consent_id}
curl -X GET https://oba.revolut.com/funds-confirmation-consents/{consent_id}

This endpoint returns consent details as it is described in the official documentation.

Delete Funds Confirmation Consent

curl -X DELETE https://sandbox-oba.revolut.com/funds-confirmation-consents/{consent_id}
curl -X DELETE https://oba.revolut.com/funds-confirmation-consents/{consent_id}

This endpoint:

Create Funds Confirmations

Create Funds Confirmation

curl -X POST https://sandbox-oba.revolut.com/funds-confirmations
curl -X POST https://oba.revolut.com/funds-confirmations

Request:

{
  "Data": {
    "ConsentId": "123456789",
    "Reference": "Purchase",
    "InstructedAmount": {
      "Amount": "20.00",
      "Currency": "GBP"
    }
  }
}

This API allows the CBPII to create a new funds-confirmation resource, and check the funds available flag in the response.

Get Funds Confirmation

Get Funds Confirmation details

curl -X GET https://sandbox-oba.revolut.com/funds-confirmations/{funds-confirmation-id}
curl -X GET https://oba.revolut.com/funds-confirmations/{funds-confirmation-id}

Response

{
  "Data": {
    "FundsConfirmationId": "14083aa6-3f22-495d-a9e7-75abd118d8e9",
    "ConsentId": "123456789",
    "CreationDateTime": "2017-06-05T15:15:22+00:00",
    "FundsAvailable": true,
    "Reference": "Purchase01",
    "InstructedAmount": {
      "Amount": "20.00",
      "Currency": "GBP"
    }
  },
  "Links": {
    "Self": "https://oba.revolut.com/funds-confirmations/14083aa6-3f22-495d-a9e7-75abd118d8e9"
  },
  "Meta": {}
}

This API fetches the already created funds confirmation resource which indicates the availability of the funds

API Metrics

You can view the latest API metrics for Mobile, Business and Open Banking APIs here. You can also review detailed Open Banking metrics here.

We update these reports daily and keep them for the last 90 days.





Errors

The API uses the following error codes:

CODE MEANING
400 Bad Request -- Your request is invalid.
401 Unauthorized -- Your access token is wrong.
403 Forbidden -- Access to the requested resource or action is forbidden.
404 Not Found -- The requested resource could not be found.
405 Method Not Allowed -- You tried to access an endpoint with an invalid method.
406 Not Acceptable -- You requested a format that isn't JSON.
429 Too Many Requests -- You're sending too many requests.
500 Internal Server Error -- We had a problem with our server. Try again later.
503 Service Unavailable -- We're temporarily offline for maintenance. Please try again later.