UK and EUR Account Charge
Learn how to collect payment directly from your customer's bank accounts in the UK and Europe
Getting Started
We recommend checking out the introductory section to understand the basics of direct charge first. This guide assumes you’ve read that.
Pay with Bank account (PWB) allows you to collect payment directly from your customer's bank accounts. We support EUR and GBP collections using this payment method. When customers pay using this method, we redirect them to an interface where they select their bank and authorize the payment via their bank apps.
This payment method does not support recurring payments.
Approval Required
To receive payments from UK and EU accounts, your merchant account needs to be approved. Contact us at [email protected] for approval.
Supported Countries
This payment method is supported for users in the following regions: Austria, Belgium, Bulgaria, Croatia, Cyprus, Czech Republic, Denmark, Finland, France, Germany, Greece, Hungary, Iceland, Ireland, Italy, Latvia, Liechtenstein, Lithuania, Luxembourg, Malta, Netherlands, Norway, Poland, Portugal, Romania, Slovakia, Slovenia, Spain, Sweden, Switzerland and The United Kingdom.
Payment Flow
Charging a EUR/GBP bank account involves three steps:
- Initiating a payment: You send the payment details to the charge endpoint.
- Authorizing the transaction: Redirect your customer to their bank to authorize the payment.
- Handling the transaction webhooks
Step 1: Initiating a Payment
When a user chooses to pay with this method, You must first redirect them to the. You can do this by calling the create charge endpoint with the following parameters; learn more about parameters in the API reference:
Tx_ref
: A unique reference to track the transaction.Amount
: The value of the transaction.Currency
: The transaction currency. The expected values for this method are EUR and GBP.Email
: The customer's email address.Is_token_io
Supported Currency
The currency you specify must match the account's currency, i.e. either
GBP
orEUR
.
# UK account
curl --request POST \
--url https://api.flutterwave.com/v3/charges?type=account-ach-uk \
--header 'Authorization: Bearer YOUR_SECRET_KEY' \
--header 'content-type: application/json' \
--data '{
"amount": 10,
"currency": "GBP",
"email": "[email protected]",
"tx_ref": "YOUR_TRANSACTION_REFERENCE",
"is_token_io": 1
}'
The success response for the API call looks like this:
{
"status":"success",
"message":"Charge initiated",
"data":{
"id":966904617,
"tx_ref":"tokenio-test-12",
"flw_ref":"CSAM8743143942209",
"device_fingerprint":"N/A",
"amount":10,
"charged_amount":10,
"app_fee":0.5,
"merchant_fee":0,
"processor_response":"Transaction is pending authentication",
"auth_model":"TOKEN",
"currency":"GBP",
"ip":"54.154.184.168",
"narration":"Flutterwave Developers",
"status":"pending",
"payment_type":"account-ach-uk",
"fraud_status":"ok",
"charge_type":"normal",
"created_at":"2023-07-03T14:28:08.000Z",
"account_id":35308,
"customer":{
"id":612233493,
"phone_number":"07086234518",
"name":"john doe",
"email":"[email protected]",
"created_at":"2023-07-03T14:28:08.000Z"
}
},
"meta":{
"authorization":{
"mode":"redirect",
"redirect":"https://token-io-fe-prod.aq2-flutterwave.com/transactions?reference=CSAM8743143942209"
}
}
}
This response contains a URL (see meta.authorization.redirect
) to redirect your customers.
Step 2: Authorizing the Transaction
On redirect, users should select their bank and log into their bank apps to complete the transaction. Verification differs by bank (or Neobank), but the user is typically prompted to use their token to complete the payment.
Step 3: Handling the Transaction Webhooks
Webhooks help you to handle status updates in your app. Flutterwave sends you a webhook on successful confirmation of the transaction. This webhook contains the transaction status, transaction details, and additional user information that will help you complete the payment flow in-app.
{
"event": "charge.completed",
"data": {
"id": 966925491,
"tx_ref": "tokenio-test-2",
"flw_ref": "JPFN3162663434217",
"device_fingerprint": "N/A",
"amount": 1,
"currency": "GBP",
"charged_amount": 1,
"app_fee": 0.5,
"merchant_fee": 0,
"processor_response": "Successful",
"auth_model": "TOKEN",
"ip": "54.154.184.168",
"narration": "Flutterwave Developers",
"status": "successful",
"payment_type": "account-ach-uk",
"created_at": "2023-07-03T14:54:30.000Z",
"account_id": 35308,
"customer": {
"id": 612248904,
"name": "Anonymous customer",
"phone_number": null,
"email": "[email protected]",
"created_at": "2023-07-03T14:54:30.000Z"
}
},
"meta_data": {},
"event.type": "ACCOUNT-ACH-UK_TRANSACTION"
}
You should handle the webhook correctly to ensure that your user completes the flow. In your webhook handler, you can then verify the payment and credit your customers with whatever they paid for. See our guide to Webhooks and transaction verification for details.
Next Steps
Congrats on your successful integration. Before you start accepting live payments, assess the recommendations in our go-live checklist.
Updated about 1 month ago