A lease produces a schedule, not a monthly number. Terms — start date, end date, rent amount, billing day, escalation clause, deposit — generate dated charges, with the first and last periods pro-rated by day count and escalations applied at their anniversary. The schedule is generated once and stored as charges, so what a tenant owes is a set of dated records and not a formula someone re-evaluates each month.
Everything lands in a per-lease ledger. Rent charges, late fees, utility recharges, maintenance recharges, payments, credits and deposit movements are all entries, and the balance is their sum. Because the ledger is the source of truth, a statement is a read and not a reconstruction, and a landlord and tenant looking at the same ledger see the same history.
Payment allocation follows one waterfall, applied identically every time: late fees, then oldest outstanding charges, then current, with any excess held as a credit against future charges. The allocation is recorded per payment, so a tenant can see exactly which charges their money cleared, and a dispute becomes a question about a specific entry rather than a disagreement about a total.
Maintenance requests are tickets with a category, a priority-derived response target, vendor assignment and cost recording, with the option to recharge to the tenant where the lease permits it. Notice and renewal dates come off the lease term and appear as dated alerts.