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:

  1. Initiating a payment: You send the payment details to the charge endpoint.
  2. Authorizing the transaction: Redirect your customer to their bank to authorize the payment.
  3. 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 or EUR.

# 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.