Module · Wallets & Billing
Money that adds up, at every tier, every day.
Prepaid wallets, invoices, top-ups and recovery — every movement is a double-entry ledger row. The dashboard's revenue number and the ledger's sum are the same number, because they're the same query.
What it does
Built in, not bolted on.
Prepaid wallets
Every reseller and customer balance is a wallet. Activations debit, top-ups credit, and the running balance is always the sum of its rows.
Top-ups & reverse top-ups
Credit a downline when cash arrives; reverse it when it doesn't. Both sides of the transfer are ledgered — no orphan credits.
Invoices & payments
Invoices generated on activation and renewal, payments recorded against them, balances tracked per customer and per reseller.
Auto-renewal
The expiry cron renews customers whose wallets cover it and logs every attempt — successful or not — in the auto-renewal report.
Profit reports
Margins per tier, per package, per period. Sales, balance and payment reports scoped to whoever is asking.
Activity log
Every financial action records who, what, when and from where. Disputes end with a query, not a shouting match.
The ledger
Double-entry, enforced by the schema.
2026-07-02 renewal · ahmed.kdebit .............. 9.00balance ............ 141.002026-07-05 top-up ← franchisecredit ............. 500.00balance ............ 641.002026-07-09 activation · new · sara.mdebit .............. 9.00balance ............ 632.00 ; the other side of every rowfranchise ledger ..... credit 9.00 × 2, debit 500.00Σ debits = Σ credits ......... always- 01
One movement, two rows
A renewal debits the dealer and credits the franchise in the same transaction. Neither side can exist without the other, so the books cannot drift apart.
- 02
Balances are sums
No stored 'balance' field that someone edited once in 2023. The balance is the sum of the ledger — recomputable, auditable, boring in the best way.
- 03
Recovery becomes visible
Who owes, who paid, who's floating on credit — the balance report answers it per tier, and the activity log shows who touched what.
Screenshot coming — the reconciled ledger and profit report, captured from the live product.
What it replaces
Retire the workaround.
An Excel sheet named final-FINAL-v3.xlsx that is the company's actual general ledger.
A double-entry ledger written by the system at the moment money moves — not reconstructed from memory at month end.
Dealers floating on unlimited informal credit until the number gets scary.
Prepaid wallets with explicit top-ups. Exposure per dealer is a number on a screen, capped by you.
Manual renewals for every paying customer, every month, forever.
Wallet-funded auto-renewal on the expiry cron, with a log of every renewal it ran and every one it couldn't.
Keep exploring