Egypt
Make EGP Mobile Money Transfers.
Transfers to Mobile Money wallets in Egypt are not available by default. To enable this feature, submit a request.
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).
We currently support two types of Inbound transfers into Egyptian mobile money wallets:
- Class A: global enterprises, not categorised as Money transfer operators.
- Class B: International Money Transfer Operators.
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 Mobile Money Wallet
- Collect the customer's (payout initiator) and beneficiary's information.
- Specify
EGPWALLETS
as theaccount_bank
in your request. - 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 | Payment Rail |
---|---|---|---|---|---|
account_number | The beneficiary's bank account number. | String | EGPWALLETS | Yes | Class A / Class B |
account_bank | The beneficiary's bank code. Query the bank endpoint for a comprehensive list of supported banks | String | “0690000032” | Yes | Class A / Class B |
amount | The transfer amount. | String | "2000" | Yes | Class A / Class B |
beneficiary_name | The full name of the transfer beneficiary. | String | “Example User” | Yes | Class A / Class B |
narration | The transfer's description. | String | "Test Payment" | No | Class A / Class B |
currency | The transfer currency. This must be EGP . | String | EGP | Yes | Class A / Class B |
meta | Additional information needed to process the transfer. | Object | N/A | Yes | Class A / Class B |
meta.beneficiary_address | The Beneficiary's Address. | String | “24 King William Street London” | No | Class A / Class B |
meta.beneficiary_country | The Beneficiary's country. This should be EG . | String | EG | No | Class A / Class B |
meta.sender | The Sender's full name. | String | Example User | No | Class A / Class B |
meta.email | The Sender's email address. | String | '[email protected]' | No | Class B |
meta.sender_email_address | The Sender's email address | String | [email protected] | No | Class A |
meta.sender_city | The Sender's city | String | "Lagos" | Yes | Class A / Class B |
meta.sender_mobile_number | The Sender's mobile number. | String | “01993003333” | No | Class A / Class B |
meta.sender_date_of_birth | The Sender's date of birth. | String | Yes | Class A / Class B | |
meta.sender_id_number | The Sender's ID number. | String | "2231aaa" | Yes | Class A / Class B |
meta.sender_id_type | The Sender's ID type. | String | "01" | Yes | Class A / Class B |
meta.sender_id_expiry | The Sender's ID expiration date. | String | “2026-09-23” | Yes | Class A / Class B |
meta.is_cash_pickup | Specifies if this is a cash pickup transfer. This should be false . | String | false | No | Class B |
debit_currency | The source currency for the transfer. | String | "NGN" | Yes | Class A |
meta.transfer_purpose | A brief description of the purpose for the transfer. | String | "Medical Bills" | Yes | Class A / Class B |
meta.beneficiary_id_number | The Beneficiary's ID number | String | "28503122500311" | Yes | Class A |
meta.beneficiary_mobile_number | The Beneficiary's Mobile number. | String | "01000410066" | Yes | Class A / Class B |
Step 2: Payout to the Customer
Send your payment request with all the needed transfer information to the transfers endpoint to initiate the payout.
{
"account_bank": "EGPWALLETS",
"account_number": "1234567",
"amount": 1000,
"narration": "Retest",
"beneficiary_name": "Mohamed Saad Hussein Saad Makarem",
"currency": "EGP",
"debit_currency": "NGN",
"reference": "ST-10001002420",
"meta": [
{
"beneficiary_address": "3057 El-Harameen St, El-Basatin Sharkeya, El Basatin, Cairo Governorate 4236025, Egypt",
"sender_city": "Brighton",
"beneficiary_country": "EG",
"sender_id_number": "B01123075",
"sender_id_type": "01",
"sender_id_expiry": "2027-08-23T00:00:00",
"sender_mobile_number": "441228587691",
"sender_date_of_birth": "1993-12-28T00:00:00",
"sender": "Tubonemi Oruitemeka",
"email": "[email protected]",
"transfer_purpose": "EPFAMT",
"beneficiary_id_number": "28503122500311"
}
]
}
{
"account_number":"93998382832",
"account_bank": "EGPWALLETS",
"narration": "test",
"amount": 1000,
"currency": "EGP",
"beneficiary_name": "john mike",
"meta": [
{
"beneficiary_address": "24 King William Street",
"sender_city": "kakakwa",
"is_cash_pickup": false,
"sender_id_number": "2231aaa",
"sender_id_type": "01",
"sender": "test",
"sender_email_address": "[email protected]",
"sender_id_expiry": "2026-09-23",
"sender_mobile_number": "01993003333",
"sender_date_of_birth": "2002-09-23",
"transfer_purpose": "SERV",
"beneficiary_mobile_number": "01000410066"
}
]
}
You'll get a response like this:
{
"status": "success",
"message": "Transfer Queued Successfully",
"data": {
"id": 326,
"account_number": "1234567",
"bank_code": "EGPWALLETS",
"full_name": "Mohamed Saad Hussein Saad Makarem",
"created_at": "2025-02-24T15:35:35.000Z",
"currency": "EGP",
"amount": 2000,
"fee": 45,
"status": "NEW",
"reference": "ST-10001002420",
"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": "Mohamed Saad Hussein Saad Makarem",
"TransferType": "MOBILE",
"TransferPurpose": "EPFAMT",
"AgentCode": "1",
"AgentLocationCode": "1",
"RouteCode": "BDC"
}
],
"narration": "Retest",
"complete_message": "",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "FA-BANK"
}
}
{
"status": "success",
"message": "Transfer Queued Successfully",
"data": {
"id": 326,
"account_number": "93998382832",
"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",
"TransferPurpose": "SERV",
"AgentCode": "1",
"AgentLocationCode": "1",
"RouteCode": "BDC"
}
],
"narration": "test",
"complete_message": "",
"requires_approval": 0,
"is_approved": 1,
"bank_name": "FA-BANK"
}
}
Step 3: 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 4 days ago