The ledger
Every amount billed or spent is one entry with itemised lines.
All money — income and expense — is recorded as ledger entries, each with its own itemised lines. There is no separate rent table and no separate charges table. To answer "what does this resident owe?", read the ledger, not the reservation. The reservation holds the agreement; the ledger holds the money.
An entry, and its lines
An entry is one billable or payable event: a month's rent, a move-in invoice,
a one-off charge, a supplier purchase. It carries a direction (income or expense)
and a kind (monthly_rent, move_in_invoice, charge, short_stay, and the
expense kinds like repair or utility_expense).
A line is one item inside it, with its own amount and its own category — rent, a utility, a guest surcharge, a bedding fee, a deposit, a discount, an adjustment. The entry's total is the sum of its lines.
The itemisation is the record. Never hand-edit an entry's total to make it match something — change the line that is wrong, or add the line that is missing. A total that no longer equals its lines is the shape of every reconciliation problem that takes a day to unpick.
Two consequences follow from the split, and both come up constantly:
- A single month can carry lines that belong to different months. Each line can be stamped with its own billing period, so a move-in invoice covering a part-month plus the following full month reports into two months rather than landing entirely in one.
- A single entry can carry lines that belong to different units. A temporary room during a transfer attributes its own lines to that room's building in the profit-and-loss view, while the rest of the invoice stays with the real one.
The four income shapes
Monthly rent is generated per reservation per month, prorated at each end of the tenancy. The move-in invoice is the entry that collects everything due before arrival — first period's rent, the deposit, one-off fees — and it is why a first month often does not appear as a rent entry at all. Charges are one-offs raised against a resident after move-in, classified by charge type. Short-stay revenue mirrors each check-in-link booking into the ledger so minpaku and OTA income reaches the same profit-and-loss view as everything else; the booking record stays the operational source of truth for the stay itself.
Expenses
Expenses are entries in the other direction, with lines for the item, tax, shipping and anything else. Some kinds keep their operational context alongside the money — a maintenance purchase keeps its supplier and photos, an inventory item keeps its stock level — because profit-and-loss is not the only thing that needs them.
Entries that point at other entries
Three links between entries exist, and confusing them causes double-counting:
| Link | What it means | Effect on revenue |
|---|---|---|
| Settles | This entry collects an earlier entry's shortfall — arrears for a month already billed. | Excluded from revenue: that income was recognised in the original month. |
| Transfers from | This entry was paid using an overpayment sitting on a previous reservation. | Counted as real revenue; the source's overpayment is neutralised. |
| Adjustment | A correction line against an existing entry. | Changes the entry it belongs to, rather than adding a new one. |
The rule of thumb: money arriving late is not new money. If an entry exists to recover something already billed, it must not be counted twice, and the settles link is what says so.
Reading it
- Payments and P&L live on the Rent Roll money tabs, which read these entries.
- A resident's own view shows the same entries as invoices and receipts.
- What is still owed is always entry total minus what has been paid against it — never a stored "balance" field, because a stored balance is a number that can silently stop agreeing with its lines.
See also Proration, The fee catalogue and Deposits.