Two-list matcher
Bank against ledger: exact, then reference, then a date window, then one-to-many — and what is left on both sides.
- Runs
- In this tab
- Data sent
- None
- Rounding
- Once, at the end
- Also in
- The Chrome extension
Two-list matcher, worked
Showing a worked example — type over it
Result
How the two-list matcher works.
Two-list matcher: Bank lines vs GL lines: exact (amount and day), then the same reference whatever the date (INV-0042 = inv 42), then amount within a date window, then many-to-one. Outputs the unmatched two ways.
Quoted from the toolbelt spec, the document this tool was built against.
Where these numbers come from.
Negatives are parenthesised because that is what a statement does. The rest is four promises.
Minor units, never floats
Amounts are integers in the currency's smallest unit, end to end. A float never touches a cent.
Rounded once
Rounded once, at the end — never per operand, which is how a split stops summing to the whole.
Unit tested
The arithmetic lives in one unit-tested module, shared without reimplementation with the extension.
No network
There is no request to make. What you type stays in this tab and is gone when you close it.
More in reconciliation & investigation
- Difference diagnoserOut by 8,100? That is divisible by 9 — a transposition. This says which error fits the gap.
- Which invoices make this deposit?A deposit against forty open items. Exact subset-sum over minor units — no floating point.
- Duplicate paymentsSame vendor, same amount, close in time — plus the same reference whatever the date.
- Benford & round numbersTwo cheap tests over a pasted column. Neither proves anything; both tell you where to look.
Read it in context
- Founder guide · 4 minWhy startups should close their books every monthA monthly close turns a bank balance into numbers an investor, an auditor or a 409A firm will accept. What it is, and why it gets expensive to skip.
- Founder guide · 4 minAudit-ready books before your Series AInvestors, lenders and auditors ask for the same things: accrual statements, reconciled accounts and support for every balance. How to be ready first.
- Founder guide · 3 minCan you vibe code your startup’s accounting?AI coding tools build a finance dashboard in an afternoon, but not a closed, reconciled, GAAP-basis ledger. Where the line is, and how to stay inside it.
The same number, elsewhere.
A calculator answers the question once. These carry the answer into a product, name what it computed, and argue the method.
- ComponentReconciliationViewTwo-pane matcher. The match animation.
- ComponentTransactionTableThe workhorse. Virtualized, sticky, priority-collapsing.
- ComponentCardTransactionMatchMatched to receipts, never re-entered.
- TermReconciliationComparing our record to an external party's
- TermReconciledMatched to a bank statement line
- TermExceptionA break requiring investigation
- DocCash & treasuryCash is the only balance sheet account with an independent third party asserting what it should be. That makes it both the most verifiable account and the one where a break matters most.
- EntryJournal entry for a Stripe payoutBook charges gross: debit Stripe clearing and credit Revenue for every charge, debit Sales returns and allowances and credit Stripe clearing for refunds. When the payout lands, debit Cash for the payout and Merchant fees for the fees, and credit Stripe clearing — which should then be zero.
- EntryJournal entry for credit card expensesFor each company card charge, debit the expense it paid for and credit Credit card payable. When the statement is paid, debit Credit card payable and credit Cash.
- DocCurrency decimal placesHow many decimals each ISO 4217 code is stored at — JPY 0, USD 2, KWD 3.