Back to documentation

Statement reconciliation

How Karchu checks statement arithmetic: opening balance plus credits minus debits against the closing balance, the tolerance used, and what a mismatch reports.

Last updated 2026-09-11

Extraction is only trustworthy if it can be checked. Where a statement states an opening and closing balance, Karchu checks its own extraction against the statement's own arithmetic.

opening_balance + sum(credits) - sum(debits)  ~=  closing_balance

What a mismatch reports

  • Expected closing balance, computed from the extracted rows
  • Closing balance as printed on the statement
  • The difference, signed
  • Candidate missing transactions, where a gap in the running balance points at one
  • Candidate duplicate transactions, where a repeated row would explain the difference
  • A document status of requires_review rather than completed
Statement reconciliation requires review.

Expected balance   4,218.44
Extracted balance  4,278.43
Difference           -59.99

Likely cause: one debit of 59.99 on page 3 was not read.

Limits

  • A statement with no stated balances cannot be reconciled, and the check is skipped rather than faked
  • Reconciliation checks arithmetic, not authenticity
  • A reconciled statement is still subject to per row confidence and review

Questions

What does Karchu do when a statement does not reconcile?
It imports the rows and marks the document as needing review. It reports the expected closing balance, the balance the statement states, the difference, and the rows most likely to explain it.
Why would a statement not reconcile?
Usually a row was missed on a badly printed page, a row was read twice, or an amount was read in the wrong column. Occasionally the statement itself omits an opening balance, in which case the check is skipped rather than guessed.
Is there a tolerance?
Yes, a small configurable tolerance absorbs rounding and per bank formatting. A difference larger than the tolerance is reported, not absorbed.