openapi: 3.0.1
info:
title: Token.io's Open Banking API for TPPs Account on File Verification API
description: 'Token.io''s Open Banking API
Token.io Support: support.token.io
The Token.io Open Banking API enables you to connect securely with banks for a range of services.
Using our API you can:
- provide authorized access to an authenticated user''s account information
- get information on specific banks
- initiate authorization with a user-selected bank
- initate and track single immediate payments and future dated payments
- 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
- carry out settlements, payments and refunds using our settlement accounts
For more information see our developer documentation.'
version: ''
servers:
- url: https://api.token.io
tags:
- name: Verification
paths:
/account-verifications:
post:
summary: Initiate an account verification check
tags:
- Verification
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/AccountVerificationResponse'
examples:
'Full Match (EU ACCOUNT) ':
value:
id: avr-01K8R977E2Y0XE5CYQE1608N06
result:
status: MATCH
reasons:
- EXACT_MATCH
details: The account details match.
Close Match (EU ACCOUNT):
value:
id: avr-01K8R97M3BZMQAZ8014CABDKVJ
result:
status: CLOSE_MATCH
reasons:
- NAME_MISMATCH
details: The name provided is a close match.
matched:
name: H. C. Andersen
No match (EU ACCOUNT):
value:
id: avr-01K8R97W7QTCTV8SSZ53FBPATY
result:
status: NO_MATCH
reasons:
- ACCOUNT_MISMATCH
- NAME_MISMATCH
details: The account and name do not match.
Unable to match (EU ACCOUNT):
value:
id: avr-01K8R982QQZ94R58X51GDJRQDE
result:
status: VERIFICATION_NOT_POSSIBLE
reasons:
- UNKNOWN
details: The check cannot be completed.
'400':
description: The client specified an invalid argument
content:
application/json:
schema:
$ref: '#/components/schemas/inline_response_400'
operationId: post-verification
description: This endpoint allows clients to verify whether the provided account details (such as sort code and account number or IBAN) match the name of the intended account holder, whether an individual or a business
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AccountVerificationRequest'
examples:
UK (GBP) Account Check:
value:
account:
name: John Doe
accountNumber: '12345678'
sortCode: '123456'
currency: GBP
accountType: PERSONAL
virtualAccountId: pa:8DbPteGnytmMbKXdnWTReeRB6cYWKXZ84JgLTBC7fKL4:5zKcENpV
EU (EUR) Account Check:
value:
account:
name: John Doe
iban: GB33BUKB20201555555555
currency: EUR
virtualAccountId: pa:8DbPteGnytmMbKXdnWTReeRB6cYWKXZ84JgLTBC7fKL4:5zKcENpV
security:
- Bearer: []
- BasicAuth: []
components:
schemas:
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.
inline_response_400:
type: object
properties:
error:
$ref: '#/components/schemas/Error'
AccountVerificationRequest:
type: object
required:
- account
properties:
account:
type: object
description: 'Account information for account verification
'
required:
- name
- currency
- iban
properties:
name:
type: string
description: Name of account holder
currency:
type: string
description: Specifies the currency of the account being verified, represented in ISO 4217 three-letter format (e.g. EUR). This ensures accurate matching where account validation rules or naming conventions may vary by currency.
enum:
- EUR
iban:
type: string
description: The International Bank Account Number (IBAN) which identifies a bank account across borders
virtualAccountId:
type: string
description: 'The Token settlement account from which the subsequent payout or refund will be executed.
> **Conditional** - If this verification check is independent of a Token provided settlement account, this should **NOT** be provided.
'
AccountVerificationResponse:
type: object
required:
- id
- result
properties:
id:
type: string
example: 01K4SMENHFT2MK5DKVDYWP6M7B
result:
type: object
required:
- status
- reasons
- details
properties:
status:
type: string
description: The outcome of the verification
enum:
- MATCH
- NO_MATCH
- CLOSE_MATCH
- VERIFICATION_NOT_POSSIBLE
reasons:
type: array
description: A more granular reason as to why there was not a full match
items:
type: string
enum:
- UNKNOWN
- EXACT_MATCH
- NAME_MISMATCH
- ACCOUNT_MISMATCH
details:
type: string
description: A human readable explanation for the outcome of the verification check
matched:
type: object
description: Further details on the attributes that would result in a full match
properties:
name:
type: string
description: The name matched to the account provided
securitySchemes:
Bearer:
type: http
description: '**For Production and Sandbox environments.**
When using curl samples the authorization header is given as -H `''Authorization: Bearer + JWT''`
Please substitute your Bearer key here.
For example:
-H `''Authorization: Bearer eyJhbGciOiJFZERTQSIsImtpZCI6IjF4N2RmNHZ1RlVIWVFDYTciLCJtaWQiOiJtOlhUalhlMkFQZTRvdmVaalE4cHoyNGdEbUZEcTo1ekt0WEVBcSIsImhvc3QiOiJsb2NhbGhvc3Q6ODAwMCIsIm1ldGhvZCI6IlBPU1QiLCJwYXRoIjoiL2JhbmtzL2lyb24vdXNlcnMiLCJleHAiOjE1ODYyOTczNDQ3ODd9..bi3wxEoMHIul_F2f7gCDvgjHQKCjIyP9_SkQns-yXpS0UqoaOqSJrW89COexU71gt-mH3jH6mtp2aksEywvFDg''`
Enter the JWT Bearer token only (see JWT Authentication for more information).'
scheme: bearer
bearerFormat: JWT
BasicAuth:
type: apiKey
description: '**For Sandbox environment only.**
When using curl samples the authorization header is given as -H `''Authorization: YOUR_API_KEY_HERE''`
Please substitute your Basic key here.
For example:
-H `''Authorization: Basic bS0zanhoS3pqRjRSWFQ1dHZLTlhMQU14cm80d0E1LTV6S3RYRUFxOmU1MWZjZDQ0LTM5MGQtNDYxZi04YjA0LTEyMjcxOTg4YWYwNg==''`'
name: Authorization
in: header