token-io Transfers - for Payments v1 API

These endpoints relate to transfers, which are requests to move money between accounts.

Operations 3

POST /transfers Redeem a transfer token #
GET /transfers Get transfers #
GET /transfers/{transferId} Get a transfer #

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-transfers-for-payments-v1-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-transfers-for-payments-v1-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: '1.0'
  title: Token.io's Open Banking API for TPPs Account on File Transfers - for Payments 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>.'
servers:
- url: https://api.token.io
tags:
- name: Transfers - for Payments v1
  description: These endpoints relate to transfers, which are requests to move money between accounts.
paths:
  /transfers:
    post:
      tags:
      - Transfers - for Payments v1
      summary: Redeem a transfer token
      description: The `POST /transfers` endpoint is only required when you explicitly redeem the request token, <i>i.e.</i>, auto-redeem is not enabled.
      operationId: GatewayService.CreateTransfer
      x-internal: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTransferRequest'
        required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateTransferResponse'
        '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
    get:
      tags:
      - Transfers - for Payments v1
      summary: Get transfers
      description: The `GET /transfers` endpoint retrieves information for all transfers.
      operationId: GatewayService.GetTransfers
      parameters:
      - name: tokenId
        in: query
        description: Identifies the authorization token for the request.
        required: false
        style: form
        explode: true
        schema:
          type: string
          example: rq:ej5ACWNwi1EcqBeuDPc4Z8C4Bgc:5zKtXEAq
      - name: page.offset
        in: query
        description: The offset for the current page. If the offset has been provided in the request, this offset will be equal to the provided one. But if no offset was provided in the request (<i>i.e.</i> this is the first page) and the page is not empty, this field will be populated with a non-empty string. This may be helpful for loading the same page again, which might not always be possible with an empty offset due to a dynamic nature of the data. <br/>The offset is not visible to a user and should not be parsed and/or understood in any way.
        required: false
        style: form
        explode: true
        schema:
          type: string
        example: LerV6Jmex
      - name: page.limit
        in: query
        description: The maximum number of records to return. This must be less than 200.
        required: true
        style: form
        explode: true
        schema:
          type: integer
          format: int32
          example: 175
          default: 1
      - name: filter.tokenId
        in: query
        description: Filters by the authorization token id.
        required: false
        style: form
        explode: true
        schema:
          type: string
        example: tt:3kFGtpEKHu8S2fJuEkb6YPnHZ4bJ2oUrYPCsJop68vCH:5zKcENpV
      - name: filter.startTimeMs
        in: query
        description: Filtered list start time boundary in milliseconds, 1 day (24 hours) = 8640000000, 1 hour = 36000000, and 1 minute = 60000.
        required: false
        style: form
        explode: true
        schema:
          type: string
          format: string
        example: 72799
      - name: filter.endTimeMs
        in: query
        description: Filtered list end time boundary in milliseconds, 1 day (24 hours) = 8640000000, 1 hour = 36000000, and 1 minute = 60000.
        required: false
        style: form
        explode: true
        schema:
          type: string
          format: string
        example: 3341983424
      - name: filter.transactionStatus
        in: query
        description: Filters by transaction status. <ul> <li><b>PROCESSING</b> – This status indicates that the transaction is in process and that the final status has not been received from the bank.</li><li><b>SUCCESS</b> – This status indicates that successful payment initiation has been received from the bank. Settlement might not be complete.</li> <li><b>INITIATED</b> – This status is set when the previous status has remained as `PROCESSING` for 30 days and cannot be updated. The transaction has been initiated but the result is unknown. This is the final status and will not get updated later because Token.io has stopped polling the bank.<br/> This status is also returned in a two-step payment flow in the event that a user’s request has been authorized at the bank but the payment confirmation has subsequently failed.</li><li><b>PENDING_EXTERNAL_AUTHORIZATION</b> – This status indicates that the user has been sent to the bank to complete the authorization process. If not completed within the allowed timeframe (usually around 15 mins, but there are variations between banks) the transaction will expire and transition to `FAILURE_EXPIRED`. This status is only relevant for 1-step payment flows.</li> <li><b>FAILURE_GENERIC</b> – This status usually indicates a technical failure. Possibly, a failure callback was received from the bank, with no transaction status and no further information.</li> <li><b>FAILURE_PERMISSION_DENIED</b> – This status indicates that the user has been denied authorization at the bank This status is only relevant for two-step payment flows.</li> <li><b>FAILURE_CANCELED</b> – This status indicates that the payment initiation has been canceled before execution.</li> <li><b>FAILURE_EXPIRED</b> – This status indicates that the user did not complete the authorization process within the allowed timeframe (usually around 15 mins, but there are variations between banks) and the payment has expired.</li> <li><b>FAILURE_INSUFFICIENT_FUNDS</b> – This status indicates that the payment initiation request has been rejected due to insufficient funds.</li> <li><b>FAILURE_DECLINED</b> – This status indicates that the payment initiation has been rejected by the bank.</li> <li><b>SETTLEMENT_IN_PROGRESS</b> – This status is provided when a Token.io settlement account is used as the beneficiary for the payment, and replaces the payment initiation status. Token.io is waiting for the payment to reach the payee bank. No action is required; await the next step, <i>e.g.</i>, Token.io sends a webhook with the status update, or a polling call. The status will change to `SETTLEMENT_IN_PROGRESS` soon after Token.io receives the final status from the debtor bank.</li> <li><b>SETTLEMENT_COMPLETED</b> – This status is provided when a Token.io settlement account is used as the beneficiary for the payment, and replaces the payment initiation status. The payment has reached the payee bank and Token.io has matched the transaction in the TPP’s settlement account to the initiated payment. For instant payments, `SETTLEMENT_COMPLETED` will be achieved within 30-45 minutes from payment initiation, at the latest. For non-instant payments, the time to reach `SETTLEMENT_COMPLETED` will depend on the clearing period for the payment.</li><li><b>SETTLEMENT_INCOMPLETE</b> – This status is provided when a Token.io settlement account is used as the beneficiary for the payment, and replaces the payment initiation status. Reconciliation has failed. This happens when Token.io doesn't find the corresponding transaction in the TPP’s settlement account automatically.</li></ul><br/>During settlement of a settlement accounts payment, the status update job will run first for up to 30 days. Payment will then enter into a 'final' status, normally `SUCCESS`.<br/>Once the status update job has run, the reconciliation job looks for matching inbound payments.For SEPA payments:<ul><li>if a matching inbound payment is found within 15 days of the final payment status update -> `SETTLEMENT_COMPLETED`</li><li>if no matching inbound payment is found within 15 days of the final payment status update -> `SETTLEMENT_INCOMPLETE`</li></ul>For SEPA Instant payments:<ul><li>if a matching inbound payment is found within 1 day of the final payment status update -> `SETTLEMENT_COMPLETED`</li><li>if no matching inbound payment is found within 1 day of the final payment status update -> `SETTLEMENT_INCOMPLETE`</li></ul>
        required: false
        style: form
        explode: true
        schema:
          title: filter.transactionStatus
          type: string
          example: SUCCESS
          enum:
          - PROCESSING
          - SUCCESS
          - INITIATED
          - PENDING
          - PENDING_EXTERNAL_AUTHORIZATION
          - FAILURE GENERIC
          - FAILURE_PERMISSION_DENIED
          - FAILURE_CANCELED
          - FAILURE_EXPIRED
          - FAILURE_INSUFFICIENT_FUNDS
          - FAILURE_DECLINED
          - SETTLEMENT_IN_PROGRESS
          - SETTLEMENT_COMPLETED
          - SETTLEMENT_INCOMPLETE
      - name: filter.role
        in: query
        description: Filters list by the account holder role.
        required: false
        style: form
        explode: true
        schema:
          type: string
          example: PAYER
          enum:
          - ANY
          - PAYER
          - PAYEE
      - name: filter.actingAsRefId
        in: query
        description: Filters the list by the sub-TPP identifier generated by Token.io once a TPP has been onboarded.
        required: false
        style: form
        explode: true
        schema:
          type: string
          example: 4kwl35c9sp3fwp4xq
      - name: filter.refId
        in: query
        description: Filters list by `refID`.
        required: false
        style: form
        explode: true
        schema:
          type: string
          example: 9htio4a1sp2akdr1aa
      - name: filter.transferRefundStatus
        in: query
        description: Filters list by refund status.
        required: false
        style: form
        explode: true
        schema:
          type: string
          example: PARTIAL
          enum:
          - UNSET
          - NONE
          - PARTIAL
          - FULL
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetTransfersResponse'
        '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
  /transfers/{transferId}:
    get:
      tags:
      - Transfers - for Payments v1
      summary: Get a transfer
      description: The `GET /transfers/{transferId}` endpoint retrieves information about a specific transfer in a given account.
      operationId: GatewayService.GetTransfer
      parameters:
      - name: transferId
        in: path
        description: The unique id of the transfer sent in the `POST /transfers` response and/or included in a respective `GET /transfers` response.
        required: true
        style: simple
        explode: false
        schema:
          type: string
      - name: skipTransferUpdate
        in: query
        description: If `skipTransferUpdate` is false, the request will call the bank for a status update. If set to true, the cached result will be returned instead.
        required: false
        style: form
        explode: true
        schema:
          type: boolean
          format: boolean
          example: false
          default: false
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetTransferResponse'
        '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:
    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.
    TransferDestinationRequest:
      required:
      - customerData
      - sepa
      - sepaInstant
      - fasterPayments
      - plusgiro
      - bankgiro
      - elixir
      - euDomesticNonEuro
      - euDomesticNonEuroInstant
      - virtualAccount
      properties:
        customerData:
          $ref: '#/components/schemas/CustomerData'
        type:
          $ref: '#/components/schemas/TransferDestinationType'
      oneOf:
      - title: sepa
        properties:
          sepa:
            $ref: '#/components/schemas/TransferDestinationSepa'
      - title: sepaInstant
        properties:
          sepaInstant:
            $ref: '#/components/schemas/TransferDestinationSepaInstant'
      - title: fasterPayments
        properties:
          fasterPayments:
            $ref: '#/components/schemas/TransferDestinationFasterPayments'
      - title: elixir
        properties:
          elixir:
            $ref: '#/components/schemas/TransferDestinationElixir'
      - title: euDomesticNonEuro
        properties:
          euDomesticNonEuro:
            $ref: '#/components/schemas/TransferDestinationEuDomesticNonEuro'
      - title: euDomesticNonEuroInstant
        properties:
          euDomesticNonEuroInstant:
            $ref: '#/components/schemas/TransferDestinationEuDomesticNonEuroInstant'
      - title: bankgiro
        properties:
          bankgiro:
            $ref: '#/components/schemas/TransferDestinationBankgiro'
      - title: plusgiro
        properties:
          plusgiro:
            $ref: '#/components/schemas/TransferDestinationPlusgiro'
      - title: token
        properties:
          token:
            $ref: '#/components/schemas/TransferDestinationToken'
      - title: virtualAccount
        properties:
          virtualAccount:
            $ref: '#/components/schemas/TransferDestinationVirtualAccount'
      description: The beneficiary account specifying the transfer destination, <i>i.e.</i> TPP/merchant/creditor bank.
    refId:
      type: string
      description: The TPP-generated reference identifier for the token. This is not to be confused with the `requestId`. The `refId` maps to the `tppRefId` in the bank's `consentRequest`. This is needed to match/verify the originating token request with the bank's consent request. <br/>We recommend that the `refId` should not contain special characters (the allowed characters are the 26-letter Latin alphabet, the numerical digits from 0-9 and the hyphen '-'). This field should not exceed 18 characters in length.
      example: 9htio4a1sp2akdr1aa
    FasterPaymentsAccount:
      title: FasterPaymentsAccount
      required:
      - accountNumber
      - sortCode
      type: object
      properties:
        accountNumber:
          type: string
          description: The unique identifier for the bank account in the UK or Ireland.
          example: '12345678'
        sortCode:
          type: string
          description: The number assigned to a branch of a bank, typically containing six digits and most commonly used in the UK and Ireland.
          example: '123456'
      description: A UK or Irish account where the sort code and account number are required.
    StetAccountIdentification:
      type: object
      properties:
        currency:
          type: string
          description: The <a href="https://www.iso.org/iso-4217-currency-codes.html" target="_blank">ISO 4217</a> three letter currency code.
          example: EUR
        other:
          $ref: '#/components/schemas/StetGenericIdentification'
      description: Bank-defined account identifiers.
    CustomerDataDebtorResponse:
      type: object
      properties:
        address:
          $ref: '#/components/schemas/AddressInfo'
        legalNames:
          type: array
          description: Legal owner name for the debtor account.
          example: Mr John Arthur Smith
          items:
            type: string
      description: Specifies the legal identity information for the payer/customer.
    TransferDestinationToken:
      title: token
      type: object
      properties:
        accountId:
          type: string
          description: The bank account identifier for a linked account used by Token.io's Bank Integration Account Linking Service.
        memberId:
          type: string
          description: The Token.io-generated member id for the user/account holder.
          example: m:nP4w3u5y8ddrxDJkjimgSX9e4fZ:5zKtXEAq
      description: The primary account number. The cCard identifier found on payment cards, such as credit and debit cards, as well as stored-value cards, gift cards and other similar cards, somtimes referred to as a bank card number.
    inline_response_429:
      required:
      - error
      type: object
      properties:
        error:
          $ref: '#/components/schemas/ResourceExhaustedError'
    Signature:
      type: object
      properties:
        keyId:
          type: string
          description: The id of the public key used to verify the signature. This is only present if a `tokenId` is present. It can be used to validate that the provided `tokenId` corresponds to the token request (this is needed for Hosted Pages flows only).
          example: CqSTHPvWY_dgVh-f
        memberId:
          type: string
          description: The Token.io member id of the signing member.
          example: m:nP4w3u5y8ddrxDJkjimgSX9e4fZ:5zKtXEAq
        signature:
          type: string
          description: The Base64url-encoded ciphertext signature.
          example: ODRWmM0xMRM7CKmK3bNl4e2Kb2btavTbZssCsrHsu8yopoKxBzouBrD9q5-E63tgdV1DpB7i31vwNDKywA0CAE
      description: Contains information about the signing party. This is only present if a `tokenId` is present. It can be used to validate that the provided `tokenId` corresponds to the token request (this is needed for the Hosted Pages flows only).
    AccountIdentifierPlusgiro:
      type: object
      properties:
        plusgiroNumber:
          type: string
          description: The account number (minimum 2 and maximum 8 digits) for a PlusGiro account. The clearing code is not used.
          example: '987654'
      description: The domestic transaction clearing system in Sweden. The credit transfer function, which is part of <a href="https://www.nordea.com" target="blank">Nordea</a>, and used for mediating payments between accounts held by companies and individuals.
    GatewayTimeoutError:
      required:
      - paymentId
      type: object
      properties:
        errorCode:
          example: DEADLINE_EXCEEDED
        paymentId:
          type: string
          description: The deadline expired before the operation could complete.
          example: Deadline exceeded.
      description: The deadline expired before the operation could complete.
      allOf:
      - $ref: '#/components/schemas/ErrorWithCode'
    inline_response_403:
      required:
      - error
      type: object
      properties:
        error:
          $ref: '#/components/schemas/PermissionDeniedError'
    inline_response_503:
      required:
      - error
      type: object
      properties:
        error:
          $ref: '#/components/schemas/ServiceUnavailableError'
    MoneyRequest:
      type: object
      properties:
        currency:
          type: string
          description: The <a href="https://www.iso.org/iso-4217-currency-codes.html" target="_blank">ISO 4217</a> three letter currency code.
          example: EUR
        value:
          type: string
          description: The transaction amount with up to four digits after the decimal point.
          example: '10.23'
      description: The balance currency and value.
    TransferDebtorEndpointResponse:
      type: object
      required:
      - accountIdentifier
      properties:
        accountIdentifier:
          $ref: '#/components/schemas/AccountIdentifier'
        bankId:
          $ref: '#/components/schemas/bankId'
        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
        customerData:
          $ref: '#/components/schemas/CustomerDataDebtorResponse'
      description: Contains information about the payer account.
    PermissionDeniedError:
      type: object
      properties:
        errorCode:
          example: PermissionDenied
      description: 'The error returned when the member is not authorized to perform the given operation: PermissionDenied. <br/>This error message will be accompanied by the reason from the bank. Typically this means the access token has expired and the user must re-authenticate with the bank.'
      allOf:
      - $ref: '#/components/schemas/ErrorWithCode'
    TransactionStatus:
      title: TransactionStatus
      type: string
      example: PROCESSING
      description: Filters by transaction status. <ul> <li><b>PROCESSING</b> – This status indicates that the transaction is in process and that the final status has not been received from the bank.</li> <li><b>SUCCESS</b> – This status indicates that successful payment initiation has been received from the bank. Settlement might not be complete.</li> <li><b>INITIATED</b> – This status is set when the previous status has remained as `PROCESSING` for 30 days and cannot be updated. The transaction has been initiated but the result is unknown. This is the final status and will not get updated later because Token.io has stopped polling the bank.<br/> This status is also returned in a two-step payment flow in the event that a user’s request has been authorized at the bank but the payment confirmation has subsequently failed.</li> <li><b>PENDING</b> – This status indicates that the user has successfully completed the authorization process at the bank and the transfer is pending redemption. This status is only relevant for two-step payment flows.</li> <li><b>PENDING_EXTERNAL_AUTHORIZATION</b> – This status indicates that the user has been sent to the bank to complete the authorization process. If not completed within the allowed timeframe (usually around 15 mins, but there are variations between banks) the transaction will expire and transition to `FAILURE_EXPIRED`. This status is only relevant for 1-step payment flows.</li> <li><b>FAILURE_GENERIC</b> – This status usually indicates a technical failure. Possibly, a failure callback was received from the bank, with no transaction status and no further information.</li> <li><b>FAILURE_PERMISSION_DENIED</b> – This status indicates that the user has been denied authorization at the bank This status is only relevant for two-step payment flows.</li> <li><b>FAILURE_CANCELED</b> – This status indicates that the payment initiation has been cancelled before execution.</li> <li><b>FAILURE_EXPIRED</b> – This status indicates that the user did not complete the authorization process within the allowed timeframe (usually around 15 mins, but there are variations between banks) and the payment has expired.</li> <li><b>FAILURE_INSUFFICIENT_FUNDS</b> – This status indicates that the payment initiation request has been rejected due to insufficient funds.</li> <li><b>FAILURE_DECLINED</b> – This status indicates that the payment initiation has been rejected by the bank.</li> <li><b>SETTLEMENT_IN_PROGRESS</b> – This status is provided when a Token.io settlement account is used as the beneficiary for the payment, and replaces the payment initiation status. Token.io is waiting for the payment to reach the payee bank. No action is required; await the next step, <i>e.g.</i>, Token.io sends a webhook with the status update, or a polling call. The status will change to `SETTLEMENT_IN_PROGRESS` soon after Token.io receives the final status from the debtor bank.</li> <li><b>SETTLEMENT_COMPLETED</b> – This status is provided when a Token.io settlement account is used as the beneficiary for the payment, and replaces the payment initiation status. The payment has reached the payee bank and Token.io has matched the transaction in the TPP’s settlement account to the initiated payment. For instant payments, `SETTLEMENT_COMPLETED` will be achieved within 30-45 minutes from payment initiation, at the latest. For non-instant payments, the time to reach `SETTLEMENT_COMPLETED` will depend on the clearing period for the payment.</li> <li><b>SETTLEMENT_INCOMPLETE</b> – This status is provided when a Token.io settlement account is used as the beneficiary for the payment, and replaces the payment initiation status. Reconciliation has failed. This happens when Token.io doesn't find the corresponding transaction in the TPP’s settlement account automatically.</li></ul><br/>During settlement of a settlement accounts payment, the status update job will run first for up to 30 days. Payment will then enter into a 'final' status, normally `SUCCESS`.<br/>Once the status update job has run, the reconciliation job looks for matching inbound payments.<br/>For SEPA paym

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