Bank Reconciliation Exceptions Skill

Month-end close stalls on the same twenty lines: a deposit that’s three invoices, a Stripe payout net of fees, a check that cleared in a different month. This skill matches what it can, explains the rest in priority order, and proves the balance.

Bank Reconciliation Exceptions Skill cover

What it catches

With the two closing balances it proves the reconciliation: statement balance plus timing items must equal ledger balance plus suggested corrections. If they don’t, it says so and exits 1 instead of hiding the difference.

SituationCodeSide
Same amount, dates a few days apartmatched exact
A check that clears weeks latermatched check (by check number)
One bank deposit = several invoices/cash salesmatched batched (exact subset sum)
One bill paid in two bank paymentsmatched split
Stripe/PayPal/Square payout net of feesnet_of_fees with the exact feebooks
543.20 in the books, 453.20 at the bankpossible_transpositionbooks
Same payee, slightly different amount (surcharge, FX)amount_mismatchbooks
The same bill entered twicepossible_duplicate_entrybooks
Card spend / transfers nobody recordedunrecorded_in_books (+ a client question)books
Bank fees, interestbank_fee, interest_incomebooks
Bounced customer payment, chargebackreturned_item (+ a client question)books
Deposit recorded on the 30th, banked on the 2nddeposit_in_transitbank
Check written, not yet cashedoutstanding_paymentbank
Check outstanding for 60+ daysstale_outstanding (+ a client question)bank
Receipt recorded weeks ago that never reached the bankmissing_deposit (+ a client question)bank
Ledger lines dated after the periodafter_period (excluded)

Proven on a labeled example

examples/acme-october/ is a fictional design studio's October: 20 statement lines and 22 ledger lines with 24 planted situations (every row above, plus same-amount payments on different dates, a late check and a prior-month stale check). Every row is labeled with the outcome a careful bookkeeper would reach (expected.json), and the tests assert the tool reaches exactly that, in any row order, with a zero unexplained difference. 17 tests.

What you get

  • Outputs in out/: exceptions.csv (the review queue, highest priority first)
  • matches.csv
  • report.md (for the file or the accountant)
  • questions.md (for the client)
  • summary.json
  • skills/: the agent skill your agent (Claude Code, Codex, Cursor or anything that reads SKILL.md) runs to explain the result
Real reconciliation report and client questions from the example run

Run it

./run_tests.sh
python3 -m bankrec --bank examples/acme-october/bank.csv --books examples/acme-october/ledger.csv \
  --period-end 2026-10-31 --bank-closing 9573.78 --book-closing 12625.82 --name "Acme Design Studio" --out out/

Honest limits

  • CSV only. No PDF statements (convert first) and no direct bank or QuickBooks/Xero connection.
  • One account and one currency per run. No FX.
  • Matching is rules-based with explainable reasons. Unusual cases (a deposit that combines more than 5 items, payouts with fees above 4%) come out as exceptions for a person, not as forced matches. Tolerances are flags you can change.
  • "possible_" codes are leads, not findings: check the source document.
  • It suggests entries; it never posts them. It is not accounting, audit or tax advice.

Requirements

Python 3.9+ (tested on 3.10 and 3.13), no dependencies, no AI calls, no network. Works with Claude Code, Codex, Cursor or any agent that reads SKILL.md.

Format and license

Zip, 22 KB, v1.0, 14 files. Use and modify it for yourself and for your clients; no resale or redistribution of the kit itself. Full terms in LICENSE.txt.

FAQ

Does it connect to QuickBooks or Xero?
No direct connection. Export the register or general ledger as CSV.
Can it read PDF statements?
No. Convert them to CSV first.
Does it post entries?
Never. It suggests them.
Does my data leave my computer?
No. No AI calls, no network.
How do I get the files?
Right after payment, Stripe’s confirmation page shows your download link.
Refunds?
Email hello@youraitools.co within 14 days if it doesn’t work and we can’t fix it.
Can I pay with crypto?
Yes. Pay the same price in USDC or USDT on Base, Ethereum, Arbitrum, Optimism, Polygon or Solana from the "Pay with crypto" button, with no account or KYC. We check the payment on-chain and show your download links as soon as it confirms.

Get Bank Reconciliation Exceptions Skill

Reconcile a bank CSV against your ledger: ranked exceptions, a balance proof, suggested (never posted) entries. Offline CLI + agent skill.

Save with a bundle

Pairs well with

Download$29

Excel Model Audit Skill

Find #REF!, numbers typed over formulas, inconsistent formulas, SUM gaps and circular refs before a model ships. Read-only, runs locally.

View Excel Model Audit Skill
Download$29

Stripe Payout Reconciliation Skill

Reconcile Stripe payouts to your bank: missing deposits, disputes, double charges and fees, plus proposed entries. Offline CLI + agent skill. $29.

View Stripe Payout Reconciliation Skill
Download$29

Shopify Payments Payout Reconciliation Skill

Reconcile Shopify Payments payouts to your bank: missing deposits, disputes, double charges and fees, plus proposed entries. Offline CLI + agent skill. $29.

View Shopify Payments Payout Reconciliation Skill

Related