Egypt
Make EGP Cash PickUp Transfers.
This feature is only supported for IMTO merchants. Kindly submit a request to access this feature on your account.
Prerequisites
- Complete your KYC verification and confirm that your account is approved for transactions.
- Whitelist your server IP address to prevent security errors.
- Fund your EGP balance. You can do this by:
- Directly funding via collections, this method allows funding up to the equivalent of $1,000.
- Indirect funding via FX conversion from a different currency balance (i.e., wallet-to-wallet transfers).
Transfer Settlement Schedule
Transfers are processed Sunday to Thursday, 9 AM to 3 PM (GMT+2). Requests made outside these hours are handled the next working period. Funds settle 24-48 hours after processing.
Payout Flow
Follow these steps to initiate a transfer to an Egyptian Bank Account:
- Collect the customer's (payout initiator) and beneficiary's information.
- Query the bank endpoint to get the corresponding bank codes for the transfer.
- Set the
meta.is_cash_pickup
parameter totrue
. - Send your API request with the required parameters and any other custom data.
- Verify the payout status either via webhooks or with the query status endpoint.
Step 1: Collect Customer and Beneficiary information
You'll need the correct information to initiate the transfer. Collect the sender and beneficiary's information, see the list of mandatory and optional parameters below:
Parameter | Description | Format | Example | isRequired |
---|---|---|---|---|
account_number | The beneficiary's bank account number. | String | EGPWALLETS | Yes |
account_bank | The beneficiary's bank code. Query the bank endpoint for a comprehensive list of supported banks | String | “0690000032” | Yes |
amount | The transfer amount. | String | "2000" | Yes |
beneficiary_name | The full name of the transfer beneficiary. | String | “Example User” | Yes |
narration | The transfer's description. | String | "Test Payment" | No |
currency | The transfer currency. This must be EGP . | String | EGP | Yes |
meta | Additional information needed to process the transfer. | Object | N/A | Yes |
meta.beneficiary_address | The Beneficiary's Address. | String | “24 King William Street London” | No |
meta.beneficiary_country | The Beneficiary's country. This should be EG . | String | EG | No |
meta.sender | The Sender's full name. | String | Example User | No |
meta.email | The Sender's email address. | String | '[email protected]' | No |
meta.sender_city | The Sender's city | String | "Lagos" | Yes |
meta.sender_mobile_Number | The Sender's mobile number. | String | “01993003333” | No |
meta.sender_date_of_birth | The Sender's date of birth. | String | Yes | |
meta.sender_id_number | The Sender's ID number. | String | "2231aaa" | Yes |
meta.sender_id_type | The Sender's ID type. | String | "01" | Yes |
meta.sender_id_expiry | The Sender's ID expiration date. | String | “2026-09-23” | Yes |
meta.is_cash_pickup | Specifies if this is a cash pickup transfer. This must be set to true . | String | true | No |
meta.transfer_purpose | A brief description of the purpose for the transfer. | String | "Medical Bills" | Yes |
meta.beneficiary_mobile_number | The Beneficiary's Mobile number. | String | "01000410066" | Yes |
Step 2: Retrieve the recipient's bank code
Query the bank's endpoint to get the recipient's bank code. Use this sample as a guide to fetch a bank code.
curl --location 'https://api.flutterwave.com/v3/banks/EG' \
--header 'Authorization: Bearer YOUR_SECRET_KEY'
Step 3: Payout to the Customer
Send your payment request with all the needed transfer information to the transfers endpoint to initiate the payout.
{
"account_number": "0690000032",
"account_bank": "EGPWALLETS",
"narration": "test",
"amount": 2000,
"currency": "EGP",
"beneficiary_name": "john mike",
"meta": [
{
"beneficiary_address": "24 King William Street London",
"sender_city": "kakakwa",
"is_cash_pickup": true,
"beneficiary_country": "EG",
"sender_id_number": "2231aaa",
"sender_id_type": "01",
"sender": "test",
"email": "[email protected]",
"sender_id_expiry": "2026-09-23",
"sender_mobile_Number": "01993003333",
"sender_date_of_birth": "2002-09-23"
}
]
}
You'll get a response like this:
{
"status": "success",
"message": "Transfer Queued Successfully",
"data": {
"id": 326,
"account_number": "0690000032",
"bank_code": "EGPWALLETS",
"full_name": "JOHN MIKE",
"created_at": "2025-02-24T15:35:35.000Z",
"currency": "EGP",
"amount": 2000,
"fee": 45,
"status": "NEW",
"reference": "45ecccaf91421bcc",
"meta": [
{
"BeneficiaryAddress": "24 King William Street London",
"SenderCity": "kakakwa",
"IsCashPickup": false,
"SenderIdNumber": "2231aaa",
"SenderIdType": "PASSPORT",
"Sender": "test",
"SenderIdExpiry": "23/09/2026",
"SenderDateOfBirth": "23/09/2002",
"SenderAddress": "TESt 40",
"SenderMobileNumber": "08110745134",
"SenderNationality": "NG",
"SenderCountry": "NG",
"SenderEmailAddress": null,
"MerchantName": "Daniel ltd",
"BeneficiaryName": "john mike",
"TransferType": "MOBILE",
"AgentCode": "1",
"AgentLocationCode": "1",
"RouteCode": "BDC"
}
],
"narration": "test",
"complete_message": "",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "FA-BANK"
}
}
Step 4: Verify the Payout status
You have different options to verify the transfer status. Here are some quick ways to verify your status:
- If you have webhooks enabled, we'll call your webhook URL with the transfer details when the transfer is completed or fails.
- If you specify a
callback_url
when creating the transfer, we'll call that URL with the transfer details when the transfer is completed or fails. - You can manually check the current status of the transfer by polling the get transfer endpoint with the transfer ID.
{
"event.type": "Transfer",
"transfer": {
"id": 641173,
"account_number": "0690000040",
"bank_code": "97964560",
"fullname": "NWABALI S",
"date_created": "2024-07-29T13:00:30.000Z",
"currency": "EGP",
"debit_currency": "NGN",
"amount": 100000,
"fee": 45,
"status": "SUCCESSFUL",
"reference": "47b4b1f71065196a",
"meta": null,
"narration": "SAMPLE BDC TRANSFER",
"approver": null,
"complete_message": "Successful",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "First Discount House Limited"
}
}
{
"status": "success",
"message": "Transfer fetched",
"data": {
"id": 641173,
"account_number": "0690000040",
"bank_code": "97964560",
"full_name": "NWABALI S",
"created_at": "2024-07-29T11:36:14.000Z",
"currency": "EGP",
"debit_currency": "NGN",
"amount": 100000,
"fee": 45,
"status": "SUCCESSFUL",
"reference": "47b4b1f71065196a",
"meta": [
{
"sender": "Sample User"
}
],
"narration": "Payment for goods",
"approver": null,
"complete_message": "Successful",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "First Discount House Limited"
}
}
Testing Transfers
Check our testing guide for details on testing transfers.
Updated 1 day ago