token-io Payments v2 API

Creates and initiates a single immediate payment or a future-dated payment. Also supports initiating a Variable Recurring Payment (VRP) using an existing VRP mandate that has been created and authorised via the `/vrp-consent` endpoint.

Operations 5

POST /v2/payments Initiate a payment #
GET /v2/payments Get payments #
GET /v2/payments/{paymentId} Get a payment #
POST /v2/payments/{paymentId}/embedded-auth Provide information for embedded authentication #
GET /qr-code Generate QR code #

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/token-io-payments-v2-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

token-io-payments-v2-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: '1.0'
  title: Token.io's Open Banking API for TPPs Account on File Payments v2 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>.'
servers:
- url: https://api.token.io
tags:
- name: Payments v2
  description: Creates and initiates a single immediate payment or a future-dated payment. Also supports initiating a Variable Recurring Payment (VRP) using an existing VRP mandate that has been created and authorised via the `/vrp-consent` endpoint.
paths:
  /v2/payments:
    post:
      tags:
      - Payments v2
      summary: Initiate a payment
      description: 'The `POST /v2/payments` endpoint enables you to initiate a payment with a bank.<br/><br/>Once the payment has been initiated, the end user needs to authenticate themselves with their bank.<br/><br/><b>Check payment status:</b><br/><ol><li>If the status in the initiation response is `INITIATION_PENDING_REDIRECT_AUTH` or `INITIATION_PENDING_REDIRECT_HP`, redirect the user to the redirect url found in the authentication payload of the payment, to authenticate at the bank or at Token.io''s Hosted Pages.</li><br/><li>If the status in the initiation response is `INITIATION_PENDING_REDIRECT_PBL`, redirect the user to the payment link (redirect URL) found in the authentication payload. The user will be taken to Token.io’s Hosted Pages, where any missing information (such as amount or reference) can be provided before proceeding with payment authentication.</li><br/><li>If the status in the initiation response is `INITIATION_PENDING_EMBEDDED_AUTH`, collect the requested data listed in the authentication payload of the payment and use the `POST /v2/payments/{paymentId}/embedded-auth` endpoint to provide the requested field values.</li><br/><li>If the status in the initiation response is `INITIATION_PENDING`, Token.io needs more time to process this request with the bank. In the case of a successful scenario, the status will be updated to `INITIATION_PENDING_REDIRECT_AUTH`, `INITIATION_PENDING_EMBEDDED_AUTH` or `INITIATION_PENDING_DECOUPLED_AUTH` when the authentication details are ready. The update can be checked by the `GET /v2/payments/{paymentId}` endpoint or received via a webhook (see <a href="https://developer.token.io/token_rest_api_doc/content/e-rest/webhooks.htm" target="_blank">Webhooks</a>).</li><br/><li>If the status is `INITIATION_PENDING_DECOUPLED_AUTH`, the bank has requested a decoupled authentication from the user and Token.io is awaiting the result. No further action is required.</li></ol><br/><b>`request-timeout` header:</b><br/><br/>Banks may take some time to respond when a request is made. Therefore, Token.io recommends that you set a `request-timeout` header in your API-only `POST /v2/payments` requests to match the timeout of your client and avoid `DEADLINE_EXCEEDED` errors. If this is set, Token.io sends a response when this timeout period has passed and will update payment status as soon as the bank has responded.<br/>The following example demonstrates what happens when you set a timeout of 10 seconds and the call to the bank takes 15 seconds:<br/><br/><ol><li>The TPP makes a `POST /v2/payments` call.</li><br/><li>Token.io creates a resource with the status `INITIATION_PENDING`.</li><br/><li>Token.io starts the call to the bank.</li><br/><li>After 10 seconds from (1): Token.io returns the payment status `INITIATION_PENDING`.</li><br/><li>After 15 seconds from (3): Token.io receives a response from the bank and changes the status to, for example, `INITIATION_PENDING_REDIRECT_AUTH`. The update will be sent in a webhook, if TPP is subscribed for webhooks.</li><br/><li>The TPP makes the `GET /v2/payments/{id}` call and receives the payment with the status `INITIATION_PENDING_REDIRECT_AUTH`.</li></ol>'
      operationId: InitiatePayment
      parameters:
      - name: request-timeout
        in: header
        description: Sets the number of elapsed seconds until Token.io sends the response back, even if the call is not finished by that time (in which case the call will be completed asynchronously).
        schema:
          type: integer
        required: false
        example: 10
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/v2_payments_body'
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentResponse'
        '400':
          description: The client specified an invalid argument
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_400_2'
        '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'
        '500':
          description: An unexpected or internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_500'
      deprecated: false
      security:
      - Bearer: []
      - BasicAuth: []
      x-hideTryItPanel: true
    get:
      tags:
      - Payments v2
      summary: Get payments
      description: The `GET /v2/payments` endpoint provides you with a list of payments and their details.
      operationId: GetPayments
      parameters:
      - name: limit
        in: query
        description: The maximum number of records to return.
        required: true
        style: form
        explode: true
        schema:
          maximum: 200
          minimum: 1
          type: integer
          format: int32
        example: 10
      - name: offset
        in: query
        description: The offset from the previous page.
        required: false
        style: form
        explode: true
        schema:
          type: string
        example: LerV6Jmex
      - name: ids
        in: query
        description: Filters payments by their ids - returns only payments with ids listed in this parameter.
        required: false
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
        example:
        - pm2:4QExXrhKTxfShBdcTeqFabqJJhUF:2gFUX1NDgpN
        - pm2:N5cJDFsQzVca3Qvr8kQocgEnjgX:2gFUX1NEdYA
      - name: invertIds
        in: query
        description: Invert ids query - returns only payments with ids not listed in the ids parameter.
        required: false
        style: form
        explode: true
        schema:
          type: boolean
        example: false
      - name: statuses
        in: query
        description: Filters payments by their statuses - returns only payments with statuses listed in this parameter. For VRP payments (when type=VARIABLE_RECURRING_PAYMENT), only the following PaymentStatus values are supported:<br/>• INITIATION_PENDING<br/>• INITIATION_PROCESSING<br/>• INITIATION_COMPLETED<br/>• INITIATION_REJECTED<br/>• INITIATION_REJECTED_INSUFFICIENT_FUNDS<br/>• INITIATION_FAILED<br/>• INITIATION_NO_FINAL_STATUS_AVAILABLE<br/>Using unsupported statuses for VRP payments will result in an error.<br/><br/>For single immediate payments, all PaymentStatus values are supported.
        required: false
        style: form
        explode: true
        schema:
          type: array
          items:
            $ref: '#/components/schemas/PaymentStatus'
        example:
        - INITIATION_COMPLETED
        - INITIATION_REJECTED
      - name: invertStatuses
        in: query
        description: Invert statuses query - returns only payments with statuses not listed in the statuses parameter.
        required: false
        style: form
        explode: true
        schema:
          type: boolean
        example: true
      - name: createdAfter
        in: query
        description: Returns only payments created after this time (in <a href="https://www.iso.org/iso-8601-date-and-time-format.html" target="_blank">ISO 8601</a> format).
        required: false
        style: form
        explode: true
        schema:
          type: string
        example: '2022-04-05T17:00:00.000Z'
      - name: createdBefore
        in: query
        description: Returns only payments created before this time (in <a href="https://www.iso.org/iso-8601-date-and-time-format.html" target="_blank">ISO 8601</a> format).
        required: false
        style: form
        explode: true
        schema:
          type: string
        example: '2022-04-05T17:00:00.000Z'
      - name: refIds
        in: query
        description: Filters payments by their `refId` values - returns only payments with `refIds` listed in this parameter.
        required: false
        style: form
        explode: true
        schema:
          type: array
          items:
            type: string
        example:
        - ShBdcTeqFabqJJhUF
        - N5cJDFsQzVca3Q
      - name: onBehalfOfId
        in: query
        description: Filters payments by the `onBehalfOfId` value - returns only payments with the `onBehalfOfId` value specified in this parameter. This field is mandatory for unregulated TPPs.
        required: false
        style: form
        explode: true
        schema:
          type: string
        example: c5a863bc-86f2-4418-a26f-25b24c7983c7
      - name: refundStatuses
        in: query
        description: Filters payments by their refund status values - returns only payments with refund statuses listed in this parameter. Not supported for Vrp.
        required: false
        style: form
        explode: true
        schema:
          type: array
          items:
            $ref: '#/components/schemas/PaymentRefundStatus'
        example:
        - PARTIAL
        - NONE
      - name: partial
        in: query
        description: Returns payments in a partial format - with only id and status fields populated.
        required: false
        style: form
        explode: true
        schema:
          type: boolean
        example: true
      - name: externalPsuReference
        in: query
        required: false
        style: form
        explode: true
        schema:
          $ref: '#/components/schemas/ExternalPsuReference'
      - name: type
        in: query
        description: Filter by payment type - single immediate or variable recurring payment. Defaults to SINGLE_IMMEDIATE_PAYMENT if not specified.
        required: false
        schema:
          title: PaymentType
          type: string
          items:
            type: string
            example: SINGLE_IMMEDIATE_PAYMENT
            enum:
            - SINGLE_IMMEDIATE_PAYMENT
            - VARIABLE_RECURRING_PAYMENT
      - name: vrpConsentId
        in: query
        description: Filter by Vrp consent id value. Only applied if type is VARIABLE_RECURRING_PAYMENT.
        required: false
        style: form
        explode: true
        schema:
          type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentsResponse'
        '400':
          description: The client specified an invalid argument.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FieldError'
        '401':
          description: The authorization information is missing or invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_401'
        '500':
          description: An unexpected or internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_500'
      deprecated: false
      security:
      - Bearer: []
      - BasicAuth: []
      x-hideTryItPanel: true
  /v2/payments/{paymentId}:
    get:
      tags:
      - Payments v2
      summary: Get a payment
      description: The `GET /v2/payments/{paymentId}` endpoint provides you with details of an individual payment and checks the payment status for the next step, if any.
      operationId: GetPayment
      parameters:
      - name: request-timeout
        in: header
        description: Sets the number of elapsed seconds until Token.io sends the response back, even if the call is not finished by that time (in which case the call will be completed asynchronously).
        schema:
          type: integer
        required: false
        example: 10
      - name: paymentId
        description: The payment id.
        in: path
        required: true
        style: simple
        explode: false
        schema:
          type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentResponse'
        '401':
          description: The authorization information is missing or invalid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_401'
        '404':
          description: The requested entity, such as a payment, was not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_404'
        '500':
          description: An unexpected or internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_500'
      deprecated: false
      security:
      - Bearer: []
      - BasicAuth: []
      x-hideTryItPanel: true
  /v2/payments/{paymentId}/embedded-auth:
    post:
      tags:
      - Payments v2
      summary: Provide information for embedded authentication
      description: The `POST /v2/payments/{paymentId}/embedded-auth` endpoint provides you with the requested information when the payment status is `INITIATION_PENDING_EMBEDDED_AUTH`. The requested information can be found in the authentication field of the payment. <br/> <br/> It's possible that some banks might request the user's input multiple times. In this case you might need to call this endpoint again for a new field set.
      operationId: ProvideEmbeddedFields
      x-internal: true
      parameters:
      - name: request-timeout
        in: header
        description: Sets the number of elapsed seconds until Token.io sends the response back, even if the call is not finished by that time (in which case the call will be completed asynchronously).
        schema:
          type: integer
        required: false
        example: 10
      - name: paymentId
        in: path
        description: The payment id.
        required: true
        style: simple
        explode: false
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/paymentIdEmbeddedAuthBody'
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentResponse'
        '400':
          description: The client specified an invalid argument.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_400_4'
        '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'
        '500':
          description: An unexpected or internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_500'
      deprecated: false
      security:
      - Bearer: []
      - BasicAuth: []
      x-hideTryItPanel: true
  /qr-code:
    get:
      tags:
      - Payments v2
      summary: Generate QR code
      description: The `GET /qr-code` endpoint generates a QR code in fixed SVG format (240x240 px). This allows TPPs to programmatically obtain a scannable QR code .
      operationId: GetQrCode
      parameters:
      - name: data
        description: The encoded URL to use while generating the QR code. The link must be URL encoded.
        in: query
        required: true
        schema:
          type: string
      responses:
        '200':
          description: QR code successfully generated
          content:
            image/svg+xml:
              schema:
                type: string
                description: The QR code in SVG format.
              example: "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"240\" height=\"240\" viewBox=\"0 0 240 240\">\n    <!-- more SVG content here -->\n</svg>\n"
        '400':
          description: The client specified an invalid argument (e.g., size too small)
          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 payment was not found or does not have a link
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_404'
        '500':
          description: An unexpected or internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/inline_response_500'
      deprecated: false
      security:
      - Bearer: []
      - BasicAuth: []
      x-hideTryItPanel: true
components:
  schemas:
    errorInfo:
      required:
      - httpErrorCode
      type: object
      properties:
        httpErrorCode:
          type: integer
          description: The HTTP error code.
          example: 503
        message:
          type: string
          description: The message accompanying the HTTP error code.
          example: 'UNAVAILABLE: HTTP connection failed'
        tokenExternalError:
          type: boolean
          description: Is set to `true` the error is external, <i>e.g.</i>, a 5xx error resulting from the bank. This field can be populated as a result of both 4xx and 5xx errors. We recommend that you only rely on it for 5xx errors.
          example: true
        tokenTraceId:
          type: string
          description: The unique trace identifier, captured from the originating request and sent to the bank to be stored with the request throughout its lifecycle. It serves primarily as an audit-trail aid, for debugging the message exchange flow during sandbox testing, and for issue resolution in production.
          example: eASI3Onqkpi1unAM59O5
      description: This field will be populated if the status is final and the payment is not successful, or there has been an error that caused payment rejection, or the bank could not be reached to get a status update.
    ChargeBearer:
      type: string
      description: The bearer of the charge, if any, for international transfers. <ul><li><b>CRED</b> - all charges are borne by the creditor.</li> <li><b>DEBT</b> - all charges are borne by the debtor.</li> <li><b>SHAR</b> - the parties share the charges.</li> <li><b>SLEV</b> - each party bears its own charges, recommended on SEPA payments.</li></ul>
      example: CRED
      default: INVALID_CHARGE_BEARER
      enum:
      - INVALID_CHARGE_BEARER
      - CRED
      - DEBT
      - SHAR
      - SLEV
    EmbeddedAuth:
      required:
      - fields
      type: object
      properties:
        description:
          type: string
          description: The text displayed to a user. This should contain the instructions the user needs to proceed with the authentication.
          example: Instructions for authentication.
        image:
          type: string
          description: A Base64 representation of an image displayed to the user.
          example: YWJAeXoyWhAeXohteQ
        flickerCode:
          type: string
          description: The Flicker code displayed to the user.
          example: FLICKERCODE
        fields:
          type: array
          description: The required fields. The values for these are collected from the user.
          items:
            $ref: '#/components/schemas/RequiredField'
        isRetry:
          type: boolean
          description: This field indicates whether the previously submitted values are incorrect and whether the user needs to retry. If `isRetry` = true, the values are resubmitted. Default = false.
          example: false
      description: 'Information and fields presented to the user in order to collect the requested data. This should be populated if the payment status is `INITIATION_PENDING_EMBEDDED_AUTH`.<br/> If the status is: INITIATION_PENDING_EMBEDDED_AUTH, the authentication object should list the required embedded fields. Collect the data from the user and provide it using POST /v2/payments/{paymentId}/embedded-auth to proceed with the flow.'
    PaymentInitiation:
      description: The initiation payload for the payment. All standard flow types — amount and remittanceInformationPrimary are required.
      type: object
      properties:
        bankId:
          $ref: '#/components/schemas/bankId'
        refId:
          $ref: '#/components/schemas/refId'
        remittanceInformationPrimary:
          $ref: '#/components/schemas/remittanceInformationPrimary'
        remittanceInformationSecondary:
          $ref: '#/components/schemas/remittanceInformationSecondary'
        onBehalfOfId:
          type: string
          description: The id of the ultimate client on whose behalf the consent is created. If the consent is created on behalf of a sub-TPP, this field should contain the sub-TPP `referenceId`. This field is mandatory for unregulated TPPs.
          example: c5a863bc-86f2-4418-a26f-25b24c7983c7
        vrpConsentId:
          type: string
          description: Only for Variable recurring payments (VRP). VRP consent id.
        amount:
          $ref: '#/components/schemas/Amount'
        localInstrument:
          $ref: '#/components/schemas/LocalInstrument'
        debtor:
          $ref: '#/components/schemas/DebtorInformation'
          description: The bank details for the debtor account.
        creditor:
          $ref: '#/components/schemas/CreditorInformation'
          description: The bank details for the creditor account.
        executionDate:
          type: string
          description: This field specifies the future date for executing the payment in <a href="https://www.iso.org/iso-8601-date-and-time-format.html" target="_blank">ISO 8601</a> format.". ***This field is optional and can only be used if the bank supports scheduled payments and the customer has permission to initiate future dated payments.***
          example: '2023-04-29'
        confirmFunds:
          type: boolean
          description: This field determines whether the bank will carry out a funds confirmation check before accepting the payment. Default = false.
          example: false
        returnRefundAccount:
          type: boolean
          description: Supported banks will provide the debtor account details selected by the user during authorization. Default = false.
          example: false
        disableFutureDatedPaymentConversion:
          type: boolean
          description: This field determines whether an auto-conversion of a single immediate payment to a future dated payment can be disabled. This may be required if the payment was initiated outside bank working hours. Default = false.
          example: false
        returnTokenizedAccount:
          type: boolean
          description: This field generates tokenized account ID for given debtor account details.
          example: true
        callbackUrl:
          $ref: '#/components/schemas/callbackUrl'
        callbackState:
          $ref: '#/components/schemas/callbackStatev2'
        chargeBearer:
          $ref: '#/components/schemas/ChargeBearer'
        risk:
          $ref: '#/components/schemas/Risk'
        flowType:
          $ref: '#/components/schemas/PaymentFlowType'
        externalPsuReference:
          $ref: '#/components/schemas/ExternalPsuReference'
      required:
      - flowType
      - callbackUrl
      - creditor
      - localInstrument
      - refId
      - amount
      - remittanceInformationPrimary
    EUIbanAccount:
      title: EUIbanAccount
      required:
      - iban
      type: object
      properties:
        iban:
          type: string
          description: The International Bank Account Number, used when sending interbank transfers or wiring money from one bank to another, especially across international borders. It consists of a two-letter country code followed by two check digits and up to thirty-five alphanumeric characters.
          example: GB29NWBK60161331926819
        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
      description: Account details where the iban is required and the bic is optional.
    FieldError:
      title: FieldError
      required:
      - paths
      type: object
      properties:
        paths:
          type: array
          description: A list of paths to the problematic fields.
          items:
            type: string
            description: A reference to the JSON path of the field that caused the error.
            example: initiation.refId
      description: 'An error object providing details about an error caused by a particular field or fields in the request. Possible error code values include: <br/><br/> <b>Field.NotUnique</b> - The field value should be unique, but it isn''t.<br/><br/> <b>Field.Expected</b> - A field is expected/required but is missing altogether. <br/><br/> <b>Field.InvalidFormat</b> - A field is present but has an invalid format. This includes invalid value type (<i>e.g.</i>, not a number where a number is expected) and an invalid format (<i>e.g.</i>, a value is too long). <br/><br/> <b>Field.Invalid</b> - A field is present but has an invalid value. This covers all cases, where a field is present and invalid, that are not covered by `Field.InvalidFormat`.'
      allOf:
      - $ref: '#/components/schemas/ErrorWithCode'
    remittanceInformationPrimary:
      type: string
      description: The primary field for remittance information. This should contain a reference, as assigned by the creditor, to unambiguously refer to the payment transactions under this consent. The value of this field should appear on the bank statement and reconciliation file, irrespective of the payment network being used. <br/>We recommend that the `remittanceInformationPrimary` field should not contain special characters (the allowed characters are the 26-letter Latin alphabet, the numerical digits from 0-9 and the hyphen '-') as banks may remove these when sending this field to the beneficiary. This field should not exceed 35 characters in length (18 characters for UK Faster Payments).
      example: Sweepco
    PaymentContextCode:
      type: string
      description: This field describes the context of the payment context. This field is an <a href="https://www.openbanking.org.uk" target="_blank">OBIE</a> standard and also maps to <a href="https://bankio.at/openbanking/knowledge-base/NextGenPSD2" target="_blank">NextGenPsd2</a>'s `purposeCode` and `categoryPurposeCode` fields. We recommend that the TPP populates this field.
      example: PISP_PAYEE
      enum:
      - INVALID_PAYMENT_CONTEXT_CODE
      - BILLING_GOODS_AND_SERVICES_IN_ADVANCE
      - BILLING_GOODS_AND_SERVICES_IN_ARREARS
      - PISP_PAYEE
      - ECOMMERCE_MERCHANT_INITIATED_PAYMENT
      - FACE_TO_FACE_POINT_OF_SALE
      - TRANSFER_TO_SELF
      - TRANSFER_TO_THIRD_PARTY
    PLIbanAccount:
      title: PLIbanAccount
      required:
      - iban
      type: object
      properties:
        iban:
          type: string
          description: The International Bank Account Number, used when sending interbank transfers or wiring money from one bank to another, especially across international borders. It consists of a two-letter country code followed by two check digits and up to thirty-five alphanumeric characters.
          example: GB29NWBK60161331926819
        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
      description: Polish account details where the iban is required and the bic is optional.
    PaymentFlowType:
      title: PaymentFlowType
      type: string
      description: The integration option requested by the TPP. <ul><li><b>API_ONLY</b> - This is the default. The TPP owns the user experience including bank selection logic, collection of mandatory fields, and embedded and decoupled authentication methods. This option is only used for API-only integrations.</li><li><b>FULL_HOSTED_PAGES</b> - The TPP uses Token.io’s hosted pages to manage the full bank selection and credential collection (if relevant) of the payment initiation experience. This option is only used for Hosted Pages integrations.</li><li><b>EMBEDDED_HOSTED_PAGES</b> - The TPP uses Token.io’s hosted pages to manage the credential collection (if relevant) of the payment initiation experience. bankId is required when EMBEDDED_HOSTED_PAGES is selected as the `flowType`. This option is only used for API-only integrations.</li></ul>
      example: FULL_HOSTED_PAGES
      enum:
      - API_ONLY
      - FULL_HOSTED_PAGES
      - EMBEDDED_HOSTED_PAGES
    inline_response_400:
      type: object
      properties:
   

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