# Cash Balance / Register Link / Reconciliation Foundation v30

v30 adds a rebuildable `cash.account_balances` projection on top of immutable `cash.movements`.

It adds idempotent manual `cash_in` / `cash_out`, a default no-negative rule per cash account,
register-to-cashbox links, and reconciliation sessions.

Reconciliation captures the latest expected balance at posting time, compares it with the
counted/statement balance, and appends a `reconciliation_adjustment` movement for the variance.
Only one open reconciliation is allowed per account.

APIs:
- GET /api/v1/cash/balances
- POST /api/v1/cash/movements
- POST /api/v1/cash/register-links
- POST /api/v1/cash/reconciliations
- POST /api/v1/cash/reconciliations/{id}/post

Next: register shifts, opening float, blind shift close, expected cash and variance approval.
