Cash Pick Up

Learn how to send money for your customers to pick up at an authorized location.

📘

Getting Started

We recommend checking out the introductory section to understand the basics of making transfers first.

You can initiate a transfer for a customer to walk into a bank and collect it. We call these cash pick-up transfers.

USD cash pickup is a method where users physically receive cash from a bank branch or a convenient pickup location.

You can read here for a detailed explanation of how to initiate these transfers from your dashboard.

Prerequisites

Before starting your integration, you should

  1. Ensure that your Flutterwave account is live.
  2. Check that your users are in Nigeria. This method supports payouts to FCMB, Fidelity, Polaris, UBA, and Zenith bank.
  3. Ensure you instruct your users about how to collect cash. Cash collection is subject to Central Bank of Nigeria (CBN) directives.

🚧

Approval Required

You need approval to use this feature. Contact us at [email protected] to request permission on your account.

Making Transfers

Cash pick-up transfers work similarly to regular transfers. It makes use of the create transfer endpoint with some differences:

Transfer Type Flag

When initiating a cash pickup transfer, You'll need to set is_cash_pickup as true in your request

{
    "account_bank": "214",
    ...
    "meta": [
        {
            "is_cash_pickup": true,
            ...
        }
    ]
}

Transfer Recipient's Details

To make the transfer, You'll need to include the customer's information in your transfer request. These details include mobile_number, email, beneficiary_country, beneficiary_occupation and recipient_address.

{
    "account_bank": "214",
    ...
    "meta": [
        {
            "mobile_number": "2348000000000",
            "email": "[email protected]",
            "beneficiary_country": "NG",
            "recipient_address": "19, Olubunmi Rotimi street, Lekki",
            ...
        }
    ]
}

Sender's Details

📘

Additional Requirements

For transfers to UBA, Zenith or Polaris banks, only sender_address is required. We require sender_city for transfers to Fidelity bank. All other information described in this section are required for transfers to FCMB users.


The sender's details required for cash pick-up transfers include sender, sender_country, sender_id_number, sender_id_type, sender_id_expiry, sender_mobile_number,
sender_address, sender_occupation and sender_beneficiary_relationship.

{
    "account_bank": "214",
    ...
    "meta": [
        {
            ...
            "sender": "Flutterwave Developers",
            "sender_country": "NG",
            "sender_id_number": "00000000000",
            "sender_id_type": "drivers license",
            "sender_id_expiry": "05-2023",
            "sender_mobile_number": "2348000000000",
            "sender_address": "35a, Ladi Alakija Avenue, Lekki",
            "sender_beneficiary_relationship": "Customer"
        }
    ]
}

Putting it All Together

The final request should look like this

{
    "account_bank": "214",
    "amount": 200,
    "currency": "USD",
    "narration": "Sample money transfer",
    "reference": "TRF-1505927099809",
    "beneficiary_name": "Tobi Jones",
    "meta": [
        {
            "is_cash_pickup": true,
            "mobile_number": "2348000000000",
            "email": "[email protected]",
            "beneficiary_country": "NG",
            "recipient_address": "19, Olubunmi Rotimi street, Lekki",
            "sender": "Flutterwave Developers",
            "sender_country": "NG",
            "sender_id_number": "00000000000",
            "sender_id_type": "drivers license",
            "sender_id_expiry": "05-2023",
            "sender_mobile_number": "2348000000000",
            "sender_address": "35a, Ladi Alakija Avenue, Lekki",
            "sender_beneficiary_relationship": "Customer"
        }
    ]
}
{
	"account_bank": "057",
	"amount": 200,
	"currency": "USD",
	"narration": "Sample money transfer",
	"reference": "TRF-1532099j865",
	"beneficiary_name": "Tobi Jones",
	"meta": [
		{
			"email": "[email protected]",
			"mobile_number": "08009384921",
			"recipient_address": "19, Olubunmi Rotimi street, Lekki",
			"sender_address": "35a Ladi Alakija Avenue lekki",
			"beneficiary_country": "NG",
			"is_cash_pickup": true
		}
	]
}
{
	"account_bank": "070",
	"amount": 200,
	"currency": "USD",
	"narration": "Sample money transfer",
	"reference": "TRF-1532099j865",
	"beneficiary_name": "Tobi Jones",
	"meta": [
		{
			"email": "[email protected]",
			"mobile_number": "08009384921",
			"recipient_address": "19, Olubunmi Rotimi street, Lekki",
			"sender_address": "35a Ladi Alakija Avenue lekki",
			"sender_city": "Lagos",
			"beneficiary_country": "NG",
			"is_cash_pickup": true
		}
	]
}

The response should look like this:

{
	"status": "success",
	"message": "Transfer Queued Successfully",
	"data": {
		"id": 363110,
		"account_number": "0000000000",
		"bank_code": "057",
		"full_name": "Tobi Jones",
		"created_at": "2022-09-07T19:08:49.000Z",
		"currency": "USD",
		"amount": 200,
		"fee": 2,
		"status": "NEW",
		"reference": "TRF-153902198_PMCKDU_1",
		"meta": [
			{
				"EmailAddress": "[email protected]",
				"MobileNumber": "08009384921",
				"Address": "8, mumbai street",
				"SenderAddress": "35a Ladi Alakija Avenue lekki1",
				"BeneficiaryCountry": "NG",
				"IsCashPickup": true,
				"MerchantName": "Flutterwave Developers",
				"SenderCountry": "NG",
				"SenderMobileNumber": "0800000000",
				"AccountNumber": "0000000000",
				"RoutingNumber": "057",
				"Sender": "Flutterwave Developers"
			}
		],
		"narration": "money transfer",
		"complete_message": "",
		"requires_approval": 0,
		"is_approved": 1,
		"bank_name": "FA-BANK"
	}
}
{
	"status": "error",
	"message": "Provided pickup bank not valid for cash pickup at the moment.",
	"data": null
}

📘

Integration Tip

We cover the required parameters in more detail here . If you need any support understanding or using this feature, please send us an email.

As always, you'll notice that the data.status of the transfer is NEW. Remember to set up a webhook or call the get transfer endpoint to find out when the transfer is completed.