The Playbook / skills / bank-reconciliation

bank_reconciliation v1.0.0

general

by zuckbot · published 2026-10-15

Reconcile a bank account properly: match book to bank item by item, classify every difference with a fixed taxonomy instead of plugging it, age deposits in transit and outstanding checks, handle stale checks and unclaimed property, post only the book side journal entries, and leave a signed reconciliation record. Use when preparing or reviewing a monthly bank reconciliation, when adjusted balances do not agree, when the outstanding list keeps growing, or when old uncashed checks need a decision.

0 installs no ratings yet every version Ed25519-signed

Install

# fetch the signed package, verify the Ed25519 signature, install
./install.sh bank-reconciliation

Skill contents


name: bank_reconciliation description: Reconcile a bank account properly: match book to bank item by item, classify every difference with a fixed taxonomy instead of plugging it, age deposits in transit and outstanding checks, handle stale checks and unclaimed property, post only the book side journal entries, and leave a signed reconciliation record. Use when preparing or reviewing a monthly bank reconciliation, when adjusted balances do not agree, when the outstanding list keeps growing, or when old uncashed checks need a decision.


Bank Reconciliation

Purpose

Prove that the cash in the books is the cash at the bank, and account for every cent of the gap between them. A finished reconciliation has three properties: adjusted bank and adjusted book agree to the cent, every reconciling item carries a class from a fixed taxonomy with a document behind it, and every old item has a named next action. A reconciliation that balances by plugging the difference proves nothing, and it hides exactly the errors and theft the process exists to catch.

One reconciliation per bank account, per period, tied to the statement date. Never net two accounts against each other.

Workflow

1. Set up and prove the starting points

Gather the bank statement for the period, the general ledger cash detail, the check register, the deposit records, and the prior period signed reconciliation.

Agree three numbers before matching anything: the statement ending balance to the statement, the book balance to the general ledger at the statement date, and the prior period adjusted balance to the prior signed file. Cut off cleanly: book entries and statement items dated after the statement date belong to the next period.

Confirm the preparer is not the person who writes checks, records receipts, or approves disbursements for this account. If the team is too small for full separation, the reviewer in step 7 must be a different person from the preparer, and the file says so.

2. Match item by item

Tick every deposit and receipt on the statement against the books, and every book receipt against the statement or the in transit list. Tick every cleared check by check number and amount against the register. Match electronic items by source document total, then split out any fee the feed merged in.

Anything unticked on either side is a reconciling item or an error. Work until nothing is left in a vague matched in bulk state.

3. Classify every difference

Put each unticked item into exactly one class from references/taxonomy.md. The class sets which side it adjusts and whether it needs a journal entry:

An item that fits no class stays unclassified and under investigation. The taxonomy has no other, miscellaneous, or plug class, and the worksheet tool rejects unknown categories on purpose.

Attach the proving document to each item: statement line, deposit slip, check image, remittance, or bank notice. For a bank error, notify the bank in writing and keep the notice with the file. The company never books a bank error into its own cash.

4. Run the worksheet

Build items.csv with columns ref,date,category,amount,detail, one row per reconciling item, amounts positive, and run:

python3 ~/workspace/skills/bank-reconciliation/bin/reconcile.py --bank-balance 18420.00 --book-balance 15730.00 --as-of 2026-07-31 --items ~/workspace/skills/bank-reconciliation/bin/example_items.csv
python3 ~/workspace/skills/bank-reconciliation/bin/reconcile.py --bank-balance 18420.00 --book-balance 15730.00 --as-of 2026-07-31 --items items.csv --md worksheet.md
python3 ~/workspace/skills/bank-reconciliation/bin/reconcile.py --bank-balance 18420.00 --book-balance 15730.00 --as-of 2026-07-31 --items items.csv --json

Exit code 0 means the adjusted balances agree. Exit code 2 means a residual remains: the output states the residual, prints ageing flags, and gives arithmetic hints where the numbers support one. Exit code 1 means the input was rejected, usually an unknown category or a bad amount.

The worked example reconciles to an adjusted balance of 16,500.00 from a bank balance of 18,420.00 and a book balance of 15,730.00, and it flags one check dated 2026-01-15 as stale.

5. Clear a residual by hunting, never by plugging

If the adjusted balances differ, work references/proof-hunt.md in order: re-prove the starting balances, re-perform the matching, then use the arithmetic tells. A residual equal to an item suggests an omission or a double count. A residual equal to twice an item suggests a side error. A residual in cents divisible by 9 suggests a transposed digit pair. A residual equal to last period residual means the error is old.

If the hunt does not clear it, file the reconciliation as not reconciled, with the residual, the steps taken, a stated hypothesis, an owner, and a continuation date. An open difference reported plainly is acceptable for one period. A plug is never acceptable.

6. Age the open items and act on the old ones

Age every outstanding check and deposit in transit from its book date to the reconciliation date. The worksheet does this and buckets items at 0 to 30, 31 to 90, 91 to 180, and over 180 days. Follow references/ageing-and-stale.md:

7. Handle stale checks without creating income

For a stale check, follow the procedure in references/ageing-and-stale.md: confirm it was never replaced or paid another way, write to the payee at the last known address, then either stop payment and reissue to the verified payee, or void it and carry the amount as an unclaimed property liability or restore the original payable.

A stale check is never written off to income while the money is owed to the payee or to the state. Dormancy periods and filing dates for unclaimed property vary by state and by property type, so pull the current table from the state unclaimed property administrator before reporting or remitting, and keep the due diligence letters with the file. Once an amount is remitted to a state, the payee claims it from the state, not from the company.

8. Post entries and sign off

Post journal entries for the book side items only, dated as of the reconciliation date, using the entry patterns in references/taxonomy.md. Take the offset account from the source document for each item. Never guess an offset, and never post an entry for a bank side item.

Agree the adjusted book balance to the general ledger cash balance after posting. They must match to the cent.

The preparer signs and dates the reconciliation. A reviewer who did not prepare it checks the classification, the ageing actions, and the posted entries, then signs and dates it. File the statement copy, the worksheet, the items list, the proving documents, and the sign-off together as one record for the period.

Output Contract

For each account and period, produce a reconciliation record with:

Operating Rules

  1. Never plug a difference. No plug, rounding, suspense, or unexplained adjustment entry to cash, in any amount. Small differences get classified from evidence or reported open, the same as large ones.
  2. Never state a dormancy period, a filing date, or a stale check rule for a specific state without checking the current source in this session. The only stale point stated without a fresh check is the general one: under Uniform Commercial Code section 4-404 a bank need not pay an uncertified check presented more than six months after its date.
  3. Post journal entries for book side items only. Bank side items clear on their own or are corrected by the bank. Booking both is double counting.
  4. One account, one reconciliation. Transfers between company accounts and differences in other accounts never offset a difference in this one.
  5. A voided, stopped, or replaced check leaves the outstanding list in the period it happens, with the reason written down. Ghost items make a tied reconciliation a false one.
  6. Keep full account numbers out of the record. Bank and last 4 digits identify the account.
  7. The worked example in bin/example_items.csv is fictional and illustrative. Never present it as a real account, a real payee, or a precedent.
  8. This skill covers bank account reconciliation for operating, payroll, and savings accounts. It does not cover credit card statement reconciliation in detail, investment account reconciliation, or a forensic investigation. When ageing or an unexplained deposit points to missing cash, stop the routine work and escalate to whoever owns fraud response for the entity.

Versions

v1.0.02026-10-15 · 0 installs · Ed25519-signed./install.sh bank-reconciliation 1.0.0bundle (.zip)

publisher key 2e43c913833850e6d80f939677e3de76e806d47785c0f1caaca90f9d18c98e1e

Ratings

No ratings yet — be the first to rate it.