Freeze the reconciliation perimeter
Export one account, one currency, one statement period, and the corresponding cash-ledger population. Record the statement ending balance, book balance at the same cutoff, timezone, export time, filters, and stable row identifiers. Preserve original amount signs and raw descriptions.
Microsoft's current Business Central reconciliation documentation keeps statement lines and ledger entries distinct, exposes match details, and allows a user to remove or change an automatic match. Oracle's reconciliation matching rules distinguish one-to-one, one-to-many, many-to-one, many-to-many, and zero-amount patterns. This small exercise intentionally permits only one-to-one candidates.
| Bank record | Ledger record | Why it is or is not a candidate |
|---|---|---|
B-01 / -1,200 / LEASE-88 | L-01 / -1,200 / LEASE-88 | Same reference, signed amount, date, and rent meaning |
B-03 / +2,500 / ALDER-0831 | L-02 / +2,500 / ALDER-0831 | Same reference and amount; dates differ by one day |
B-02 / -35 service fee | No corresponding row | Bank-only item that may require an authorized book adjustment |
| No corresponding row | L-03 / -80 issued check | Ledger-only outstanding item, not automatically an error |
The blind prompt contains policy, not pairs
The earlier version told the model exactly which rows to match and supplied both adjusted balances. That tested output formatting. The replacement prompt removes those answers and instead defines five constraints: signed amount and currency must agree; dates may differ by at most two days; descriptions and references support a link; competing candidates remain unresolved; and only one-to-one matching is allowed.
Matching instructions used in the retained rerun
Evaluate one-to-one candidates only.
Do not assume row order establishes a match.
Currency and signed amount must agree.
Use references and descriptions as supporting evidence.
Leave competing candidates unresolved.
Classify every unmatched row by its source side.
Calculate both adjusted balances and derive the gate.
Recompute the balance bridge
The source balances are USD 11,265.00 on the statement and USD 11,220.00 in the cash ledger. An outstanding issued check belongs on the bank-side bridge; an unrecorded service fee belongs on the book-side bridge:
Adjusted bank = 11,265.00 - 80.00 = 11,185.00
Adjusted book = 11,220.00 - 35.00 = 11,185.00
Unresolved arithmetic difference = 0.00

The local validator used Python Decimal values, required the exact unordered pair set, verified the bank-only and ledger-only IDs, and recomputed each bridge. The first answer passed. Three deliberately modified copies failed when the adjusted bank balance changed, the service fee disappeared, or the overall state claimed POSTED.
Inspect the working paper, not just the total
Download the bank reconciliation review worksheet. It includes every bank and ledger row, pair links, exception side, review status, and all seven calculation lines. The zero-difference line is deliberately labeled as necessary but insufficient.
The complete blind-test pack adds the exact prompt, retained output, real screenshot, executable gate, mutation report, and SHA-256 inventory. Re-running it confirms this synthetic fixture only. It cannot confirm that your export contains the full account population or that your statement is genuine.
Handle ambiguity before balance pressure distorts it
- Lock exact references first. Use stable bank references or check numbers where both systems preserve them.
- Apply the approved date window. Do not widen it just to obtain a match.
- Retain every competing candidate. A balanced total is not permission to choose between two plausible rows.
- Require complete grouped membership. One-to-many matching needs an explicit organizational rule and exact aggregate arithmetic.
- Separate sides. Bank-only and ledger-only records lead to different investigation paths.
- Calculate outside the model. Use decimal arithmetic in a spreadsheet, accounting system, or script.
Failure cases the six-row fixture does not cover
| Uncovered case | Why this test cannot resolve it | Required extension |
|---|---|---|
| Two same-amount ledger candidates | The fixture has unique references | Add an ambiguity rule and expected unresolved state |
| Deposit net of processor fees | Only one-to-one links are permitted | Add an approved grouping rule and gross-to-net proof |
| Foreign currency | Every row is USD | Freeze rate source, date, rounding, and realized/unrealized treatment |
| Stale or voided checks | The fixture only says not seen | Add subsequent clearing and policy evidence |
| Incomplete statement export | Population completeness is assumed | Reconcile statement identity, page count, and control totals |
Controller review checklist
- Confirm bank, entity, account token, currency, and statement end date.
- Tie opening and ending balances to authoritative records.
- Inspect both sides of every candidate link and its matching basis.
- Recalculate grouped amounts and adjustments independently.
- Review bank-only and ledger-only items for timing, error, reversal, or omission.
- Trace outstanding items to subsequent statements and aging policy.
- Authorize entries only through the accounting control that owns posting.
- Retain preparer, reviewer, date, final disposition, and support.
Route adjacent questions correctly
A suspected repeated payable belongs in the duplicate-invoice diagnostic, not inside the balance bridge. If an auditor requested the final working paper, track its submission and access separately with the audit evidence request ledger. Purchase-order, receipt, and invoice disagreements require the three-way match workflow.
Release condition
The exception schedule is ready for human accounting review when both populations are frozen, every link cites its source rows and permitted rule, unmatched items remain side-specific, and independent arithmetic proves the bridge. It is not a completed reconciliation until an authorized reviewer resolves the exceptions and records any resulting entries through the proper system.
