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 initiation payload for the VRP consent.
The Token.io id of the bank where the consent is created. This field is required if the customer is not using Token.io's Hosted Pages for bank selection, i.e., API-only integration when EMBEDDED_HOSTED_PAGES is selected in flowType, or Hosted Pages embedded (modal) integration.
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.
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.
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.
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.
The secondary field for remittance information. The information supplied should enable the reconciliation of an entry in an unstructured form. Depending on the payment network, information from this field may or may not be included in the bank statement and reconciliation file.
We recommend that the remittanceInformationSecondary 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 140 characters in length.
The date and time from which payments can be made (in ISO 8601 format). Payments initiated before this time will be rejected. If not provided, the time of consent creation is used as a default. The date and time cannot be earlier than the current time.
The date and time before which payments can be made (in ISO 8601 format). Payments initiated after this time will be rejected.
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.
The types of payments that can be made under this VRP consent.
The bank's payment service used for making a payment. Presently only Faster Payments are supported.
The ISO 4217 three letter currency code for this VRP consent. All amounts specified in this consent are in this currency. All payments created under this consent should use this currency.
The minimum amount for individual payments made under this consent, with up to four digits after the decimal point It should not exceed the maximumIndividualAmount or any of the periodic limits maximumAmount.
The maximum amount for individual payments made under this consent, with up to four digits after the decimal point.
A list of periodic limits that are applied together as an intersection. At least one should be specified.
The transaction amount with up to four digits after the decimal point.
This field specifies whether the period starts on the consent start date or lines up with a calendar. If not specified, the CONSENT alignment is used.
The consent start date is defined by the startDateTime field of the consent (the time element is disregarded) or the date when consent is created if the startDateTime is not specified.
The total number of payments that can be initiated under this consent. Any new payments will be rejected if the number is over this limit. This cannot be negative, 0 value is considered as not set.
The TPP's url that Token.io calls back to. This url should not be under the token.io domain and must be https/SSL secure.
The uniquely-generated string included as part of the URL when communicating with the bank. It is sent to the bank during payment initiation and is also returned in the callback from the bank. You can use it to identify which payment the callback refers to, ensuring that the callback can be reliably matched to the original payment request.
This field indicates whether the RefundAccount object should be included in the VRP created under this consent.
https://api.token.io/vrp-consents
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://api.token.io/vrp-consents \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"initiation": {
"bankId": "ob-modelo",
"refId": "9htio4a1sp2akdr1aa",
"remittanceInformationPrimary": "Sweepco",
"remittanceInformationSecondary": "Secondary remittance information.",
"startDateTime": "2017-04-05T10:43:07.123+01:00",
"endDateTime": "2017-04-05T10:43:07.132+01:00",
"onBehalfOfId": "6f34h397-b29h-23b0-s30g-hkd0d2dk4k1s",
"vrpType": "SWEEPING",
"localInstrument": "FASTER_PAYMENTS",
"debtor": {
"accountNumber": "12345678",
"sortCode": "123456",
"name": "John Smith",
"ultimateDebtorName": "John Smith",
"address": {
"addressLine": [
"The Coach House"
],
"streetName": "221B",
"buildingNumber": "2C",
"postCode": "TR26 1EZ",
"townName": "Saint Ives",
"state": "Cornwall",
"district": "string",
"country": "GB"
}
},
"creditor": {
"accountNumber": "12345678",
"sortCode": "123456",
"name": "Customer Inc.",
"ultimateCreditorName": "Customer Inc.",
"address": {
"addressLine": [
"The Coach House"
],
"streetName": "221B",
"buildingNumber": "2C",
"postCode": "TR26 1EZ",
"townName": "Saint Ives",
"state": "Cornwall",
"district": "string",
"country": "GB"
},
"bankName": "string"
},
"currency": "EUR",
"minimumIndividualAmount": "5.0",
"maximumIndividualAmount": "10000.0",
"periodicLimits": [
{
"maximumAmount": "100.00",
"periodType": "DAY",
"periodAlignment": "CALENDAR"
}
],
"maximumOccurrences": 3,
"callbackUrl": "https://tpp.com/callback",
"callbackState": "6242e45e-3063-4c42-8376",
"returnRefundAccount": true,
"risk": {
"psuId": "0000789123",
"paymentContextCode": "PISP_PAYEE",
"paymentPurposeCode": "DVPM",
"merchantCategoryCode": "4812",
"beneficiaryAccountType": "BUSINESS",
"contractPresentIndicator": true,
"beneficiaryPrepopulatedIndicator": true,
"deliveryAddress": {
"addressLine": [
"Flat 2, The Red Lodge, 1 High Street"
],
"addressType": "BUSINESS",
"buildingNumber": "1",
"country": "GB",
"countrySubDivision": [
"North Yorkshire"
],
"department": "1",
"postCode": "YO62 5JB",
"streetName": "High Street",
"subDepartment": "Flat 2",
"townName": "York"
}
}
},
"pispConsentAccepted": false
}'Successful response
The VRP consent object.
The Token.io-assigned member id of the TPP.
The initiation payload for the VRP consent.
The Token.io id of the bank where the consent is created. This field is required if the customer is not using Token.io's Hosted Pages for bank selection, i.e., API-only integration when EMBEDDED_HOSTED_PAGES is selected in flowType, or Hosted Pages embedded (modal) integration.
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.
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.
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.
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.
The secondary field for remittance information. The information supplied should enable the reconciliation of an entry in an unstructured form. Depending on the payment network, information from this field may or may not be included in the bank statement and reconciliation file.
We recommend that the remittanceInformationSecondary 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 140 characters in length.
The date and time from which payments can be made (in ISO 8601 format). Payments initiated before this time will be rejected. If not provided, the time of consent creation is used as a default. The date and time cannot be earlier than the current time.
The date and time before which payments can be made (in ISO 8601 format). Payments initiated after this time will be rejected.
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.
The types of payments that can be made under this VRP consent.
The bank's payment service used for making a payment. Presently only Faster Payments are supported.
The ISO 4217 three letter currency code for this VRP consent. All amounts specified in this consent are in this currency. All payments created under this consent should use this currency.
The minimum amount for individual payments made under this consent, with up to four digits after the decimal point It should not exceed the maximumIndividualAmount or any of the periodic limits maximumAmount.
The maximum amount for individual payments made under this consent, with up to four digits after the decimal point.
A list of periodic limits that are applied together as an intersection. At least one should be specified.
The transaction amount with up to four digits after the decimal point.
This field specifies whether the period starts on the consent start date or lines up with a calendar. If not specified, the CONSENT alignment is used.
The consent start date is defined by the startDateTime field of the consent (the time element is disregarded) or the date when consent is created if the startDateTime is not specified.
The total number of payments that can be initiated under this consent. Any new payments will be rejected if the number is over this limit. This cannot be negative, 0 value is considered as not set.
The TPP's url that Token.io calls back to. This url should not be under the token.io domain and must be https/SSL secure.
The uniquely-generated string included as part of the URL when communicating with the bank. It is sent to the bank during payment initiation and is also returned in the callback from the bank. You can use it to identify which payment the callback refers to, ensuring that the callback can be reliably matched to the original payment request.
This field indicates whether the RefundAccount object should be included in the VRP created under this consent.
The time this VRP consent object was created (in ISO 8601 format).
The last time this VRP consent object was updated (in ISO 8601 format).
The Token.io VRP consent status.
- PENDING - Token.io has received the request to create a VRP consent and the request has passed Token.io's validation.
- PENDING_MORE_INFO - The initiaion lacks mandatory fields (e.g.,
bankId) that must be collected before connecting to the bank. - PENDING_REDIRECT_AUTH - The consent request has been acknowledged by the bank and Token.io is awaiting user confirmation at the bank's page.
- PENDING_REDIRECT_AUTH_VERIFICATION - Token.io has received the callback information from the bank and is currently verifying it with the bank.
- AUTHORIZED - the VRP consent has been successfully authorized.
- REJECTED - The VRP consent has been rejected. More details are shared in the corresponding
statusReasonInformationfield. - REVOKED - The VRP consent has been revoked by the user.
- FAILED - Token.io failed to proceed with the consent as a result of problems with the bank, or because the user has abandoned the request. All
PENDINGstatuses convert toFAILED30 minutes after consent creation.
The VRP consent id from the bank. This field can be empty if the consent id isn't available on the bank side.
The raw bank status. This field can be empty if the consent status isn't available on the bank side.
A human-readable description of the reason for the reported status, which may include a message from the bank. This value should not exceed 256 characters in length.
{ "vrpConsent": { "id": "vc:12345abcd:abcde", "memberId": "m:123456abcd:abcd", "initiation": { … }, "createdDateTime": "2017-04-05T10:43:07.123Z", "updatedDateTime": "2017-04-05T10:45:07.123Z", "status": "AUTHORIZED", "bankVrpConsentId": "4jq34dwjgi9MCK2MXB9f7v", "bankVrpConsentStatus": "AwaitingAuthorization", "statusReasonInformation": "The consent resource is awaiting user authorization.", "authentication": { … } } }
https://api.token.io/vrp-consents
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://api.token.io/vrp-consents?limit=10&offset=LerV6Jmex' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'Successful response
The Token.io-assigned member id of the TPP.
The initiation payload for the VRP consent.
The Token.io id of the bank where the consent is created. This field is required if the customer is not using Token.io's Hosted Pages for bank selection, i.e., API-only integration when EMBEDDED_HOSTED_PAGES is selected in flowType, or Hosted Pages embedded (modal) integration.
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.
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.
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.
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.
The secondary field for remittance information. The information supplied should enable the reconciliation of an entry in an unstructured form. Depending on the payment network, information from this field may or may not be included in the bank statement and reconciliation file.
We recommend that the remittanceInformationSecondary 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 140 characters in length.
The date and time from which payments can be made (in ISO 8601 format). Payments initiated before this time will be rejected. If not provided, the time of consent creation is used as a default. The date and time cannot be earlier than the current time.
The date and time before which payments can be made (in ISO 8601 format). Payments initiated after this time will be rejected.
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.
The types of payments that can be made under this VRP consent.
The bank's payment service used for making a payment. Presently only Faster Payments are supported.
The ISO 4217 three letter currency code for this VRP consent. All amounts specified in this consent are in this currency. All payments created under this consent should use this currency.
The minimum amount for individual payments made under this consent, with up to four digits after the decimal point It should not exceed the maximumIndividualAmount or any of the periodic limits maximumAmount.
The maximum amount for individual payments made under this consent, with up to four digits after the decimal point.
A list of periodic limits that are applied together as an intersection. At least one should be specified.
The transaction amount with up to four digits after the decimal point.
This field specifies whether the period starts on the consent start date or lines up with a calendar. If not specified, the CONSENT alignment is used.
The consent start date is defined by the startDateTime field of the consent (the time element is disregarded) or the date when consent is created if the startDateTime is not specified.
The total number of payments that can be initiated under this consent. Any new payments will be rejected if the number is over this limit. This cannot be negative, 0 value is considered as not set.
The TPP's url that Token.io calls back to. This url should not be under the token.io domain and must be https/SSL secure.
The uniquely-generated string included as part of the URL when communicating with the bank. It is sent to the bank during payment initiation and is also returned in the callback from the bank. You can use it to identify which payment the callback refers to, ensuring that the callback can be reliably matched to the original payment request.
This field indicates whether the RefundAccount object should be included in the VRP created under this consent.
The time this VRP consent object was created (in ISO 8601 format).
The last time this VRP consent object was updated (in ISO 8601 format).
The Token.io VRP consent status.
- PENDING - Token.io has received the request to create a VRP consent and the request has passed Token.io's validation.
- PENDING_MORE_INFO - The initiaion lacks mandatory fields (e.g.,
bankId) that must be collected before connecting to the bank. - PENDING_REDIRECT_AUTH - The consent request has been acknowledged by the bank and Token.io is awaiting user confirmation at the bank's page.
- PENDING_REDIRECT_AUTH_VERIFICATION - Token.io has received the callback information from the bank and is currently verifying it with the bank.
- AUTHORIZED - the VRP consent has been successfully authorized.
- REJECTED - The VRP consent has been rejected. More details are shared in the corresponding
statusReasonInformationfield. - REVOKED - The VRP consent has been revoked by the user.
- FAILED - Token.io failed to proceed with the consent as a result of problems with the bank, or because the user has abandoned the request. All
PENDINGstatuses convert toFAILED30 minutes after consent creation.
The VRP consent id from the bank. This field can be empty if the consent id isn't available on the bank side.
The raw bank status. This field can be empty if the consent status isn't available on the bank side.
A human-readable description of the reason for the reported status, which may include a message from the bank. This value should not exceed 256 characters in length.
The information about the current page, which also indicates whether the next page exists.
The limit (maximum number of objects to return) applied to this page.
The default and maximum allowed limit is 200. If this limit is exceeded, was not set or was set to 0, it will be set to 200.
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 is 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 the dynamic nature of the data.
The offset is opaque to a user and should not be parsed and/or understood in any way.
The offset for the next page. If the page is empty, it is equal to this page offset. If the page is not empty, but there are no more objects to load (haveMore = false), it will be empty.
The offset is opaque to a user and should not be parsed and/or understood in any way.
{ "vrpConsents": [ { … } ], "pageInfo": { "limit": 20, "offset": "LerV6Jmex", "nextOffset": "KgwG8Qkat", "haveMore": false } }
https://api.token.io/vrp-consents/{id}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
https://api.token.io/vrp-consents/vc:12345abcd:abcde \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'Successful response
The VRP consent object.
The Token.io-assigned member id of the TPP.
The initiation payload for the VRP consent.
The Token.io id of the bank where the consent is created. This field is required if the customer is not using Token.io's Hosted Pages for bank selection, i.e., API-only integration when EMBEDDED_HOSTED_PAGES is selected in flowType, or Hosted Pages embedded (modal) integration.
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.
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.
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.
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.
The secondary field for remittance information. The information supplied should enable the reconciliation of an entry in an unstructured form. Depending on the payment network, information from this field may or may not be included in the bank statement and reconciliation file.
We recommend that the remittanceInformationSecondary 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 140 characters in length.
The date and time from which payments can be made (in ISO 8601 format). Payments initiated before this time will be rejected. If not provided, the time of consent creation is used as a default. The date and time cannot be earlier than the current time.
The date and time before which payments can be made (in ISO 8601 format). Payments initiated after this time will be rejected.
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.
The types of payments that can be made under this VRP consent.
The bank's payment service used for making a payment. Presently only Faster Payments are supported.
The ISO 4217 three letter currency code for this VRP consent. All amounts specified in this consent are in this currency. All payments created under this consent should use this currency.
The minimum amount for individual payments made under this consent, with up to four digits after the decimal point It should not exceed the maximumIndividualAmount or any of the periodic limits maximumAmount.
The maximum amount for individual payments made under this consent, with up to four digits after the decimal point.
A list of periodic limits that are applied together as an intersection. At least one should be specified.
The transaction amount with up to four digits after the decimal point.
This field specifies whether the period starts on the consent start date or lines up with a calendar. If not specified, the CONSENT alignment is used.
The consent start date is defined by the startDateTime field of the consent (the time element is disregarded) or the date when consent is created if the startDateTime is not specified.
The total number of payments that can be initiated under this consent. Any new payments will be rejected if the number is over this limit. This cannot be negative, 0 value is considered as not set.
The TPP's url that Token.io calls back to. This url should not be under the token.io domain and must be https/SSL secure.
The uniquely-generated string included as part of the URL when communicating with the bank. It is sent to the bank during payment initiation and is also returned in the callback from the bank. You can use it to identify which payment the callback refers to, ensuring that the callback can be reliably matched to the original payment request.
This field indicates whether the RefundAccount object should be included in the VRP created under this consent.
The time this VRP consent object was created (in ISO 8601 format).
The last time this VRP consent object was updated (in ISO 8601 format).
The Token.io VRP consent status.
- PENDING - Token.io has received the request to create a VRP consent and the request has passed Token.io's validation.
- PENDING_MORE_INFO - The initiaion lacks mandatory fields (e.g.,
bankId) that must be collected before connecting to the bank. - PENDING_REDIRECT_AUTH - The consent request has been acknowledged by the bank and Token.io is awaiting user confirmation at the bank's page.
- PENDING_REDIRECT_AUTH_VERIFICATION - Token.io has received the callback information from the bank and is currently verifying it with the bank.
- AUTHORIZED - the VRP consent has been successfully authorized.
- REJECTED - The VRP consent has been rejected. More details are shared in the corresponding
statusReasonInformationfield. - REVOKED - The VRP consent has been revoked by the user.
- FAILED - Token.io failed to proceed with the consent as a result of problems with the bank, or because the user has abandoned the request. All
PENDINGstatuses convert toFAILED30 minutes after consent creation.
The VRP consent id from the bank. This field can be empty if the consent id isn't available on the bank side.
The raw bank status. This field can be empty if the consent status isn't available on the bank side.
A human-readable description of the reason for the reported status, which may include a message from the bank. This value should not exceed 256 characters in length.
{ "vrpConsent": { "id": "vc:12345abcd:abcde", "memberId": "m:123456abcd:abcd", "initiation": { … }, "createdDateTime": "2017-04-05T10:43:07.123Z", "updatedDateTime": "2017-04-05T10:45:07.123Z", "status": "AUTHORIZED", "bankVrpConsentId": "4jq34dwjgi9MCK2MXB9f7v", "bankVrpConsentStatus": "AwaitingAuthorization", "statusReasonInformation": "The consent resource is awaiting user authorization.", "authentication": { … } } }
https://api.token.io/vrp-consents/{id}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X DELETE \
https://api.token.io/vrp-consents/vc:12345abcd:abcde \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'Successful response
The VRP consent object.
The Token.io-assigned member id of the TPP.
The initiation payload for the VRP consent.
The Token.io id of the bank where the consent is created. This field is required if the customer is not using Token.io's Hosted Pages for bank selection, i.e., API-only integration when EMBEDDED_HOSTED_PAGES is selected in flowType, or Hosted Pages embedded (modal) integration.
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.
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.
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.
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.
The secondary field for remittance information. The information supplied should enable the reconciliation of an entry in an unstructured form. Depending on the payment network, information from this field may or may not be included in the bank statement and reconciliation file.
We recommend that the remittanceInformationSecondary 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 140 characters in length.
The date and time from which payments can be made (in ISO 8601 format). Payments initiated before this time will be rejected. If not provided, the time of consent creation is used as a default. The date and time cannot be earlier than the current time.
The date and time before which payments can be made (in ISO 8601 format). Payments initiated after this time will be rejected.
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.
The types of payments that can be made under this VRP consent.
The bank's payment service used for making a payment. Presently only Faster Payments are supported.
The ISO 4217 three letter currency code for this VRP consent. All amounts specified in this consent are in this currency. All payments created under this consent should use this currency.
The minimum amount for individual payments made under this consent, with up to four digits after the decimal point It should not exceed the maximumIndividualAmount or any of the periodic limits maximumAmount.
The maximum amount for individual payments made under this consent, with up to four digits after the decimal point.
A list of periodic limits that are applied together as an intersection. At least one should be specified.
The transaction amount with up to four digits after the decimal point.
This field specifies whether the period starts on the consent start date or lines up with a calendar. If not specified, the CONSENT alignment is used.
The consent start date is defined by the startDateTime field of the consent (the time element is disregarded) or the date when consent is created if the startDateTime is not specified.
The total number of payments that can be initiated under this consent. Any new payments will be rejected if the number is over this limit. This cannot be negative, 0 value is considered as not set.
The TPP's url that Token.io calls back to. This url should not be under the token.io domain and must be https/SSL secure.
The uniquely-generated string included as part of the URL when communicating with the bank. It is sent to the bank during payment initiation and is also returned in the callback from the bank. You can use it to identify which payment the callback refers to, ensuring that the callback can be reliably matched to the original payment request.
This field indicates whether the RefundAccount object should be included in the VRP created under this consent.
The time this VRP consent object was created (in ISO 8601 format).
The last time this VRP consent object was updated (in ISO 8601 format).
The Token.io VRP consent status.
- PENDING - Token.io has received the request to create a VRP consent and the request has passed Token.io's validation.
- PENDING_MORE_INFO - The initiaion lacks mandatory fields (e.g.,
bankId) that must be collected before connecting to the bank. - PENDING_REDIRECT_AUTH - The consent request has been acknowledged by the bank and Token.io is awaiting user confirmation at the bank's page.
- PENDING_REDIRECT_AUTH_VERIFICATION - Token.io has received the callback information from the bank and is currently verifying it with the bank.
- AUTHORIZED - the VRP consent has been successfully authorized.
- REJECTED - The VRP consent has been rejected. More details are shared in the corresponding
statusReasonInformationfield. - REVOKED - The VRP consent has been revoked by the user.
- FAILED - Token.io failed to proceed with the consent as a result of problems with the bank, or because the user has abandoned the request. All
PENDINGstatuses convert toFAILED30 minutes after consent creation.
The VRP consent id from the bank. This field can be empty if the consent id isn't available on the bank side.
The raw bank status. This field can be empty if the consent status isn't available on the bank side.
A human-readable description of the reason for the reported status, which may include a message from the bank. This value should not exceed 256 characters in length.
{ "vrpConsent": { "id": "vc:12345abcd:abcde", "memberId": "m:123456abcd:abcd", "initiation": { … }, "createdDateTime": "2017-04-05T10:43:07.123Z", "updatedDateTime": "2017-04-05T10:45:07.123Z", "status": "AUTHORIZED", "bankVrpConsentId": "4jq34dwjgi9MCK2MXB9f7v", "bankVrpConsentStatus": "AwaitingAuthorization", "statusReasonInformation": "The consent resource is awaiting user authorization.", "authentication": { … } } }
https://api.token.io/vrp-consents/{id}/payments
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://api.token.io/vrp-consents/vc:12345abcd:abcde/payments?limit=10&offset=LerV6Jmex' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'Successful response
The Token.io-assigned member id of the TPP.
The VRP initiation object.
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.
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.
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.
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.
The secondary field for remittance information. The information supplied should enable the reconciliation of an entry in an unstructured form. Depending on the payment network, information from this field may or may not be included in the bank statement and reconciliation file.
We recommend that the remittanceInformationSecondary 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 140 characters in length.
The transaction amount and currency.
The transaction amount with up to four digits after the decimal point.
The ISO 4217 three letter currency code.
A flag indicating whether the bank should do a funds confirmation check before accepting the payment. If set to true, the funds will be checked.
The time when this VRP object was created (in ISO 8601 format).
The date and time this VRP object was last updated (in ISO 8601 format).
The Token.io VRP status.
- INITIATION_PENDING - Token.io has received the payment initiation request and it has passed Token.io's validation.
- INITIATION_PROCESSING - The VRP request has been acknowledged by the bank and is now being processed.
- INITIATION_COMPLETED - Payment initiation has been completed. INITIATION_REJECTED - The payment has been rejected.
- INITIATION_REJECTED_INSUFFICIENT_FUNDS - The payment has been rejected because the funds check returned a negative result.
- INITIATION_FAILED - Token.io failed to proceed with the initiation as a result of problems reaching the bank.
- INITIATION_NO_FINAL_STATUS_AVAILABLE - The payment status has not been updated for some time and Token.io has stopped polling it. The recommended maximum polling time is 30 days. The status will change to
INITIATION_NO_FINAL_STATUS_AVAILABLEafter 30 days if the bank does not update the status. This is a final status, but it does not indicate success or failure. Please contact the bank to check the actual status of the payment.
The VRP id from the bank. This field can be empty if the VRP id isn't available on the bank's side.
The raw bank status. This field can be empty if payment status isn't available on the bank's side.
A human-readable description of the reason for the reported status, which may include a message from the bank. This value should not exceed 256 characters in length.
The information about the current page, which also indicates whether the next page exists.
The limit (maximum number of objects to return) applied to this page.
The default and maximum allowed limit is 200. If this limit is exceeded, was not set or was set to 0, it will be set to 200.
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 is 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 the dynamic nature of the data.
The offset is opaque to a user and should not be parsed and/or understood in any way.
The offset for the next page. If the page is empty, it is equal to this page offset. If the page is not empty, but there are no more objects to load (haveMore = false), it will be empty.
The offset is opaque to a user and should not be parsed and/or understood in any way.
{ "vrps": [ { … } ], "pageInfo": { "limit": 20, "offset": "LerV6Jmex", "nextOffset": "KgwG8Qkat", "haveMore": false } }
The VRP initiation object.
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.
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.
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.
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.
The secondary field for remittance information. The information supplied should enable the reconciliation of an entry in an unstructured form. Depending on the payment network, information from this field may or may not be included in the bank statement and reconciliation file.
We recommend that the remittanceInformationSecondary 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 140 characters in length.
The transaction amount and currency.
The transaction amount with up to four digits after the decimal point.
A flag indicating whether the bank should do a funds confirmation check before accepting the payment. If set to true, the funds will be checked.
https://api.token.io/vrps
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://api.token.io/vrps \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"initiation": {
"consentId": "vc:12345abcd:abcd",
"refId": "9htio4a1sp2akdr1aa",
"remittanceInformationPrimary": "Sweepco",
"remittanceInformationSecondary": "Secondary remittance information.",
"amount": {
"value": "10.23",
"currency": "EUR"
},
"confirmFunds": false,
"risk": {
"psuId": "0000789123",
"paymentContextCode": "PISP_PAYEE",
"paymentPurposeCode": "DVPM",
"merchantCategoryCode": "4812",
"beneficiaryAccountType": "BUSINESS",
"contractPresentIndicator": true,
"beneficiaryPrepopulatedIndicator": true,
"deliveryAddress": {
"addressLine": [
"Flat 2, The Red Lodge, 1 High Street"
],
"addressType": "BUSINESS",
"buildingNumber": "1",
"country": "GB",
"countrySubDivision": [
"North Yorkshire"
],
"department": "1",
"postCode": "YO62 5JB",
"streetName": "High Street",
"subDepartment": "Flat 2",
"townName": "York"
}
}
}
}'{ "vrp": { "id": "vrp:12345abcd:abcd", "memberId": "m:123456abcd:abcd", "initiation": { … }, "createdDateTime": "2017-04-05T10:43:07.123Z", "updatedDateTime": "2017-04-05T10:45:07.123Z", "status": "INITIATION_COMPLETED", "bankVrpId": "4vn6aDyMiwBYbPDN", "bankVrpStatus": "AcceptedCreditSettlementCompleted", "statusReasonInformation": "The payment is settled on the debtor's side.", "refundDetails": { … } } }
Filters vrp payments by their ids - returns only payments with ids listed in this parameter.
Invert ids query - returns only vrp payments with ids not listed in the ids parameter.
Filters vrp payments by their statuses - returns only payments with statuses listed in this parameter.
Invert statuses query - returns only vrp payments with statuses not listed in the statuses parameter.
Returns only vrp payments created after this time (in ISO 8601 format).
Returns only vrp payments created before this time (in ISO 8601 format).
Filters vrp payments by their refId values - returns only payments with refIds listed in this parameter.
https://api.token.io/vrps
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://api.token.io/vrps?limit=10&offset=LerV6Jmex&ids=vrp%3A4QExXrhKTxfShBdcTeqFabqJJhUF%3A2gFUX1NDgpN%2Cvrp%3AN5cJDFsQzVca3Qvr8kQocgEnjgX%3A2gFUX1NEdYA&invertIds=true&statuses=INITIATION_COMPLETED%2CINITIATION_REJECTED&invertStatuses=true&createdAfter=2022-04-05T17%3A00%3A00.000Z&createdBefore=2022-04-05T17%3A00%3A00.000Z&refIds=ShBdcTeqFabqJJhUF%2CN5cJDFsQzVca3Q&vrpConsentId=vc%3A12345abcd%3Aabcde' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'Successful response
The Token.io-assigned member id of the TPP.
The VRP initiation object.
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.
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.
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.
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.
The secondary field for remittance information. The information supplied should enable the reconciliation of an entry in an unstructured form. Depending on the payment network, information from this field may or may not be included in the bank statement and reconciliation file.
We recommend that the remittanceInformationSecondary 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 140 characters in length.
The transaction amount and currency.
The transaction amount with up to four digits after the decimal point.
The ISO 4217 three letter currency code.
A flag indicating whether the bank should do a funds confirmation check before accepting the payment. If set to true, the funds will be checked.
The time when this VRP object was created (in ISO 8601 format).
The date and time this VRP object was last updated (in ISO 8601 format).
The Token.io VRP status.
- INITIATION_PENDING - Token.io has received the payment initiation request and it has passed Token.io's validation.
- INITIATION_PROCESSING - The VRP request has been acknowledged by the bank and is now being processed.
- INITIATION_COMPLETED - Payment initiation has been completed. INITIATION_REJECTED - The payment has been rejected.
- INITIATION_REJECTED_INSUFFICIENT_FUNDS - The payment has been rejected because the funds check returned a negative result.
- INITIATION_FAILED - Token.io failed to proceed with the initiation as a result of problems reaching the bank.
- INITIATION_NO_FINAL_STATUS_AVAILABLE - The payment status has not been updated for some time and Token.io has stopped polling it. The recommended maximum polling time is 30 days. The status will change to
INITIATION_NO_FINAL_STATUS_AVAILABLEafter 30 days if the bank does not update the status. This is a final status, but it does not indicate success or failure. Please contact the bank to check the actual status of the payment.
The VRP id from the bank. This field can be empty if the VRP id isn't available on the bank's side.
The raw bank status. This field can be empty if payment status isn't available on the bank's side.
A human-readable description of the reason for the reported status, which may include a message from the bank. This value should not exceed 256 characters in length.
The information about the current page, which also indicates whether the next page exists.
The limit (maximum number of objects to return) applied to this page.
The default and maximum allowed limit is 200. If this limit is exceeded, was not set or was set to 0, it will be set to 200.
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 is 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 the dynamic nature of the data.
The offset is opaque to a user and should not be parsed and/or understood in any way.
The offset for the next page. If the page is empty, it is equal to this page offset. If the page is not empty, but there are no more objects to load (haveMore = false), it will be empty.
The offset is opaque to a user and should not be parsed and/or understood in any way.
{ "vrps": [ { … } ], "pageInfo": { "limit": 20, "offset": "LerV6Jmex", "nextOffset": "KgwG8Qkat", "haveMore": false } }
https://api.token.io/vrps/{id}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
https://api.token.io/vrps/vrp:12345abcd:abcde \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'{ "vrp": { "id": "vrp:12345abcd:abcd", "memberId": "m:123456abcd:abcd", "initiation": { … }, "createdDateTime": "2017-04-05T10:43:07.123Z", "updatedDateTime": "2017-04-05T10:45:07.123Z", "status": "INITIATION_COMPLETED", "bankVrpId": "4vn6aDyMiwBYbPDN", "bankVrpStatus": "AcceptedCreditSettlementCompleted", "statusReasonInformation": "The payment is settled on the debtor's side.", "refundDetails": { … } } }
https://api.token.io/vrps/{id}/confirm-funds
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://api.token.io/vrps/vc:12345abcd:abcde/confirm-funds?amount=1' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>'{ "fundsAvailable": false }
Webhooks
These endpoints configure, retrieve and remove webhooks. See Webhooks for more details.