Example direct API integration flows

Examples showing how to implement your own provider selection and authentication flow if you are integrating with our API directly.

UK redirect flow

Using the authorization_flow parameter at payment creation

This is an example of a payment with the redirect flow in the UK, which uses the authorization_flow parameter at payment creation to start the flow.

The requests and responses include:

  1. The POST request sent to the /v3/payments endpoint to create the payment.
    This request includes the authorization_flow parameter. The information provided in this parameter is the same as that provided to the /v3/payments/{id}/authorization-flow endpoint, as shown below.
  2. The response returned from the /v3/payments endpoint. This contains the payment id and resource_token.
    The response also contains the authorization_flow object, which states that the next action is provider_selection and provides a list of providers (as this is a sandbox payment, it only contains two). In a production payment, the list of providers depends on the filters of the payment creation request.
  3. The POST request sent to the .../authorization-flow/actions/provider-selection endpoint to submit the provider the user selected.
  4. The response returned from the .../authorization-flow/actions/provider-selection endpoint, which contains the redirect action. This will redirect the user to their bank's login page, where they can input the credentials.
{
	"amount_in_minor": 1,
	"currency": "GBP",
	"authorization_flow": {
		"provider_selection": {},
		"redirect": {
			"return_uri": "https://console.truelayer.com/redirect-page"
		}
},
	"payment_method": {
		"type": "bank_transfer",
		"provider_selection": {
			"type": "user_selected",
			"filter": {
        "release_channel": "general_availability"
		}
		},
		"beneficiary": {
			"type": "merchant_account",
			"account_holder_name": "Merchant Account name",
			"merchant_account_id": "200552da-13da-43c5-a9ba-04ee1502ac57"
		}
	},
		"user":
    {
        "id": "f61c0ec7-0f83-414e-8e5f-aace86e0ed35",
        "name": "Jonathan Sandbridge",
        "email": "[email protected]",
        "phone": "+44123456789",
        "date_of_birth": "1992-11-28",
        "address":
        {
            "address_line1": "1, Hardwick Street",
            "city": "London",
            "state": "London",
            "zip": "EC1R 4RB",
            "country_code": "GB"
        }
    }
}
{
	"id": "1603cbc8-8ebc-4f3d-8fad-43f010535bce",
	"user": {
		"id": "f61c0ec7-0f83-414e-8e5f-aace86e0ed35"
	},
	"resource_token": "eyJhbGciOiJSUzUxMiIsImtpZCI6IkRCejExcEFuUGNXVndqaFBNWERuckNyQ0ZrT1p0Y2FqYWtjU21GNmJiVk0iLCJ0eXAiOiJKV1QifQ.eyJzY29wZSI6InBheW1lbnQiLCJjbGllbnRfaWQiOiJzYW5kYm94LXRvbXRlc3QtYTRkNDMyIiwianRpIjoiMTYwM2NiYzgtOGViYy00ZjNkLThmYWQtNDNmMDEwNTM1YmNlIiwibmJmIjoxNzE4MTEyMTg0LCJleHAiOjE3MTgxMTMwODQsImlzcyI6Imh0dHBzOi8vYXBpLnRydWVsYXllci1zYW5kYm94LmNvbS9wYXltZW50cy1nYXRld2F5IiwiYXVkIjoiaHR0cHM6Ly9hcGkudHJ1ZWxheWVyLXNhbmRib3guY29tIn0.ZY8gNaXgUAaSf-4nyn3-VorZ8RQd6pBsbaaHvt9qjsEbWNBHJDoilfyvtVsc3Y0MtNf3rzJC-nQwCfSHjHAZ7aoY3Pvcj11BJVwUU1p7NGrc81PLDu1nwNazu15tHrlUdO0Od4KKRMICc_gb8z3uN0Qejnm3v68obeYx0z0MUH9NUiRJTLKOejhPscpVRrdiLbQieDaf-ElLr6pF4mQUEKfulIH7ZgqGA3SCPVmEJZfM_FYqr43HtibeoyBLsyshD7A5_ff-So9iBLUY38d9HoTAGtsMSXXd2LVNoLbtUC1HRfelD8eJ1bQfIwqVM0bx9XZgh4r9lw6tn8rP59SSjw",
	"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://providers-assets.truelayer.com/mock-payments-gb-redirect/icon.svg",
						"logo_uri": "https://providers-assets.truelayer.com/mock-payments-gb-redirect/logo.svg",
						"bg_color": "#44689a",
						"country_code": "GB",
						"availability": {
							"recommended_status": "healthy",
							"updated_at": "2024-06-11T13:23:03.6114426Z"
						},
						"schemes": [
							{
								"id": "faster_payments_service"
							}
						]
					},
					{
						"id": "mock-payments-gb-redirect-unhealthy",
						"display_name": "Mock UK Payments - Redirect Flow (Unhealthy)",
						"icon_uri": "https://providers-assets.truelayer.com/mock-payments-gb-redirect-unhealthy/icon.svg",
						"logo_uri": "https://providers-assets.truelayer.com/mock-payments-gb-redirect-unhealthy/logo.svg",
						"bg_color": "#44689a",
						"country_code": "GB",
						"availability": {
							"recommended_status": "unhealthy",
							"updated_at": "2024-06-11T13:23:03.6114426Z"
						},
						"schemes": [
							{
								"id": "faster_payments_service"
							}
						]
					}
				]
			}
		}
	}
}
{
  "provider_id": "mock-payments-gb-redirect"
}
{
	"status": "authorizing",
	"authorization_flow": {
		"actions": {
			"next": {
				"type": "redirect",
				"uri": "https://pay-mock-connect.truelayer-sandbox.com/login/c5c6a1c8-4fb1-48e2-95ce-7cef5a5ebf21#token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJjNWM2YTFjOC00ZmIxLTQ4ZTItOTVjZS03Y2VmNWE1ZWJmMjEiLCJzY29wZSI6InBheS1tb2NrLWNvbm5lY3QtYXBpIiwibmJmIjoxNzE4MTEyNjQwLCJleHAiOjE3MTgxMTYyNDAsImlzcyI6Imh0dHBzOi8vcGF5LW1vY2stY29ubmVjdC50cnVlbGF5ZXItc2FuZGJveC5jb20iLCJhdWQiOiJodHRwczovL3BheS1tb2NrLWNvbm5lY3QudHJ1ZWxheWVyLXNhbmRib3guY29tIn0.AVM2v56tfpMVd_yAtQGUHrODyd6QfcxAuyZSFBOedoM"
			}
		}
	}
}

Using the .../{id}/authorization-flow endpoint

This is an example of a payment with the redirect flow in the UK, which uses the dedicated .../{id}/authorization-flow endpoint to start the flow.

The requests and responses include:

  1. The POST request sent to the /v3/payments endpoint to create the payment.
  2. The response returned from the /v3/payments endpoint, which contains the payment id and resource_token.
  3. The POST request sent to the /v3/payments/{id}/authorization-flow endpoint to start the authorisation flow.
  4. The response returned from the /v3/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.
  5. The POST request sent to the .../authorization-flow/actions/provider-selection endpoint to submit the provider the user selected.
  6. The response returned from the .../authorization-flow/actions/provider-selection endpoint, which contains the redirect action. This will redirect the user to their bank's login page, where they can input the credentials.
{
	"amount_in_minor": 1,
	"currency": "GBP",
	"payment_method": {
		"type": "bank_transfer",
		"provider_selection": {
			"type": "user_selected",
			"filter": {
        "release_channel": "general_availability"
		}
		},
		"beneficiary": {
			"type": "merchant_account",
			"account_holder_name": "Merchant Account name",
			"merchant_account_id": "200552da-13da-43c5-a9ba-04ee1502ac57"
		}
	},
		"user":
    {
        "id": "f61c0ec7-0f83-414e-8e5f-aace86e0ed35",
        "name": "Jonathan Sandbridge",
        "email": "[email protected]",
        "phone": "+44123456789",
        "date_of_birth": "1992-11-28",
        "address":
        {
            "address_line1": "1, Hardwick Street",
            "city": "London",
            "state": "London",
            "zip": "EC1R 4RB",
            "country_code": "GB"
        }
    }
}
{
	"id": "87a56e00-50db-48e3-99e0-dbbe008a53cb",
	"user": {
		"id": "f61c0ec7-0f83-414e-8e5f-aace86e0ed35"
	},
	"resource_token": "eyJhbGciOiJSUzUxMiIsImtpZCI6IkRCejExcEFuUGNXVndqaFBNWERuckNyQ0ZrT1p0Y2FqYWtjU21GNmJiVk0iLCJ0eXAiOiJKV1QifQ.eyJzY29wZSI6InBheW1lbnQiLCJjbGllbnRfaWQiOiJzYW5kYm94LXRvbXRlc3QtYTRkNDMyIiwianRpIjoiODdhNTZlMDAtNTBkYi00OGUzLTk5ZTAtZGJiZTAwOGE1M2NiIiwibmJmIjoxNzE4MTEwOTEyLCJleHAiOjE3MTgxMTE4MTIsImlzcyI6Imh0dHBzOi8vYXBpLnRydWVsYXllci1zYW5kYm94LmNvbS9wYXltZW50cy1nYXRld2F5IiwiYXVkIjoiaHR0cHM6Ly9hcGkudHJ1ZWxheWVyLXNhbmRib3guY29tIn0.HqszutVFkTX0GG-NLHBS_pmeqZ97qgQ3vtJk294bZZLKtAG4QQe8uefHzIMApsMGyuFIUTJjo-UERREMWHBkxaK2JZGuDPOXKfgEzPKgjDwUHi4XOop2bPeNGDyYL2lYYeoiQ3sfwze--QH-wLua_I78oL6Mo7NTTU7zsHJSMMPAdu9UmPrdIzasRNlqZDSWY-tSTul2sAVsS9JFAfIDt-aVKrAiteX18g9Rh7d5lXaz78KoooquJWQ238mCfKsCmkXmGZvLItvsVij2XX9dr8LMjjsPOILUEfQzwma_NiiwSeOMYw3ZeIfRlqR75DKLRn5u07bYZEEsr8KczmL9mA",
	"status": "authorization_required"
}
{
  "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 redirect flow with additional inputs

Using the authorization_flow parameter at payment creation

This is an example of a payment with an embedded flow in Germany, which uses the authorization_flow parameter at payment creation to start the flow. As the payment requires additional input, you need to complete the form action to authorise the payment.

The requests and responses include:

  1. The POST request sent to the /v3/payments endpoint to create the payment.
    This request includes the authorization_flow parameter. The information provided in this parameter is the same as that provided to the /v3/payments/{id}/authorization-flow endpoint, as shown below.
  2. The response returned from the /v3/payments endpoint. This contains the payment id and resource_token.
    The response also contains the authorization_flow object, which states that the next action is provider_selection and provides a list of providers based on the filters in the payment creation request filters of the payment creation request.
  3. The POST request sent to the .../authorization-flow/actions/provider-selection endpoint to submit the provider the user selected.
  4. The response returned from the .../authorization-flow/actions/provider-selection endpoint, which contains the form action. It also explains the format of the form, so you can render a UI that enables the user to provide the required information.
  5. The POST request sent to the .../authorization-flow/actions/form endpoint to submit the account details the user entered.
  6. The response returned from the .../authorization-flow/actions/form endpoint, which contains the redirect action. This will redirect the user to their bank's login page, where they can confirm the payment.
{
	"amount_in_minor": 1,
	"currency": "EUR",
	"authorization_flow": {
		"provider_selection": {},
		"redirect": {
			"return_uri": "https://console.truelayer.com/redirect-page"
		},
		"form": {
			"input_types": [
			"text",
			"text_with_image",
			"select"
		]
		}
},
	"payment_method": {
		"type": "bank_transfer",
		"provider_selection": {
			"type": "user_selected",
			"filter": {
        "release_channel": "general_availability",
				"countries": [
					"DE"
				]
		}
		},
		"beneficiary": {
			"type": "merchant_account",
			"account_holder_name": "Merchant Account name",
			"merchant_account_id": "2a485b0a-a29c-4aa2-bcef-b34d0f6f8d51"
		}
	},
		"user":
    {
        "id": "f61c0ec7-0f83-414e-8e5f-aace86e0ed35",
        "name": "Jonathan Sandbridge",
        "email": "[email protected]",
        "phone": "+44123456789",
        "date_of_birth": "1992-11-28",
        "address":
        {
            "address_line1": "1, Hardwick Street",
            "city": "London",
            "state": "London",
            "zip": "EC1R 4RB",
            "country_code": "GB"
        }
    }
}
{
	"id": "486d54a5-e8f2-468f-91d8-47b72dc5a639",
	"user": {
		"id": "f61c0ec7-0f83-414e-8e5f-aace86e0ed35"
	},
	"resource_token": "eyJhbGciOiJSUzUxMiIsImtpZCI6IkRCejExcEFuUGNXVndqaFBNWERuckNyQ0ZrT1p0Y2FqYWtjU21GNmJiVk0iLCJ0eXAiOiJKV1QifQ.eyJzY29wZSI6InBheW1lbnQiLCJjbGllbnRfaWQiOiJzYW5kYm94LXRvbXRlc3QtYTRkNDMyIiwianRpIjoiNDg2ZDU0YTUtZThmMi00NjhmLTkxZDgtNDdiNzJkYzVhNjM5IiwibmJmIjoxNzE4MTEzNTg0LCJleHAiOjE3MTgxMTQ0ODQsImlzcyI6Imh0dHBzOi8vYXBpLnRydWVsYXllci1zYW5kYm94LmNvbS9wYXltZW50cy1nYXRld2F5IiwiYXVkIjoiaHR0cHM6Ly9hcGkudHJ1ZWxheWVyLXNhbmRib3guY29tIn0.fD1l9ljSWBBJUGi0hvZTB3Pg9Dn48FyyPjP1czYF9DJM4TmlD6eJvUDpHAjMluAeNOAZE51M5-CEVbxgOYMRJpqYCLh333YJo6EgLso-BE8jc6hBYgMU7kIZr6S4PD1ct68EQhg8W6QnfMJ4Z-Gk42kp5C96mcbPyxj8zi1xelEO4gOnnRGXZ4pGjjRwOHBQDDLa1ec3qn6jv9BpGLfuJp7FSSlxC-grIUXwFEJGWE_JjkQek5GCocPnyHWceDDV2F_3PVqqy8XHgxfl1IxCiILN2vU12qkYv8u50-1_wggIk2thXuN-Qo0GgivZUMTnBN4mRhSiDAm1mTANSsCCiQ",
	"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://providers-assets.truelayer.com/mock-payments-de-embedded/icon.svg",
						"logo_uri": "https://providers-assets.truelayer.com/mock-payments-de-embedded/logo.svg",
						"bg_color": "#44689a",
						"country_code": "DE",
						"schemes": [
							{
								"id": "sepa_credit_transfer"
							},
							{
								"id": "sepa_credit_transfer_instant"
							}
						]
					},
					{
						"id": "mock-payments-de-redirect",
						"display_name": "Mock German Payments – Redirect Flow",
						"icon_uri": "https://providers-assets.truelayer.com/mock-payments-de-redirect/icon.svg",
						"logo_uri": "https://providers-assets.truelayer.com/mock-payments-de-redirect/logo.svg",
						"bg_color": "#44689a",
						"country_code": "DE",
						"schemes": [
							{
								"id": "sepa_credit_transfer"
							}
						]
					},
					{
						"id": "mock-payments-de-redirect-additional-input-text",
						"display_name": "Mock German Payments – Redirect Flow with additional inputs",
						"icon_uri": "https://providers-assets.truelayer.com/mock-payments-de-redirect-additional-input-text/icon.svg",
						"logo_uri": "https://providers-assets.truelayer.com/mock-payments-de-redirect-additional-input-text/logo.svg",
						"bg_color": "#44689a",
						"country_code": "DE",
						"schemes": [
							{
								"id": "sepa_credit_transfer"
							}
						]
					}
				]
			}
		}
	}
}
{
  "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/c3e46a53-be1f-4969-a0bf-8654e241791e#token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJjM2U0NmE1My1iZTFmLTQ5NjktYTBiZi04NjU0ZTI0MTc5MWUiLCJzY29wZSI6InBheS1tb2NrLWNvbm5lY3QtYXBpIiwibmJmIjoxNzE4MTE2MDc0LCJleHAiOjE3MTgxMTk2NzQsImlzcyI6Imh0dHBzOi8vcGF5LW1vY2stY29ubmVjdC50cnVlbGF5ZXItc2FuZGJveC5jb20iLCJhdWQiOiJodHRwczovL3BheS1tb2NrLWNvbm5lY3QudHJ1ZWxheWVyLXNhbmRib3guY29tIn0.XI7ZRt6_9q_fkTMk69W0WsBMihcwjDAX_4rykoZCJAk"
			}
		}
	}
}

Using the .../{id}/authorization-flow endpoint

Below is an example of a flow within the EU which requires additional inputs from the user. This example uses the dedicated .../{id}/authorization-flow endpoint to start the flow.

The requests and responses include:

  1. A POST request sent to the /v3/payments/{id}/authorization-flow endpoint to start the authorisation flow.
  2. The response returned from the /v3/payments/{id}/authorization-flow endpoint. This contains a list of possible providers. This example contains 12 sandbox providers used to test different payment integrations.
  3. A POST request sent to the .../authorization-flow/actions/provider-selection endpoint to submit the provider the user selected.
  4. The response from the .../authorization-flow/actions/provider-selection endpoint. This contains extra information about what's required for the form. In this case, the user is asked to input their branch code, account number and sub-account number.
    If the redirect action is needed at this step, redirect the user to the link in the actions.next.uri object.
  5. A POST request sent to the .../authorization-flow/actions/form endpoint to submit additional information for the form.
  6. An example of the response after you submit the additional information needed for the form if there are no extra form actions to complete.
{
  "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"
            }
        }
    }
}