2.9.0¶
Released: TBD
Highlights¶
- Bank reconciliation now settles the books. Confirming a bank-statement match to an invoice records the customer payment and updates the invoice — previously it only stored match metadata. This is the first of the deferred Accounting Placeholder Audit feature builds.
Added¶
- Bank-reconciliation settlement (audit #16). Confirming a CREDIT bank transaction matched to an Invoice creates a real Receipt (debits bank, credits accounts receivable, lowers the invoice balance, shows on the client statement). A DEBIT matched to an Expense reconciles without posting, since the expense already booked its cash leg when recorded. See Bank-Reconciliation Settlement.
Changed¶
- None.
Fixed¶
- None.
Migrations¶
add_bank_tx_settlement_receipt(down_revisiontax_rate_store_percent) — adds the nullablebank_statement_transactions.settlement_receipt_idcolumn linking a confirmed invoice match to the Receipt it created.upgradeanddowngradeboth implemented.
Frontend impact¶
- Confirming a CREDIT→Invoice bank match now settles the invoice: its paid/outstanding balance updates and the payment appears on the client statement. No GraphQL contract change —
confirmMatchkeeps its signature; only its behaviour changed.
Versioning notes¶
- MINOR bump (
uv run python scripts/bump_version.py 2.9.0 --changelog-stub): additive feature with a new nullable column, no breaking schema change.