Egyptian Transfers (EGP)
Learn how to transfer money to Egyptian bank accounts and wallets.
Getting Started
We recommend checking out the introductory section to understand the basics of making transfers first.
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.
Prerequisites
- 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.
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.
Transfer Settlement Schedule
Transfers are exclusively handled during operational hours, which run from 9am-3pm (GMT+2), Sundays through Thursdays. Requests made outside these hours are processed in the next working period. Funds are settled 24-48 hours after processing.
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.
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 ). Like Bank transfers, settlement for these transfers occurs 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. |
Step 2: Confirm your Balance and Bank Code
Wallet and Cash Pickup Codes
Pass
FAWRY
andEGPWALLETS
as the bank code (account_bank
) for Cash pickup and Wallet transfers respectively.
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 your Customer
Send your customer and beneficiary information in your request to the transfer endpoint. Transfers are scheduled for processing immediately, and you'll 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"
}
]
}'
The response should look like this:
{
"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": "[email protected]",
"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": "[email protected]",
"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.
Updated 9 days ago