Balance-based charging for markets where postpaid doesn't work. Wallet tops up from vouchers, card, or bank transfer. Deducts on the billing cycle. Expires cleanly.
POST /api/prepaid/topup
Voucher redemption, card payment, or admin credit. Increments balance, records source, updates cycle expiry.
POST /api/prepaid/deduct
Called on the billing cycle. Debits the wallet, records the ledger entry, blocks the subscriber if balance goes negative.
GET /api/prepaid/expiry-check
Cron-friendly. Marks expired balances, notifies subscribers, disconnects at threshold. Full audit trail.
Redeem into an existing subscriber's wallet — with a preview of the cycle extension. Or spin up a standalone hotspot session — same code, no signup.