/api/sandbox/airtime/register
Register
Create sandbox airtime merchant account.
Sandbox-only API at /api/sandbox/airtime. Same JSON and flow as Lipa_Airtime production โ simulated wallet and settlement.
/api/sandbox/airtime/register
Create sandbox airtime merchant account.
/api/sandbox/airtime/login
Authenticate and return bearer token.
/api/sandbox/airtime/customer/payments
Send airtime from wallet balance.
/api/sandbox/airtime/customer/balancerecharge
Initiate wallet top-up and receive controlNumber.
/api/sandbox/airtime/callbackUrl
Confirm recharge by controlNumber.
/api/sandbox/airtime/user
Return authenticated airtime user.
| Method | Path | Auth | Purpose |
|---|---|---|---|
| POST | /api/callbackUrl | External callback | Match control number, update recharge transaction, increment wallet on success. |
| GET | /api/user | Sanctum | Return authenticated user context. |
| POST | /customer/payments | Session auth | Run airtime purchase from wallet. |
| POST | /customer/bulkpayment | Session auth | Import bulk airtime requests using Excel flow. |
| POST | /customer/balancerecharge | Session auth | Initiate external top-up to recharge wallet. |
| Item | Contract |
|---|---|
| Primary guard | web session guard with auth and custom is_auth middleware. |
| Role model | role_id values: 1 admin, 2 user, 3 finance. |
| User status model | pending, active, inactive; role 2 requires active status to proceed. |
| API auth note | /api/user relies on Sanctum middleware in source. |
Stores identity, role, and status used for role-based redirects and activation checks.
Per-user wallet with balance used for airtime debit and recharge increments.
Airtime transaction records with provider/network, status, and processing message.
Wallet recharge records keyed by control number and callback-driven status transitions.
{
"controlNumber": "ABC123",
"status": true
}
/admin/registerUser appears public in source and should be protected.
Validation focuses on controlNumber while downstream logic also depends on status.
Airtime service status values may diverge from migration/comment expectations.
| System | Method | Path |
|---|---|---|
| Lipa_Airtime | POST | /customer/payments |
| Lipa_Airtime | POST | /customer/balancerecharge |
| Lipa_Airtime | POST | /api/callbackUrl |
{
"msisdn": "255712345678",
"amount": 1500
}
{
"status": "OK",
"message": "Voucher sent successfully"
}
Browse docs publicly, or register / sign in to use the Testing Lab and save your sandbox merchant profile.