Ledger Optics logo Ledger Optics

A practical guide to cleaning up a messy Xero file

Every bookkeeper knows the feeling of inheriting a Xero file that's been "self-managed" for a couple of years. The bank reconciles, more or less, but the Profit and Loss doesn't pass the sniff test: suppliers scattered across half a dozen expense accounts, GST codes applied by vibe, tracking categories used on some invoices and not others.

This guide is a practical, do-it-by-hand cleanup method for the three areas that cause most of the trouble — transaction coding, tax codes and tracking categories — followed by a faster way to do the tedious part.

First, understand how the mess got there

Messy files aren't usually the product of one bad decision. They accumulate:

A surprising amount of miscoding also starts at data entry: if supplier invoices are still being keyed in by hand, every manual entry is another coding decision made in a hurry. Reducing manual entry reduces future cleanup — we also run a Xero invoice automation service for exactly that reason.

The manual cleanup, area by area

Work in this order: coding first, then tax, then tracking. Tax and tracking fixes are easier once transactions sit in the right accounts.

1. Transaction coding

Scan the Profit and Loss. Run it by month across the period you're cleaning. Look for accounts that spike without a business reason, accounts with oddly small totals (often a near-duplicate of another account), and accounts you don't recognise. Click through to the transactions behind anything suspicious.

Read each account. Run the Account Transactions report for each expense account in turn and ask of every line: does this supplier belong here? Sort by amount so the material items get your freshest attention.

Check suppliers for consistency. For each significant contact, review which accounts their transactions have been coded to. One supplier spread across four expense accounts is the classic symptom — occasionally legitimate, usually just inconsistent coding of the same kind of purchase. This is the highest-yield check and also the slowest, because you're doing peer comparison by eye.

Fix in bulk with Find & Recode. If you have advisor access, Accounting → Advanced → Find and recode lets you filter transactions (by contact, account, date, and more) and recode the lot in one operation — account, tax rate, contact or tracking. It's powerful and it writes immediately, so filter carefully and work in small, reviewable batches. Without advisor access, you're editing transactions individually.

2. Tax codes

Coding errors and tax errors travel together, so re-check tax after recoding.

3. Tracking categories

4. Account types (worth a pass while you're in there)

Check that accounts are the right type — an expense account created as an asset (or a current liability set up as equity) quietly distorts both the P&L and the balance sheet, and it's a two-minute fix in the chart of accounts once spotted.

The faster way: make the outliers stand out

Look back at the highest-yield manual check: comparing each transaction with its peers and flagging the ones that disagree. That's a statistical job, and it's what we built Ledger Optics to do.

Ledger Optics is a free data-cleanup app for Xero (the app itself runs at app.ledgeroptics.com). It connects read-only via OAuth and draws your ledger as an interactive cluster view — a force-graph in which records that statistically disagree with their peers visibly stand apart. It covers four repair areas for Xero files: transaction coding (the flagship — purchases coded differently from their contact/amount peers), tax coding, tracking categories and account types — the same four areas this guide just walked through by hand.

Everything it finds lands in a "Needs fixing" list with a proposed correction. You review each change in a confirm-before-write dialog, and only the changes you tick are written back to Xero. Nothing changes without your explicit approval — a deliberate contrast with bulk recoding, where the write happens as soon as you click.

The honest fine print:

It's currently free, and a clean result is worth having too: "the engine found nothing" is a nice sentence to put in a handover note.

A workable routine

For an inherited file: manual pass once, properly, in the order above — then a quick outlier check monthly or quarterly so the mess never rebuilds. Whether the recurring check is a report habit or a tool, the principle is the same: coding errors are cheap to fix this month and expensive to fix at year-end.


Ledger Optics is built by QADAN ANALYSIS CONSULTING PTY LTD (NSW, Australia). Questions: info@qadan.com.au.

Let the outliers reveal themselves

Free to connect · read-only until you approve a change · nothing stored