We recommend checking out the introductory
section to understand the basics of making
transfers first.
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.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. | string | ”03” | Yes |
| sender_id_type | This code represents the customer (sender’s) id. See the full list of supported ids. | 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
Wallet and Cash Pickup CodesPass
FAWRY and EGPWALLETS as the bank code (account_bank) for Cash pickup and Wallet transfers respectively.cURL
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 | Desciption | 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 |
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_urlwhen 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.