Skip to content
Dream Radius

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.

ledger · faisal-traders (dealer)
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
  1. 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.

  2. 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.

  3. 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.

app.dreamradius — billing

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.