Cash pick up

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

Hey👋. We recommend checking out Transfers: Overview to understand the basics of transfers first. This guide assumes you've read that.

USD cash pickup is a method where users physically receive cash from a bank branch or a convenient pickup location. In the following paragraphs, we cover the basics needed to initiate payouts for your customers using this method correctly.

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

Pre-requisites

You need approval to use this feature. Contact us at hi@flutterwavego.com to request permission on your account.

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. Learn more here.

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": "tobi@jones.com",
            "beneficiary_country": "NG",
            "recipient_address": "19, Olubunmi Rotimi street, Lekki",
            ...
        }
    ]
}

Sender's details

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": "tobi@jones.com",
            "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": "tobi@jones.com",
        "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": "tobi@jones.com",
        "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
      }
    ]
  }
{
    "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": "tobi@gmail.com",
                "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
}

We cover the required parameters in more detail here. If you need any support understanding or using this feature, 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. See Transfers: Overview for details.

Loading...