Billing Engine for Laravel
Core concepts
Core concepts
Each module is fronted by a contract in its */Contracts namespace, bound in its
service provider, and ships an in-memory default plus (where it needs durability)
a database adapter and a dogfooded testing seam. These pages explain the
concept and the invariants; the cookbook shows the code.
Pages
| Page | Module(s) | Key ADRs |
|---|---|---|
| Metering & enforcement | Metering | 0004, 0005, 0008 |
| Wallets & credits | Wallet | 0001, 0006 |
| Ledger | Ledger, Money | 0002 |
| Reconciliation | Reconciliation | 0003 |
| Subscriptions & proration | Subscription | 0007, 0006 |
| Entitlements | Entitlement | — |
| Accounts | Account | — |
| Catalog & pricing | Catalog, Pricing, Seller | — |
| Quotes & invoicing | Quote, Invoice | 0007 |
| Payments & dunning | Payment | — |
| Refunds & chargebacks | Refund | — |
| Reporting & SaaS metrics | Reporting | — |
The load-bearing split
Everything on these pages is an expression of the same decision: enforcement, metering truth, and money are three separate layers (see Architecture). Metering enforces and records; the ledger is the money authority; reconciliation trues one up from the other. No page's fast counter is ever the source of truth for money.