If you're evaluating Odoo for an Australian business, or you're already live and wondering whether the compliance side is properly configured, the short answer is: yes, Odoo handles Australian BAS reporting and payroll compliance, and the v19 release made both significantly better. The longer answer involves understanding what's in the base localisation, what requires Enterprise, and what specifically changed when Odoo moved from v18 to v19. That last part matters more than most people realise. One of the v19 changes makes Odoo one of the few mid-market ERP platforms where STP Phase 2 lodgement and SuperStream contributions are both handled natively, without a separate clearing house or third-party payroll product.
What the Odoo Australian localisation includes
The Australian localisation is not a single module. It's a layered set of modules that build on each other, and understanding which layer does what determines whether your setup will actually work for compliance purposes.
Community vs Enterprise: what each edition provides
The base Community module (l10n_au) installs the Australian chart of accounts, GST tax codes, tax positions, and fiscal rules. This gives you the correct account structure and 10% GST treatment on sales and purchases, along with GST-free, export, and capital purchase variants. This layer is the same in both Community and Enterprise.
The BAS report itself, payroll compliance, and STP lodgement all require Enterprise modules. Specifically, BAS reporting needs account_reports and account_reports_cash_basis, which auto-install l10n_au_reports and provide the full BAS report, TPAR, and closing journal functionality. Payroll compliance is handled by l10n_au_hr_payroll, and the new v19 direct lodgement capability lives in l10n_au_hr_payroll_api. If you're a GST-registered employer running Odoo Community, you have the chart of accounts but none of the compliance reporting or STP lodgement. That gap is worth being clear-eyed about before committing to a Community-based implementation. You can review what our Odoo implementation services include across both editions.
BAS reporting in Odoo: which form, how it works, and what to configure
The Business Activity Statement (BAS) is the ATO's mechanism for collecting GST, PAYG withholding, and other tax obligations in one periodic lodgement. Odoo handles BAS reporting natively once the Enterprise localisation is installed, with the report accessible from Accounting > Reports > BAS Report (AU).
Which BAS form your business uses
Odoo comes loaded with all seven BAS form variants the ATO uses. Most businesses work with one of these, but it's worth knowing the full set:
- BAS-A: Full form covering GST and PAYG withholding. The most common form for businesses registered for both.
- BAS-C: Instalment amount form, used when the ATO has pre-calculated your GST instalment.
- BAS-G: GST only, no PAYG withholding. For entities with no employee withholding obligations.
- BAS-U: Annual PAYG instalment payers making quarterly contributions.
- BAS-V: Quarterly GST instalment with tax withheld.
- BAS-Y: Annual GST return for businesses registered for annual reporting.
- Master BAS: Odoo's internal template that the other forms inherit from. You won't use this directly.
Confirm which form applies with your accountant before go-live rather than assuming BAS-A is correct. In most cases it will be, but the ATO's BAS guide covers each scenario. Before you post your first BAS closing entry, set your GST payable and GST receivable accounts in the tax group configuration. Odoo prompts you if these are missing, but it's easy to skip past during a busy go-live. Also go to Accounting > Configuration > Settings and configure your tax return periodicity (monthly or quarterly) and fiscal year end date. For most Australian businesses that's 30 June.
PAYG withholding: the W1 to W5 sections in your BAS
If you're running Odoo Payroll, PAYG (Pay As You Go) withholding flows automatically into the W1 to W5 sections of your BAS. W1 captures total gross wages and other payments subject to withholding. W2 captures the total amount withheld. These figures come directly from your processed payslips: no export, no manual reconciliation, no end-of-quarter data entry between two systems. It's one of the more practical advantages of running payroll and accounting on the same platform. For a full picture of how the implementation fits together, our Odoo ERP implementation guide for Australia covers the end-to-end process.
TPAR: the annual report many service businesses don't know about
The Taxable Payments Annual Report (TPAR) is a separate ATO obligation from the BAS. If your business is in building and construction, cleaning, couriers, IT, security, or road freight, you're required to report all payments made to contractors and subcontractors to the ATO annually. TPAR is due by 28 August each year and has nothing to do with your quarterly BAS cycle.
Odoo includes a TPAR report in l10n_au_reports. It identifies reportable payments via the Service and Tax Withheld tax tags on journal items. The critical thing: getting TPAR right depends on your fiscal positions and product types being configured correctly from day one. If you're in a TPAR-relevant industry and you start processing supplier invoices before those tags are set up, you'll face a messy retroactive fix before August. It's one of the areas our Odoo implementation packages specifically review during the accounting configuration phase.
Odoo Payroll for Australian compliance
STP Phase 2: what's required and what Odoo covers
Single Touch Payroll (STP) Phase 2 requires employers to submit a detailed breakdown of payroll data to the ATO each pay run. Where Phase 1 required gross wages and tax withheld, Phase 2 goes further: it requires disaggregated gross income reported by income stream type, salary sacrifice amounts reported separately rather than netted off, and additional detail that the ATO uses to pre-fill individual tax returns and validate super contributions.
Odoo v19 supports all ten STP Phase 2 income stream types: salary and wages (SAW), closely held payees (CHP), inbound assignees to Australia (IAA), working holiday makers (WHM), PALM scheme workers (SWP/PALM), foreign employment income (FEI), joint petroleum development area (JPD), voluntary agreement (VOL), labour hire (LAB), and other specified payments (OSP). This is the full set the ATO requires. All ten are implemented in the v19 payslip model.
Superannuation: rates and how Odoo applies them
The compulsory super guarantee rate is currently 12%, effective from 1 July 2025. Odoo's payroll module has the full legislated rate schedule hardcoded correctly: 11% from January 2023, 11.5% from July 2024, and 12% from July 2025. When you process a pay run, Odoo applies the rate based on the physical pay date. You don't need to update anything manually at the start of each financial year. The ATO publishes the current rate and schedule if you need to verify what applied in prior periods.
What actually changed from Odoo v18 to v19 for Australian businesses
This is the section that matters most if you're deciding whether to implement on v19, or whether to upgrade from an earlier version. The changes aren't cosmetic. For Australian businesses specifically, v19 includes the most significant compliance advancement the platform has made.
Direct STP lodgement via the Superchoice API: new in v19
In v18, Odoo generated the STP Phase 2 XML file correctly, but you still needed a separate clearing house to actually submit it to the ATO. You'd export from Odoo, upload to a third-party service, and manage the status there. That workflow is gone in v19.
The new l10n_au_hr_payroll_api module, which does not exist at all in v18, integrates directly with the Superchoice API. STP Phase 2 lodgement happens from within Odoo, and the status updates in real time inside the same screen. The full ATO status lifecycle is tracked in the system: Draft, Submitted, ATO Pending, Accepted, and Failed. If a lodgement fails with an ATO validation error, the error message surfaces in Odoo directly. You can't delete an STP record that's already been submitted to the ATO. The system prevents it, which is the correct compliance behaviour.
In practical terms: you finalise your pay run, submit the STP report, and track its acceptance with the ATO, all within Odoo. No separate clearing house account, no manual export, no status-checking in a third-party portal.
SuperStream contributions handled natively
The same l10n_au_hr_payroll_api module also handles SuperStream contributions natively through Superchoice acting as the clearing house. The full payment lifecycle is tracked inside Odoo: Employer Pending (direct debit initiated), Fund Pending (debit cleared, fund payment initiated), Success, and Cancelled. If a fund payment is dishonoured or needs to be cancelled, that's managed from within Odoo rather than through a separate clearing house portal.
Previously, super contributions required either a manual SuperStream submission through a separate service or the Small Business Superannuation Clearing House. In v19, both STP lodgement and super contributions run through the same integrated channel. That's a meaningful reduction in the number of systems an Australian employer needs to operate for payroll compliance.
ATO-mandated security controls now enforced by the module
The ATO requires specific security controls for systems that access its payroll reporting infrastructure. In v19, these controls are enforced by the l10n_au_hr_payroll_api module rather than relying on administrators to configure them manually. Privileged Australian payroll and accounting users have TOTP-based multi-factor authentication required at login. The system enforces this; it's not optional. Social OAuth login via Facebook is blocked for internal users with the Australian payroll integration installed. Sensitive payroll field changes trigger audit log entries that are synced to Superchoice. The 30-minute inactivity timeout and 24-hour session timeout are applied to privileged users automatically.
These aren't configuration options an administrator might forget to turn on. They're module-level requirements that activate when the Australian payroll API integration is installed.
BAS quarterly calendar fix and W1-W5 closing
Two BAS-specific improvements also landed in v19. First, the quarterly calendar fix: in v18 and earlier, Odoo used calendar quarters internally, which meant July to September appeared as Q3 rather than Q1 in Australian terms. If you've been on v18 and your BAS quarters looked misaligned with the ATO's reporting periods, that's the cause. V19 corrects this: July is now correctly treated as Q1. Second, v19 adds BAS report closing for the PAYG withholding sections (W1 to W5), which was not available in earlier versions. BAS figures now also round down by default to meet ATO requirements, and pre-loaded 2025-26 tax rates mean you don't need to update anything manually at the start of the new financial year.
Frequently asked questions
Does Odoo submit STP Phase 2 directly to the ATO?
Yes, in Odoo v19 Enterprise. The l10n_au_hr_payroll_api module submits STP Phase 2 reports directly to the ATO via the Superchoice API from within Odoo. Status tracking (Draft, Submitted, ATO Pending, Accepted, Failed) is visible inside the system. This functionality does not exist in v18, where Odoo generated the STP XML but required a separate clearing house to complete the lodgement.
Does Odoo Community include BAS reporting?
Community includes the Australian chart of accounts and GST tax codes, but not the BAS report. The BAS report, TPAR, and BAS closing functionality require the account_reports and account_reports_cash_basis Enterprise modules. For any GST-registered business, Community alone is not sufficient for BAS compliance reporting.
What is the difference between Odoo v18 and v19 for Australian compliance?
The major difference is the l10n_au_hr_payroll_api module, which is new in v19 and does not exist in v18. It adds direct STP Phase 2 lodgement via the Superchoice API, native SuperStream contribution management, ATO-mandated security controls enforced at the module level, and payroll audit logging. On the BAS side, v19 fixes the quarterly calendar alignment and adds W1-W5 BAS closing support. Together these make v19 a significantly more capable compliance platform for Australian employers than v18.
Do I need to upgrade to v19 to get the Superchoice integration?
Yes. The direct STP lodgement and SuperStream functionality via Superchoice is specific to v19 Enterprise and the l10n_au_hr_payroll_api module. It is not available as a backport to v18. If you're currently on v18 and using a separate clearing house for STP submissions, upgrading to v19 is the path to consolidating that into Odoo directly.
Getting the Australian localisation configured correctly from day one
We implement Odoo v19 for Australian businesses across Queensland, NSW, and Victoria, with the accounting localisation, BAS reporting, TPAR configuration, and payroll compliance set up correctly before a single live transaction is processed.
If you're planning a new implementation or assessing an upgrade from v18, book a free consultation. We'll walk through what's relevant to your specific business and flag anything that needs attention before go-live.
If you're evaluating Odoo for an Australian business, or you're already live and wondering whether the compliance side is properly configured, the short answer is: yes, Odoo handles Australian BAS reporting and payroll compliance, and the v19 release made both significantly better. The longer answer involves understanding what's in the base localisation, what requires Enterprise, and what specifically changed when Odoo moved from v18 to v19. That last part matters more than most people realise. One of the v19 changes makes Odoo one of the few mid-market ERP platforms where STP Phase 2 lodgement and SuperStream contributions are both handled natively, without a separate clearing house or third-party payroll product.
What the Odoo Australian localisation includes
The Australian localisation is not a single module. It's a layered set of modules that build on each other, and understanding which layer does what determines whether your setup will actually work for compliance purposes.
Community vs Enterprise: what each edition provides
The base Community module (l10n_au) installs the Australian chart of accounts, GST tax codes, tax positions, and fiscal rules. This gives you the correct account structure and 10% GST treatment on sales and purchases, along with GST-free, export, and capital purchase variants. This layer is the same in both Community and Enterprise.
The BAS report itself, payroll compliance, and STP lodgement all require Enterprise modules. Specifically, BAS reporting needs account_reports and account_reports_cash_basis, which auto-install l10n_au_reports and provide the full BAS report, TPAR, and closing journal functionality. Payroll compliance is handled by l10n_au_hr_payroll, and the new v19 direct lodgement capability lives in l10n_au_hr_payroll_api. If you're a GST-registered employer running Odoo Community, you have the chart of accounts but none of the compliance reporting or STP lodgement. That gap is worth being clear-eyed about before committing to a Community-based implementation. You can review what our Odoo implementation services include across both editions.
BAS reporting in Odoo: which form, how it works, and what to configure
The Business Activity Statement (BAS) is the ATO's mechanism for collecting GST, PAYG withholding, and other tax obligations in one periodic lodgement. Odoo handles BAS reporting natively once the Enterprise localisation is installed, with the report accessible from Accounting > Reports > BAS Report (AU).
Which BAS form your business uses
Odoo comes loaded with all seven BAS form variants the ATO uses. Most businesses work with one of these, but it's worth knowing the full set:
- BAS-A: Full form covering GST and PAYG withholding. The most common form for businesses registered for both.
- BAS-C: Instalment amount form, used when the ATO has pre-calculated your GST instalment.
- BAS-G: GST only, no PAYG withholding. For entities with no employee withholding obligations.
- BAS-U: Annual PAYG instalment payers making quarterly contributions.
- BAS-V: Quarterly GST instalment with tax withheld.
- BAS-Y: Annual GST return for businesses registered for annual reporting.
- Master BAS: Odoo's internal template that the other forms inherit from. You won't use this directly.
Confirm which form applies with your accountant before go-live rather than assuming BAS-A is correct. In most cases it will be, but the ATO's BAS guide covers each scenario. Before you post your first BAS closing entry, set your GST payable and GST receivable accounts in the tax group configuration. Odoo prompts you if these are missing, but it's easy to skip past during a busy go-live. Also go to Accounting > Configuration > Settings and configure your tax return periodicity (monthly or quarterly) and fiscal year end date. For most Australian businesses that's 30 June.
PAYG withholding: the W1 to W5 sections in your BAS
If you're running Odoo Payroll, PAYG (Pay As You Go) withholding flows automatically into the W1 to W5 sections of your BAS. W1 captures total gross wages and other payments subject to withholding. W2 captures the total amount withheld. These figures come directly from your processed payslips: no export, no manual reconciliation, no end-of-quarter data entry between two systems. It's one of the more practical advantages of running payroll and accounting on the same platform. For a full picture of how the implementation fits together, our Odoo ERP implementation guide for Australia covers the end-to-end process.
TPAR: the annual report many service businesses don't know about
The Taxable Payments Annual Report (TPAR) is a separate ATO obligation from the BAS. If your business is in building and construction, cleaning, couriers, IT, security, or road freight, you're required to report all payments made to contractors and subcontractors to the ATO annually. TPAR is due by 28 August each year and has nothing to do with your quarterly BAS cycle.
Odoo includes a TPAR report in l10n_au_reports. It identifies reportable payments via the Service and Tax Withheld tax tags on journal items. The critical thing: getting TPAR right depends on your fiscal positions and product types being configured correctly from day one. If you're in a TPAR-relevant industry and you start processing supplier invoices before those tags are set up, you'll face a messy retroactive fix before August. It's one of the areas our Odoo implementation packages specifically review during the accounting configuration phase.
Odoo Payroll for Australian compliance
STP Phase 2: what's required and what Odoo covers
Single Touch Payroll (STP) Phase 2 requires employers to submit a detailed breakdown of payroll data to the ATO each pay run. Where Phase 1 required gross wages and tax withheld, Phase 2 goes further: it requires disaggregated gross income reported by income stream type, salary sacrifice amounts reported separately rather than netted off, and additional detail that the ATO uses to pre-fill individual tax returns and validate super contributions.
Odoo v19 supports all ten STP Phase 2 income stream types: salary and wages (SAW), closely held payees (CHP), inbound assignees to Australia (IAA), working holiday makers (WHM), PALM scheme workers (SWP/PALM), foreign employment income (FEI), joint petroleum development area (JPD), voluntary agreement (VOL), labour hire (LAB), and other specified payments (OSP). This is the full set the ATO requires. All ten are implemented in the v19 payslip model.
Superannuation: rates and how Odoo applies them
The compulsory super guarantee rate is currently 12%, effective from 1 July 2025. Odoo's payroll module has the full legislated rate schedule hardcoded correctly: 11% from January 2023, 11.5% from July 2024, and 12% from July 2025. When you process a pay run, Odoo applies the rate based on the physical pay date. You don't need to update anything manually at the start of each financial year. The ATO publishes the current rate and schedule if you need to verify what applied in prior periods.
What actually changed from Odoo v18 to v19 for Australian businesses
This is the section that matters most if you're deciding whether to implement on v19, or whether to upgrade from an earlier version. The changes aren't cosmetic. For Australian businesses specifically, v19 includes the most significant compliance advancement the platform has made.
Direct STP lodgement via the Superchoice API: new in v19
In v18, Odoo generated the STP Phase 2 XML file correctly, but you still needed a separate clearing house to actually submit it to the ATO. You'd export from Odoo, upload to a third-party service, and manage the status there. That workflow is gone in v19.
The new l10n_au_hr_payroll_api module, which does not exist at all in v18, integrates directly with the Superchoice API. STP Phase 2 lodgement happens from within Odoo, and the status updates in real time inside the same screen. The full ATO status lifecycle is tracked in the system: Draft, Submitted, ATO Pending, Accepted, and Failed. If a lodgement fails with an ATO validation error, the error message surfaces in Odoo directly. You can't delete an STP record that's already been submitted to the ATO. The system prevents it, which is the correct compliance behaviour.
In practical terms: you finalise your pay run, submit the STP report, and track its acceptance with the ATO, all within Odoo. No separate clearing house account, no manual export, no status-checking in a third-party portal.
SuperStream contributions handled natively
The same l10n_au_hr_payroll_api module also handles SuperStream contributions natively through Superchoice acting as the clearing house. The full payment lifecycle is tracked inside Odoo: Employer Pending (direct debit initiated), Fund Pending (debit cleared, fund payment initiated), Success, and Cancelled. If a fund payment is dishonoured or needs to be cancelled, that's managed from within Odoo rather than through a separate clearing house portal.
Previously, super contributions required either a manual SuperStream submission through a separate service or the Small Business Superannuation Clearing House. In v19, both STP lodgement and super contributions run through the same integrated channel. That's a meaningful reduction in the number of systems an Australian employer needs to operate for payroll compliance.
ATO-mandated security controls now enforced by the module
The ATO requires specific security controls for systems that access its payroll reporting infrastructure. In v19, these controls are enforced by the l10n_au_hr_payroll_api module rather than relying on administrators to configure them manually. Privileged Australian payroll and accounting users have TOTP-based multi-factor authentication required at login. The system enforces this; it's not optional. Social OAuth login via Facebook is blocked for internal users with the Australian payroll integration installed. Sensitive payroll field changes trigger audit log entries that are synced to Superchoice. The 30-minute inactivity timeout and 24-hour session timeout are applied to privileged users automatically.
These aren't configuration options an administrator might forget to turn on. They're module-level requirements that activate when the Australian payroll API integration is installed.
BAS quarterly calendar fix and W1-W5 closing
Two BAS-specific improvements also landed in v19. First, the quarterly calendar fix: in v18 and earlier, Odoo used calendar quarters internally, which meant July to September appeared as Q3 rather than Q1 in Australian terms. If you've been on v18 and your BAS quarters looked misaligned with the ATO's reporting periods, that's the cause. V19 corrects this: July is now correctly treated as Q1. Second, v19 adds BAS report closing for the PAYG withholding sections (W1 to W5), which was not available in earlier versions. BAS figures now also round down by default to meet ATO requirements, and pre-loaded 2025-26 tax rates mean you don't need to update anything manually at the start of the new financial year.
Frequently asked questions
Does Odoo submit STP Phase 2 directly to the ATO?
Yes, in Odoo v19 Enterprise. The l10n_au_hr_payroll_api module submits STP Phase 2 reports directly to the ATO via the Superchoice API from within Odoo. Status tracking (Draft, Submitted, ATO Pending, Accepted, Failed) is visible inside the system. This functionality does not exist in v18, where Odoo generated the STP XML but required a separate clearing house to complete the lodgement.
Does Odoo Community include BAS reporting?
Community includes the Australian chart of accounts and GST tax codes, but not the BAS report. The BAS report, TPAR, and BAS closing functionality require the account_reports and account_reports_cash_basis Enterprise modules. For any GST-registered business, Community alone is not sufficient for BAS compliance reporting.
What is the difference between Odoo v18 and v19 for Australian compliance?
The major difference is the l10n_au_hr_payroll_api module, which is new in v19 and does not exist in v18. It adds direct STP Phase 2 lodgement via the Superchoice API, native SuperStream contribution management, ATO-mandated security controls enforced at the module level, and payroll audit logging. On the BAS side, v19 fixes the quarterly calendar alignment and adds W1-W5 BAS closing support. Together these make v19 a significantly more capable compliance platform for Australian employers than v18.
Do I need to upgrade to v19 to get the Superchoice integration?
Yes. The direct STP lodgement and SuperStream functionality via Superchoice is specific to v19 Enterprise and the l10n_au_hr_payroll_api module. It is not available as a backport to v18. If you're currently on v18 and using a separate clearing house for STP submissions, upgrading to v19 is the path to consolidating that into Odoo directly.
Getting the Australian localisation configured correctly from day one
We implement Odoo v19 for Australian businesses across Queensland, NSW, and Victoria, with the accounting localisation, BAS reporting, TPAR configuration, and payroll compliance set up correctly before a single live transaction is processed.
If you're planning a new implementation or assessing an upgrade from v18, book a free consultation. We'll walk through what's relevant to your specific business and flag anything that needs attention before go-live.