Pay by Account (Open Banking GBP) 🇬🇧
Pay by Account (Open Banking) enables a seamless, app-to-app payment experience by leveraging the UK's secure Open Banking infrastructure. Instead of manually entering card details, customers authorize a direct transfer within their own banking application. This results in instant settlement via Faster Payments (FPS) and a high-security, low-friction checkout for your users.
Currency & Regional Scope: Pay by Account is currently optimized exclusively for GBP (British Pound Sterling) transactions. It is available to customers holding accounts with supported UK financial institutions.
Why Choose Pay by Account?
For merchants targeting the UK market, Open Banking provides a strategic advantage over traditional card schemes:
- Instant Settlement — Funds move via Faster Payments, providing immediate access to capital in your Leatherback GBP wallet.
- Zero Chargebacks — Since the user must explicitly authorize the payment via their bank's Multi-Factor Authentication (MFA), the risk of "friendly fraud" is virtually eliminated.
- Higher Conversion — No manual data entry. Users pay with a few taps or biometric scans (FaceID/Fingerprint) on their mobile device.
- Lower Cost — Pay by Account typically carries significantly lower processing fees compared to standard credit and debit card processing.
The Two-Step Integration Flow
Integrating Pay by Account is a straightforward process involving an initial request to generate an authorization link followed by a status verification.
Step 1: Initiate the Payment
Call the Initiate Payment API in a POST request to begin the Open Banking flow. Set the channel to PayByAccount and the currency to GBP.
curl --request POST \
--url https://laas.leatherback.co/api/payment/pay/initiate \
--header 'accept: application/json' \
--header 'content-type: application/json' \
--data '{
"amount": 1,
"channel": "PayByAccount",
"currency": "GBP",
"link": {
"alias": "0-k2tmbuy"
}, // Only Required if payment is for a payment link
"userInformation": {
"firstName": "Dave",
"lastName": "MC",
"emailAddress": "[email protected]",
"phone": "070000000"
}
}'{
"value": {
"paymentStatus": "REQUIRE_BANK_AUTH",
"message": "Payment initiated successfully. Kindly click on the link to complete your payment",
"paymentItem": {
"channel": "PayByAccount",
"message": "Payment initiated successfully. Kindly click on the link to complete your payment",
"amount": 1,
"fees": 0,
"reference": "TZ2ZFLPMU39GDPG",
"paymentReference": "TZ2ZFLPMU39GDPG",
"metaData": {
"AuthUrl": "https://cdn.plaid.com/link/v2/stable/link.html?isWebview=false&token=link-development-39c7f73c-0b44-43b9-b3e3-d2cae8e1dc45"
}
}
},
"isSuccess": true
}Key Requirement: Within the
metaDataobject, you must provide areturn-url. This is where the customer will be redirected after authorizing the payment in their banking app.Please ensure that your browser allows pop-ups for the application. If pop-ups are blocked, users may encounter errors or be unable to complete certain actions successfully.
Handling the Redirect
The API response returns an AuthUrl within the paymentItem.metaData object:
- Automatic Redirect — By default, redirect the user to the
AuthUrlto complete the payment at their bank. - Manual Control — If you prefer the payment page to close automatically without a redirect, set the
redirectparameter tofalsein themetaDatabefore loading theAuthUrl.
Step 2: Verify Transaction Status
Once the customer completes the authorization at their bank and returns to your site, call the Get Transaction Status API to confirm the final state of the payment.
Use the
paymentReference(e.g.,TLUKHPC0J7A1OMRPPG) returned in the Step 1 response.
{
"value": {
"paymentReference": "TVI1HLDDNATWSPG",
"amount": {
"currencyCode": "NGN",
"amount": 100
},
"paymentStatus": "Successfull"
},
"isSuccess": true
}Mobile Optimization: Pay by Account performs exceptionally well on mobile devices.