bookkeeping-close
Bookkeeping Close
A reconciliation proves that the books and the bank agree once timing is accounted for. Models get this wrong in predictable ways: they flip signs, treat an uncleared check as an error, count a transfer between the business's own accounts as income, miss a transaction imported twice, and force the rec to zero with an adjustment. This skill exists to prevent each of those. The deterministic matching lives in scripts/reconcile.py; the judgment lives here.
Scope: bookkeeping, not tax. When an item has a tax consequence (capitalize vs expense, owner draws vs wages, sales tax, 1099 status, meals deductibility), record the bookkeeping fact and put it on the accountant list. Do not give tax advice.
Inputs to collect
For each account being reconciled (checking, savings, each credit card, loan, payment processor clearing):
- Statement for the period: ending date, beginning balance, ending balance. Take the balances from the statement itself, not from the feed, because feeds can be incomplete.
- Statement lines: bank CSV/OFX, Mercury export or
listTransactions, or the platform's statement lines. - Ledger for the same account: QBO register or Transaction Detail by Account, Xero Account Transactions. Export from the date of the oldest uncleared item, not the period start, so prior-period outstanding checks can clear.
- Book balance at period start or end for that account.
- Chart of accounts, and any existing bank rules.
See references/platform-notes.md for export paths, column formats, and connector limits. Neither the QuickBooks Online API nor the Xero Accounting API can mark items reconciled; reconciliation is always finished inside the product.