Bank transfer

This will show you how to handle bank account payments with Flutterwave

Pay with Bank transfers is a powerful tool that allows your customers to pay you via a NIP transfer. A unique account number is displayed to the customer and they can transfer to that account number via their mobile banking, USSD, or Internet banking applications.


Bank Transfers are mocked on staging!

Before you go any further, please read through carefully.
When performing bank transfers on staging (with your test keys), once you've initiated the transaction, it is mocked to automatically become successful after a few seconds, even if you cancelled the transaction.

This is intentional. It is done to fulfil requests by developers who wanted the ability to test the bank transfer feature end to end before going live.

Steps to collecting payment by Bank Transfers

Enable the pay with bank transfer option on your merchant account by logging into your Flutterwave dashboard and doing the following:

  • Go to settings
  • Account Settings
  • Enable Bank Transfers.

It is worthy to note that our pay with bank transfer feature is enabled by default on your Flutterwave inline method for new and existing integrations. You can also access our API if you would like to build your own custom checkout flow.

Collecting payments using Pay with Bank Transfer

The pay with bank transfer payment method is enabled by default for NGN transactions for all merchants. As a developer/merchants, this means that when you use our Flutterwave inline or Flutterwave standard integration options, the feature will be available on your checkout page by default.

When your customer selects to pay with bank transfer, Flutterwave generates a unique but expire-able bank account that is shown to the customer to complete their payment. The customer can use any of their Mobile banking, USSD or Internet banking channels to complete the payment and your Flutterwave balance will be credited if the transaction is successful.

Pay with Bank Transfer features

  1. Creating a dynamic account number unique to each customer's payment.
  2. Creating a dynamic account with a custom expiration date. This flow supports partial payments which means your customers can pay the total order amount in smaller instalments.
  3. Creating a static account that your customers can pay into any time e.g. Like your bank account, or a unique bank account tied to each of your customers. We send a webhook with a unique reference and the customer's details.

Collecting payments using Pay with Bank Transfer via our APIs



If you would like to build your own custom checkout flow for the payment method, you can make use of our API.

Method: POST

   "email":"[email protected]",
   "narration":"All star college salary for May",


Here's a sample response for a successful pay with bank transfer call

   "message":"Charge initiated",
         "transfer_bank":"WEMA BANK",
         "account_expiration":"2020-03-27 09:53:39",
         "transfer_note":"Please make a bank transfer to Kizito Akhilome",

When your users complete payment to the returned bank account, we will credit your Flutterwave account with the paid amount. When the transaction is successful, we will also send you a notification on your Webhook URL if you provided one

Verify payment

After charging a customer successfully, you need to verify that the payment was successful with Flutterwave before giving value to your customer on your website.

Check our Transaction verification section for implementation instructions

Did this page help you?