Different direct API integration flows
A direct API integration differs if provider selection or additional input is necessary.
The required steps, and therefore actions you need to complete, for payment or mandate authorisation depend on whether:
- The payment has the provider selection method
user_selected
. - The authorisation requires additional input, such as branch code in Germany.
The possible combinations of these scenarios mean there are four possible flows:
1. UK payment with a preselected provider
In this case, you must complete the redirect
action.
2. EU payment with a preselected provider
In this case, you must complete the form
and then redirect
action if additional input is needed (although embedded flows don't need the redirect
action).
If no additional input is needed, then you must complete the redirect
action only.
3. UK payment with a user selected provider
In this case, you must complete the provider_selection
then redirect
actions.
4. EU payment with a user selected provider
In this case, you must complete the provider_selection
action, followed by the form
and then redirect
action if additional input is needed (although embedded flows don't need the redirect
action).
If no additional input is needed, then you must complete the provider_selection
and then redirect
actions only.
Direct API integration notes
Your direct API integration should have logic and UIs to handle the flows required for the payment or mandate types you plan to receive. When developing your integration you should note:
- The examples on this page are illustrative and don't include any headers such as the
access_token
,Tl-Signature
orIdempotency-Key
. - A payment can still have a provider selection type of
preselected
even if users select a provider through a provider selection screen. However, in this case, the user must select a provider before the payment and you must provide theprovider_id
at payment creation.
An alternative scenario is if a user has already made a payment. In this case, you can provide an option for them to pay with the same method they used previously. Then, you can create apreselected
payment which uses the sameprovider_id
as their previous payment. - If you are developing an integration flow for a provider that requires embedded authorisation (for example, German banks), you do not need to complete the
redirect
action after completing theform
action.
Payments and mandate differences
The actions you need to complete to authorise a payment or mandate are very similar. The main difference is that the endpoints start with
/payments
or/mandates
repesctively.The examples on this page refer to the
/payments
endpoints, but you can substitute the path parameter with/mandates
if needed.
UK preselected provider flow
In this flow, you create a payment or mandate with a value of preselected
for the provider_selection.type
object, and provide a provider ID. In most cases, you would develop a UI for the user to select this before payment creation.
The provider has already been selected, and UK providers do not require additional input. This means the only required steps are for you to start the authorisation flow and then complete the redirect
action. The redirect takes the user to their bank so they can authorise the payment.
To integrate this flow:
-
Develop a UI that enables users to initiate a payment with a specific UK provider, and then create a payment with the provider ID included.
For example, this could include a provider selection screen before payment creation. -
Send a POST request with the payment
id
to the/payments/{id}/authorization-flow
endpoint.
The response states the next action isredirect
and contains the redirecturi
which you set in Console. -
Redirect the user to the redirect
uri
so they can authorise their payment through the provider.
In this flow, you can enable the user to authorise the payment and be redirected in a single action as the provider is already selected.
UK preselected request body and response
Use the tabs in this code block to see examples of:
- The payment creation request.
- The POST request sent to
/payments/{id}/authorization-flow
. - The response returned from
/payments/{id}/authorization-flow
.
{
"amount_in_minor": 1,
"currency": "GBP",
"payment_method": {
"type": "bank_transfer",
"provider_selection": {
"type": "preselected",
"provider_id": "mock-payments-gb-redirect",
"scheme_id": "faster_payments_service"
},
"beneficiary": {
"type": "merchant_account",
"account_holder_name": "Merchant Account name",
"merchant_account_id": "2a485b0a-a29c-4aa2-bcef-b34d0f6f8d51"
}
},
"user": {
"id": "57e9ae89-01fd-4779-8775-5b7de9a85a64",
"name": "test user",
"email": "[email protected]",
"phone": "+441234567890"
}
}
{
"provider_selection": {},
"redirect": {
"return_uri": "https://console.truelayer.com/redirect-page"
}
}
{
"status": "authorizing",
"authorization_flow": {
"actions": {
"next": {
"type": "redirect",
"uri": "https://pay-mock-connect.truelayer-sandbox.com/login/cf235b86-d633-42e5-9981-405723197ac5#token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJjZjIzNWI4Ni1kNjMzLTQyZTUtOTk4MS00MDU3MjMxOTdhYzUiLCJzY29wZSI6InBheS1tb2NrLWNvbm5lY3QtYXBpIiwibmJmIjoxNjc4ODg4MDE2LCJleHAiOjE2Nzg4OTE2MTYsImlzcyI6Imh0dHBzOi8vcGF5LW1vY2stY29ubmVjdC50cnVlbGF5ZXItc2FuZGJveC5jb20iLCJhdWQiOiJodHRwczovL3BheS1tb2NrLWNvbm5lY3QudHJ1ZWxheWVyLXNhbmRib3guY29tIn0.SEaRgmRlIuI1sixxL2o93hL0sr-9rz68-aY_pF0u0iY"
}
}
}
}
EU preselected provider flow
In this flow, you create a payment or mandate with a value of preselected
for the provider_selection.type
object, and provide a provider ID. In most cases, you would develop a UI for the user to select this before payment creation.
The provider has already been selected, but some EU providers require additional input. This means you need to start the authorisation flow, then check the response to see whether you need to submit additional input with a form
action. If so, you need to have developed a UI that enables the user to submit it.
After submitting additional input, or if no additional input was required, you must complete the redirect
action. The redirect takes the user to their bank so they can authorise the payment.
Embedded flows
If you are submitting additional input as part of an embedded flow, you don't need to redirect the user. This is because they've already been redirected to the provider to submit additional information, where they also authorise the payment.
To integrate this flow:
- Develop a UI that enables users to initiate a payment with a specific EU provider.
This might include a screen that enables the user to select a provider before payment creation. - When the user initiates the payment through this UI, create a payment and send a POST request with the payment
id
to the/payments/{id}/authorization-flow
endpoint. - Check the response you receive from the start authorisation flow request.
- If the next action is
form
, additional input is required. You should perform steps 4 and 5. - If the next action is
redirect
, you must redirect the user to the redirecturi
also included in the response. No further action is required.
- If the next action is
- For the
form
action, check thetype
and details for each of theinputs
within the object. Ensure that your UI is able to accommodate the data collection required by each of the inputs. - Display a UI that enables the user to provide the information required for each of the
inputs
.
If the provider requires additional data, you might have to complete consecutiveform
actions. - After you provide the information needed for the
form
action or actions, redirect the user to the redirecturi
so they can authorise their payment through the provider.
This step isn't needed for embedded flows.
EU preselected request body and response
Use the tabs in this code block to see examples of:
- The payment creation request.
- The POST request sent to
/payments/{id}/authorization-flow
to start the authorisation flow. - The response returned from
/payments/{id}/authorization-flow
if theform
action is needed. This contains extra information about what's required for the form.
If theredirect
action is needed at this step, redirect the user to the link in theactions.next.uri
object. - The POST request sent to the
.../authorization-flow/actions/form
endpoint to submit additional information for the form. - An example of the response after you submit the additional information needed for the form if there are no extra form actions to complete.
{
"amount_in_minor": 1,
"currency": "EUR",
"payment_method": {
"type": "bank_transfer",
"provider_selection": {
"type": "preselected",
"provider_id": "mock-payments-de-redirect",
"scheme_id": "sepa_credit_transfer"
},
"beneficiary": {
"type": "merchant_account",
"account_holder_name": "Merchant Account name",
"merchant_account_id": "2a485b0a-a29c-4aa2-bcef-b34d0f6f8d51"
}
},
"user": {
"id": "57e9ae89-01fd-4779-8775-5b7de9a85a64",
"name": "Test user",
"email": "[email protected]",
"phone": "+441234567890"
}
}'
{
"provider_selection": {},
"redirect": {
"return_uri": "https://console.truelayer.com/redirect-page"
},
"form": {
"input_types": [
"text"
]
}
}
{
"status": "authorizing",
"authorization_flow": {
"actions": {
"next": {
"type": "form",
"inputs": [
{
"type": "text",
"id": "psu-branch-code",
"mandatory": true,
"display_text": {
"key": "psu-branch-code.display-text",
"default": "Branch"
},
"format": "any",
"sensitive": false,
"min_length": 3,
"max_length": 3,
"regexes": [
{
"regex": "^\\d{3}$",
"message": {
"key": "psu-branch-code.regex",
"default": "Value is invalid."
}
}
]
},
{
"type": "text",
"id": "psu-account-number",
"mandatory": true,
"display_text": {
"key": "psu-account-number.display-text",
"default": "Account"
},
"format": "numerical",
"sensitive": false,
"min_length": 7,
"max_length": 7,
"regexes": [
{
"regex": "^\\d{7}$",
"message": {
"key": "psu-account-number.regex",
"default": "Value is invalid."
}
}
]
},
{
"type": "text",
"id": "psu-sub-account",
"mandatory": true,
"display_text": {
"key": "psu-sub-account.display-text",
"default": "Sub-account"
},
"format": "numerical",
"sensitive": false,
"min_length": 2,
"max_length": 2,
"regexes": [
{
"regex": "^\\d{2}$",
"message": {
"key": "psu-sub-account.regex",
"default": "Value is invalid."
}
}
]
}
]
}
}
}
}
{
"inputs": {
"psu-branch-code": "123",
"psu-account-number":"1234567",
"psu-sub-account":"12"
}
}
{
"status": "authorizing",
"authorization_flow": {
"actions": {
"next": {
"type": "redirect",
"uri": "https://pay-mock-connect.truelayer-sandbox.com/login/11955128-17ef-4989-a870-23762723d15b#token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIxMTk1NTEyOC0xN2VmLTQ5ODktYTg3MC0yMzc2MjcyM2QxNWIiLCJzY29wZSI6InBheS1tb2NrLWNvbm5lY3QtYXBpIiwibmJmIjoxNjc5MzMxNTA3LCJleHAiOjE2NzkzMzUxMDcsImlzcyI6Imh0dHBzOi8vcGF5LW1vY2stY29ubmVjdC50cnVlbGF5ZXItc2FuZGJveC5jb20iLCJhdWQiOiJodHRwczovL3BheS1tb2NrLWNvbm5lY3QudHJ1ZWxheWVyLXNhbmRib3guY29tIn0.rEnGW6TY3eaLJspx6y4bXRxz1uA_Xya2ekzWASyml4E"
}
}
}
}
UK user selected provider flow
In this flow, you create a payment or mandate with a value of user_selected
for the provider_selection.type
object. You then start the authorisation flow. The response contains a list of providers based on the value you provide for the provider_selection.filter
object.
You need to create a UI for the user to select a provider from the list of providers you receive in the response. When they select a provider, you should submit the relevant provider_id
through a request to the .../authorization-flow/actions/provider-selection
endpoint.
After the user successfully selects a provider through your UI and you submit the provider_id
, the response should contain redirect
as the next action. Redirect the user to the redirect uri
so they can authorise their payment through the provider.
To integrate this flow:
- Develop a UI that enables users to initiate a payment with no provider selected.
- When the user initiates the payment through this UI, create a payment and send a POST request with the payment
id
to the/payments/{id}/authorization-flow
endpoint. - Check the
actions.next.providers
object in the response you receive and retrieve resources and IDs for the providers. - Display a UI that enables the user to select a provider to make the payment through.
- After the user selects a provider, submit the relevant
provider_id
through a request to the.../authorization-flow/actions/provider-selection
endpoint.
If successful, the response should contain theredirect
action. - Redirect the user to the redirect
uri
so they can authorise their payment through the provider.
UK user selected request body and response
Use the tabs in this code block to see examples of:
- The payment creation request.
- The POST request sent to the
/payments/{id}/authorization-flow
endpoint to start the authorisation flow. - The response returned from the
/payments/{id}/authorization-flow
endpoint, which contains a list of possible providers.
This example only contains a single provider, but it can contain more depending on the filters in the initial payment creation request. - The POST request sent to the
.../authorization-flow/actions/provider-selection
endpoint to submit the provider the user selected. - The response returned from the
.../authorization-flow/actions/provider-selection
endpoint, which contains theredirect
action.
{
"amount_in_minor": 1,
"currency": "GBP",
"payment_method": {
"type": "bank_transfer",
"provider_selection": {
"type": "user_selected"
},
"beneficiary": {
"type": "merchant_account",
"account_holder_name": "Merchant Account name",
"merchant_account_id": "200552da-13da-43c5-a9ba-04ee1502ac57"
}
},
"user": {
"id": "cd101303-9124-4831-9fec-ef574ed22ecd",
"name": "Test User",
"email": "[email protected]",
"phone": "+441234567890"
}
}
{
"provider_selection": {},
"redirect": {
"return_uri": "https://console.truelayer.com/redirect-page"
}
}
{
"status": "authorizing",
"authorization_flow": {
"actions": {
"next": {
"type": "provider_selection",
"providers": [
{
"id": "mock-payments-gb-redirect",
"display_name": "Mock UK Payments - Redirect Flow",
"icon_uri": "https://truelayer-provider-assets.s3.amazonaws.com/uk/icons/mock-payments-gb-redirect.svg",
"logo_uri": "https://truelayer-provider-assets.s3.amazonaws.com/uk/logos/mock-payments-gb-redirect.svg",
"bg_color": "#FFFFFF",
"country_code": "GB"
}
]
}
}
}
}
{
"provider_id": "mock-payments-gb-redirect"
}
{
"status": "authorizing",
"authorization_flow": {
"actions": {
"next": {
"type": "redirect",
"uri": "https://pay-mock-connect.truelayer-sandbox.com/login/0bd4f72a-b508-4643-b5a0-eb90eab0f887#token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIwYmQ0ZjcyYS1iNTA4LTQ2NDMtYjVhMC1lYjkwZWFiMGY4ODciLCJzY29wZSI6InBheS1tb2NrLWNvbm5lY3QtYXBpIiwibmJmIjoxNjc5NDEyMjk4LCJleHAiOjE2Nzk0MTU4OTgsImlzcyI6Imh0dHBzOi8vcGF5LW1vY2stY29ubmVjdC50cnVlbGF5ZXItc2FuZGJveC5jb20iLCJhdWQiOiJodHRwczovL3BheS1tb2NrLWNvbm5lY3QudHJ1ZWxheWVyLXNhbmRib3guY29tIn0.ksBNQV6H_Xhf7t6I9z9ZROblBFwwFz1HpM42autp37A"
}
}
}
}
EU user selected provider flow
In this flow, you create a payment or mandate with a value of user_selected
for the provider_selection.type
object. You then start the authorisation flow. The response contains a list of providers based on the value you provide for the provider_selection.filter
object.
You need to create a UI for the user to select a provider from the list of providers you receive in the response. When they select a provider, you should submit the relevant provider_id
through a request to the .../authorization-flow/actions/provider-selection
endpoint.
Some EU providers require additional input. The response you receive when you submit the provider_id
informs you whether you need to submit additional input through a form
action. If so, you need to have developed a UI that enables the user to submit it.
After submitting additional input, or if no additional input was required, you must complete the redirect
action. The redirect takes the user to their bank so they can authorise the payment.
Embedded flows
If you are submitting additional input as part of an embedded flow, you don't need to redirect the user. This is because they've already been redirected to the provider to submit additional information, where they also authorise the payment.
To integrate this flow:
- Develop a UI that enables users to initiate a payment with no provider selected.
- When the user initiates the payment through this UI, create a payment and send a POST request with the payment
id
to the/payments/{id}/authorization-flow
endpoint. - Check the
actions.next.providers
object in the response you receive and retrieve resources and IDs for the providers. - Display a UI that enables the user to select a provider to make the payment through.
- After the user selects a provider, submit the relevant
provider_id
through a request to the.../authorization-flow/actions/provider-selection
endpoint. - Check the response you receive from the start authorisation flow request.
- If the next action is
form
, additional input is required. You should perform steps 7 and 8. - If the next action is
redirect
, you must redirect the user to the redirecturi
also included in the response. No further action is required.
- If the next action is
- For the
form
action, check thetype
and details for each of theinputs
within the object. Ensure that your UI is able to accommodate the data collection required by each of the inputs. - Display a UI that enables the user to provide the information required for each of the
inputs
.
If the provider requires additional data, you might have to complete consecutiveform
actions. - After you provide the information needed for the
form
action or actions, redirect the user to the redirecturi
so they can authorise their payment through the provider.
This step isn't needed for embedded flows.
EU user selected request body and response
Use the tabs in this code block to see examples of:
- The payment creation request.
- The POST request sent to the
/payments/{id}/authorization-flow
endpoint to start the authorisation flow. - The response returned from the
/payments/{id}/authorization-flow
endpoint. This contains a list of possible providers.
This example contains 12 sandbox providers used to test different payment integrations. - The POST request sent to the
.../authorization-flow/actions/provider-selection
endpoint to submit the provider the user selected. - The response from the
.../authorization-flow/actions/provider-selection
endpoint. This contains extra information about what's required for the form.
If theredirect
action is needed at this step, redirect the user to the link in theactions.next.uri
object. - The POST request sent to the
.../authorization-flow/actions/form
endpoint to submit additional information for the form. - An example of the response after you submit the additional information needed for the form if there are no extra form actions to complete.
{
"amount_in_minor": 1,
"currency": "EUR",
"payment_method": {
"type": "bank_transfer",
"provider_selection": {
"type": "user_selected"
},
"beneficiary": {
"type": "merchant_account",
"account_holder_name": "Merchant Account name",
"merchant_account_id": "2a485b0a-a29c-4aa2-bcef-b34d0f6f8d51"
}
},
"user": {
"id": "e0ef56e1-ae93-491b-9028-cd0199355170",
"name": "Test User",
"email": "[email protected]",
"phone": "+441234567890"
}
}
{
"provider_selection": {},
"redirect": {
"return_uri": "https://console.truelayer.com/redirect-page"
},
"form": {
"input_types": [
"text",
]
}
}
{
"status": "authorizing",
"authorization_flow": {
"actions": {
"next": {
"type": "provider_selection",
"providers": [
{
"id": "mock-payments-de-embedded",
"display_name": "Mock European Payments – Embedded Flow",
"icon_uri": "https://truelayer-provider-assets.s3.amazonaws.com/global/icons/mock-payments-de-embedded.svg",
"logo_uri": "https://truelayer-provider-assets.s3.amazonaws.com/global/logos/mock-payments-de-embedded.svg",
"bg_color": "#FFFFFF",
"country_code": "DE"
},
{
"id": "mock-payments-de-redirect",
"display_name": "Mock German Payments – Redirect Flow",
"icon_uri": "https://truelayer-provider-assets.s3.amazonaws.com/global/icons/mock-payments-es-redirect.svg",
"logo_uri": "https://truelayer-provider-assets.s3.amazonaws.com/global/logos/mock-payments-es-redirect.svg",
"bg_color": "#FFFFFF",
"country_code": "DE"
},
{
"id": "mock-payments-de-redirect-additional-input-text",
"display_name": "Mock German Payments – Redirect Flow with additional inputs",
"icon_uri": "https://truelayer-provider-assets.s3.amazonaws.com/global/icons/mock-payments-es-redirect.svg",
"logo_uri": "https://truelayer-provider-assets.s3.amazonaws.com/global/logos/mock-payments-es-redirect.svg",
"bg_color": "#FFFFFF",
"country_code": "DE"
},
{
"id": "mock-payments-es-redirect",
"display_name": "Mock Spain Payments – Redirect Flow",
"icon_uri": "https://truelayer-provider-assets.s3.amazonaws.com/global/icons/mock-payments-es-redirect.svg",
"logo_uri": "https://truelayer-provider-assets.s3.amazonaws.com/global/logos/mock-payments-es-redirect.svg",
"bg_color": "#FFFFFF",
"country_code": "ES"
},
{
"id": "mock-payments-fr-redirect",
"display_name": "Mock France Payments – Redirect Flow",
"icon_uri": "https://truelayer-provider-assets.s3.amazonaws.com/global/icons/mock-payments-es-redirect.svg",
"logo_uri": "https://truelayer-provider-assets.s3.amazonaws.com/global/logos/mock-payments-es-redirect.svg",
"bg_color": "#FFFFFF",
"country_code": "FR"
},
{
"id": "mock-payments-fr-redirect-additional-input",
"display_name": "Mock France Payments – Redirect Flow - Additional Input",
"icon_uri": "https://truelayer-provider-assets.s3.amazonaws.com/global/icons/mock-payments-es-redirect.svg",
"logo_uri": "https://truelayer-provider-assets.s3.amazonaws.com/global/logos/mock-payments-es-redirect.svg",
"bg_color": "#FFFFFF",
"country_code": "FR"
},
{
"id": "mock-payments-ie-redirect",
"display_name": "Mock Ireland Payments – Redirect Flow",
"icon_uri": "https://truelayer-provider-assets.s3.amazonaws.com/global/icons/mock-payments-es-redirect.svg",
"logo_uri": "https://truelayer-provider-assets.s3.amazonaws.com/global/logos/mock-payments-es-redirect.svg",
"bg_color": "#FFFFFF",
"country_code": "IE"
},
{
"id": "mock-payments-it-redirect",
"display_name": "Mock Italy Payments – Redirect Flow",
"icon_uri": "https://truelayer-provider-assets.s3.amazonaws.com/global/icons/mock-payments-es-redirect.svg",
"logo_uri": "https://truelayer-provider-assets.s3.amazonaws.com/global/logos/mock-payments-es-redirect.svg",
"bg_color": "#FFFFFF",
"country_code": "IT"
},
{
"id": "mock-payments-lt-redirect",
"display_name": "Mock Lithuania Payments – Redirect Flow",
"icon_uri": "https://truelayer-provider-assets.s3.amazonaws.com/global/icons/mock-payments-es-redirect.svg",
"logo_uri": "https://truelayer-provider-assets.s3.amazonaws.com/global/logos/mock-payments-es-redirect.svg",
"bg_color": "#FFFFFF",
"country_code": "LT"
},
{
"id": "mock-payments-nl-redirect",
"display_name": "Mock Netherlands Payments – Redirect Flow",
"icon_uri": "https://truelayer-provider-assets.s3.amazonaws.com/global/icons/mock-payments-es-redirect.svg",
"logo_uri": "https://truelayer-provider-assets.s3.amazonaws.com/global/logos/mock-payments-es-redirect.svg",
"bg_color": "#FFFFFF",
"country_code": "NL",
"search_aliases": [
"Mock Dutch Payments - Redirect Flow"
]
},
{
"id": "mock-payments-pl-redirect",
"display_name": "Mock Poland Payments – Redirect Flow",
"icon_uri": "https://truelayer-provider-assets.s3.amazonaws.com/global/icons/mock-payments-es-redirect.svg",
"logo_uri": "https://truelayer-provider-assets.s3.amazonaws.com/global/logos/mock-payments-es-redirect.svg",
"bg_color": "#FFFFFF",
"country_code": "PL"
},
{
"id": "mock-payments-pt-redirect",
"display_name": "Mock Portugal Payments – Redirect Flow",
"icon_uri": "https://truelayer-provider-assets.s3.amazonaws.com/global/icons/mock-payments-es-redirect.svg",
"logo_uri": "https://truelayer-provider-assets.s3.amazonaws.com/global/logos/mock-payments-es-redirect.svg",
"bg_color": "#FFFFFF",
"country_code": "PT"
}
]
}
}
}
}
{
"provider_id": "mock-payments-de-redirect-additional-input-text"
}
{
"status": "authorizing",
"authorization_flow": {
"actions": {
"next": {
"type": "form",
"inputs": [
{
"type": "text",
"id": "psu-branch-code",
"mandatory": true,
"display_text": {
"key": "psu-branch-code.display-text",
"default": "Branch"
},
"format": "any",
"sensitive": false,
"min_length": 3,
"max_length": 3,
"regexes": [
{
"regex": "^\\d{3}$",
"message": {
"key": "psu-branch-code.regex",
"default": "Value is invalid."
}
}
]
},
{
"type": "text",
"id": "psu-account-number",
"mandatory": true,
"display_text": {
"key": "psu-account-number.display-text",
"default": "Account"
},
"format": "numerical",
"sensitive": false,
"min_length": 7,
"max_length": 7,
"regexes": [
{
"regex": "^\\d{7}$",
"message": {
"key": "psu-account-number.regex",
"default": "Value is invalid."
}
}
]
},
{
"type": "text",
"id": "psu-sub-account",
"mandatory": true,
"display_text": {
"key": "psu-sub-account.display-text",
"default": "Sub-account"
},
"format": "numerical",
"sensitive": false,
"min_length": 2,
"max_length": 2,
"regexes": [
{
"regex": "^\\d{2}$",
"message": {
"key": "psu-sub-account.regex",
"default": "Value is invalid."
}
}
]
}
]
}
}
}
}
{
"inputs": {
"psu-branch-code": "123",
"psu-account-number":"1234567",
"psu-sub-account":"12"
}
}
{
"status": "authorizing",
"authorization_flow": {
"actions": {
"next": {
"type": "redirect",
"uri": "https://pay-mock-connect.truelayer-sandbox.com/login/bed1030c-b2c5-4f49-ad67-d63a0d51e854#token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJiZWQxMDMwYy1iMmM1LTRmNDktYWQ2Ny1kNjNhMGQ1MWU4NTQiLCJzY29wZSI6InBheS1tb2NrLWNvbm5lY3QtYXBpIiwibmJmIjoxNjc5NTgyODk5LCJleHAiOjE2Nzk1ODY0OTksImlzcyI6Imh0dHBzOi8vcGF5LW1vY2stY29ubmVjdC50cnVlbGF5ZXItc2FuZGJveC5jb20iLCJhdWQiOiJodHRwczovL3BheS1tb2NrLWNvbm5lY3QudHJ1ZWxheWVyLXNhbmRib3guY29tIn0.9Sc660VEPaYP-dDAqJ_0uhXyOCqNIV4dHOVdm35g4UE"
}
}
}
}
Updated 2 days ago