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:
- 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
. - Customer Authentication
- The customer is redirected to their bank’s online platform.
- They log in and approve the payment.
- 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. - 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.
- 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:
- Add an item to your cart on your online store.
- Proceed to the checkout page and select Open Banking as the payment method.
- Follow the redirect link in the response to simulate a transaction.
- Complete the transaction and verify that you are redirected to the order confirmation page.
- Log in to Genesis.
- 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:
- Contact your emerchantpay Account Manager for your production login credentials.
- Use your production API credentials and URLs to create payment requests in your live environment.
- Now, you’re ready to accept live payments using Open Banking.