NAV Navbar
production sandbox
  • Getting started
  • The Developer Portal
  • Dynamic Client Registration
  • Open Banking Security Profile
  • Account and Transaction API
  • Payment Initiation API Specification
  • Confirmation of funds
  • API Metrics
  • Errors
  • Getting started

    Introduction to Revolut Open Banking API v3.1

    Welcome to the Revolut Open Banking API!
    Here you will find all the information to get started with Open Banking API. We're building a future beyond banking, we're excited to have you onboard.

    To help you navigate the docs, this page is split into 3 vertical sections:

    Please note that in order to use the open banking api, you need to first enroll as a TPP in open banking directory and then follow the official Open Banking API v3.1 documentation can be found here

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

    The Developer Portal

    What is the Developer Portal?

    If you are building a great app and would like to integrate it with Revolut, then the Developer Portal is for you.
    The Developer Portal allows you to easily create, manage and distribute apps which are developed for both Revolut Business Open API and Open Banking API.
    Apps allow you to ask Revolut users to give you permission to use their account on their behalf. Once you will feel confident enough in your integration, the Developer Portal will allow you to submit and publish your apps and integrations.

    Signin Up

    How does the Developer Portal work?

    In the Developer Portal, you can review and manage your Open Banking Applications. Open Banking Applications can only be created by dynamic client registration as it is described in the offical documentation. You must set your Open Banking API organisation id in Profile section before registering your application with us.

    Open Id Configuration URLs

    Usage and limits

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

    Dynamic Client Registration

    All API endpoints are implemented as it is described in the official documentation

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

    This endpoint will work only if you register to Developer Portal and set open banking organisation id.

    Certificate DN

    Please note that Dynamic Registration requires using the RFC2253 DN format in your request. To obtain the DN of your certificate in this format, you may use the following command: openssl x509 -in /path/to/your/cert.cer -noout -subject -nameopt RFC2253

    Open Banking Security Profile

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

    Authorization Endpoint

    curl -X POST https://sandbox-oba.revolut.com/ui/index.html
    
    curl -X POST 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

    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 endpoints 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 are keep implementing other endpoints (manadatory endpoints first). We will be updating this documentation as we progress.

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

    This end point:

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

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

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

    Request:

    {
      "Data": {
        "Permissions": [
          "ReadAccountsDetail",
          "ReadBalances",
          "ReadBeneficiariesDetail",
          "ReadDirectDebits",
          "ReadProducts",
          "ReadStandingOrdersDetail",
          "ReadTransactionsCredits",
          "ReadTransactionsDebits",
          "ReadTransactionsDetail",
          "ReadOffers",
          "ReadPAN",
          "ReadParty",
          "ReadPartyPSU",
          "ReadScheduledPaymentsDetail",
          "ReadStatementsDetail"
        ],
        "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 revolut user.

    Get Accounts

    curl -X POST curl https://sandbox-oba.revolut.com/accounts
    
    curl -X POST curl 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 list of the user accounts.

    Get Account Details

    curl -X POST curl https://sandbox-oba.revolut.com/accounts/{account-id}
    
    curl -X POST curl 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

    curl -X POST curl https://sandbox-oba.revolut.com/accounts/{account-id}/balances
    
    curl -X POST curl 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

    curl -X POST curl https://sandbox-oba.revolut.com/accounts/{account-id}/transactions
    
    curl -X POST curl 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.

    Additional response fields

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

    Payment Initiation API Specification

    curl -X POST curl https://sandbox-oba.revolut.com/domestic-payment-consents
    
    curl -X POST curl 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 SEPA countries.

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

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

    Response:

    {
      "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"
        }
      }
    }
    

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

    Get Funds Confirmation

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

    This endpoint lets checking funds for the given consent. This endpoint returns successful only if user 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

    curl -X POST curl https://sandbox-oba.revolut.com/domestic-payments
    
    curl -X POST curl 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 exact match for the related consent passed in ConsentId.

    Get Domestic Payment

    curl -X GET curl https://sandbox-oba.revolut.com/domestic-payments/{payment_id}
    
    curl -X GET curl 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"
          }
        }
      },
      "Risk": {
        "PaymentContextCode": "EcommerceGoods",
        "MerchantCategoryCode": "5967",
        "MerchantCustomerIdentification": "1238808123123",
        "DeliveryAddress": {
          "AddressLine": [
            "7"
          ],
          "StreetName": "Apple Street",
          "BuildingNumber": "1",
          "PostCode": "E2 7AA",
          "TownName": "London",
          "Country": "UK"
        }
      }
    }
    

    This endpoint returns state of a payment

    Confirmation of funds

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

    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 Open Banking API documentation.

    Create Funds Confirmations

    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

    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 report daily and keep them for last 90 days.

    Errors

    The API uses the following error codes:

    Code Meaning
    400 Bad Request -- Your request is invalid.
    401 Unauthorized -- Your API key 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.