These endpoints allow you to initiate a Payments v1 request or an AIS request, and retrieve the status of the request.
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 tokenId represents the consent granted by the user (PSU).
The user's IP address if the user is currently logged in with the TPP. If the customer IP address is supplied (recommended), it is inferred that the user is present during the session (i.e., the request is user-initiated; adding a customer-initiated = true header makes this explicit). For AIS calls, if the customer's IP address is not provided in the request, the bank assumes it is a TPP-initiated request and may limit the TPP to four TPP-initiated access attempts within a given 24-hour period.
- https://api.token.io/accounts
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
https://api.token.io/accounts \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'on-behalf-of: ta:3eYPU1BEKKunfmYgQuSKXFCeo851C5Y3XiZW3XA465TU:5zKtXEAq' \
-H 'token-customer-ip-address: 172.16.254.1'{ "accounts": [ { … } ] }
Request
The GET /accounts/{accountId} endpoint retrieves the information for a specific bank account.
The tokenId represents the consent granted by the user (PSU).
The user's IP address if the user is currently logged in with the TPP. If the customer IP address is supplied (recommended), it is inferred that the user is present during the session (i.e., the request is user-initiated; adding a customer-initiated = true header makes this explicit). For AIS calls, if the customer's IP address is not provided in the request, the bank assumes it is a TPP-initiated request and may limit the TPP to 4 TPP-initiated access attempts within a given 24-hour period.
- https://api.token.io/accounts/{accountId}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
https://api.token.io/accounts/a:8DbPteGnytmMbKXdnWTReeRB6cYWKXZ84JgLTBC7fKL4:5zKcENpV \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'on-behalf-of: ta:3eYPU1BEKKunfmYgQuSKXFCeo851C5Y3XiZW3XA465TU:5zKtXEAq' \
-H 'token-customer-ip-address: 172.16.254.1'{ "account": { "accountDetails": { … }, "accountFeatures": { … }, "bankId": "ob-modelo", "id": "a:8DbPteGnytmMbKXdnWTReeRB6cYWKXZ84JgLTBC7fKL4:5zKcENpV", "isLocked": false, "name": "John A Smith" } }
A list of account ids for which you wish to retrieve account balances. Each accountId should be specified separately as accountId=a:xxx:xxx&accountId=a:yyy:yyy.
The tokenId represents the consent granted by the user (PSU).
The user's IP address if the user is currently logged in with the TPP. If the customer IP address is supplied (recommended), it is inferred that the user is present during the session (i.e., the request is user-initiated; adding a customer-initiated = true header makes this explicit). For AIS calls, if the customer's IP address is not provided in the request, the bank assumes it is a TPP-initiated request and may limit the TPP to 4 TPP-initiated access attempts within a given 24-hour period.
- https://api.token.io/account-balance
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://api.token.io/account-balance?accountId=a%3A8DbPteGnytmMbKXdnWTReeRB6cYWKXZ84JgLTBC7fKL4%3A5zKcENpV%2Ca%3A9TFpwkcQmcsMbdjQcpdjfsEBosDw28503fAAGPEMF2MVF19hfk3nc%2Ca%3Artmv254gaskGLdkadQvdNesk2Y9ferbvpaom5mvepm0mv2nfGnaix' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'on-behalf-of: ta:3eYPU1BEKKunfmYgQuSKXFCeo851C5Y3XiZW3XA465TU:5zKtXEAq' \
-H 'token-customer-ip-address: 172.16.254.1'{ "response": [ { … } ] }
Request
The GET /accounts/{accountId}/balance endpoint retrieves the balance for a given bank account.
The tokenId represents the consent granted by the user (PSU).
The user's IP address if the user is currently logged in with the TPP. If the customer IP address is supplied (recommended), it is inferred that the user is present during the session (i.e., the request is user-initiated; adding a customer-initiated = true header makes this explicit). For AIS calls, if the customer's IP address is not provided in the request, the bank assumes it is a TPP-initiated request and may limit the TPP to 4 TPP-initiated access attempts within a given 24-hour period.
- https://api.token.io/accounts/{accountId}/balance
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
https://api.token.io/accounts/a:8DbPteGnytmMbKXdnWTReeRB6cYWKXZ84JgLTBC7fKL4:5zKcENpV/balance \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'on-behalf-of: ta:3eYPU1BEKKunfmYgQuSKXFCeo851C5Y3XiZW3XA465TU:5zKtXEAq' \
-H 'token-customer-ip-address: 172.16.254.1'{ "balance": { "accountId": "a:8DbPteGnytmMbKXdnWTReeRB6cYWKXZ84JgLTBC7fKL4:5zKcENpV4", "available": { … }, "current": { … }, "otherBalances": [ … ] }, "status": "SUCCESSFUL_REQUEST" }
Request
The GET /accounts/{accountId}/standing-orders endpoint retrieves information for all standing orders in a given account, once consent has been given.
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.e. 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.
The offset is not visible to a user and should not be parsed and/or understood in any way.
The tokenId represents the consent granted by the user (PSU).
The user's IP address if the user is currently logged in with the TPP. If the customer IP address is supplied (recommended), it is inferred that the user is present during the session (i.e., the request is user-initiated; adding a customer-initiated = true header makes this explicit). For AIS calls, if the customer's IP address is not provided in the request, the bank assumes it is a TPP-initiated request and may limit the TPP to 4 TPP-initiated access attempts within a given 24-hour period.
- https://api.token.io/accounts/{accountId}/standing-orders
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://api.token.io/accounts/a:8DbPteGnytmMbKXdnWTReeRB6cYWKXZ84JgLTBC7fKL4:5zKcENpV/standing-orders?page.offset=LerV6Jmex&page.limit=175' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'on-behalf-of: ta:3eYPU1BEKKunfmYgQuSKXFCeo851C5Y3XiZW3XA465TU:5zKtXEAq' \
-H 'token-customer-ip-address: 172.16.254.1'{ "offset": "LerV6Jmex", "standingOrders": [ { … } ], "status": "SUCCESSFUL_REQUEST" }
Request
The GET /accounts/{accountId}/standing-orders/{standingOrderId} endpoint retrieves information for a specific standing order in a given account, once consent has been given.
The system-generated, unique bank account id, which specifies the account for which the information is requested.
The tokenId represents the consent granted by the user (PSU).
The user's IP address if the user is currently logged in with the TPP. If the customer IP address is supplied (recommended), it is inferred that the user is present during the session (i.e., the request is user-initiated; adding a customer-initiated = true header makes this explicit). For AIS calls, if the customer's IP address is not provided in the request, the bank assumes it is a TPP-initiated request and may limit the TPP to 4 TPP-initiated access attempts within a given 24-hour period.
- https://api.token.io/accounts/{accountId}/standing-orders/{standingOrderId}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://api.token.io/accounts/a:8DbPteGnytmMbKXdnWTReeRB6cYWKXZ84JgLTBC7fKL4:5zKcENpV/standing-orders/{standingOrderId}' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'on-behalf-of: ta:3eYPU1BEKKunfmYgQuSKXFCeo851C5Y3XiZW3XA465TU:5zKtXEAq' \
-H 'token-customer-ip-address: 172.16.254.1'{ "standingOrder": { "createdAtMs": 1729212980771, "creditorEndpoint": { … }, "frequency": "WEEK", "id": "tt:83KiRJuXmEDV5m2b8ZvLGE91ELf7PPw5BaDab98kMguu:3VMczyq7r7b6HwC", "providerStandingOrderDetails": { … }, "status": "PROCESSING", "tokenId": "tt:8zK1dic95omjWb72gvc3z3ELKbTNfnGd89MbDnM73er4:ZhBVAJSH8DeU1", "tokenSubmissionId": "12345678" }, "status": "SUCCESSFUL_REQUEST" }
Request
The GET /accounts/{accountId}/transactions endpoint retrieves information for all transactions in a given account.
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.e. 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.
The offset is not visible to a user and should not be parsed and/or understood in any way.
The maximum number of records to return. This must be less than 200.
The earliest transaction date requested, in ISO 8601 format.
The tokenId represents the consent granted by the user (PSU).
The user's IP address if the user is currently logged in with the TPP. If the customer IP address is supplied (recommended), it is inferred that the user is present during the session (i.e., the request is user-initiated; adding a customer-initiated = true header makes this explicit). For AIS calls, if the customer's IP address is not provided in the request, the bank assumes it is a TPP-initiated request and may limit the TPP to 4 TPP-initiated access attempts within a given 24-hour period.
- https://api.token.io/accounts/{accountId}/transactions
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://api.token.io/accounts/a:8DbPteGnytmMbKXdnWTReeRB6cYWKXZ84JgLTBC7fKL4:5zKcENpV/transactions?page.offset=LerV6Jmex&page.limit=175&startDate=2022-06-15&endDate=2022-11-30' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'on-behalf-of: ta:3eYPU1BEKKunfmYgQuSKXFCeo851C5Y3XiZW3XA465TU:5zKtXEAq' \
-H 'token-customer-ip-address: 172.16.254.1'{ "offset": "LerV6Jmex", "status": "SUCCESSFUL_REQUEST", "transactions": [ { … } ] }
Request
The GET /accounts/{accountId}/transaction/{transactionId} endpoint retrieves information for a specific transaction in a given account.
The unique bank account id, which specifies the account for which the information is requested.
The tokenId represents the consent granted by the user (PSU).
The user's IP address if the user is currently logged in with the TPP. If the customer IP address is supplied (recommended), it is inferred that the user is present during the session (i.e., the request is user-initiated; adding a customer-initiated = true header makes this explicit). For AIS calls, if the customer's IP address is not provided in the request, the bank assumes it is a TPP-initiated request and may limit the TPP to 4 TPP-initiated access attempts within a given 24-hour period.
- https://api.token.io/accounts/{accountId}/transaction/{transactionId}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
https://api.token.io/accounts/a:8DbPteGnytmMbKXdnWTReeRB6cYWKXZ84JgLTBC7fKL4:5zKcENpV/transaction/42909b155d4942299c39017686b5dc36 \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'on-behalf-of: ta:3eYPU1BEKKunfmYgQuSKXFCeo851C5Y3XiZW3XA465TU:5zKtXEAq' \
-H 'token-customer-ip-address: 172.16.254.1'{ "status": "SUCCESSFUL_REQUEST", "transaction": { "amount": { … }, "bankTransactionCode": { … }, "bankTransactionId": "83KiRJuXmEDV5m2b8ZvLGE91ELf7PPw5BaDab98kMguu:3VMczyq7r7b6HwC", "createdAtMs": 1729212980771, "creditorEndpoint": { … }, "description": "Payment", "id": "tt:83KiRJuXmEDV5m2b8ZvLGE91ELf7PPw5BaDab98kMguu:3VMczyq7r7b6HwC", "metadata": { … }, "providerTransactionDetails": { … }, "status": "PROCESSING", "tokenId": "tt:8zK1dic95omjWb72gvc3z3ELKbTNfnGd89MbDnM73er4:ZhBVAJSH8DeU1", "tokenTransferId": "t:2UhwCZ3BMaEcAUK8bZdukor7NL4tH6TBuu6aJMp5KKfX:5zKcENpV", "type": "INVALID_TYPE" } }
These endpoints configure, retrieve and remove webhooks. See Webhooks for more details.