Payment and mandate result screens for the HPP

The HPP includes compliant payment and mandate result screens to improve your UX and increase conversion.

After your user authorises a payment or mandate through the HPP, a result screen informs them whether their it was successful, unsuccessful, in progress. If a payment or mandate failed, it tells them why, and what they can do to resolve it.

The result screens mean that you don't have to render a result screen based on the result of payment or mandate webhooks (although you should still use them to check the progress of your payment or mandate).

The result screens can accommodate all possible payment and mandate results, are fully compliant with all payment and mandate regulations, and require no extra development.

You cannot customise the style of the payment result screen, and it doesn't inherit any style choices you made for the HPP.

👍

You may need to opt in to this feature

On 4 January 2024, TrueLayer introduced the payments result screen for payments made through the HPP.

If you created your Console account after 4 January 2024, this feature is automatically enabled.

If you created your account before 4 January 2024, you need to contact us to enable this feature, and may need to change the content of the page your redirect_uri goes to.

You can also contact us to disable the payment result screen.

Payment result screen

When the payment result screen displays

The payment result screen displays after a user has attempted to authorise a payment:

  • In a successful payment, it displays after the Payments API v3 considers a payment creditable, before the user is redirected to your redirect_uri.
    The default behaviour is that a payment is creditable when it has a status of settled.
  • In a failed payment, it displays immediately after the payment fails, from whatever part of the payment it failed at.

On the payment result screen, the user sees a button to either Continue or Go back, based on whether the payment succeeded or failed. When they click this, they're taken to the redirect_uri that you set in Console.

If a payment is still in progress and doesn't have a final status, like settled or failed, the result screen waits a few seconds before it displays, in case it transitions.

Payments to external accounts

Payments to an external account always have a result screen of In progress. This is because it's not possible to confirm when a payment to an external account enters the settled status.

Change the waiting time for the payment result screen

You can change how long each Web UI waits for before it authorises a payment and displays the payment result screen. This can be useful if you need to perform checks (such as confirming a reservation or purchase) before displaying a success of failure result.

To change the waiting time for the HPP, add a #max_wait_for_result={seconds} hash parameter to the end of your HPP URL.

Possible payment results

This interactive window displays a preview of how the payment result screen displays in the HPP, along with every possible payment result screen.

This table contains the full list of possible payment result screens, and the payment statuses and failure reasons they relate to.

Main text in resultExplanation in resultApplicable statuses or failure reasons
All DoneYou’ve sent {payment value} — You can now return to {merchant name}.executed,
failed
In progressWe are processing your transaction of {payment value} — It's normally instant, but can take up to 24 hours. Please return to {merchant name}.authorized
That didn't workYour transaction didn't go through. But don't worry, you can go back to {merchant name} so you can try again.rejected,
unknown_error,
blocked,
invalid_account_holder_name,
invalid_credentials,
invalid_account_details,
invalid_request,
invalid_credentials
CancelledYou have cancelled your transaction. Go back to {merchant name} where you can change bank or try again.cancelled
That didn't work{bank name} rejected your transaction. Go back to {merchant name} to change bank or try again.provider_rejected
That didn't work{bank name} couldn't process your transaction. You can go back to {merchant name} to change bank or try again.provider_error,
provider_expired
Payment limit exceededContact your bank if you want to increase your daily payment limit. You can now go back to {merchant name} to change bank or try again.payment_limit_exceeded
Insufficient fundsYou don’t have enough money in your account for this transaction. Please top up and try again. You can now go back to {merchant name}.insufficient_funds
That didn't workIt looks like some of the account details you provided are incorrect. You can go back to {merchant name}, so you can try again or change bank.invalid_account_details,
invalid_remitter_account,
invalid_sort_code
Authorisation failedThe transaction was not authorised successfully. You can go back to {merchant name}, so you can change bank or try again.authorization_failed
Your session has expiredYou've been inactive for a while so we cancelled your payment. Please go back to {merchant name} and try again.expired

Mandate result screen

When the mandate result screen displays

The mandate result screen displays after a user has attempted to authorise a mandate:

  • In a successful mandate creation request, it displays after the mandate enters the authorized status, before the user is redirected to your redirect_uri.
  • In a failed mandate creation request, it displays after mandate creation fails, from whatever part of the authorisation flow it failed at.

On the mandate result screen, the user sees a button reading either Done or Go back, based on whether the mandate creation succeeded or failed. When they click this, they're taken to the redirect_uri that you set in Console.

Possible mandate results

This interactive window displays a preview of how the mandate result screen displays in the HPP, along with every possible mandate result screen.

This table contains the full list of possible mandate result screens, and the mandate statuses and failure reasons they relate to.

Main text in resultExplanationApplicable statuses or failure reasons
All DoneYou’ve linked {bank name} to {merchant name}.authorized
In progressWe’re linking your bank. There’s no need to wait here, you can return to {merchant name}.authorizing
That didn't workWe couldn’t link your bank. Please go back to {merchant name} and change bank or try again.All mandate failure reasons:

authorization_failed
provider_error
provider_rejected
internal_server_error
invalid_sort_code
invalid_request
expired
unknown_error