Introduction
Flutterwave helps you to process transfers into Egypt. Whether you choose to transfer to a bank account or wallet, we have you covered. This section guides you on how to make EGP transfers. Before you proceed, please read our transfer overview page to learn the fundamentals of making transfers.
Pre-requisites
- Complete your profile and KYC.
- Fund your EGP balance either by:
- Direct funding your balance.
- Or Indirect funding: moving funds from a different balance to your EGP balance. See the list of supported currencies for intra-wallet transfers.
Supported Transfer types
There are three (3) supported transfer types for EGP Payouts:
- Transfers to Bank Accounts
- Cash pickup Transfers
- Wallet Transfers
Transfers to Bank Accounts
Bank transfers are supported for over 40 different banks(query the banks endpoint for the full list of supported banks). You can configure this payout to facilitate your single or recurring transfer use cases.
Cash Pickup Transfers
Cash pickup transfer involves users physically receiving cash from a convenient pickup location (usually an agent). Unlike bank account transfers, These are instant and can be redeemed immediately.
When making a cash pickup transfer, you need to generate a voucher and redeem it with a Fawry plus agent. We return the voucher in the response of the initiate transfer call. See the cash pickup example response for more information.
Mobile Wallet Transfers
Wallet transfers support payment to wallets like QNB, Orange cash, Qahera cash and 23 other wallets in Egypt (see full wallet coverage here). Like Bank transfers, settlement for these transfer occur 24-48 hours after processing.
Payout workflow
Follow these steps to complete a general EGP payout:
- Collect the customer's (payout initiator) and beneficiary's information.
- Query the bank endpoint to get the corresponding bank codes for the transfer.
- 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 need the right information to make the transfer. Collect your customer's information as well as the information of the transfer beneficiary. Here is a full list of requirements needed to initiate your transfer:
Parameter | Description | Format | Example | isRequired |
---|---|---|---|---|
account_number | The recipient's account number. For cash pick-up and wallet transfers, it should be the recipient's mobile number. | string | 100035129997 | Yes |
beneficiary_name | The name of the transfer recipient | string | Michael Wilson | Yes |
beneficiary_address | The address of the recipient | string | "333, Fremont street, San Francisco" | Yes |
transfer_purpose | This code represents the reason for making this transfer. See full list of supported purposes here. | string | "03" | Yes |
sender_id_type | This code represents the customer (sender's) id. See the full list of supported ids here. | string | 02 | Yes |
sender_id_number | The number on the customer's identification document | string | 123454 | No |
sender_id_expiry | The expiry date of the customer's identification document. | string | 2030-12-31 | Yes |
sender_date_of_birth | The customer's date of birth | string | 1990-01-01 | Yes |
Step 2: Confirm your balance and bank code
FAWRY
and
EGPWALLETS
as the bank code(
account_bank
) for Cash pickup and Wallet transfers respectively.
curl --location 'https://api.flutterwave.com/v3/banks/EG' \
--header 'Authorization: Bearer YOUR_SECRET_KEY'
Step 3: Payout to your customer
Send your customer and beneficiary information in your request to the transfer endpoint. Transfers are scheduled for processing immediately and you'd get a webhook after the transfer is completed.
Here is a list of information that should be added to the customer and beneficiary's information in your request.
Parameter | Description | Format | Example | isRequired |
---|---|---|---|---|
account_bank | The recipient's bank code | string | CIB | Yes |
amount | The transfer amount | int32 | 100 | Yes |
narration | Transfer note | string | Cross-border Transfer to Egyptian Bank Account | No |
currency | Specific currency for the transfer. Expected value: EGP. | string | EGP | No |
reference | A unique identifier for the transfer. | string | 03 | No |
curl --location 'https://api.flutterwave.com/v3/transfers' \
--header 'Authorization: Bearer YOUR_SECRET_KEY' \
--header 'Content-Type: application/json' \
--data '{
"account_number":"100035129997",
"account_bank":"CIB",
"narration":"Cross-border Transfer to Egyptian Bank Account",
"amount":10,
"reference":"test_121x_PMCKDU_1",
"currency":"EGP",
"beneficiary_name":"Michael Rowland",
"meta":[
{
"sender":"Cornelius",
"sender_id_expiry":"2025-12-31",
"sender_id_number":"123454",
"sender_date_of_birth":"1999-01-01",
"sender_id_type":"01",
"beneficiary_address":"333, Fremont Street, San Francisco",
"beneficiary_id_number":"ID5467833322222",
"is_cash_pickup":false,
"transfer_purpose":"03"
}
]
}'
curl --location 'https://api.flutterwave.com/v3/transfers' \
--header 'Authorization: Bearer YOUR_SECRET_KEY' \
--header 'Content-Type: application/json' \
--data '{
"account_bank": "fawry",
"account_number": "00000000000",
"narration": "Cross-border Fawry Transfer",
"amount": 12,
"reference": "test_321x_PMCKDU_1",
"currency": "EGP",
"beneficiary_name": "Mo’men Alaa",
"meta": [{
"is_cash_pickup": true
}]
}'
curl --location 'https://api.flutterwave.com/v3/transfers' \
--header 'Authorization: Bearer YOUR_SECRET_KEY' \
--header 'Content-Type: application/json' \
--data '{
"account_bank":"EGPWALLETS",
"account_number":"01068698386",
"amount":300,
"reference":"test_403x_PMCKDU_1",
"beneficiary_name":"Chijioke Okorji",
"narration":"Cross-border Transfer to Egyptian Wallet.",
"currency":"EGP",
"meta":[
{
"sender":"Emmanuel V",
"beneficiary_mobile_number":"06703933333",
"sender_id_expiry":"2026-02-02",
"sender_date_of_birth":"1997-01-01",
"sender_id_number":"PAS23433389011",
"sender_id_type":"21",
"is_cash_pickup":false,
"beneficiary_address":"333, Fremont Street, San Francisco.",
"transfer_purpose":"13"
}
]
}'
{
"status": "success",
"message": "Transfer Queued Successfully",
"data": {
"id": 617145,
"account_number": "100035129997",
"bank_code": "CIB",
"full_name": "Michael Rowland",
"created_at": "2024-02-19T14:35:28.000Z",
"currency": "EGP",
"amount": 10,
"fee": 45,
"status": "NEW",
"reference": "test_121x_PMCKDU_1",
"meta": [
{
"Sender": "Cornelius",
"SenderIdExpiry": "31/12/2025",
"SenderIdNumber": "123454",
"SenderDateOfBirth": "01/01/1999",
"SenderIdType": "PASSPORT",
"BeneficiaryAddress": "333, Fremont Street, San Francisco",
"BeneficiaryIdNumber": "ID5467833322222",
"IsCashPickup": false,
"TransferPurpose": "TRANSFER TO OWN FOREIGN BANK AC",
"BeneficiaryCountry": "EG",
"SenderAddress": "No 8b Providence street lekki Lagos",
"SenderMobileNumber": "0800000000",
"SenderCountry": "NG",
"SenderDob": "01/01/1999",
"SenderEmailAddress": "tester@flutterwavego.com",
"MerchantName": "Test Merchant",
"BeneficiaryName": "Michael Rowland"
}
],
"narration": "Cross-border Transfer to Egyptian Bank Account",
"complete_message": "",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "FA-BANK"
}
}
{
"status": "success",
"message": "Transfer Queued Successfully",
"data": {
"id": 222660,
"account_number": "01068698386",
"bank_code": "FAWRY",
"full_name": "Mo’men Alaa",
"created_at": "2024-02-20T18:18:06.000Z",
"currency": "EGP",
"amount": 12,
"fee": 2.14,
"status": "NEW",
"reference": "test_322x_PMCKDU_1",
"meta": [
{
"IsCashPickup": true,
"BeneficiaryName": "Mo’men Alaa"
}
],
"narration": "Cross-border Fawry Transfer",
"complete_message": "",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "FA-BANK"
}
}
{
"status": "success",
"message": "Transfer Queued Successfully",
"data": {
"id": 617403,
"account_number": "01068698386",
"bank_code": "MOBILE",
"full_name": "Chijioke Okorji",
"created_at": "2024-02-21T16:29:59.000Z",
"currency": "EGP",
"amount": 300,
"fee": 45,
"status": "NEW",
"reference": "test_403x_PMCKDU_1",
"meta": [
{
"Sender": "Emmanuel V",
"BeneficiaryMobileNumber": "06703933333",
"SenderIdExpiry": "02/02/2026",
"SenderDateOfBirth": "01/01/1999",
"SenderIdNumber": "PAS23433389011",
"SenderIdType": "Business registration / licence",
"IsCashPickup": false,
"BeneficiaryAddress": "333, Fremont Street, San Francisco.",
"TransferPurpose": "FOR MEDICAL TREATMENT",
"BeneficiaryCountry": "EG",
"SenderAddress": "No 8b Providence street lekki Lagos",
"SenderMobileNumber": "0800000000",
"SenderCountry": "NG",
"SenderDob": "01/01/1999",
"SenderEmailAddress": "tester@flutterwavego.com",
"MerchantName": "Test Merchant",
"BeneficiaryName": "Chijioke Okorji",
"BeneficiaryIdNumber": null,
"TransferType": "MOBILE"
}
],
"narration": "Cross-border Transfer to Egyptian Wallet.",
"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.
Testing your Integration
Check our testing helpers to get mock data and resources to test your integration. If you need any support with your integration, kindly contact the developer support team.