Pay by Bank App

Pay by Bank App is a payment method available to payers in the United Kingdom that allows them to use their banking app on their smartphone to pay for goods and services without them having to download any applications. Payers have complete visibility to their bank balance during transactions and the peace of mind that their transaction(s) will be authorized and completed in a secure and trusted environment of their mobile banking app. By utilizing the Faster Payment Service, Pay by Bank App offers almost real-time payments and settlement along with the following benefits:

  • Reduced friction and abandonment that may help increase revenue
  • Reduced customer disputes that could lead to reduction in costs
  • Potential to reduce fraud
  • Ready for PSD2, SCS, and other regulatory requirements

Pay by Bank App currently supports transactions and settlements in GBP currency only.


Before you begin integrating Pay by Bank App in your environment, ensure that you have:

  • Registered your merchant account with your local payment method aggregator.
  • Linked a bank account in GBP currency with your merchant account that is registered with your local payment aggregator.
  • Configured your gateway merchant profile using the account details provided by your local payment method aggregator.

Pay by Bank App Integration

Pay by Bank App is supported in API version 54.

In addition to the standard fields required in a browser payment request, you need to provide the following fields in the Initiate Browser Payment request for the processing of Pay By Bank App payments.

  • sourceOfFunds.type = pbba
  • apioperation = PAY (the Authorize operation is not supported by Pay by Bank App)
  • sourceOfFunds.provided.pbba.returnUrl = The URL of the merchant app to which the payer is redirected from their mobile app

To integrate to the gateway to use Pay by Bank App, initiate a Pay request and provide the following fields:

Request field Required Type Description
No String Set the value to Pay by Bank App.
No String Additional details for Pay by Bank App payment method.
No String The URL of your app to which the payer is redirected from their mobile banking app.
WS API PAY example
    "apiOperation": "PAY",
    "order": {
      "amount": "45.46",
      "currency": "GBP"             },
    "sourceOfFunds": {
      "provided": {
        "pbba": {
          "returnUrl": "<URL_of_merchant_app>"
      "type": "PBBA"
    "transaction": {
      "source": "INTERNET"

Response Parameters

Response parameter Description
sourceOfFunds.provided.pbba.paymentRequestId A unique 18 character payment request identifier, which is also known as the Pay by Bank app secure token. It is used when the payer's banking app is invoked on their mobile device during the shopping experience.
sourceOfFunds.provided.pbba.paymentRequestInputCode A one-time 6 character code that identifies the payment request, which is also known as the Pay by Bank app Basket Reference Number. This code may be used by the payer to confirm the payment within their mobile banking app.
WS API response example
 "gatewayEntryPoint": "WEB_SERVICES_API",
 "merchant": "PBBA_MER_2",
 "order": {
   "amount": 45.46,
   "chargeback": {
       "amount": 0,
       "currency": "GBP"
   "creationTime": "2019-09-17T11:19:34.813Z",
   "currency": "GBP",
   "fundingStatus": "IN_PROGRESS",
   "id": "13347",
   "status": "INITIATED",
   "totalAuthorizedAmount": 0,
   "totalCapturedAmount": 0,
   "totalRefundedAmount": 0
 "response": {
   "acquirerCode": "PENDING",
   "gatewayCode": "SUBMITTED"
 "result": "SUCCESS",
   "sourceOfFunds": {
     "provided": {
         "pbba": {
           "paymentRequestId": "120191291357676444",
           "paymentRequestInputCode": "PLJGLW"
     "type": "PBBA"
   "timeOfRecord": "2019-09-17T11:19:34.813Z",
   "transaction": {
     "acquirer": {
       "id": "PBBA_PPRO",
       "merchantId": "MPGTESTCONTRACT",
       "timeZone": "+0000",
       "transactionId": "509260333"
     "amount": 45.46,
     "currency": "GBP",
     "funding": {
       "status": "IN_PROGRESS"
     "id": "1",
     "source": "INTERNET",
     "type": "PAYMENT"
 "version": "54"

Transaction Response Codes

The table below shows the transaction response codes for the possible scenarios you may encounter after initiating a Pay By Bank App payment.

Initiate Browser Payement response What this means...
Redirect the payer using the URL provided in the response.
Retrieve transaction response What this means...
The payment is successful.
The gateway is waiting for a notification from the acquirer about the payment result. Try RETRIEVE_TRANSACTION again later or listen to notifications from the gateway.
The payment was declined. Offer the payer the option to try another payment method.
In the case of an ACQUIRER_SYSTEM_ERROR you may want to inquire with the acquirer the reason for payment failure, or you can try RETRIEVE_TRANSACTION again.
Treat this as a declined payment. The gateway will make any attempt to ensure the transaction was not successful or will revert the transaction.


Pay by Bank App supports full or partial refund payments. You must be configured for refunds on the Mastercard Payment Gateway and on your merchant account with your local payment method aggregator.

Standalone refunds are not supported for Pay by Bank App transactions.

Test your Pay by Bank App integration

To test Pay by Bank App integration, you must have access to the Bank3App which is a demo application used for testing purpose.

Follow these steps to get access and install Bank3App.

  1. Send an email to to request access for Bank3App which is the Pay by Bank App's demo application.

    Ensure that the email address that you use for registration must be the email address of your company. Your personal email addresses are not allowed for the security reasons. The VL customer support from the Zapp customer support team shares the application installation details through an email. If your organization has blocked this email ID check your spam folder.

  2. Follow the instructions provided in the email to install the Bank3App.
  3. Register with your email ID, preferably corporate ID and sign into your application.
  4. Open the Pay by Bank application and enter your login PIN.

Test your Pay by Bank App integration from the same mobile

You can test your Pay by Bank App integration when both, the Bank3App and your app are on the same mobile device.

Follow these steps to test your Pay by Bank App integration from the same mobile.

  1. Tap the zapp://paymentRequestId URL either on the mobile browser or within the mobile application.
  2. Follow the prompts to log in to the Bank3App using your PIN or TouchID.
  3. Select a dummy account to complete the payment.
  4. You are redirected to the merchantredirecturl in a browser.

Test your Pay by Bank App integration from different mobile

You can test your Pay by Bank App integration even if the Bank3App and your app are on different mobile devices.

Follow these steps to test your Pay by Bank App integration from different mobile.

  1. In the Bank3App, tap the Pay by Bank App logo in the lower-right corner of your screen and enter the six-character code returned in paymentRequestInputCode.
  2. Select a dummy bank account, and then tap Confirm payment.
  3. The local payment method aggregator hosted page redirects to the URL set in merchantredirecturl.

Copyright © 2023 Mastercard