Nigeria 🇳🇬

Make local and international transfers to Nigerian bank accounts.

Send funds to Nigerian bank accounts.

Prerequisites

  1. Complete your KYC and ensure that your account is approved for transactions.
  2. Whitelist your server IP addresses to prevent security errors.
  3. 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.

  1. 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
}
  1. Fetch the beneficiary's bank code using the bank and bank branches endpoints to get the account_bank.

  2. 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"
}
  1. 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.