LipaPay Core
Used for standard payment collection between customer and merchant, including secure checkout patterns.
Unified Sandbox API
This section explains how the platform works at a high level, without requiring technical endpoint knowledge.
Used for standard payment collection between customer and merchant, including secure checkout patterns.
Used for airtime and top-up journeys, built on collection logic with airtime-specific business behavior.
Used for outbound payout/disbursement journeys where a merchant transfers value to a recipient.
Use your registered account credentials to sign in, then proceed with product integrations based on your approved merchant profile.
| Step | What happens | Result |
|---|---|---|
| Account registration | Developer creates sandbox account through portal onboarding. | Account enters normal activation flow. |
| Account login | Developer signs in with approved account credentials. | Authenticated access to protected product workspaces. |
| Flow authorization | System applies product permissions and role checks. | Only allowed actions become available in the dashboard. |
Aligned with the `LipaPay_Ver2` project, this flow covers primary collections and checkout behavior.
Submit transaction request with payer and amount details using your authenticated context.
Use your transaction reference to monitor pending, success, and failure states.
Finalize order state only after verification from status or callback events.
Aligned with the `Lipa_Airtime` project, airtime integration extends collection behavior with airtime-specific validation and fulfillment lifecycle.
Capture network/subscriber inputs and validate according to your business rules.
Create airtime transaction from authenticated user context and capture control reference.
Reconcile fulfillment by checking final state and handling callback events safely.
Aligned with the `LipaDisbursement` project, this flow is for controlled outbound payout/disbursement operations.
Validate recipient identity and payout amount before request submission.
Send payout request and store generated payout reference for audit and tracing.
Complete ledger updates using final status and callback signals in your merchant system.
Operating model
Every product uses the same reliability pattern: push when the platform notifies you, pull when you query the latest state. Implement both before go-live.
Create payment (engine, portal, airtime, or disbursement). Capture every reference returned.
Customer completes USSD/bank/checkout or voucher flow.
Platform or engine notifies your endpoint with settlement payload.
Your backend queries status or getPayments if callback is late or ambiguous.
Mark order paid only when references match and amount/status are consistent.
| Product | Initiate | Pull (status) | Push (callback) | Key reference |
|---|---|---|---|---|
| LipaPay Ver2 | pay_mobile, initiate-payment/mno|bank, or initiate-secure-payment |
POST
/api/sandbox/transaction/status
After login — on-demand reconciliation when a callback is delayed or missing. |
GET or POST
/api/sandbox/callback
Simulates LipaPay engine settlement; updates in-memory txn then visible via status. |
reference (engine)controlNumber (portal MNO/bank)external_reference (secure) |
| LipaAirtime | POST /api/sandbox/airtime/customer/payments or balancerecharge |
GET
/api/sandbox/airtime/user
Wallet balance and profile pull — use callbackUrl to confirm recharge by controlNumber. |
POST
/api/sandbox/airtime/callbackUrl
Matches production Lipa_Airtime callbackUrl — marks pending recharge successful. |
controlNumber |
| LipaDisbursement | POST /api/sandbox/disbursement/payment |
POST
/api/sandbox/disbursement/getPayments
Pull model: list historical payouts for reconciliation (no push callback in sandbox). |
List/history only
Use getPayments and payment response txnid/refid in production integrations. |
txnidrefid (in response JSON) |
POST /api/sandbox/transaction/status
{
"ref_id": "CONTROL_OR_ENGINE_REF"
}
Authorization: Bearer <Sanctum token>
/api/sandbox/callback
{
"message": "success",
"code": "200",
"status": true,
"description": "Payment received",
"data": {
"providerType": "MNO",
"providerName": "Vodacom",
"amount": 1000,
"paymentReference": "YOUR_ENGINE_REFERENCE",
"payerMobile": "255712345678",
"transactionDate": "2026-05-29 12:00:00",
"transactionID": "TXN-ABC123",
"transactionChannel": "USSD"
}
}
POST /api/sandbox/airtime/callbackUrl
{
"controlNumber": "FROM_RECHARGE_RESPONSE",
"status": true
}
POST /api/sandbox/disbursement/getPayments
{
"payments": {
"data": [
{ "txnid": "…", "refid": "…", "amount": 1000 }
]
}
}
Browse docs publicly, or register / sign in to use the Testing Lab and save your sandbox merchant profile.