Nigeria 🇳🇬
Make local and international transfers to Nigerian bank accounts.
Send funds to Nigerian bank accounts.
Prerequisites
- Complete your KYC and ensure that your account is approved for transactions.
- Whitelist your server IP addresses to prevent security errors.
- Make sure your balance has enough funds. If needed, use an alternate balance; see the list of supported currencies for NGN transfers.
Payout Flow
Here are the steps to send money to Nigerian bank accounts.
- Collect the beneficiary's details such as the beneficiary's name, bank, and account number. See the expected data requirements below:
{
"reference": "", // merchant_input
"currency": "", // merchant_input
"amount": 0.0, // merchant_input
"callback_url": "", // merchant_input
"narration": "", // merchant_input
"debit_currency": "", // merchant_input
"debit_subaccount": "", // merchant_input
"account_bank": "", // beneficiary_information
"account_number": "", // beneficiary_information
"beneficiary_name": "" // beneficiary_information
}
-
Fetch the beneficiary's bank code using the bank and bank branches endpoints to get the
account_bank
. -
Use the transfer endpoint to initiate your transfer with the required data. You can include the
debit_currency
parameter in your request to debit from a different currency balance.
{
"account_bank": "044",
"account_number": "1234567840",
"amount": 5500,
"narration": "Akhlm Pstmn Trnsfr xx007",
"currency": "NGN",
"reference": "akhlm-pstmnpyt-rfxx007_PMCKDU_1",
"callback_url": "https://www.flutterwave.com/ng/",
"debit_currency": "NGN"
}
-
Verify your transfer status; there are many ways to do this:
- You can get the transfer status using the transfer status endpoint.
- If
webhooks
are enabled on your dashboard, check them to confirm the transfer status. - For transfers with
callback_id
, we'll send the transfer details with their status using the specified URL.
{
"event": "transfer.completed",
"event.type": "Transfer",
"data": {
"id": 33286,
"account_number": "0690000033",
"bank_name": "ACCESS BANK NIGERIA",
"bank_code": "044",
"fullname": "Bale Gary",
"created_at": "2020-04-14T16:39:17.000Z",
"currency": "NGN",
"debit_currency": "NGN",
"amount": 30020,
"fee": 26.875,
"status": "SUCCESSFUL",
"reference": "a0a827b1eca65311_PMCKDU_5",
"meta": null,
"narration": "lolololo",
"approver": null,
"complete_message": "Successful",
"requires_approval": 0,
"is_approved": 1
}
}
You'll get a response like this:
{
"status": "success",
"message": "Transfer fetched",
"data": {
"id": 1933222,
"account_number": "0690000033",
"bank_code": "044",
"full_name": " Flutterwave Developers",
"created_at": "2020-06-11T00:36:20.000Z",
"currency": "NGN",
"debit_currency": "NGN",
"amount": 300,
"fee": 10.75,
"status": "SUCCESSFUL",
"reference": "akhlm-pstmnpyt-rfxx007_PMCKDU_1",
"meta": null,
"narration": "Akhlm Pstmn Trnsfr xx007",
"approver": null,
"complete_message": "Transaction was successful",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "ACCESS BANK NIGERIA"
}
}
Transfer to USD Domiciliary Accounts in Nigeria
Flutterwave supports transfers to USD accounts (Domiciliary Accounts) in Nigeria.
Feature Availability
IMTO transfers to USD domiciliary accounts are currently unavailable. Any transfer attempt will automatically fail.
To send USD to domiciliary accounts in Nigeria, provide the bank code (retrievable via the bank endpoint), account number, and specify USD
as the currency. Depending on the bank, you may also need to include additional details like the routing number in the meta
parameter.
{
"account_number": "5090280719",
"account_bank": "144",
"amount": 2000,
"currency": "USD",
"narration": "Example FCMB DOM Payout",
"reference": "SAMPLE-REF",
"beneficiary_name": "Tobi Jones",
"meta": [
{
"sender": "Flutterwave Developers",
"sender_address": "35a, Ladi Alakija Avenue, Lekki",
"sender_country": "NG",
"sender_id_number": "00000000000",
"sender_id_type": "drivers license",
"sender_id_expiry": "05-2023",
"sender_mobile_number": "2348000000000",
"sender_occupation": "Consultant",
"sender_beneficiary_relationship": "Customer",
"recipient_address": "19, Olubunmi Rotimi street, Lekki",
"beneficiary_country": "NG",
"mobile_number": "2348000000000",
"email": "[email protected]",
"beneficiary_occupation": "Student",
"transfer_purpose": "Wallet withdrawal"
}
]
}
{
"account_bank": "044",
"account_number": "1234567840",
"amount": 3000,
"currency": "USD",
"narration": "Example Fidelity Bank DOM Payout",
"reference": "SAMPLE-REF",
"meta": [
{
"sender": "Another User",
"sender_city": "Abuja",
"first_name": "Example",
"last_name": "User",
"email": "[email protected]",
"beneficiary_country": "NG",
"mobile_number": "+2348010901234",
"merchant_name": "Spotify"
}
]
}
{
"account_number": "5090280719",
"account_bank": "101",
"amount": 1000,
"currency": "USD",
"narration": "Example Providus DOM Payout",
"beneficiary_name": "Example User",
"meta": [
{
"sender": "Test User",
"sender_address": "35a Ladi Alakija Avenue lekki1",
"sender_city": "Lekki",
"sender_country": "NG",
"sender_id_number": "22244857954",
"sender_mobile_number": "+2348022913114",
"sender_email_address": "[email protected]",
"first_name": "Example",
"last_name": "User",
"recipient_address": "TinCan VI",
"beneficiary_state": "Lagos",
"beneficiary_country": "NG",
"beneficiary_mobile_number": "2348022913114",
"routing_number": "101",
"account_number": "5090280719"
}
]
}
{
"account_bank": "032",
"account_number": "1234567840",
"amount": 2400,
"currency": "USD",
"narration": "Example Union Bank DOM Payout",
"reference": "SAMPLE-REF",
"meta": [
{
"sender": "Another User",
"sender_city": "Abuja",
"first_name": "Example",
"last_name": "User",
"email": "[email protected]",
"beneficiary_country": "NG",
"mobile_number": "2348010901234",
"merchant_name": "Spotify"
}
]
}
{
"account_bank": "044",
"account_number": "1234567840",
"amount": 2000,
"currency": "USD",
"narration": "Example DOM Payout",
"reference": "SAMPLE-REF",
"meta": [
{
"sender": "Another User",
"first_name": "Example",
"last_name": "User",
"email": "[email protected]",
"beneficiary_country": "NG",
"mobile_number": "+2348131133933",
"merchant_name": "Spotify"
}
]
}
You'll get a response similar to this:
{
"status": "success",
"message": "Transfer Queued Successfully",
"data": {
"id": 161265,
"account_number": "1234567836",
"bank_code": "044",
"full_name": "Flutterwave Developers",
"created_at": "2021-01-13T09:23:04.000Z",
"currency": "USD",
"debit_currency": "USD",
"amount": 65,
"fee": 40.325,
"status": "NEW",
"reference": "khlm-dom-5245",
"meta": [
{
"FirstName": "Flutterwave",
"LastName": "Developers",
"EmailAddress": "[email protected]",
"beneficiary_country": "NG",
"MobileNumber": "+2348000000000",
"Sender": "Iphie",
"account_number": "1234567836",
"routing_number": "044",
"MerchantName": "Flutterwave"
}
],
"narration": "Test Payout",
"complete_message": "",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "ACCESS BANK NIGERIA"
}
}
{}
As always, the data.status
of the transfer is "NEW"
. Be sure to set up a webhook or call the get transfer endpoint to track when the transfer is completed. For more details, see transfer overview.
Testing Transfers
Check our testing guide for details on testing transfers.
Updated 3 days ago