token-io Banks v1 API

These endpoints filter and fetch the list of connected banks, get information on specific banks, and initiate authorization with user-selected banks using Payments v1.

OpenAPI Specification

token-io-banks-v1-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Token.io's Open Banking API for TPPs Account on File Banks v1 API
  description: '<b>Token.io''s Open Banking API</b><br/><br/>Token.io Support: <a href="https://support.token.io" target="_blank">support.token.io</a><br/><br/>The Token.io Open Banking API enables you to connect securely with banks for a range of services.<br/><br/> Using our API you can: <ul><li>provide authorized access to an authenticated user''s account information</li><li>get information on specific banks</li><li>initiate authorization with a user-selected bank</li><li>initate and track single immediate payments and future dated payments</li><li>use variable recurring payments (VRP) to grant long-held consents to Payment Initiation Service Providers (PISPs) to initiate series of payments from users'' bank accounts</li><li>carry out settlements, payments and refunds using our settlement accounts</li></ul><br/>For more information see our <a href="https://developer.token.io/token_rest_api_doc/content/e-rest/dashboard-intro.htm" target="_blank">developer documentation</a>.'
  version: ''
servers:
- url: https://api.token.io
tags:
- name: Banks v1
  description: These endpoints filter and fetch the list of connected banks, get information on specific banks, and initiate authorization with user-selected banks using Payments v1.
paths:
  /banks:
    get:
      tags:
      - Banks v1
      summary: Get banks v1
      description: The `GET /banks` endpoint retrieves a list of connected banks matching the parameters specified.
      operationId: GatewayService.GetBanks
      parameters:
      - name: page
        in: query
        description: The index of the page currently being retrieved.
        required: false
        style: form
        explode: true
        schema:
          type: integer
          format: int32
        example: 1
      - name: perPage
        in: query
        description: The number of records per page.
        required: false
        style: form
        explode: true
        schema:
          type: integer
          format: int32
          example: 175
      - name: sort
        in: query
        description: The key to sort the result. This can be `name` (<i>i.e.</i>, bank name), `provider`, or `country`.
        required: false
        style: form
        explode: true
        schema:
          type: string
          example: country
          default: name
      - name: memberId
        in: query
        description: The Token.io-assigned member id of the TPP.
        required: false
        style: form
        explode: true
        schema:
          type: string
        example: m:nP4w3u5y8ddrxDJkjimgSX9e4fZ:5zKtXEAq
      - name: ids
        in: query
        description: Filters for banks with a `bankId` (case-insensitive) matching any of the ids listed, up to a maximum of 1000. Only exact (full string) matches are returned.
        required: false
        style: form
        explode: true
        schema:
          type: array
          example:
          - goldbank
          - opalbank
          - platinumbank
          items:
            type: string
      - name: search
        in: query
        description: Filters for banks with a name or identifiers containing this search string.
        required: false
        style: form
        explode: true
        schema:
          type: string
          example: hsbc
      - name: tppId
        in: query
        description: Filters for banks for which the TPP represented by this `tppId` has access.
        required: false
        style: form
        explode: true
        schema:
          type: string
        example: 4h27g823-g73s-07v3-l49s-prte94bf21v
      - name: providers
        in: query
        description: Filters for banks that are accessed through any of the listed providers.
        required: false
        style: form
        explode: true
        schema:
          type: array
          example: Token.io
          items:
            type: string
      - name: bankCode
        in: query
        description: Filters for banks with a BIC (or BLZ, if German) that matches this `bankCode`. The BIC must have a string length of 8 or 11. The BLZ must have a string length of 8.
        required: false
        style: form
        explode: true
        schema:
          type: string
        example: NBAGDE3E
      - name: countries
        in: query
        description: Filters for banks that are located in the countries specified by this list of two-letter country codes in upper case (ISO 3166-1 alpha-2).
        required: false
        style: form
        explode: true
        schema:
          type: array
          example:
          - IT
          - DE
          - RO
          items:
            type: string
      - name: bank_features.supports_send_payment.value
        in: query
        description: Filters for banks that support payment initiation.
        required: false
        style: form
        explode: true
        schema:
          type: boolean
          format: boolean
          example: false
          default: false
      - name: bank_features.supports_receive_payment.value
        in: query
        description: Filters for banks that support receiving payments.
        required: false
        style: form
        explode: true
        schema:
          type: boolean
          format: boolean
          example: false
          default: false
      - name: bank_features.supports_balance.value
        in: query
        description: Filters for the banks that support retrieving balances.
        required: false
        style: form
        explode: true
        schema:
          type: boolean
          format: boolean
          example: false
          default: false
      - name: bank_features.supports_scheduled_payment.value
        in: query
        description: Filters for banks that support future dated scheduled payments.
        required: false
        style: form
        explode: true
        schema:
          type: boolean
          format: boolean
          example: false
          default: false
      - name: bank_features.supports_standing_order.value
        in: query
        description: Filters for banks that support recurring payments/standing orders.
        required: false
        style: form
        explode: true
        schema:
          type: boolean
          format: boolean
          example: false
          default: false
      - name: bank_features.requires_one_step_payment.value
        in: query
        description: Filters for banks that only support immediate redemption of transfers.
        required: false
        style: form
        explode: true
        schema:
          type: boolean
          format: boolean
          example: false
          default: false
      - name: bank_features.supports_funds_confirmation.value
        in: query
        description: Filters for the banks that support confirmation of available funds.
        required: false
        style: form
        explode: true
        schema:
          type: boolean
          format: boolean
          example: false
          default: false
      - name: bank_features.supports_return_refund_account.value
        in: query
        description: Filters for the banks that support request of refund account.
        required: false
        style: form
        explode: true
        schema:
          type: boolean
          format: boolean
          example: false
          default: false
      - name: bank_features.supports_transactions_date_filter.value
        in: query
        description: Filters for banks that support retrieving transactions by date filter.
        required: false
        style: form
        explode: true
        schema:
          type: boolean
          format: boolean
          example: false
          default: false
      - name: bank_features.supports_account_information.value
        in: query
        description: Filters for banks that support retrieval of account information.
        required: false
        style: form
        explode: true
        schema:
          type: boolean
          format: boolean
          example: false
          default: false
      - name: bank_features.supports_single_payment.value
        in: query
        description: Filters for banks that support single immediate payments.
        required: false
        style: form
        explode: true
        schema:
          type: boolean
          format: boolean
          example: false
          default: false
      - name: bank_features.supports_variable_recurring_payment.value
        x-internal: true
        in: query
        description: Filters for banks that support variable recurring payments.
        required: false
        style: form
        explode: true
        schema:
          type: boolean
          format: boolean
          example: false
          default: false
      - name: bics
        in: query
        description: Filters for banks whose BIC matches any of the listed BICs (case-insensitive), up to a maximum of 1000.
        required: false
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
            example: BKENGB2L, BNPAFRPH, NBAGDE3E
      - name: supportedPaymentNetworks
        in: query
        description: Filters for banks that support any of the listed payment networks.
        required: false
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: bankGroup
        in: query
        description: Filters for banks that are part of the bank group specified.
        required: false
        style: form
        explode: true
        schema:
          type: string
        example:
        - HSBC
        - Coop
      - name: bankSubGroup
        in: query
        description: Filters for banks that are part of the bank sub-group specified.
        required: false
        style: form
        explode: true
        schema:
          type: string
        example:
        - CMM Grand
        - Banque Populaire
        - La Banque
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetBanksResponse'
        '400':
          description: The client specified an invalid argument
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_400'
        '401':
          description: The authorization information is missing or invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_401'
        '403':
          description: Permission to access this endpoint is denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_403'
        '404':
          description: The requested entity, such as a payment, was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_404'
        '429':
          description: Too many requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_429'
        '500':
          description: An unexpected or internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_500'
        '501':
          description: The operation was not implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_501'
        '503':
          description: Service is unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_503'
        '504':
          description: Gateway has timed out
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_504'
      deprecated: false
      security:
      - Bearer: []
      - BasicAuth: []
      x-hideTryItPanel: true
  /bank/countries:
    get:
      tags:
      - Banks v1
      summary: Get bank countries
      description: The `GET /banks/countries` endpoint retrieves the list of countries that have connected banks which match the parameters specified.
      operationId: GatewayService.GetBanksCountries
      parameters:
      - name: ids
        in: query
        description: Filters for banks with bank ids that are represented in this list of ids (case-insensitive), up to a maximum of 1000.
        required: false
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
        example:
        - goldbank
        - opalbank
        - platinumbank
      - name: search
        in: query
        description: Filters for banks with names or identifiers that contain this search string (case sensitive).
        required: false
        style: form
        explode: true
        schema:
          type: string
          example: banca
      - name: tppId
        in: query
        description: Filters for banks to which the TPP with this `tppId` has access.
        required: false
        style: form
        explode: true
        schema:
          type: string
          example: 9fk3m361-f12r-04b9-p39f-rio2m3pw9v8s
      - name: bankCode
        in: query
        description: Filters for banks with a BIC (or BLZ, if German) that matches this `bankCode`. The BIC must have a string length of 8 or 11. The BLZ must have a string length of 8.
        required: false
        style: form
        explode: true
        schema:
          type: string
          example: NBAGDE3E
      - name: countries
        in: query
        description: Filters for banks that are located in the countries specified by this list of two-letter country code in upper case (ISO 3166-1 alpha-2).
        required: false
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
            example: GB, RO, AT
      - name: providers
        in: query
        description: Filters for banks that are accessed through any of this list of providers.
        required: false
        style: form
        explode: true
        schema:
          type: array
          example: Token.io
          items:
            type: string
      - name: bank_features.supports_send_payment.value
        in: query
        description: Filters for banks that support payment initiation.
        required: false
        style: form
        explode: true
        schema:
          type: boolean
          format: boolean
          example: false
          default: false
      - name: bank_features.supports_receive_payment.value
        in: query
        description: Filters for banks that support the receipt of payments.
        required: false
        style: form
        explode: true
        schema:
          type: boolean
          format: boolean
          example: false
          default: false
      - name: bank_features.supports_balance.value
        in: query
        description: Filters for the banks that support retrieving account balances.
        required: false
        style: form
        explode: true
        schema:
          type: boolean
          format: boolean
          example: false
          default: false
      - name: bank_features.supports_scheduled_payment.value
        in: query
        description: Filters for banks that support future dated scheduled payments.
        required: false
        style: form
        explode: true
        schema:
          type: boolean
          format: boolean
          example: false
          default: false
      - name: bank_features.supports_standing_order.value
        in: query
        description: Filters for banks that support standing orders/recurring payments.
        required: false
        style: form
        explode: true
        schema:
          type: boolean
          format: boolean
          example: false
          default: false
      - name: bank_features.requires_one_step_payment.value
        in: query
        description: Filters for banks that only support immediate redemption of transfer tokens.
        required: false
        style: form
        explode: true
        schema:
          type: boolean
          format: boolean
          example: false
          default: false
      - name: bank_features.supports_funds_confirmation.value
        in: query
        description: Filters for banks that support confirmation of available funds.
        required: false
        style: form
        explode: true
        schema:
          type: boolean
          format: boolean
          example: false
          default: false
      - name: bank_features.supports_return_refund_account.value
        in: query
        description: Filters for banks that support the request of refund account.
        required: false
        style: form
        explode: true
        schema:
          type: boolean
          format: boolean
          example: false
          default: false
      - name: bank_features.supports_transactions_date_filter.value
        in: query
        description: Filters for banks that support retrieving transactions by date filter.
        required: false
        style: form
        explode: true
        schema:
          type: boolean
          format: boolean
          example: false
          default: false
      - name: bank_features.supports_account_information.value
        in: query
        description: Filters for banks that support retrieving account information using Account Information Services (AIS).
        required: false
        style: form
        explode: true
        schema:
          type: boolean
          format: boolean
          example: false
          default: false
      - name: bank_features.supports_single_payment.value
        in: query
        description: Filters for banks that support single immediate payments.
        required: false
        style: form
        explode: true
        schema:
          type: boolean
          format: boolean
          example: false
          default: false
      - name: bank_features.supports_variable_recurring_payment.value
        in: query
        description: Filters for banks that support variable recurring payments.
        required: false
        style: form
        explode: true
        schema:
          type: boolean
          format: boolean
          example: false
          default: false
      - name: memberId
        in: query
        description: The Token.io-assigned member id of the TPP.
        required: false
        style: form
        explode: true
        schema:
          type: string
          example: m:nP4w3u5y8ddrxDJkjimgSX9e4fZ:5zKtXEAq
        example: m:nP4w3u5y8ddrxDJkjimgSX9e4fZ:5zKtXEAq
      - name: supportedPaymentNetworks
        in: query
        description: Filters for banks that support any of the listed payment networks.
        required: false
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
            example: SEPA
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetBanksCountriesResponse'
        '400':
          description: The client specified an invalid argument
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_400'
        '401':
          description: The authorization information is missing or invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_401'
        '403':
          description: Permission to access this endpoint is denied
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_403'
        '404':
          description: The requested entity, such as a payment, was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_404'
        '429':
          description: Too many requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_429'
        '500':
          description: An unexpected or internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_500'
        '501':
          description: The operation was not implemented
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_501'
        '503':
          description: Service is unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_503'
        '504':
          description: Gateway has timed out
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_504'
      deprecated: false
      security:
      - Bearer: []
      - BasicAuth: []
      x-hideTryItPanel: true
components:
  schemas:
    PaymentNotFoundError:
      required:
      - paymentId
      type: object
      properties:
        errorCode:
          example: NOT_FOUND
        paymentId:
          type: string
          description: The requested entity, the `paymentID`, was not found.
          example: pm2:12345abcd:abcde
      description: 'The error object returned when given payment cannot be found: ResourceNotFound.'
      allOf:
      - $ref: '#/components/schemas/ErrorWithCode'
    MandatoryFieldsStandingOrderInternational:
      type: object
      properties:
        fields:
          type: array
          description: The full path to the field within the international standing order.
          example:
          - standing_order_body.instructions.transfer_destinations.customer_data.legal_names
          - standing_order_body.instructions.source.bic
          - standing_order_body.instructions.source.account_identifier
          items:
            type: string
        PolishApiFields:
          type: array
          description: Lists other Polish API fields which must be included in the international token request.
          example: standing_order_body.instructions.metadata.provider_transfer_metadata.polish_api_transfer_metadata.delivery_mode
          items:
            type: string
        StetFields:
          type: array
          description: Lists other STET API fields which must be included in the international token request.
          example: standing_order_body.instructions.metadata.provider_transfer_metadata.polish_api_transfer_metadata.delivery_mode
          items:
            type: string
      description: Specifies the mandatory fields for an international standing order.
    MandatoryFieldsAccessDomestic:
      type: object
      properties:
        fields:
          type: array
          description: The full path to the field within the domestic access request.
          example:
          - access_body.instructions.access_destinations.customer_data.legal_names
          - access_body.instructions.source.bic
          - access_body.instructions.source.account_identifier
          items:
            type: string
        PolishApiFields:
          type: array
          description: Lists other Polish API fields which must be included in the domestic access request.
          example: access_body.instructions.metadata.provider_access_metadata.polish_api_access_metadata.delivery_mode
          items:
            type: string
        StetFields:
          type: array
          description: Lists other STET API fields which must be included in the domestic access request.
          example: access_body.instructions.metadata.provider_access_metadata.stet_access_metadata.beneficiary.creditor_agent
          items:
            type: string
      description: Specifies the mandatory fields for an access request.
    inline_response_500:
      properties:
        error:
          allOf:
          - type: object
            properties:
              errorCode:
                type: string
                description: This is a textual error code categorising the error.
                example: InternalServerError
          - $ref: '#/components/schemas/ServerError'
    TransferDestinationElixir:
      title: elixir
      required:
      - accountNumber
      type: object
      properties:
        accountNumber:
          type: string
          description: The payee's Elixir-registered bank account number. You can also enter the iban in this field for iban accounts.
          example: FRAX82783423
      description: The interbank payment system in Poland.
    inline_response_504:
      required:
      - error
      type: object
      properties:
        error:
          $ref: '#/components/schemas/GatewayTimeoutError'
    inline_response_400:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/Error'
    ServerError:
      type: object
      properties:
        message:
          type: string
          description: A description of the error.
          example: This is a description of the error.
        tokenTraceId:
          type: string
          description: The trace identifier for the given call.
          example: '5678912345'
      description: 'This could refer to either an error by the payment service provider or the bank. When the bank reports a 5xx error, `"token-external-error": "true"` is set as a header in the HTTP response, indicating that the "internal" error originates from the bank. When one of the payment service providers internal services fails or when the bank reports a 4xx error, this header is not populated. The absence of this response header should be interpreted as `"token-external-error": "false"`.'
      allOf:
      - $ref: '#/components/schemas/ErrorWithCode'
    MaintenanceWindow:
      description: Details of the bank's planned or unplanned maintenance window.
      type: array
      items:
        $ref: '#/components/schemas/maintenance'
    inline_response_501:
      required:
      - error
      type: object
      properties:
        error:
          $ref: '#/components/schemas/NotImplementedError'
    Error:
      type: object
      properties:
        message:
          type: string
          description: A description of the error.
          example: This is a description of the error.
        tokenTraceId:
          type: string
          description: The trace identifier for the given call.
          example: '5678912345'
      description: The request does not have valid authentication credentials needed to perform the operation.
    ResourceExhaustedError:
      required:
      - paymentId
      type: object
      properties:
        errorCode:
          example: RESOURCE_EXHAUSTED
        paymentId:
          type: string
          description: The maximum number of requests has been reached.
          example: Resource exhausted. Check quota.
      description: Resource exhausted. Too many requests.
      allOf:
      - $ref: '#/components/schemas/ErrorWithCode'
    TransferDestinationEuDomesticNonEuroInstant:
      title: euDomesticNonEuroInstant
      oneOf:
      - $ref: '#/components/schemas/EUIbanAccount'
      - $ref: '#/components/schemas/BbanAccount'
      - $ref: '#/components/schemas/ClearingNumberAccount'
      - $ref: '#/components/schemas/SENoBankIdAccount'
      description: The instant payment system within a country using that country's non-Euro domestic currency. An IBAN account will require an `iban` and an optional `bic`, a BBAN account will require a `bban` and an optional `bic`, a Clearing Number account will require a `bban` and a `clearingNumber`. A SENoBankId account, where the currency is SEK or NOK, will require an `iban` and `bban` with an optional `bic` and/or `clearingNumber`. This option is only available for an HP flow that doesn't have a preselected `bankId`.
    BankV1:
      type: object
      properties:
        bankGroup:
          type: string
          description: The name of the banking group in which this bank holds membership.
          example: XYZ-Bank-Group
        bic:
          type: string
          description: The Business Identifier Code (BIC), <a href="https://www.iso.org/standard/84108.html" target="_blank">ISO 9362</a>, is the SWIFT Address assigned to a bank in order to send automated payments quickly and accurately to the banks concerned. It uniquely identifies the name and country, (and sometimes the branch) of the bank involved. BICs are often called SWIFT Codes and can be either 8 or 11 characters long.
          example: BOFIIE2D
        countries:
          type: array
          description: A list of two-letter country codes in upper case (ISO 3166-1 alpha-2), in which this bank operates.
          example:
          - DE
          - IT
          - GB
          items:
            type: string
        credentialFields:
          $ref: '#/components/schemas/CredentialFields'
        fieldsFormatInformation:
          type: array
          description: Contains bank-dependent formatting constraints indicating allowable characters, if any.
          items:
            $ref: '#/components/schemas/FieldFormatInformation'
        fullLogoUri:
          type: string
          description: The URI of the location of the full size bank icon.
          example: https://s3-us-west-2.amazonaws.com/tokenio-assets/1.0.0/logos/gold/gold_full.png
        id:
          type: string
          description: The Token.io bank identifier.
          example: ob-modelo
        identifier:
          type: string
          description: The optional identifier for the bank. This is not guaranteed to be unique across all banks.
          example: BLZ
        logoUri:
          type: string
          description: The URI of the location of the square bank avatar icon.
          example: https://s3-us-west-2.amazonaws.com/tokenio-assets/1.0.0/logos/gold/gold_square.png
        mandatoryFields:
          $ref: '#/components/schemas/MandatoryFields'
        maintenanceWindow:
          $ref: '#/components/schemas/MaintenanceWindow'
        name:
          type: string
          description: The commonly recognised name of the bank.
          example: Gold Bank
        openBankingStandard:
          $ref: '#/components/schemas/OpenBankingStandard'
        operationalTime:
          type: string
          description: Specifies the bank’s days and hours of operation in a normal week. Does not take into account bank-specific public holidays, which may or may not be considered out-of-operation time.
          example: MON to FRI, 00:00 to 24:00 GMT+1
        provider:
          type: string
          description: Open Banking SaaS adapter or provider.
          example: Token.io
        requiresExternalAuth:
          type: boolean
          description: The bank connection requires external authorization for creating transfers.
          format: boolean
          example: false
          default: false
        requiresOneStepPayment:
          type: boolean
          description: The bank connection only supports immediate redemption of transfer tokens.
          format: boolean
          example: false
          default: false
        scaMethods:
          $ref: '#/components/schemas/scaMethod'
        supportedTransferDestinationTypes:
          type: array
          description: Payment methods/rails supported by the bank.
          example:
          - SWIFT
          - FASTER_PAYMENTS
          - SEPA
          items:
            type: string
            oneOf:
            - $ref: '#/components/schemas/TransferDestinationBankgiro'
            - $ref: '#/components/schemas/TransferDestinationCustom'
            - $ref: '#/components/schemas/TransferDestinationElixir'
            - $ref: '#/components/schemas/TransferDestinationEuDomesticNonEuro'
            - $ref: '#/components/schemas/TransferDestinationEuDomesticNonEuroInstant'
            - $ref: '#/components/sc

# --- truncated at 32 KB (66 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/token-io/refs/heads/main/openapi/token-io-banks-v1-api-openapi.yml