
Xero's automatic GST coding is built to save time, and most of the time it does. Transactions arrive through the bank feed, default tax rates apply, the numbers look right, and you reconcile and move on. The problem shows up later, almost always at BAS, when the GST payable or GST on purchases is slightly off and nothing obvious is broken to explain it. The bank reconciles, the reports run, but the figures feel wrong. This is the specific failure people are describing when they search "Xero GST not calculating correctly." The automation worked just well enough to pass reconciliation, and not accurately enough for reporting.
Why Auto-GST drifts instead of breaking
Auto-GST runs on default tax rates attached to account codes and bank rules. When a transaction comes in without a tax rate, Xero applies the default, and that default may not reflect the real GST treatment of that particular transaction. This is the important part: it does not produce a visible error. It produces a small, plausible miscoding that reconciles perfectly and looks exactly like every correct line around it. One of those on its own is nothing. The issue is that the same default fires on the same kind of transaction all quarter, so a single wrong assumption quietly repeats twenty or fifty times before anyone looks closely. That is drift, and drift is far harder to catch than a clear mistake, because there is no moment where something obviously goes wrong. The file just slowly moves away from correct while continuing to balance.
Where the drift usually comes from
The recurring cases are consistent. Mixed-use expenses where only part of the GST should be claimed but the default claims all of it. Supplier invoices that should be GST-free coded as standard GST. Director loan payments treated as expenses rather than balance sheet movements. CSV imports where the tax rate defaults incorrectly because the feed did not set one. Unreconcile-and-recode changes that shift the GST position without anyone noticing the treatment moved with the amount. In every one of these, reconciliation stays green, because reconciliation checks whether the bank matches the ledger, not whether the tax treatment is right. The bank balances. The BAS does not, and it cannot tell you which of the hundreds of correctly-reconciled lines is the one carrying the wrong code.
How to catch GST drift before it reaches the BAS
Automation in Xero is genuinely useful, but it was never meant to replace review, only to reduce the volume of it. If the BAS looks wrong while reconciliation is complete, the fix is to review the GST codes Auto-GST applied, focusing on the categories where the default is most often wrong: imports, mixed-use expenses, GST-free suppliers, and anything unusual enough that a generic default was unlikely to get it right. Silent BAS errors almost never come from a dramatic mistake. They come from a small assumption repeated across a quarter, and the earlier that assumption is caught, the cheaper it is to correct. Left until lodgement, drift means checking the whole quarter to find the handful of lines that moved. Caught early, it is one code and one rule.





