These endpoints enable you to make v2 single immediate payments and future dated payments using the redirect, embedded and decoupled flows.
Token.io's Open Banking API for TPPs
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.
The alias name that identifies the settlement account. May contain up to 50 characters including letters, numbers, hyphens, underscores, and spaces.
The id of the ultimate client on whose behalf the account is created. If the account is created on behalf of a sub-TPP, this field will contain the sub-TPP referenceId. This field is mandatory for unregulated TPPs.
https://api.token.io/virtual-accounts
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://api.token.io/virtual-accounts \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"accountNickName": "Account Alias",
"currency": "EUR",
"onBehalfOfId": "c5a863bc-86f2-4418-a26f-25b24c7983c7",
"country": "GB"
}'{ "virtualAccount": { "accountId": "pa:8DbPteGnytmMbKXdnWTReeRB6cYWKXZ84JgLTBC7fKL4:5zKcENpV", "accountName": "Account Name", "accountNickName": "Account Alias", "accountNumber": "12345678", "availableBalance": 1572.38, "bic": "BOFIIE2D", "bookedBalance": 1282.79, "clearedBalance": 1167.32, "country": "GB", "createdDateTime": "2023-04-05T10:43:07.000+00:00", "currency": "EUR", "iban": "GB29NWBK60161331926819", "sortCode": 123456, "status": "ACTIVE", "updatedDateTime": "string", "onBehalfOfId": "c5a863bc-86f2-4418-a26f-25b24c7983c7" } }
The maximum number of records to return.
The maximum allowed limit is 200. If the passed limit is bigger than this, it will be set to 200.
The offset for the current page. The offset is not required to fetch the first page. To fetch subsequent pages, use the 'nextOffset' value from the previous page response.
The offset value should not be parsed and/or understood in any way.
The alias name that identifies the settlement account.
https://api.token.io/virtual-accounts
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://api.token.io/virtual-accounts?limit=0&offset=string¤cy=EUR&country=PL&nickname=Account+Alias&onBehalfOfId=c5a863bc-86f2-4418-a26f-25b24c7983c7' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'{ "pageInfo": { "limit": 20, "offset": "LerV6Jmex", "nextOffset": "KgwG8Qkat", "haveMore": false }, "virtualAccount": [ { … } ] }
https://api.token.io/virtual-accounts/{accountId}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://api.token.io/virtual-accounts/{accountId}?onBehalfOfId=c5a863bc-86f2-4418-a26f-25b24c7983c7' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'{ "virtualAccount": { "accountId": "pa:8DbPteGnytmMbKXdnWTReeRB6cYWKXZ84JgLTBC7fKL4:5zKcENpV", "accountName": "Account Name", "accountNickName": "Account Alias", "accountNumber": "12345678", "availableBalance": 1572.38, "bic": "BOFIIE2D", "bookedBalance": 1282.79, "clearedBalance": 1167.32, "country": "GB", "createdDateTime": "2023-04-05T10:43:07.000+00:00", "currency": "EUR", "iban": "GB29NWBK60161331926819", "sortCode": 123456, "status": "ACTIVE", "updatedDateTime": "string", "onBehalfOfId": "c5a863bc-86f2-4418-a26f-25b24c7983c7" } }
The maximum number of records to return.
The maximum allowed limit is 200. If the passed limit is bigger than this, it will be set to 200.
The offset for the current page. The offset is not required to fetch the first page. To fetch subsequent pages, use the 'nextOffset' value from the previous page response.
The offset value should not be parsed and/or understood in any way.
Filters transactions by their refId value - returns only transactions with refId mentioned in the reference.
Returns transactions created on or after this date, inclusive (in ISO 8601 format).
Returns transactions created on or before this date, inclusive (in ISO 8601 format).
Filters transactions by type to include only CREDIT or DEBIT transactions.
https://api.token.io/virtual-accounts/{accountId}/transactions
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://api.token.io/virtual-accounts/{accountId}/transactions?limit=0&offset=string&refId=string&startDate=2022-04-05&endDate=2022-04-05&amount=string&providerPaymentId=string&transactionType=CREDIT&onBehalfOfId=c5a863bc-86f2-4418-a26f-25b24c7983c7' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'{ "pageInfo": { "limit": 20, "offset": "LerV6Jmex", "nextOffset": "KgwG8Qkat", "haveMore": false }, "transactions": [ { … } ] }
https://api.token.io/virtual-accounts/{accountId}/transactions/{providerPaymentId}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://api.token.io/virtual-accounts/{accountId}/transactions/{providerPaymentId}?onBehalfOfId=c5a863bc-86f2-4418-a26f-25b24c7983c7' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'{ "transaction": { "amount": { … }, "providerPaymentId": "83KiRJuXm", "createdDateTime": "2017-04-05T10:43:07.000+00:00", "description": "Payment", "transactionType": "INVALID_TYPE", "localInstrument": "SEPA_INSTANT", "debtor": { … }, "creditor": { … }, "refId": "9htio4a1sp2akdr1aa", "transferId": "t:2UhwCZ3BMaEcAUK8bZdukor7NL4tH6TBuu6aJMp5KKfX:5zKcENpV", "paymentId": "pm2:2UhwCZ3BMaEcAUK8bZdukor7NL4tH6TBuu6aJMp5KKfX:5zKcENpV", "refundId": "rf:2UhwCZ3BMaEcAUK8bZdukor7NL4tH6TBuu6aJMp5KKfX:5zKcENpV", "payoutId": "po:2UhwCZ3BMaEcAUK8bZdukor7NL4tH6TBuu6aJMp5KKfX:5zKcENpV" } }
The system-generated, unique id which specifies the settlement account.
The unique identifier for the bank account in the UK or Ireland.
The Business Identifier Code (BIC), ISO 9362, 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."
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.
The time interval.
The start date of the settlement rule is formatted as YYYY-MM-DDTHH:MM:SSZ.
The end date of the settlement rule is formatted as YYYY-MM-DDTHH:MM:SSZ.
https://api.token.io/virtual-accounts/{accountId}/settlement-rule
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
'https://api.token.io/virtual-accounts/{accountId}/settlement-rule' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"accountId": "pa:8DbPteGnytmMbKXdnWTReeRB6cYWKXZ84JgLTBC7fKL4:5zKcENpV",
"payeeAccountDetails": {
"name": "Customer Inc.",
"ultimateCreditorName": "Customer Inc.",
"bankName": "string",
"accountNumber": "12345678",
"bic": "HBUKGB7F261",
"iban": "GB29NWBK60161331926819",
"sortCode": 123456
},
"amountType": "FIXED_VALUE",
"amountValue": 10,
"timeInterval": "INTRADAY",
"effectiveFrom": "2024-01-01T12:34:56Z",
"effectiveTo": "2024-12-01T12:34:56Z",
"intradayIntervalHours": 2,
"intradayIntervalMinutes": 10
}'{ "settlementRuleId": "123e4567-e89b-12d3-a456-426614174000" }
Request
The GET /virtual-accounts/{accountId}/settlement-rules endpoint retrieves information about settlement rules, for a given settlement account, according to the settlement rule status in the request. If no status is provided, the endpoint retrieves all settlement rules for the settlement account.
The settlement account id.
https://api.token.io/virtual-accounts/{accountId}/settlement-rules
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://api.token.io/virtual-accounts/{accountId}/settlement-rules' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"accountId": "pa:8DbPteGnytmMbKXdnWTReeRB6cYWKXZ84JgLTBC7fKL4:5zKcENpV",
"status": "ACTIVE"
}'{ "settlementRule": [ { … } ] }
https://api.token.io/virtual-accounts/{accountId}/settlement-rules/{settlementRuleId}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://api.token.io/virtual-accounts/{accountId}/settlement-rules/{settlementRuleId}' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'{ "settlementRule": { "settlementRuleId": "c65e5548-682b-4c4e-b000-f496e06d1082", "payerAccountId": "string", "payeeAccountDetails": { … }, "amountType": "FIXED_VALUE", "amountValue": "string", "effectiveFrom": "string", "effectiveTo": "string", "timeInterval": "INTRADAY", "status": "ACTIVE" } }
https://api.token.io/virtual-accounts/{accountId}/settlement-rules/{settlementRuleId}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X DELETE \
'https://api.token.io/virtual-accounts/{accountId}/settlement-rules/{settlementRuleId}' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'{}
The settlement account id.
The id of the settlement rule.
If true, the response will contain all settlement rule payouts except those specified in the ids field.
The list of payout statuses.
If true, the response will contain all settlement rule payouts except those specified in the statuses field.
https://api.token.io/virtual-accounts/{accountId}/settlement-rule-payouts
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://api.token.io/virtual-accounts/{accountId}/settlement-rule-payouts' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"accountId": "pa:8DbPteGnytmMbKXdnWTReeRB6cYWKXZ84JgLTBC7fKL4:5zKcENpV",
"limit": 10,
"offset": "LerV6Jmex",
"settlementRuleId": "123e4567-e89b-12d3-a456-426614174000",
"startDate": "2024-01-01",
"endDate": "2024-12-01",
"ids": [
"123e4567-e89b-12d3-a456-426614174000"
],
"invertIds": false,
"statuses": [
"INITIATION_PENDING",
"INITIATION_PROCESSING"
],
"invertStatuses": false,
"refIds": [
"ShBdcTeqFabqJJhUF"
]
}'{ "pageInfo": { "limit": 20, "offset": "LerV6Jmex", "nextOffset": "KgwG8Qkat", "haveMore": false }, "payouts": [ { … } ] }
Webhooks
These endpoints configure, retrieve and remove webhooks. See Webhooks for more details.