Coding a bill in Xero means answering three questions: which account it belongs to, which tax rate applies, and — if you use them — which tracking categories it should be tagged with.
Doing that once per invoice is the job. Doing it once per supplier and letting the rest follow is the difference between a fast purchase ledger and a slow one.
The three things you're setting
Account code. Which line of your profit and loss (or balance sheet) this belongs to. Xero ships with a default chart of accounts, and most businesses modify it.
Tax rate. Not the same as the account. Xero keeps tax treatment separate, which is correct but catches people out — the account can be right and the VAT treatment wrong, and that surfaces at the VAT return rather than in the accounts.
Tracking categories. Optional, and Xero allows two. These are the dimensions you want to report on that aren't accounts: department, location, job, fund — the same job cost centre allocation does elsewhere. Used well they're the most valuable reporting feature Xero has; used carelessly they become a field nobody fills in consistently.
Set defaults per supplier — this is the important part
In the supplier's contact record you can set a default account code and tax rate. Once set, every new bill from that supplier arrives pre-coded and you're reviewing rather than deciding. It only works if the supplier list itself is clean — defaults on one of two duplicate records help nobody.
For any supplier you buy from repeatedly and code the same way, this should be set. It's the single highest-return few minutes in Xero and it's routinely skipped, usually because the setting lives on the contact rather than anywhere near where you enter bills.
Worth working through your supplier list once and setting defaults for everyone who appears more than twice a year. That one pass changes how the rest of the year feels.
Keep the chart of accounts small
The instinct is to add an account whenever something doesn't fit. Six months later there are two accounts that mean nearly the same thing and coding becomes a judgment call every time.
A working rule: an account earns its place if you would ever look at it on its own. If you would never ask "what did we spend on this specifically", it belongs inside a broader account.
Use tracking categories for the dimensions you want to slice by, rather than multiplying accounts. "Office costs" tracked by location beats separate accounts for each office — same reporting, a fraction of the codes.
Worth reviewing annually: run the profit and loss for the year and look for accounts with one or two transactions. Each is a candidate for merging.
Tax rates worth knowing
The common ones on purchases:
- 20% (VAT on Expenses) — standard rated
- 5% (VAT on Expenses) — reduced rate
- Zero Rated Expenses — zero rated, still reportable
- Exempt Expenses — exempt, treated differently from zero rated
- No VAT — outside the scope entirely
Zero rated, exempt and No VAT are not interchangeable, and using them loosely produces a VAT return that doesn't reconcile. Zero rated and exempt both appear in your figures; No VAT doesn't.
If you're on a flat rate or margin scheme, or handling reverse charge, the treatment differs again — worth confirming with your accountant once and then documenting the rule rather than re-deciding it each time.
Splitting a bill across codes
Bills in Xero take multiple lines, each with its own account, tax rate and tracking.
The practical approach: enter one line per coding decision rather than one line per invoice line. An invoice with fourteen items that all code to the same account needs one line, not fourteen. An invoice with three items across three departments needs three — choosing a basis you can defend matters more than the mechanics.
For recurring splits that never change — a monthly bill always divided 60/40 between two departments — a repeating bill template holds the split so it doesn't get re-derived.
The mistakes that cause rework
Coding to the nearest plausible account. It reaches the budget holder's cost centre, they don't recognise it, and it comes back. Ask once rather than guessing.
Entering a statement as a bill. Statements summarise invoices you may already have entered. Entering one double-counts everything on it.
Forgetting the tax rate when the account is right. The most common silent error, because nothing looks wrong until the VAT return.
Gross instead of net. Xero can work either way, and mixing them within a bill produces a total that doesn't tie.
Coding to a balance sheet account by accident. Fixed asset and prepayment codes sit near expense codes alphabetically and get picked in error. These don't show in the profit and loss, so the cost silently disappears from your numbers.
Making it faster
Set supplier defaults. Covered above, and it's most of the win.
Use repeating bills for anything with a fixed amount and schedule — rent, subscriptions, retainers. Coded once, then it just appears.
Enter on arrival rather than in a monthly batch. Coding decisions are quicker when the purchase is recent enough to remember.
Attach the source document to the bill. Xero holds files against the transaction. This costs nothing at entry and saves the search later, at year end, when nobody remembers.
Fix the coding at source, not with journals. A correcting journal fixes the accounts and leaves the bill wrong, so the next invoice from that supplier gets coded the same wrong way. Edit the bill and update the supplier default.
A reasonable review
Once a quarter, run the profit and loss with the previous period alongside and look for lines that moved unexpectedly. Miscoding shows up as a category that's grown for no reason you can name.
That's a faster check than reviewing transactions, and it catches the coding errors that actually matter — the ones large enough to distort a number someone's making a decision on.
Cribble posts bills straight into Xero with the account code, tax rate and tracking already applied, learning the coding you use per supplier so the corrections stop. Every field is scored separately, so what needs checking is a short list rather than the whole document.
