UK and EUR bank account charge

Hey👋. We recommend checking out the overview 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 a customer pays 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 hi@flutterwavego.com 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. Authorising the transaction: Redirect your customer to their bank to authorise 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. Expected value for this method are EUR and GBP.
  • Email: The customer's email address.
  • Is_token_io

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": "user@example.com",
     "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":"user@gmail.com",
         "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 to.

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 helps 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 help you to 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":"user@gmail.com",
         "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 customer 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 recomendations in our go-live checklist.

Loading...