United Kingdom · Free cheat sheet template

UK Xero Tax Rates: Which Codes Are Valid on Which Accounts (Free)

A free reference of UK Xero tax rates and the five CanApplyTo flags that decide which codes are valid on each account, and why you hit invalid tax code.

By ExpenseFlow team
· 25 June 2026

Free download · no email required

CSV: every Xero UK tax rate with the five CanApplyTo flags showing which account classes it is valid on.

Download the tax-rate list (CSV)

If you have ever applied a VAT code in Xero and been told “invalid tax code”, this reference explains exactly why, and which codes are actually valid on which accounts. It lists every UK Xero tax rate with the five flags Xero uses to decide where a rate can be applied, so you can see at a glance why a code is accepted on one account and refused on another.

The rule behind “invalid tax code”

It is not the individual account that decides which codes it accepts. It is the account’s class, checked against flags on each tax rate. Every Xero tax rate carries five booleans:

  • CanApplyToAssets
  • CanApplyToEquity
  • CanApplyToExpenses
  • CanApplyToLiabilities
  • CanApplyToRevenue

Each account rolls up to one of those classes (Direct Costs, Overhead, and Expense accounts are Expenses; Sales, Revenue, and Other Income are Revenue; Bank and Fixed Asset accounts are Assets, and so on). A tax rate is valid on an account only where its flag for that class is set. If it is not, Xero refuses it as an invalid tax code. The download shows the full Yes/No grid for every UK rate.

Why a sales code is refused on an expense account

This is the split that catches everyone. 20% (VAT on Income) has CanApplyToRevenue set and CanApplyToExpenses clear, so it only works on revenue accounts. 20% (VAT on Expenses) is the mirror image and only works on cost accounts. Xero names the standard rate twice for exactly this reason: to route the right one to the right side of the VAT return. The flags turn that into a hard rule, which is why you cannot put an input rate on a sales line.

The codes, and where they apply

  • 20% (VAT on Income) and 20% (VAT on Expenses): standard rate, revenue side and expense side.
  • 5% (VAT on Expenses): reduced rate, expense side.
  • Zero Rated Income / Zero Rated Expenses: 0%, reported on the return.
  • Exempt Income / Exempt Expenses: no VAT, and no input recovery on related costs.
  • No VAT: outside scope, valid on every class.
  • Reverse Charge Expenses (20%): overseas B2B services, expense side.
  • Domestic Reverse Charge @ 20%: construction subcontractor work under CIS, with income and expense variants.

An account has one default, but many valid codes

The account stores a single default tax rate, which prefills the transaction line. But across transactions, an account legitimately uses several codes, any that are valid for its class. A travel account sees zero-rated rail and standard-rated hotels; an advertising account sees standard UK spend and the reverse charge on overseas platforms. The default is the common case; the actual code is chosen per line by place of supply, end-user status, and where the supplier is. That is why the chart of accounts pairs a default with the other codes used on each account.

This is a reference, not an import

Unlike the chart of accounts, Xero has no CSV import for tax rates. They arrive as your organisation’s defaults plus any custom rates you add manually or via the API. So this file is a reference for which codes are valid where, and a handy aid when migrating between systems or building an integration. The flag values shown are Xero’s standard UK defaults; confirm against your own organisation, which may have custom rates.

How to use it

  1. When a code is refused, check the account’s class and the rate’s flag for that class in the grid.
  2. On a revenue account use an income-side rate; on a cost account use an expenses-side rate.
  3. Pair this with the UK chart of accounts for Xero, which sets a sensible default per account and lists the other valid codes.

ExpenseFlow applies the correct, valid code for each supply as it reads a receipt or bill and posts it into Xero, so you never hit an invalid-tax-code error at the line. On QuickBooks? See the UK QuickBooks VAT codes reference.

Questions, answered

Common questions

Why does Xero say invalid tax code?

Because the tax rate you applied is not allowed on that account's class. Every Xero tax rate carries five flags, CanApplyToAssets, CanApplyToEquity, CanApplyToExpenses, CanApplyToLiabilities, and CanApplyToRevenue, and an account belongs to one of those classes. If the rate's flag for that class is not set, Xero rejects it. The other common cause is a rate that does not exist or has been archived in your organisation.

Why can't I use a sales VAT code on an expense account?

Because income-side rates such as 20% (VAT on Income) have CanApplyToRevenue set to true but CanApplyToExpenses set to false, so Xero only allows them on revenue accounts. Expense accounts need the expenses-side rate, 20% (VAT on Expenses). This input-versus-output split is enforced by the flags, not just a convention.

Does an account have one tax code or many?

An account stores one default tax rate, which prefills transaction lines. But many tax codes can legitimately be used on that account across transactions, as long as each is valid for the account's class. The default is a starting point; the actual code is chosen per line by place of supply and other rules.

Can I import tax rates into Xero?

No. Unlike the chart of accounts, Xero has no CSV import for tax rates. They come as your organisation's defaults plus any you add manually or through the API. This file is a reference for which codes are valid where, and a useful aid when migrating or building an integration.

Keep exploring

Stop filling in spreadsheets by hand

A template is a starting point. ExpenseFlow captures receipts, reads the tax automatically, and posts the cleaned record to Xero or QuickBooks Online, so the log keeps itself.

Start free trial