Account payments
This describes how to accept payments directly from customers bank accounts in Nigeria
Flutterwave allows Nigerian merchants to charge customers bank accounts as an additional payment method. This makes it possible for customers to pay you through a direct bank account debit.
We'll show you how to add this payment method to your website in the steps below:
Pre-requisites for accepting bank account payments in Nigeria.
-
Sign-up for an account here .
-
Set up a webhook to get notified on payments, to see more on webhooks visit our Webhook section
-
When trying to accept payment on a website you can use our Flutterwave inline method and pass
type
asdebit_ng_account
andcountry
asNG
, once you do this, the payment options for bank account will be enabled on your checkout. -
If you would prefer to accept payments using our APIs please see how to [accept bank account payments via APIs](ref: charge-nigerian-bank-accounts).
-
After getting a response for the transaction, call the Transaction verification endpoint to confirm the final status of the transaction.
Step 1 - Initiate payment
Send your payload to our charge endpoint: https://api.flutterwave.com/v3/charges?type=debit_ng_account
Method: POST
{
"tx_ref":"MC-1585230ew9v5050e8",
"amount":"100",
"account_bank":"044",
"account_number":"0690000037",
"currency":"NGN",
"email":"[email protected]",
"phone_number":"0902620185",
"fullname":"Yemi Desola"
}
Parameter Definition
Parameter | Required | Description |
---|---|---|
tx_ref | True | This is a transaction reference you supply to identify different transactions on your account. It is important to ensure that you pass unique references for every transaction. |
amount | True | This is the amount to be charged. It is passed in NGN - ('amount':100). |
currency | True | This is the specified currency to charge in. (expected value: NGN) |
account_bank | True | This represents the bank to be debited. You can get the bank code from our bank list endpoint. |
account_number | True | This is the account number of the customer associated with a valid bank account. |
bvn | False | (This is required for UBA account payment option) : This is the customer's BVN number |
True | This is the email address of the customer. | |
phone_number | False | This is the phone number linked to the customer's mobile money account. |
client_ip | False | Internet Protocol. This represents the current IP address of the customer carrying out the transaction. |
device_fingerprint | False | This is the fingerprint for the device being used. It can be generated using a library on whatever platform is being used. |
meta | False | This is an object you can use to include any additional payment information you would like to associate with this charge |
fullname | False | Should include the first and last name of the customer |
passcode | False | (This is required for Zenith bank account payments), you are required to collect the customer's date of birth and pass it in this format DDMMYYYY as passcode. |
Payment Response
When you send your payload to our charge endpoint to make a payment, you'll get a successful response if it all goes well.
{
"status":"success",
"message":"Charge initiated",
"data":{
"id":1190962,
"tx_ref":"MC-1585230ew9v5050e8",
"flw_ref":"URF_1585311768729_7845335",
"device_fingerprint":"62wd23423rq324323qew1",
"amount":100,
"charged_amount":100,
"app_fee":1247.2,
"merchant_fee":0,
"auth_model":"AUTH",
"currency":"NGN",
"ip":"154.123.220.1",
"narration":"Software Engineering as a service",
"status":"pending",
"auth_url":"NO-URL",
"payment_type":"account",
"fraud_status":"ok",
"created_at":"2020-03-27T12:22:48.000Z",
"account_id":74843,
"customer":{
"id":349094,
"email":"[email protected]"
},
"account":{
"account_number":"0690000040",
"bank_code":"044",
"account_name":"Yemi Desola"
},
"meta":{
"authorization":{
"mode":"otp",
"validate_instructions":"Please validate with the OTP sent to your mobile or email"
}
}
}
}
Validate payment
To validate the account payment, your customer will receive an OTP as SMS and email notifications from the initiate payment call above. Call our Validate a charge endpoint with the customers OTP and the flw_ref
returned in the response above to complete the transaction.
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
Updated about 2 years ago