Revolut Applications API

These endpoints let you manage your applications. Applications can also be created in the [Developer Portal](https://developer.revolut.com/portal/). For more information, see: - [Register your application using DCR](https://developer.revolut.com/docs/guides/build-banking-apps/register-your-application-using-dcr/) - [Manage your applications](https://developer.revolut.com/docs/guides/build-banking-apps/manage-your-applications/get-an-application)

Business capability
Developer Identity & Credential Management BC-4270.40

Operations 5

GET /distinguished-name Get a distinguished name (DN) #
POST /register Register an application #
GET /register/{ClientId} Get an application #
PUT /register/{ClientId} Update an application #
DELETE /register/{ClientId} Delete an application #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/revolut-applications-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

revolut-applications-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Open Banking Applications API
  description: The Revolut Open Banking API is the gateway for third-party providers to interact with Revolut customers and products.
  version: v3.1.0
servers:
- url: https://oba-auth.revolut.com
  description: Production server (uses live data)
- url: https://sandbox-oba-auth.revolut.com
  description: Sandbox server (uses test data)
tags:
- name: Applications
  description: 'These endpoints let you manage your applications.


    Applications can also be created in the Developer Portal.


    For more information, see:

    - Register your application using DCR

    - Manage your applications'
paths:
  /distinguished-name:
    servers:
    - url: https://oba-auth.revolut.com
      description: Production server (uses live data)
    - url: https://sandbox-oba-auth.revolut.com
      description: Sandbox server (uses test data)
    get:
      tags:
      - Applications
      summary: Get a distinguished name (DN)
      description: 'Get the distinguished name (DN) of your transport certificate which is used to identify your requests.


        This parameter is needed in order to register or update your application via DCR.'
      operationId: getDistinguishedName
      responses:
        '200':
          description: Distinguished name
          content:
            application/json:
              schema:
                type: object
                required:
                - tls_client_auth_dn
                properties:
                  tls_client_auth_dn:
                    type: string
                    description: The distinguished name (DN) of your transport certificate.
              example:
                tls_client_auth_dn: organizationIdentifier=PSDUK-REVCA-95248b85-bc39-413a-8a16-b5abbf6202cb,CN=2kiXQyo0tedjW2somjSgH7,OU=001580000103UAvAAM,O=Revolut,C=GB
        '401':
          description: Unauthorized
          content: {}
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OBErrorResponse1'
  /register:
    servers:
    - url: https://oba-auth.revolut.com
      description: Production server (uses live data)
    - url: https://sandbox-oba-auth.revolut.com
      description: Sandbox server (uses test data)
    post:
      tags:
      - Applications
      security:
      - AccessToken:
        - openid
      summary: Register an application
      description: 'Register an application via DCR.

        This endpoint accepts only JWT, which needs to be precalculated.


        For more information, see Register your application using DCR: Create a JWT.'
      operationId: registerApplication
      requestBody:
        required: true
        description: Provide a JWT signed with a valid signing key
        content:
          text/plain:
            schema:
              type: string
              description: A JWT [calculated](https://developer.revolut.com/docs/guides/build-banking-apps/register-your-application-using-dcr/create-a-jwt) for your application, signed with a valid signing key.
            examples:
              testJwt:
                summary: Sample JWT
                value: eyJhbGciOiJQUzI1NiIsImtpZCI6ImFwcDIwMjMwNTE2In0.eyJpc3MiOiJleGFtcGxlLmNvbSIsImF1ZCI6InJldm9sdXQiLCJleHAiOjE4OTk3OTYyNTQsImlhdCI6MTcwNTMyMDk5MCwiaWRfdG9rZW5fc2lnbmVkX3Jlc3BvbnNlX2FsZyI6IlBTMjU2IiwicmVxdWVzdF9vYmplY3Rfc2lnbmluZ19hbGciOiJQUzI1NiIsInRva2VuX2VuZHBvaW50X2F1dGhfbWV0aG9kIjoidGxzX2NsaWVudF9hdXRoIiwiYXBwbGljYXRpb25fdHlwZSI6IndlYiIsInJlZGlyZWN0X3VyaXMiOlsiaHR0cHM6Ly9leGFtcGxlLmNvbSJdLCJzY29wZSI6Im9wZW5pZCBwYXltZW50cyBhY2NvdW50cyIsInRsc19jbGllbnRfYXV0aF9kbiI6Im9yZ2FuaXphdGlvbklkZW50aWZpZXI9UFNEVUstUkVWQ0EtOTUyNDhiODUtYmMzOS00MTNhLThhMTYtYjVhYmJmNjIwMmNiLENOPTJraVhReW8wdGVkalcyc29talNnSDcsT1U9MDAxNTgwMDAwMTAzVUF2QUFNLE89UmV2b2x1dCxDPUdCIiwic29mdHdhcmVfc3RhdGVtZW50IjoiZXlKaGJHY2lPaUp1YjI1bEluMD0uZXlKemIyWjBkMkZ5WlY5amJHbGxiblJmYm1GdFpTSTZJa1JEVWlCQmNIQnNhV05oZEdsdmJpQXhOekExTXpJd09Ua3dJaXdpYjNKblgycDNhM05mWlc1a2NHOXBiblFpT2lKb2RIUndjem92TDJWNFlXMXdiR1V1WTI5dEwyMTVhbmRyY3k1cWMyOXVJaXdpYzI5bWRIZGhjbVZmY21Wa2FYSmxZM1JmZFhKcGN5STZXeUpvZEhSd2N6b3ZMMlY0WVcxd2JHVXVZMjl0SWwxOS4ifQ.6XAf_Vy7R7ihta_dS91ISFhTsL5ro8UrLVSw2md_IyviGK1HKf-Ua6QwZJxVnyIkJO-Ik9Nqr20v8CA7v0i1Apr6iqy5IvsKP3md6xjAPdrqYrLHqlL0MCycyCpu-9mo53LHxR32uJ2lEz8ITx84_zjeiHVMCsH-7u386uA8HhA7WEii9OlYfp6AOnSQIRBmIcdYWE9RPdAKfnzVJ8FiEnxxBnebIrkhD1Eacx_BqhfqafJHO3DUuCNNIt08L9NgRMMABXxjiA0zS_qXCSgCGhxbFQMdLXNSIgbDEXx7ET3sNTwmu_U14Yh5qJ_uGSkNhWB7qae5uq2dQCO63d7I43
      responses:
        '200':
          description: Successfully created application
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegisterApplicationResponse'
              example:
                iss: example.com
                iat: 1705330836
                exp: 1899796254
                application_type: web
                client_id: e63d14ae-3b0b-4b6b-85e3-0b221e245c4e
                token_endpoint_auth_method: tls_client_auth
                tls_client_auth_dn: organizationIdentifier=PSDUK-REVCA-95248b85-bc39-413a-8a16-b5abbf6202cb,CN=2kiXQyo0tedjW2somjSgH7,OU=001580000103UAvAAM,O=Revolut,C=GB
                software_statement: eyJhbGciOiJub25lIn0=.eyJzb2Z0d2FyZV9jbGllbnRfbmFtZSI6IkRDUiBBcHBsaWNhdGlvbiAxNzA1MzIwOTkwIiwib3JnX2p3a3NfZW5kcG9pbnQiOiJodHRwczovL2V4YW1wbGUuY29tL215andrcy5qc29uIiwic29mdHdhcmVfcmVkaXJlY3RfdXJpcyI6WyJodHRwczovL2V4YW1wbGUuY29tIl19.
                id_token_signed_response_alg: PS256
                request_object_signing_alg: PS256
                redirect_uris:
                - https://example.com
                org_jwks_endpoint: https://example.com/
                grant_types: []
                scope: openid payments accounts
        '400':
          description: Unreachable JWKS
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OBErrorResponse1'
              example:
                Code: 400 Bad Request
                Message: Invalid request parameters
                Id: 126S23QGPZ8HG
                Errors:
                - ErrorCode: UK.OBIE.Field.Invalid
                  Message: Failed to fetch public key from https://example.com/myjwks.json
  /register/{ClientId}:
    servers:
    - url: https://oba-auth.revolut.com
      description: Production server (uses live data)
    - url: https://sandbox-oba-auth.revolut.com
      description: Sandbox server (uses test data)
    get:
      tags:
      - Applications
      summary: Get an application
      security:
      - AccessToken:
        - openid
      description: Retrieve an already registered application.
      operationId: getApplication
      parameters:
      - $ref: '#/components/parameters/ClientId'
      responses:
        '200':
          description: Application data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetApplicationResponse'
              examples:
                appData:
                  summary: Sample application data
                  value:
                    client_id: 6136922a-6163-4c66-a4be-9059bf6a1730
                    token_endpoint_auth_method: tls_client_auth
                    tls_client_auth_dn: organizationIdentifier=PSDUK-REVCA-95248b85-bc39-413a-8a16-b5abbf6202cb,CN=2kiXQyo0tedjW2somjSgH7,OU=001580000103UAvAAM,O=Revolut,C=GB
                    id_token_signed_response_alg: PS256
                    request_object_signing_alg: PS256
                    redirect_uris:
                    - https://example.com
                    org_jwks_endpoint: https://example.com/myjwks.json
                    org_name: ACME Payments Ltd
                    scope: openid payments accounts
        '403':
          description: Access forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OBErrorResponse1'
              example:
                Code: 403 Forbidden
                Message: Access forbidden
                Id: EE2Q9YDN2OE7
                Errors:
                - ErrorCode: UK.OBIE.Resource.Forbidden
                  Message: Access forbidden
    put:
      tags:
      - Applications
      summary: Update an application
      security:
      - AccessToken:
        - openid
      description: 'Update an existing application.


        This endpoint only accepts JWT, which must be precalculated as described in Create a JWT.'
      operationId: updateApplication
      parameters:
      - $ref: '#/components/parameters/ClientId'
      requestBody:
        required: true
        description: Provide a JWT signed with a valid signing key
        content:
          text/plain:
            schema:
              type: string
              description: A new JWT [calculated](https://developer.revolut.com/docs/guides/build-banking-apps/register-your-application-using-dcr/create-a-jwt) for your application, signed with a valid signing key.
            examples:
              testJwt:
                summary: Sample JWT
                value: eyJhbGciOiJQUzI1NiIsImtpZCI6ImFwcDIwMjMwNTE2In0.eyJpc3MiOiJleGFtcGxlLmNvbSIsImF1ZCI6InJldm9sdXQiLCJleHAiOjE4OTk3OTYyNTQsImlhdCI6MTcwNTMyMDk5MCwiaWRfdG9rZW5fc2lnbmVkX3Jlc3BvbnNlX2FsZyI6IlBTMjU2IiwicmVxdWVzdF9vYmplY3Rfc2lnbmluZ19hbGciOiJQUzI1NiIsInRva2VuX2VuZHBvaW50X2F1dGhfbWV0aG9kIjoidGxzX2NsaWVudF9hdXRoIiwiYXBwbGljYXRpb25fdHlwZSI6IndlYiIsInJlZGlyZWN0X3VyaXMiOlsiaHR0cHM6Ly9leGFtcGxlLmNvbSJdLCJzY29wZSI6Im9wZW5pZCBwYXltZW50cyBhY2NvdW50cyIsInRsc19jbGllbnRfYXV0aF9kbiI6Im9yZ2FuaXphdGlvbklkZW50aWZpZXI9UFNEVUstUkVWQ0EtOTUyNDhiODUtYmMzOS00MTNhLThhMTYtYjVhYmJmNjIwMmNiLENOPTJraVhReW8wdGVkalcyc29talNnSDcsT1U9MDAxNTgwMDAwMTAzVUF2QUFNLE89UmV2b2x1dCxDPUdCIiwic29mdHdhcmVfc3RhdGVtZW50IjoiZXlKaGJHY2lPaUp1YjI1bEluMD0uZXlKemIyWjBkMkZ5WlY5amJHbGxiblJmYm1GdFpTSTZJa1JEVWlCQmNIQnNhV05oZEdsdmJpQXhOekExTXpJd09Ua3dJaXdpYjNKblgycDNhM05mWlc1a2NHOXBiblFpT2lKb2RIUndjem92TDJWNFlXMXdiR1V1WTI5dEwyMTVhbmRyY3k1cWMyOXVJaXdpYzI5bWRIZGhjbVZmY21Wa2FYSmxZM1JmZFhKcGN5STZXeUpvZEhSd2N6b3ZMMlY0WVcxd2JHVXVZMjl0SWwxOS4ifQ.6XAf_Vy7R7ihta_dS91ISFhTsL5ro8UrLVSw2md_IyviGK1HKf-Ua6QwZJxVnyIkJO-Ik9Nqr20v8CA7v0i1Apr6iqy5IvsKP3md6xjAPdrqYrLHqlL0MCycyCpu-9mo53LHxR32uJ2lEz8ITx84_zjeiHVMCsH-7u386uA8HhA7WEii9OlYfp6AOnSQIRBmIcdYWE9RPdAKfnzVJ8FiEnxxBnebIrkhD1Eacx_BqhfqafJHO3DUuCNNIt08L9NgRMMABXxjiA0zS_qXCSgCGhxbFQMdLXNSIgbDEXx7ET3sNTwmu_U14Yh5qJ_uGSkNhWB7qae5uq2dQCO63d7I43
      responses:
        '200':
          description: Application data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetApplicationResponse'
              examples:
                appData:
                  summary: Sample app data
                  value:
                    client_id: 6136922a-6163-4c66-a4be-9059bf6a1730
                    token_endpoint_auth_method: tls_client_auth
                    tls_client_auth_dn: organizationIdentifier=PSDUK-REVCA-95248b85-bc39-413a-8a16-b5abbf6202cb,CN=2kiXQyo0tedjW2somjSgH7,OU=001580000103UAvAAM,O=Revolut,C=GB
                    id_token_signed_response_alg: PS256
                    request_object_signing_alg: PS256
                    redirect_uris:
                    - https://example.com
                    org_jwks_endpoint: https://example.com/myjwks.json
                    org_name: ACME Payments Ltd
                    scope: openid payments accounts
        '403':
          description: Access forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OBErrorResponse1'
              example:
                Code: 403 Forbidden
                Message: Access forbidden
                Id: EE2Q9YDN2OE7
                Errors:
                - ErrorCode: UK.OBIE.Resource.Forbidden
                  Message: Access forbidden
    delete:
      tags:
      - Applications
      summary: Delete an application
      security:
      - AccessToken:
        - openid
      description: Delete an existing application.
      operationId: deleteApplication
      parameters:
      - $ref: '#/components/parameters/ClientId'
      responses:
        '204':
          description: No content
          content: {}
        '403':
          description: Access forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OBErrorResponse1'
              example:
                Code: 403 Forbidden
                Message: Access forbidden
                Id: EE2Q9YDN2OE7
                Errors:
                - ErrorCode: UK.OBIE.Resource.Forbidden
                  Message: Access forbidden
components:
  parameters:
    ClientId:
      name: ClientId
      in: path
      description: The Client ID of the application.
      required: true
      schema:
        type: string
  schemas:
    GetApplicationResponse:
      type: object
      properties:
        client_id:
          type: string
          description: The Client ID used to identify the application.
        token_endpoint_auth_method:
          type: string
          description: 'Specifies the authentication method for the `/token` endpoint.


            Currently, only `tls_client_auth` is supported.'
          enum:
          - tls_client_auth
        tls_client_auth_dn:
          type: string
          description: Distinguished name (DN) of the transport certificate used by the [TPP](https://developer.revolut.com/docs/guides/build-banking-apps/glossary).
        id_token_signed_response_alg:
          type: string
          description: The signing algorithm used to sign the `id_token` JWTs. Currently, only `PS256` is supported.
          enum:
          - tls_client_auth
        request_object_signing_alg:
          type: string
          description: The signing algorithm used to sign request objects. Currently, only `PS256` is supported.
          enum:
          - tls_client_auth
        redirect_uris:
          type: array
          items:
            type: string
            format: uri
          description: List of the registered URIs that the [TPP](https://developer.revolut.com/docs/guides/build-banking-apps/glossary) will use to interact with the [ASPSP](https://developer.revolut.com/docs/guides/build-banking-apps/glossary).
        org_jwks_endpoint:
          type: string
          format: uri
          description: Public URI endpoint where the [TPP](https://developer.revolut.com/docs/guides/build-banking-apps/glossary) has uploaded their JWKS in JSON format.
        org_name:
          type: string
          description: Legal Entity Identifier or other known organisation name.
        scope:
          type: string
          description: 'List of scopes that the [TPP](https://developer.revolut.com/docs/guides/build-banking-apps/glossary) has access to, provided as a **space-separated string**.

            For example, `"openid accounts payments"`.

            Possible scopes to list: `openid`, `accounts`, `payments`, `fundsconfirmation`.'
          example: openid payments
    OBError1:
      required:
      - ErrorCode
      - Message
      type: object
      properties:
        ErrorCode:
          maxLength: 128
          minLength: 1
          type: string
          description: The error code in low level, for example, `UK.OBIE.Field.Missing`.
        Message:
          maxLength: 500
          minLength: 1
          type: string
          description: 'The description of the error that occurred.

            For example, `A mandatory field isn''t supplied`, `RequestedExecutionDateTime must be in future`, and `OBIE doesn''t standardise this field`.'
    RegisterApplicationResponse:
      type: object
      properties:
        iss:
          type: string
          description: The principal that issued the JWT.
        iat:
          type: integer
          description: 'The time the JWT was issued, which is used to determine the age of the JWT.

            Provided in seconds in Unix timestamp format.'
        exp:
          type: integer
          description: 'The expiration time starting from which the JWT must not be accepted for processing.

            Provided in seconds in Unix timestamp format.'
        application_type:
          type: string
          description: The type of application. Either `web` or `mobile`.
          enum:
          - web
          - mobile
        client_id:
          type: string
          description: The Client ID used to identify the application.
        token_endpoint_auth_method:
          type: string
          description: 'Specifies the authentication method for the `/token` endpoint.

            Currently, only `tls_client_auth` is supported.'
          enum:
          - tls_client_auth
        tls_client_auth_dn:
          type: string
          description: Distinguished name of the transport certificate used by the [TPP](https://developer.revolut.com/docs/guides/build-banking-apps/glossary).
        software_statement:
          type: string
          description: 'Software statement assertion issued by the issuer.


            The data model for the software statements issued by the Open Banking directory are documented as part of the Directory Specification.'
        id_token_signed_response_alg:
          type: string
          description: The signing algorithm used to sign the `id_token` JWTs. Currently, only `PS256` is supported.
          enum:
          - PS256
        request_object_signing_alg:
          type: string
          description: The signing algorithm used to sign request objects. Currently, only `PS256` is supported.
          enum:
          - PS256
        redirect_uris:
          type: array
          items:
            type: string
            format: uri
          description: List of registered URIs that the [TPP](https://developer.revolut.com/docs/guides/build-banking-apps/glossary) will use to interact with the [ASPSP](https://developer.revolut.com/docs/guides/build-banking-apps/glossary).
        org_jwks_endpoint:
          type: string
          format: uri
          description: Public URI endpoint where the [TPP](https://developer.revolut.com/docs/guides/build-banking-apps/glossary) has uploaded their JWKS in JSON format.
        grant_types:
          type: array
          description: 'Accepted grant types.

            A JSON array specifying what the [TPP](https://developer.revolut.com/docs/guides/build-banking-apps/glossary) can request to be supplied to the `/token` endpoint in exchange for an access token.'
          items:
            type: string
        scope:
          type: string
          description: List of scopes that the [TPP](https://developer.revolut.com/docs/guides/build-banking-apps/glossary) has access to, separated by spaces.
    OBErrorResponse1:
      required:
      - Code
      - Errors
      - Message
      type: object
      properties:
        Code:
          maxLength: 40
          minLength: 1
          type: string
          description: The error code in high level that helps categorize the error.
        Id:
          maxLength: 40
          minLength: 1
          type: string
          description: The ID of the error. You can share this ID with Revolut support for troubleshooting.
        Message:
          maxLength: 500
          minLength: 1
          type: string
          description: 'The error message.

            For example, `There is something wrong with the request parameters provided`.'
        Errors:
          minItems: 1
          type: array
          items:
            $ref: '#/components/schemas/OBError1'
      description: The detailed information about the error to help troubleshooting.
  securitySchemes:
    AccessToken:
      type: apiKey
      description: 'Each Open Banking API must contain an authorization header in the following format to make a call: `Bearer <yourAccessToken>`.


        Before you start, ensure that you''ve got an access token with the correct `scope` using the `/token` endpoint.

        You need to get the authorization code first and exchange it for an access token.


        For more information, see [Tutorial: Get account and transaction information](https://developer.revolut.com/docs/guides/build-banking-apps/tutorials/get-account-and-transaction-information) and [Tutorial: Initiate your first payment](https://developer.revolut.com/docs/guides/build-banking-apps/tutorials/initiate-your-first-payment) as examples.'
      name: Authorization
      in: header
    JWS:
      type: apiKey
      description: 'Open Banking API Payment requests additionally require a JSON Web Signature (JWS) which needs to be added to the header of the request.

        The JWS signature must be obtained using the full content of the payload.'
      name: x-jws-signature
      in: header