Overview
Send instant mobile top-ups to Algerian operators (Mobilis, Djezzy, Ooredoo, Pixx) with real-time status tracking.Recommended: Use unique
ref parameter to prevent duplicate orders and
enable easy tracking.Request Body
Plan code from
/mobile/plans endpoint (e.g., PREPAID_DJEZZY, PIXX_500)Phone number in format
0[567][0-9]{8} (must be string, not number)
Examples: "0778037340", "0665983439", "0556121212"Top-up amount in DZD (required for dynamic plans, ignored for fixed plans)
Must be between
min_amount and max_amount from plan detailsYour unique order reference for tracking (auto-generated if not provided)
Important: Prevents duplicate requests if same ref is submitted twice
Response
Indicates if the request was successfully submitted
Examples
Success Response
Error Responses
400 - Validation Errors
400 - Validation Errors
Invalid request body or parametersCommon validation errors:
- Missing
plan_codeorMSSIDN - Invalid phone number format
amountrequired for dynamic plansamountoutside min/max range- MSSIDN doesn’t match plan operator
403 - Insufficient Balance
403 - Insufficient Balance
Not enough balance for the operation
403 - Duplicate Reference
403 - Duplicate Reference
Reference already usedSolution: Check the status of the existing top-up using the same reference
500 - Internal Error
500 - Internal Error
Server error (rare)Action: Contact support with the
requestId. Do NOT refund until investigated.Phone Number Format
Phone number must be a string, not a number. Leading zero is required.
- ✅
"0778037340"(string with leading zero) - ✅
"0665983439" - ✅
"0556121212"
- ❌
778037340(missing leading zero) - ❌
0778037340(number type instead of string) - ❌
"+213778037340"(international format) - ❌
"0778 037 340"(contains spaces)
Status Lifecycle
After sending a top-up, it goes through these states:1
PENDING
Order created and queued for processing Duration: 2-15 seconds (typical)
2
HANDLING
Currently being processed by operator Duration: 3-8 seconds (typical)
3
Final State
FULFILLED: Successfully completed ✅ REFUNDED: Failed and refunded
❌ UNKNOWN_ERROR: Uncertain state (resolves in 24h) ⚠️
Recommended Integration Flow
1
Create Order in Your DB
2
Deduct User Balance
3
Return Order to User
4
Async: Send to API
5
Poll Status & Update
Sandbox Testing
Enable sandbox mode to test without real transactions:Normal Flow
Use any normal number (e.g.,
0778037340) Flow: PENDING (5s) → HANDLING
(15s) → FULFILLEDRefund with Message
Use:
0600000001 Returns: REFUNDED with refund_messagePlan Mismatch
Use:
0600000002 Returns: REFUNDED with suggested_offersUnknown Error
Use:
0600000003 Returns: UNKNOWN_ERROR statusSee the Mobile Top-Up Workflow
Guide for complete sandbox
testing instructions and examples.
Best Practices
Use Unique References
Always provide unique
ref to prevent duplicates and enable easy trackingValidate Before Submit
Check plan, phone format, and balance client-side to reduce errors
Handle Async
Process API calls asynchronously to avoid blocking user requests
Implement Retry Logic
Retry failed requests with exponential backoff for network errors

