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.
./install.sh bank-reconciliationname: 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.
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.
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.
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.
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.
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.
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.
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:
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.
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.
For each account and period, produce a reconciliation record with:
bin/example_items.csv is fictional and illustrative. Never present it as a real account, a real payee, or a precedent.publisher key 2e43c913833850e6d80f939677e3de76e806d47785c0f1caaca90f9d18c98e1e
No ratings yet — be the first to rate it.