Full programmatic access to InstaPay (Egypt) — transfers, balance, transactions, and more.
All API requests require an API key sent via the X-API-Key header:
X-API-Key: ipk_your_api_key_here
Each API call (except /api/status.php) costs 1 credit from your balance. Contact admin to recharge credits.
/api/login.php with InstaPay credentials to get a session_idsession_id in all subsequent callsAuthenticate with InstaPay and create a session.
| Field | Type | Required | Description |
|---|---|---|---|
ipa | string | Yes | IPA address (e.g. user@instapay) |
password | string | Yes | InstaPay account password |
device_id | string | No | Device ID (auto-generated if empty) |
{
"error": false,
"message": "Authenticated successfully",
"data": {
"session_id": 1,
"ipa": "user@instapay",
"device_id": "abc123..."
}
}
Check API key status and remaining credits. No credits deducted.
{
"error": false,
"data": {
"client_name": "My App",
"credits": 450,
"total_used": 550,
"rate_limit": 60,
"today_requests": 23,
"active_sessions": 1
}
}
Get transaction history with pagination and type filtering.
| Field | Type | Required | Description |
|---|---|---|---|
session_id | int | Yes | Session ID from login |
page | int | No | Page number (0-based, default 0) |
type | string | No | CREDIT (incoming) or DEBIT (outgoing) |
{
"error": false,
"data": {
"transactions": [
{
"txnId": "550e8400-e29b...",
"txnDate": "2024-01-15 14:30:00",
"txnType": "CREDIT",
"amount": "500.00",
"currency": "EGP",
"payerName": "Ahmed Mohamed",
"payerIpa": "ahmed@instapay",
"payeeName": "Your Name",
"payeeIpa": "you@instapay",
"status": "SUCCESS",
"description": "Transfer",
"remarks": "Payment for order #123"
}
],
"total_pages": 5,
"page": 0
}
}
Get mini statement (recent transactions summary).
| Field | Type | Required | Description |
|---|---|---|---|
session_id | int | Yes | Session ID from login |
Get actual account balance from the linked bank account.
| Field | Type | Required | Description |
|---|---|---|---|
session_id | int | Yes | Session ID from login |
{
"error": false,
"data": {
"balance": "15000.00",
"currency": "EGP",
"accountName": "Your Account Name"
}
}
Get daily and monthly transaction limits for the account.
| Field | Type | Required | Description |
|---|---|---|---|
session_id | int | Yes | Session ID from login |
{
"error": false,
"data": {
"dailyLimit": "30000.00",
"monthlyLimit": "100000.00",
"dailyUsed": "5000.00",
"monthlyUsed": "25000.00"
}
}
Get pending collect (payment) requests awaiting your action.
| Field | Type | Required | Description |
|---|---|---|---|
session_id | int | Yes | Session ID from login |
List all banks available on the InstaPay network.
| Field | Type | Required | Description |
|---|---|---|---|
session_id | int | Yes | Session ID from login |
These endpoints modify account state. Use with caution.
Verify that an IPA address exists and is active on InstaPay. Use before transfers.
| Field | Type | Required | Description |
|---|---|---|---|
session_id | int | Yes | Session ID from login |
payee_ipa | string | Yes | IPA address to verify (e.g. user@instapay) |
{
"error": false,
"data": {
"valid": true,
"payeeName": "Ahmed Mohamed",
"payeeIpa": "ahmed@instapay"
}
}
Get the fee that will be charged for a transfer before executing it.
| Field | Type | Required | Description |
|---|---|---|---|
session_id | int | Yes | Session ID from login |
amount | number | Yes | Transfer amount |
ipa | string | Yes | Recipient IPA address |
currency | string | No | Currency code (default: EGP) |
is_onus | string | No | Same bank transfer? true/false (default: true) |
{
"error": false,
"data": {
"fee": "0.00",
"totalAmount": "100.00",
"currency": "EGP"
}
}
Send money to another InstaPay account. Verify the IPA and check fees first.
| Field | Type | Required | Description |
|---|---|---|---|
session_id | int | Yes | Session ID from login |
payee_ipa | string | Yes | Recipient IPA address |
payee_name | string | Yes | Recipient name (from verify_ipa) |
amount | number | Yes | Amount to transfer |
currency | string | No | Currency code (default: EGP) |
remarks | string | No | Transfer note/description |
{
"error": false,
"message": "Transfer completed successfully",
"data": {
"txnId": "550e8400-e29b...",
"amount": "100.00",
"fee": "0.00",
"status": "SUCCESS"
}
}
Request money from another InstaPay user. They will receive a notification to approve or reject.
| Field | Type | Required | Description |
|---|---|---|---|
session_id | int | Yes | Session ID from login |
payer_ipa | string | Yes | IPA of the person to request from |
payer_name | string | Yes | Name of the payer |
amount | number | Yes | Amount to request |
currency | string | No | Currency code (default: EGP) |
remarks | string | No | Request note/description |
{
"error": false,
"message": "Collect request sent successfully",
"data": {
"txnId": "550e8400-e29b...",
"status": "PENDING"
}
}
Manage saved beneficiaries (favorite contacts).
| Field | Type | Required | Description |
|---|---|---|---|
session_id | int | Yes | Session ID from login |
action | string | No | list (default), add, or remove |
ipa | string | * | IPA address (required for add and remove) |
name | string | * | Beneficiary name (required for add) |
POST /api/beneficiaries.php
session_id=1&action=list
{
"error": false,
"data": {
"beneficiaries": [
{ "ipa": "ahmed@instapay", "name": "Ahmed Mohamed" },
{ "ipa": "sara@instapay", "name": "Sara Ali" }
]
}
}
POST /api/beneficiaries.php
session_id=1&action=add&ipa=user@instapay&name=User Name
{ "error": false, "data": { "added": true } }
POST /api/beneficiaries.php
session_id=1&action=remove&ipa=user@instapay
{ "error": false, "data": { "removed": true } }
| HTTP Code | Meaning |
|---|---|
| 400 | Missing or invalid parameters |
| 401 | Invalid/missing API key, or InstaPay session expired |
| 402 | No credits remaining |
| 403 | API key disabled, expired, or IP not allowed |
| 429 | Rate limit exceeded |
| 500 | Server error |
All error responses follow this format:
{
"error": true,
"message": "Error description here"
}
curl -X POST https://instapay.advcode.net/api/login.php \ -H "X-API-Key: ipk_your_key_here" \ -d "ipa=user@instapay" \ -d "password=your_password"
curl -H "X-API-Key: ipk_your_key_here" \ https://instapay.advcode.net/api/status.php
curl -X POST https://instapay.advcode.net/api/transactions.php \ -H "X-API-Key: ipk_your_key_here" \ -d "session_id=1" \ -d "page=0" \ -d "type=CREDIT"
curl -X POST https://instapay.advcode.net/api/verify_ipa.php \ -H "X-API-Key: ipk_your_key_here" \ -d "session_id=1" \ -d "payee_ipa=ahmed@instapay"
curl -X POST https://instapay.advcode.net/api/fees.php \ -H "X-API-Key: ipk_your_key_here" \ -d "session_id=1" \ -d "amount=500" \ -d "ipa=ahmed@instapay"
curl -X POST https://instapay.advcode.net/api/transfer.php \ -H "X-API-Key: ipk_your_key_here" \ -d "session_id=1" \ -d "payee_ipa=ahmed@instapay" \ -d "payee_name=Ahmed Mohamed" \ -d "amount=500" \ -d "remarks=Payment for order 123"
curl -X POST https://instapay.advcode.net/api/collect.php \ -H "X-API-Key: ipk_your_key_here" \ -d "session_id=1" \ -d "payer_ipa=ahmed@instapay" \ -d "payer_name=Ahmed Mohamed" \ -d "amount=200" \ -d "remarks=Invoice 456"
curl -X POST https://instapay.advcode.net/api/account_balance.php \ -H "X-API-Key: ipk_your_key_here" \ -d "session_id=1"
curl -X POST https://instapay.advcode.net/api/beneficiaries.php \ -H "X-API-Key: ipk_your_key_here" \ -d "session_id=1" \ -d "action=list"
curl -X POST https://instapay.advcode.net/api/banks.php \ -H "X-API-Key: ipk_your_key_here" \ -d "session_id=1"