Odoo handles Australian GST and BAS through its Australian fiscal localisation: a pre-built 10% GST tax set, GST-free and input-taxed codes, an ATO-aligned chart of accounts, and a BAS report that maps every tax code to the official labels — G1, 1A and 1B for GST, and W1 to W5 for PAYG withholding. An Australian business running Odoo Accounting can produce BAS-ready figures straight from posted invoices and bills, then lodge through ATO Online services. This guide explains how the configuration actually works, where Community and Enterprise differ, and the migration traps that distort a first BAS after cutover.
What the Odoo Australian localisation includes for GST and BAS
When you set Australia as the fiscal localisation on an Odoo database, the system installs a package the ATO would recognise. You get an Australian chart of accounts with GST clearing, GST payable and GST receivable control accounts already in place; a set of taxes covering 10% GST, GST-free supplies and input-taxed items; and the BAS report itself, which reads those tax codes and arranges them into the form the ATO expects. Set it once at the start and the plumbing is correct for every transaction after.
The rule of thumb we give clients: the localisation gets you 90% of the way on compliance, and the last 10% is mapping your specific products, suppliers and edge cases onto the right codes. That last 10% is where DIY setups quietly go wrong.
The Australian chart of accounts and GST tax codes
The default chart includes the control accounts BAS depends on. GST collected on sales accrues to a GST payable account; GST paid on purchases accrues to a GST receivable account; the BAS report nets these into what you owe or are owed. Each tax record carries a label mapping — the link that tells the BAS report which box a dollar belongs in. Break that mapping and the report still runs, it just reports the wrong number, which is worse.
Where the GST and BAS settings live
GST defaults sit under Accounting → Configuration → Settings → Taxes, where you set the default sales and purchase taxes and the rounding method. The report lives under Accounting → Reporting → Tax Report. Most businesses never touch the tax records themselves after setup; they live in the report and the invoice screen.
How GST is configured in Odoo: tax codes, rates and mapping
Australian GST looks simple — 10% on most things — until you meet the exceptions, and the exceptions are where BAS errors hide. Odoo models each treatment as a separate tax code, and the discipline is making sure every product and every supplier bill lands on the correct one. Get the codes right and the BAS report is automatic. Get them approximate and you spend every quarter reconciling by hand.
The four GST treatments you actually use
Most Australian transactions fall into one of four buckets, and Odoo ships a tax code for each. Standard supplies carry 10% GST. GST-free supplies — basic food, most health and education, exports — carry a 0% code that still reports to G1 but adds nothing to 1A. Input-taxed supplies, such as residential rent and most financial services, mean you charge no GST and claim no credits. Out-of-scope items, like wages and ATO payments, sit outside BAS entirely. Putting a transaction in the wrong bucket is the single most common cause of a BAS that doesn’t reconcile.
Capital versus non-capital acquisitions
The ATO’s G10 and G11 split capital from non-capital purchases, and Odoo handles this with separate purchase tax codes rather than a separate account. A new forklift uses the capital GST code; the diesel that runs it uses the non-capital code. We pre-configure both at setup so the purchasing team picks from a short, plain-English list rather than guessing.
Tax mapping on products and contacts
Every product carries a default sales tax and purchase tax; every customer and supplier can override it via a fiscal position. An export customer, for instance, sits on a fiscal position that automatically swaps the 10% GST code for the GST-free export code on every line. This is how Odoo keeps the codes correct without asking a sales rep to remember tax law — the system applies the rule, not the human.
The BAS report in Odoo: which form and what each label means
The BAS report in Odoo is the Australian Type A layout, and it reads directly off the tax codes on your posted transactions. Open it, choose a period, and Odoo populates the ATO labels with live figures you can drill into line by line. There is no re-keying and no spreadsheet in the middle — the number on label 1A is the sum of the GST on every sales invoice you posted in that period, and you can click it to see them.
The GST labels: G1, 1A and 1B
Three labels carry the GST story. G1 is total sales including GST. 1A is the GST you collected on those sales — your liability. 1B is the GST you paid on purchases — your credit. The net of 1A minus 1B is what you remit to, or reclaim from, the ATO. Odoo computes all three from posted documents, so the figure is only ever as good as the tax codes behind it.
PAYG withholding: W1 to W5
If you withhold tax from wages, the BAS also reports it. W1 is total salary and wages, W2 is the tax withheld, W4 covers amounts withheld where no ABN was quoted, and W5 totals the withholding. When Odoo Payroll runs on the same database, these labels populate from pay runs; we cover that integration in Odoo payroll for Australian businesses. If payroll lives elsewhere, you enter W1 to W5 manually at lodgement.
BAS versus IAS
A common point of confusion: not every activity statement is a BAS. Businesses that pay PAYG withholding monthly but report GST quarterly lodge an Instalment Activity Statement (IAS) in the in-between months. Odoo’s tax report can be run for any period, so you pull the withholding figures for a monthly IAS and the full GST picture for the quarterly BAS from the same place.
Generating and lodging the BAS from Odoo
Running the report is the easy part. Trusting the number is the part that takes discipline, and lodging it is a step Odoo deliberately leaves to you. Here is the sequence we teach every finance team, because doing these in order is what turns a four-hour quarterly scramble into a thirty-minute review.
Reconcile before you run it
A BAS is only as accurate as the ledger underneath it. Before generating the report, reconcile your bank accounts to the closing date, clear any unposted draft invoices and bills, and check the GST control accounts for stray manual journals. We’ve seen a clean-looking BAS hide a fortnight of unreconciled bank lines that hadn’t yet hit the GST accounts. Reconcile first, every time.
Drill down and validate
Open the Tax Report, set the period, and read it sceptically. Click label 1A and scan the transactions — does anything sit there that shouldn’t? Click 1B and check for personal or out-of-scope purchases that crept in on the wrong code. The drill-down is your audit trail; use it before you trust the totals, not after the ATO queries them.
Export, lodge, and close the period
Odoo does not lodge your BAS for you — unlike Single Touch Payroll, there is no direct ATO BAS connection in the standard product. You export the figures (PDF or spreadsheet) and key them into ATO Online services for business, or hand them to your registered tax agent, who lodges through Online services for agents. Once lodged and paid, you close the period in Odoo so the figures can’t shift underneath a submitted statement.
Community vs Enterprise: which edition actually generates the BAS report
This catches people who chose Odoo Community to save on licensing and then discover the BAS report missing at their first quarter. Community includes the Australian chart of accounts and the GST tax codes — the data layer is there, and your invoices carry the right GST. What Community does not include is the accounting reports engine that produces the one-click BAS report; that sits in Odoo Enterprise. On Community you can still calculate GST, but you assemble the BAS by exporting the tax data and totalling it yourself, or by bolting on a third-party reporting module of uneven quality.
For an Australian business that lodges BAS every quarter, that gap matters more than the licence saving. Enterprise runs around $34 AUD per user per month for the full app suite as of early 2026, and the BAS report alone usually justifies it for a finance team — a quarter spent rebuilding the statement in a spreadsheet costs more in labour than a year of the difference. We walk every client through this trade-off during scoping rather than letting it surface as a surprise in October. If you’re weighing the editions more broadly, our Odoo vs Xero comparison for Australian businesses sets out where each platform earns its keep.
GST clearing accounts and the BAS journal closing entry
Most guides stop at “run the report.” The accounting mechanic underneath is worth understanding, because it’s what keeps your GST control accounts from drifting year over year. When you close a BAS period in Odoo, the system posts a closing journal entry that sweeps the GST payable balance (your 1A) and the GST receivable balance (your 1B) into a single GST clearing account. That clearing balance is, to the cent, what you owe the ATO or what they owe you for the period.
When the payment leaves your ANZ or NAB business account — or the refund arrives — you reconcile it against the GST clearing account, not against GST payable or receivable directly. The effect is clean: each BAS period zeroes its own GST control accounts and parks the net in clearing, where the actual cash movement closes it out. Skip this and the GST accounts accumulate every quarter’s gross figures, the balance sheet stops meaning anything, and your accountant spends June untangling it. We configure the clearing account and the closing-entry routine at setup and train the bookkeeper to run it as the last step of every BAS, so the control accounts always reflect a single open period.
TPAR: the contractor report Odoo can produce but most businesses miss
If you pay contractors and operate in building and construction, cleaning, courier or road freight, IT, or security and surveillance services, you have a second ATO obligation many businesses forget — the Taxable Payments Annual Report, due 28 August each year. TPAR reports the total payments you made to each contractor over the financial year, and the penalties for missing it are real. It’s separate from BAS, but it draws on the same supplier data sitting in Odoo.
Odoo’s Australian localisation lets you flag the relevant suppliers as reportable contractors and tag the expense accounts that feed TPAR. Through the year, every bill you post against a flagged contractor accumulates toward their annual figure; at year end, Odoo produces the report you lodge with the ATO. The work is in the setup, not the lodgement: the contractor flags and account tags have to be right from 1 July, because retro-fitting twelve months of bills in August is the painful version. We set this up alongside BAS for any client in a TPAR industry, so the obligation is handled quietly in the background rather than discovered as a deadline.
Getting GST right at migration: opening balances and your first BAS after cutover
The riskiest BAS you’ll ever lodge on Odoo is the first one, because it straddles two systems. We worked with a Perth wholesaler moving off MYOB AccountRight mid-quarter; they remitted around $40,000 of GST a quarter and had been assembling BAS by exporting transactions into a spreadsheet and totalling them by hand. The migration itself was clean — the trap was the cutover BAS, which had three weeks of sales in MYOB and the rest in Odoo. Run naively, Odoo’s report only saw its own half, and the spreadsheet habit would have double-counted the overlap.
Two things make the first BAS reconcile. First, GST opening balances: the closing GST payable and receivable balances from the old system come across as opening journals in Odoo’s control accounts, so nothing falls through the gap between platforms. Second, tax codes on open documents: any unpaid invoices and bills migrated across must carry the correct GST code, or the GST on them lands in the wrong period when they’re settled. We reconcile the cutover-period figures across both systems before anyone lodges, and we time migrations away from a BAS deadline wherever the calendar allows — the same sequencing discipline in our Xero to Odoo migration playbook. For the wholesaler, the first Odoo BAS reconciled to the dollar, and the spreadsheet step never came back. Once invoicing is settled, native Peppol e-invoicing usually goes live in the same release, so the GST data is clean on the way in as well as on the way out.
If you’re moving to Odoo and want GST, BAS and TPAR configured to reconcile from your first lodgement — or you’re already on Odoo and your quarterly BAS still needs a spreadsheet to balance — that’s exactly the kind of work we do. Our implementation method builds Australian compliance in from day one rather than bolting it on. Reach out through the contact form and we’ll respond within a business day.
Frequently asked.
How to generate GST report in Odoo?
Open Accounting, then Reporting, then Tax Report, and set the period to your BAS quarter or month. Choose the BAS (Type A) layout. Odoo totals GST collected and GST paid from posted invoices and bills. Drill into any label to check the underlying transactions, then export the figures to enter into ATO Online services.
Is Odoo GST compliant?
Yes. The Australian localisation ships a 10% GST tax set, GST-free and input-taxed codes, and a BAS report mapped to the ATO labels G1, 1A and 1B. It produces compliant tax invoices and BAS figures. Odoo does not auto-lodge your BAS — you still file through ATO Online services or a registered agent.
Is a BAS statement for GST?
Partly. The Business Activity Statement reports GST, but also PAYG withholding (W1 to W5), PAYG instalments and other taxes on one form. Businesses reporting only GST and PAYG use the BAS; those reporting withholding between quarterly BAS periods lodge an IAS instead. Odoo's BAS report covers the GST and PAYG labels.
Does Odoo support GST?
Yes, natively. Australian GST at 10% is built into the localisation, with separate codes for GST-free, input-taxed and out-of-scope supplies, plus capital versus non-capital acquisitions. Every posted invoice and bill carries a tax code, and those codes roll up into the BAS report automatically.