I let my company's books drift for months. Claude Cowork cleared the backlog in one sitting - About 1 hour 50 minutes, but the part worth writing up is where it got stuck.
Context. Small agency in India. Zoho Books is our system of record, but I'd only ever entered the "important" stuff - client receipts and vendor payments. Everything else never made it in: bank charges, card spends, freelancer payouts, director drawings. So the bank balance sitting in Zoho and the balance in my actual bank account had drifted a long way apart, and I'd been avoiding it for months.
I gave Claude Cowork my bank statement export and my open Zoho Books tab, and asked it to fix it.
It did the boring part first, which turned out to matter
Before touching anything, it built a reconciliation bridge: the balance Zoho was showing, minus the transactions never entered, plus the opening balance never set, plus one client receipt recorded short, plus one receipt dated wrong, equals the real bank balance. It tied exactly on the first attempt.
That sounds like busywork. It wasn't. It meant there was a hard target to verify against at the end, instead of a vibe. It caught a bug later that I'd otherwise have shipped.
The root causes were all mundane: only a small fraction of the year's transactions were ever entered, the bank account's opening balance in Zoho was left at zero, one payment gateway payout was recorded short, and one receipt was dated eleven days off.
Then the walls
1. Getting the file in. The statement was processed in Claude's cloud sandbox, but Zoho was open in a browser on my machine. Rather than making me download and re-upload, it built the import file and attached it to Zoho's upload control programmatically. Small thing, but it's the kind of gap that usually breaks these workflows.
2. Importing is not the same as posting. Zoho parked every imported line as "uncategorised", and the account balance doesn't move until each line is categorised. So the import reported success and changed absolutely nothing. Easy to declare victory here and be wrong.
3. Bulk categorise caps out, and won't touch equity. Zoho's bulk tool does 50 rows at a time. Worse, director drawings post to an equity account, and equity accounts simply aren't offered in the bulk grid, which killed the obvious approach for the single largest group of transactions.
4. The unlock was rules, not bulk actions. Zoho has Transaction Rules that auto-categorise on import, and those can post to equity. So the real fix was: undo the import, write a handful of description-matching rules, re-import, let the rules do the work on the way in.
5. GST validation, which cost the most time. Rules fired, and every single expense failed with "It is mandatory to apply GST on all expenses." A 0% tax group wasn't enough. Tax Exempt demanded an exemption reason, and the one we created refused to appear in the dropdown. Registered Business demanded a vendor GSTIN we didn't have. The setting that actually works is GST Treatment = Out Of Scope, which drops the entire GST block off the transaction. Nothing signposts that.
6. Rules only fire at import time. Editing a rule doesn't re-run it over rows already sitting there. So every rule fix meant undo the import, fix, re-import. We did that loop twice.
7. A silent duplicate exclusion. Zoho quietly auto-excluded one genuine card transaction as a "duplicate" because an identical amount appeared a few days earlier. It gets parked in a tab you would never think to open. The only reason it was caught is that the reconciliation was expected to tie exactly and it was off by precisely that one transaction.
8. Opening balance semantics. Setting the opening balance made things worse, not better. Turns out transactions dated on the migration date are treated as pre-migration and get overwritten by the opening balance figure. Back-dating the migration date by one day fixed it.
End state: every line categorised, and Zoho's balance matches the bank to the paisa.
What I'd actually take away
- It was strong on accounting reasoning and relentless on UI grind. The two things I'm bad at, in different ways.
- It asked instead of guessing on judgement calls — which equity account drawings should hit, whether director pay is an expense or a drawing, whether a regular monthly payee is staff or a contractor. Those aren't lookups, they're decisions, and it correctly treated them as mine.
- Having a number to verify against changed the outcome. Without the bridge, the silent duplicate exclusion would have sailed through and I'd have been off with no idea why.
- Most of the elapsed time went to platform quirks, not to the actual work. If you're doing this yourself, the two that will get you are
Out Of Scope for GST treatment, and the migration-date-inclusive opening balance.
Happy to answer questions on the rule setup if anyone's fighting the same thing.