Reconciling a Year of Multi-Currency Books
A year of drift and a $15,000 black hole, taken to reconciled-to-the-cent in an afternoon. The headline isn't "AI does accounting" — it's a disciplined workflow: ground truth, diff don't dump, and a human on anything material.
The setup: why EOFY is painful
Film Me Pty Ltd is an Australian company. The books live in QuickBooks Online, but the money moves through a stack that makes end-of-financial-year a nightmare: a Commonwealth Bank AUD account, Wise balances in AUD, USD, GBP and AED, income via Stripe payouts, Amazon, direct transfers, and clients who "just pay" without a matching invoice — plus card spend in half a dozen currencies, much of it tiny SaaS subscriptions.
The classic problem: the bank feeds drop out for months, foreign payments land net of fees, currency conversions confuse the matching, and by June there's a year of drift between what QuickBooks thinks happened and what actually happened. The tooling: Claude operating QuickBooks directly via Claude in Chrome, with a Python sandbox on the side for the heavy data work — all orchestrated through Cowork, with me approving anything material.
Interactive: the Reconciliation Tracker
Every account was compared, transaction by transaction, against the official external statement for the financial year. Tap any account to see where it started, what was wrong, and where it ended.
Select an account to see its reconciliation story.
The clever part: rebuild without double-counting
The Wise AUD account alone was over $15,000 adrift. The cause: the bank feed had silently stopped importing for five months (Jul–Nov 2025), dropping 304 card transactions, several big Stripe payouts, and some currency conversions. The naive fix — re-import everything — would have duplicated the transactions that were booked. So instead:
Diff, don't dump. The Python statement-vs-register diff is what made it safe — it told us precisely what was missing, so we never double-counted. This is the single most important technique in the lesson.
The rest of the grind
Income with no invoice
Stripe/direct deposits land net of fees, so they never auto-match. Claude matched Thomson Reuters payouts to invoices #1362/1363, #1374, #1376 (splitting Stripe fees, fixing a double-counted deposit), cleared Recipe Ltd (UK) GBP receivables, and raised the missing 90 Seconds invoice.
Payroll caught up
The missing March–June 2026 pay runs were processed and Single Touch Payroll lodged to the ATO, month by month.
Clearing accounts cleared
Payroll Clearing ($48,084) journalled to the Director's Loan — mirroring exactly how the accountant did it the prior year. GST Clearing ($2,297) reclassified to the ATO control account.
Verified independently. After each fix, Claude pulled the QuickBooks Balance Sheet back through the API and confirmed the account had actually moved to where we expected — so nothing was taken on faith.
The techniques worth teaching
This isn't "AI magically does accounting." It's a disciplined workflow any business can copy.
Honest status — done vs handed off
- All five bank accounts reconciled to statement
- Missing income matched to invoices
- Payroll caught up and STP lodged
- The two clearing accounts cleared
- Verifying the GST Liabilities Payable balance (overseas sales are GST-free exports)
- Q4 BAS plus overdue Q1/Q3 (waiting on two PO amounts)
- Year-end journals: FX revaluation on USD/GBP, depreciation, crypto revaluation
The point: this got the books from "a year of drift and a $15k black hole" to "reconciled to the cent and ready for the accountant" — in an afternoon of conversation, not a fortnight of spreadsheet misery. The accountant still does the tax return. But they start from clean, trustworthy numbers instead of cleaning up first.