Bank Reconciliation State Design: Match Evidence, Not Just Amounts Bank reconciliation compares internal cash or general-ledger entries with bank statement...
Bank Reconciliation State Design: Match Evidence, Not Just Amounts
Bank reconciliation compares internal cash or general-ledger entries with bank statement activity. A match on amount alone is not proof: repeated salaries, fees, and transfers can share values. The process should retain source evidence, proposed matches, exceptions, and a reviewer-approved close. Accounting treatment and period-close rules must be agreed with a qualified finance owner.
Import statements as immutable evidence
Store bank account, statement period, source file, line identifier, posting date, value date, description, amount, and currency. Preserve the raw file securely for authorized review. Normalize dates and references into separate fields but retain original values. Use import idempotency based on a stable bank transaction identifier where available; where none exists, define a cautious composite key and allow a reviewer to resolve collisions.
Internal entries should identify their origin: payment, refund, fee, transfer, or journal. Do not delete an unmatched bank line because it appears inconvenient. Give it an explicit exception state and ownership.
Separate suggestions from decisions
Matching logic can propose candidates using amount, direction, reference, date window, and account. Show why a candidate was suggested and how certain the rule is. A one-to-many deposit or bank fee may require a grouped match or an adjustment. Do not automatically create accounting entries solely to force a zero difference.
A useful workflow distinguishes imported, proposed, matched, disputed, adjusted, and reconciled states. Require a reason and audit event for an override. A reviewer should be able to undo a mistaken match without destroying the original statement or internal record. Prevent the same bank line from satisfying two independent ledger entries unless an explicit split model supports it.
Close a period with reproducible totals
Show opening balance, statement movements, internal movements, outstanding deposits, uncleared payments, and closing difference. Define which items may carry forward. Lock or version a completed reconciliation so a later edit triggers a new review instead of silently changing last month's signed-off result. Keep timestamps and actor identities for imports, matches, adjustments, and approvals.
Test duplicate imports, reversed entries, partial settlements, bank charges, foreign currency, and transactions arriving after period close. A transparent exception queue is more valuable than a dashboard that declares success prematurely. Our data analytics service can help design the reporting layer around this workflow.
References