Australia · Free cheat sheet template

Australian Xero GST Rates: Which Codes Are Valid on Which Accounts

A free reference of Australian Xero GST 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 Australian Xero GST 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 GST 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 Australian Xero GST 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 and Expense accounts are Expenses; Revenue and Other Income are Revenue; Bank and Fixed Asset accounts are Assets, and so on). A rate is valid on an account only where its flag for that class is set. If it is not, Xero refuses it. The download shows the full Yes/No grid for every Australian rate.

Basic versus advanced rates

Australia adds a wrinkle the grid alone does not show: Xero has two rate sets. The basic option, aligned to Simpler BAS, keeps GST on Income, GST on Expenses, GST Free Income, GST Free Expenses, GST on Imports, and BAS Excluded. The advanced option adds GST on Capital, GST on Capital Imports, GST Free Capital, GST Free Exports, and Input Taxed. A great many “invalid tax code” errors on Australian files are simply an advanced rate being used while the organisation is on the basic option, where that rate is archived rather than missing. Switch the organisation to advanced rates and it reappears.

Why a sales code is refused on an expense account

This is the split that catches everyone. GST on Income has CanApplyToRevenue set and CanApplyToExpenses clear, so it only works on revenue accounts. GST on Expenses is the mirror image for cost accounts. Xero separates income and expense versions of the rate so the right one routes to the right side of the BAS, and the flags turn that into a hard rule.

The codes, and where they apply

  • GST on Income and GST on Expenses: the standard 10%, revenue side and expense side.
  • GST on Capital: 10% on capital acquisitions, so they report at the capital label of the BAS.
  • GST on Imports and GST on Capital Imports: for GST collected at the border on imported goods.
  • GST Free Income / GST Free Expenses / GST Free Capital: 0%, reported, with credits still available on related costs.
  • GST Free Exports: 0% on exported goods and services.
  • Input Taxed: financial supplies and residential rent, valid on every class because it appears on both sales and the related costs.
  • BAS Excluded: outside scope (wages, super, ATO payments, transfers), valid on every class.

An account has one default, but many valid codes

The account stores a single default rate that prefills the line, but across transactions it legitimately uses several codes, any valid for its class. A travel account sees GST on Expenses for a domestic fare and GST Free Exports for an international airfare; a sales account sees GST on Income and GST Free Exports. The default is the common case; the actual code is chosen per line. 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 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 systems or building an integration. The flag values shown are Xero’s standard Australian defaults; confirm against your own organisation.

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, and confirm the rate is not an archived advanced rate.
  2. On a revenue account use an income-side rate; on a cost account use an expense-side rate.
  3. Pair this with the Australian chart of accounts for Xero, which sets a sensible default per account.

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

Questions, answered

Common questions

Why does Xero say invalid tax code?

Because the 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 each account belongs to one class. If the rate's flag for that class is not set, Xero rejects it. The other common cause is a rate that has been archived, for example an advanced rate switched off under Simpler BAS.

What is the difference between basic and advanced GST rates in Xero?

Basic (Simpler BAS) keeps GST on Income, GST on Expenses, GST Free Income, GST Free Expenses, GST on Imports, and BAS Excluded. Advanced adds GST on Capital, GST on Capital Imports, GST Free Capital, GST Free Exports, and Input Taxed. If you code an asset to GST on Capital while on the basic option, the rate is not available and Xero refuses it.

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

Because income-side rates such as GST on Income have CanApplyToRevenue set and CanApplyToExpenses clear, so Xero only allows them on revenue accounts. Expense accounts need the expense-side rate, GST on Expenses. The input-versus-output split is enforced by the flags, not just convention.

Can I import GST 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