Open banking payments

Accept open banking payments in your online store.

Open Banking is a secure and regulated payment method that allows customers to make direct bank payments without using traditional card networks. Instead of entering card details, customers authenticate and approve transactions directly through their bank via a secure API.

With Open Banking, you can accept direct bank transfers while benefiting from:

Lower Transaction Fees – No card processing or interchange fees.
Faster Settlements – Receive payments in real-time or within hours.
Enhanced Security – Customers authenticate directly through their bank, reducing fraud risk.
Improved Checkout Experience – No need for card details, making payments smoother for your customers.

Payment Method Countries/Regions Supported Currencies Supported
Open Banking United Kingdom, Ireland, Germany, France, Belgium, Finland, Italy, Spain, Sweden (beta) GBP, EUR

This guide shows you how to integrate Open Banking payments into your online store using the emerchantpay API. You’ll learn how to set up payments, handle transactions, and manage responses efficiently.


Prerequisites

Before you begin, ensure the following:

  • You have an emerchantpay merchant account. If not, apply for one here.
  • An emerchantpay Account Manager has provided your API credentials and support.
  • Your development team is familiar with:
    • Web programming languages.
    • HTTP methods in XML and JSON formats.
    • UTF8 encoding.
  • For simpler integration, you can use the emerchantpay Web Payment Form (WPF). Contact your Account Manager to set up Open Banking payments via WPF and refer to the WPF API.

Payment flow

Open Banking payments follow these steps:

  1. Initiate Payment
    • Your customer selects Open Banking as the payment method at checkout.
    • A payment request is sent to the emerchantpay Genesis gateway with transaction_type = online_banking and bank_code = TRL.
  2. Customer Authentication
    • The customer is redirected to their bank’s online platform.
    • They log in and approve the payment.
  3. Payment Processing
    • The bank processes the payment and sends a confirmation response.
    • The transaction status is set to pending_async until final confirmation is received.
  4. Notification and Confirmation
    • The emerchantpay gateway sends an HTTP POST notification to the notification_url you provided once the transaction is approved.
    • You verify the payment and update the order status accordingly.
  5. Settlement
    • The funds are settled into your designated account.
    • This flow ensures a secure and efficient Open Banking payment experience for both you and your customers.


Create a payment request

To initiate an Open Banking payment, submit a payment request to the emerchantpay Genesis payment gateway with the following parameters:

Parameter Required Format Description
transaction_type Required string(255) The transaction type indicates the type of transaction. For Open Banking payments, specify online_banking as the payment method.
bank_code Required string(3) The bank code represents the payment provider or the bank used for processing the Open Banking transaction. You need to specify TRL as the bank code.
transaction_id Required string(255) A unique identifier for the transaction defined by you.
remote_ip Required IPv4 or IPv6 The customer’s IP address.
amount Required integer > 0 The amount (in minor currency units) that the customer transfers.
currency Required string(3) The three-letter currency code (GBP or EUR).
notification_url Required URL The URL for receiving the transaction outcome.
return_success_url Required URL The URL the customer is directed to after a successful payment.
return_failure_url Required URL The URL the customer is directed to after an unsuccessful payment.
return_pending_url Optional URL The URL the customer is directed to when the payment is pending.
customer_email Required email address A valid email address for the customer.
billing_address Required object A group of parameters describing the billing address.
first_name Required string(255) The first name of the customer.
last_name Required string(255) The last name of the customer.
address1 Required string(255) The primary address associated with the transaction.
zip_code Required string The ZIP code associated with the transaction.
city Required string(255) The city associated with the billing address.
country Required string(2) The two-letter country code following ISO 3166 standards.
usage Optional string(255) A description of the transaction for future reference.
state Optional string(2) The state code following ISO 3166-2 standards. This parameter is part of the billing_address object.

Here’s an example of an XML request for an Open Banking transaction:

<payment_transaction>
   <transaction_type>online_banking</transaction_type>
   <bank_code>TRL</bank_code>
   <transaction_id>53b68204ec3817629bd1ab56ac4ed378</transaction_id>
   <usage>Online purchase</usage>
   <remote_ip>245.253.2.12</remote_ip>
   <amount>100</amount>
   <currency>GBP</currency>
   <notification_url>https://webhook.site/41269956-1754-4c55-ada2-0c2d9f75e830</notification_url>
   <return_success_url>http://example.com/success</return_success_url>
   <return_failure_url>http://example.com/failure</return_failure_url>
   <return_pending_url>https://example.com</return_pending_url>
   <billing_address>
      <first_name>John</first_name>
      <last_name>Doe</last_name>
      <address1>15 Main Str</address1>
      <zip_code>EC2A 3JL</zip_code>
      <city>London</city>
      <country>GB</country>
   </billing_address>
   <customer_email>john.doe@example.com</customer_email>
</payment_transaction>

Use your staging environment credentials to test your integration before moving to production.


Receive a payment response

After submitting the request, you will receive a Success or Error response.

Below are the response parameters returned after a payment request is submitted via Open Banking. These parameters provide the transaction status and other relevant information about the payment:

Parameter Required Format Description
transaction_type Required string(255) The type of transaction, specifying online_banking.
status Required string(20) The transaction status (e.g., pending_async, approved).
unique_id Required string(255) A unique identifier for the transaction.
transaction_id Required string(255) The unique identifier for the transaction defined by you.
technical_message Optional string(255) A technical message describing the status of the transaction (e.g., TESTMODE: No real money will be transferred).
message Optional string(255) A message to be displayed to the customer.
redirect_url Required URL The URL to redirect the customer for authentication.
mode Required string(10) The mode of the transaction (test or live).
timestamp Optional datetime The timestamp of the transaction.
descriptor Optional string(255) A description for the transaction.
amount Required integer The transaction amount in minor currency units.
currency Required string(3) The currency code for the transaction (GBP, EUR).
sent_to_acquirer Required boolean Indicates if the transaction has been sent to the acquirer.
bank_code Required string(3) The bank code (e.g., TRL) for the transaction.
payment_type Required string(255) The type of payment being made (online_banking).

Example of a Success response:


<payment_response>
   <transaction_type>online_banking</transaction_type>
   <status>pending_async</status>
   <unique_id>44177a21403427eb96664a6d7e5d5d48</unique_id>
   <transaction_id>53b68204ec3817629bd1ab56ac4ed378</transaction_id>
   <technical_message>TESTMODE: No real money will be transferred!</technical_message>
   <message>TESTMODE: No real money will be transferred!</message>
   <redirect_url>https://staging.gate.emerchantpay.net/redirect/to_acquirer/44177a21403427eb96664a6d7e5d5d48</redirect_url>
   <mode>test</mode>
   <timestamp>2025-01-08T15:01:04Z</timestamp>
   <descriptor>Descriptor1</descriptor>
   <amount>100</amount>
   <currency>GBP</currency>
   <sent_to_acquirer>true</sent_to_acquirer>
   <bank_code>TRL</bank_code>
   <payment_type>online_banking</payment_type>
</payment_response>

Use the returned redirect_url to redirect your customer to their bank for authorisation.


Handle asynchronous notification

Open Banking payments are processed asynchronously. After the payment is authorised, the gateway sends the transaction result via HTTP POST to the notification_url you provided.

Example of a notification for Open Banking:

{
  “transaction_id”: “53b68204ec3817629bd1ab56ac4ed378”,
  “terminal_token”: “a5cb8b6a6da3ecbea4dac21670e7bc3ae0ae2815”,
  “unique_id”: “44177a21403427eb96664a6d7e5d5d48”,
  “transaction_type”: “online_banking”,
  “status”: “approved”,
  “signature”: “3bbdb69c48739a41eabf7acb6d95d23a1135d558”,
  “amount”: “100”,
  }

To verify the authenticity of the notification, validate the signature field using the Genesis gateway’s signature verification process.


Test your integration

Before going live, test your integration in the staging environment:

  1. Add an item to your cart on your online store.
  2. Proceed to the checkout page and select Open Banking as the payment method.
  3. Follow the redirect link in the response to simulate a transaction.
  4. Complete the transaction and verify that you are redirected to the order confirmation page.
  5. Log in to Genesis.
  6. In the navigation menu, go to Payment transactions and confirm that the transaction status is successful.


Accept live payments

After testing your Open Banking integration, you’re ready to move to the production environment. To start accepting live payments:

  1. Contact your emerchantpay Account Manager for your production login credentials.
  2. Use your production API credentials and URLs to create payment requests in your live environment.
  3. Now, you’re ready to accept live payments using Open Banking.


Troubleshooting and FAQs

The customer’s payment will not be authorised. Ensure your integration correctly handles redirect failures by notifying the customer and offering alternative payment methods.

Use the signature field in the notification to validate the authenticity of the message.

Any business that wants to offer a simple payment experience can benefit from bank transfer payments and account top-ups. This includes industries such as eCommerce, travel, financial services, gaming, gambling, and more.

  • Increased checkout conversions – Customers don’t need to enter card details or bank account details which improves their checkout experience.
  • Higher acceptance rates – Payments via Open Banking succeed 95% of the time. Payment information is auto-populated within the banking environment, mitigating errors caused by manual entry.
  • Minimised fraud – Customers verify transactions right in their online banking apps. This means that strong customer authentication is built into the transaction process. Similarly to card payments, it also utilises APIs as an additional defence against fraudsters, which encrypts and securely submits payment data. The combination of both these measures means Open Banking provides a highly secure way for customers to pay for goods and services.
  • No chargebacks – As Open Banking facilitates real-time bank transfers, it essentially mitigates any risk of a chargeback and prevents any additional chargeback-related fees occurring.
  • Allowing instant bank transfers – Where available, Open Banking uses real-time payment rails to support instant bank transfers.
  • Faster refunds and payouts – The real-time nature of Open Banking means that your customers can benefit from instant refunds and payouts. This not only improves their payment experience but also simplifies the process for reversal transactions for you.

  • Manual bank transfer involves a customer logging in to their bank account and manually transferring funds to a business or individual by manually entering in the payee and their payment details.
  • Real-time bank transfers remove the need to enter in any payment details manually. Customers must select ‘Bank transfer’ on your payment page, click their bank and then they’ll be redirected to their banking platform to authorise the payment.