Reconciliation run status machine
A reconciliation run is one pass at matching a parsed bank statement against journal entries. It moves through six states.
What each state means
| State | Meaning | Next step |
|---|---|---|
PENDING | Run created but matcher not yet executed | Worker picks it up |
MATCHING | Matcher job running | Auto-progresses on completion |
AWAITING_REVIEW | Matches ready; reviewer needs to confirm proposed matches | Bookkeeper confirms / overrides |
AWAITING_CLIENT | Unreconciled items dispatched to the client portal | Client responds |
COMPLETE | All items matched / resolved; report generated | Terminal |
FAILED | Parse or match step errored terminally | Re-run after fix |
Match types produced
| Type | Criteria | Default action |
|---|---|---|
EXACT | Date + amount + reference all align | Auto-confirmed on display |
PROPOSED | Amount + date within dateToleranceDays tolerance | Reviewer must confirm |
| (no match) | None of the above | Creates an UnreconciledItem (see Unreconciled items) |
Unreconciled items
For every bank transaction that didn't match, the run creates an UnreconciledItem with three states:
| State | Meaning |
|---|---|
PENDING | Magic-link portal sent to client; no response yet |
CLIENT_RESPONDED | Client uploaded a supporting doc or declared "no supporting"; reviewer needs to classify |
RESOLVED | Reviewer accepted; entry merges into the next upload cycle |
Where these transitions happen in the handbook
PENDING → MATCHING → AWAITING_REVIEW: Run the matcher (B-08)- Reviewer confirms in
AWAITING_REVIEW: Confirm matches (B-09) - Dispatch to
AWAITING_CLIENT: Dispatch unreconciled (B-10) - Client surface for
PENDING → CLIENT_RESPONDED: Client portal (B-11) AWAITING_CLIENT → AWAITING_REVIEW → COMPLETE: Complete reconciliation (B-13)