Expense coding
One line, one company, no ambiguity.
Entity allocation is the highest-severity field on the line: get it wrong and the expense lands on another company’s ledger. Every option carries its invoice prefix, the default is never accepted silently, and the rollup is built so it cannot disagree with the lines it totals.
Line coding
Prefilled from your default. Confirm it on every line — this decides which company’s ledger the expense lands on, and it sets the reference prefix.
Structured rows, not prose. External guests also need their company.
Amounts
CAD only. A foreign-currency receipt raises a warning rather than importing silently.
Coded lines
Split one receipt across entities
A split reconciles to 100% of the receipt — the legs’ nets must sum exactly to the receipt net, and this refuses to save while anything is unallocated. That is what separates a split from a partial claim, which deliberately does not reconcile.
Entity × category rollup
Computed from the line records themselves. Every total is a fold over the same cells the table renders, so no total has a value of its own that could drift.
Validation
Acceptance checks
Executed against the real engines on a scratch report. Criterion 10 measures this page’s own layout, so resize the window and re-run to test 375px and 1440px.