Trustly uses a combination of split token architecture and tokenized account numbers to secure payment data and bank account information throughout the transaction lifecycle.
The concept of a “Split Token” is used throughout the Trustly API. Upon a user authorization of a banking provider for use with the Trustly payments APIs, the data retrieved from the authorization is encoded and promptly split bit-for-bit. The client receives one half, and Trustly persists the other half. This patent-pending Split Token architecture significantly increases the security of payment APIs by adhering to the principle of Split Knowledge.
This architecture ensures high security by preventing any single system from holding a complete, usable authorization token.
When the Token Service issues an authorization token, it immediately splits it into two distinct parts (analogous to a standard JWT structure):
When the client sends a subsequent request, the API Gateway performs the reassembly process:
The Split Token is only provided immediately after being generated, with the Authorize event, to the notification URL provided during Trustly onboarding.
A webhook listener must be configured at that URL in order to persist the splitToken alongside the correlating identifier (either the transactionId for a one-time payment or the customerId for saved credentials/recurring use).
Critical Warning: If the splitToken is not persisted, the transaction can only be “re-verified.” This process will generate a new splitToken but will require the user to repeat the full authorization flow in the Lightbox, leading to a poor user experience.
Several Trustly APIs, such as the Capture endpoint, require the splitToken parameter.
The token is often constructed with the + character as a separator. For example:
CO+s/6PxMBABGJ4QBIAAqSlsdBQe7ZP4tkduflU4Ft9+1ES5Sxgt2gsdg3lP/Qu+1yTUJiDv5dWZSCa9Z47wj1lag5xrc8zK2Z4U5
URL Encoding is Required:
The Trustly API expects url-encoded form data. You must encode the splitToken string before passing it to the Trustly APIs.
Some financial institutions that support OAuth-based connections may return a Tokenized Account Number (TAN) when users link their accounts. A TAN is a standard account and routing number secure substitution that can be used for ACH and RTP transfers, and is reconciled by the issuing bank at settlement. Each application or merchant a user connects with receives a unique TAN instead of the user’s actual account number. This enables stronger access controls, allowing the user to monitor or revoke a specific connection’s ability to initiate payments. TANs are provisioned with an extended time-based validity.
TANs behave differently from standard account numbers in several important ways:
TAN Expiration
At this time, no TANs are scheduled to expire. Trustly will provide advance notice if banks decide to change this.