โ† Back to guides

How to Set Up Single Touch Payroll (STP) in Odoo

Single Touch Payroll (STP) is mandatory for all Australian employers. Every time you pay your employees, you must report payroll information โ€” gross wages, PAYG withholding, superannuation โ€” directly to the ATO. STP Phase 2 (effective from January 2022) requires even more detailed reporting, including income types and country codes.

This guide covers how to set up Odoo for STP Phase 2 compliance, from initial configuration through to your first successful lodgement.

What STP Phase 2 requires

Under STP Phase 2, employers must report the following each pay run:

  • Gross payments โ€” Salary, wages, overtime, allowances, bonuses
  • PAYG withholding โ€” Tax withheld from each employee
  • Superannuation โ€” Ordinary time earnings super, salary sacrifice super
  • Income types โ€” Salary/wages (SAW), closely held payees (CHP), working holiday maker (WHM), etc.
  • Tax treatment codes โ€” Replaces the old TFN declaration categories. Encodes residency, tax-free threshold, HELP/HECS, etc.
  • Disaggregation of gross โ€” Separate reporting of overtime, bonuses, directors' fees, paid leave, allowances by ATO-defined types

Step 1: Install and configure the Payroll module

  • Install Payroll and Australian Payroll (l10n_au_hr_payroll) modules
  • Ensure the Australia - Accounting localisation is installed
  • Go to Payroll โ†’ Configuration โ†’ Settings
  • Set your business ABN and branch number
  • Select your STP software ID (Odoo's registered STP solution or a third-party gateway)
โ„น๏ธ

Odoo's Australian payroll module (Odoo Enterprise) includes built-in STP Phase 2 reporting from Odoo 17+. If you're on Community edition, you'll need a third-party STP module or service.

Step 2: Register with the ATO

Before you can lodge STP reports, you need:

  • An active ABN registered for PAYG withholding
  • A Software ID โ€” this is issued by the ATO to your payroll software provider. Odoo Enterprise has one registered.
  • Access to the ATO Business Portal or a registered tax agent for initial setup
  • Your Tax Agent Number (TAN) if a tax agent is lodging on your behalf

Step 3: Set up employee records

Each employee must have complete details for STP reporting:

  • Tax File Number (TFN) โ€” Required. If the employee hasn't provided a TFN, withhold at the maximum rate (47%).
  • Date of birth
  • Residential address
  • Employment start date
  • Tax treatment code โ€” This replaces the old TFN declaration checkboxes. It's a 6-character code encoding: residency status, tax-free threshold, Medicare levy, HELP debt, tax offset, and senior/pensioner status.
  • Income type โ€” Usually SAW (Salary and Wages) for regular employees
  • Superannuation fund โ€” The employee's nominated super fund with USI (Unique Superannuation Identifier) and member number
๐Ÿ’ก

The tax treatment code can be generated from a completed TFN declaration form. The ATO provides a Tax treatment code generator tool on their website to help. In Odoo, set the individual components (residency, threshold, HELP) and the code is derived automatically.

Step 4: Configure salary structures and rules

Set up salary structures that correctly categorise payments for STP:

  • Gross salary โ€” Base salary component, mapped to STP "Gross" reporting
  • Overtime โ€” Must be reported separately under STP Phase 2 disaggregation
  • Allowances โ€” Each allowance type (travel, tools, uniform, car, meals) must be mapped to the correct ATO allowance category
  • Bonuses and commissions โ€” Separate category for STP reporting
  • Paid leave โ€” Annual leave, sick leave paid out must be separately reported
  • Salary sacrifice (super) โ€” Reported under the super category, not gross
  • PAYG withholding โ€” Calculated per ATO tax tables, applied based on the employee's tax treatment code

Step 5: Configure superannuation

  • Set the super guarantee rate โ€” 12% for 2025-26 (increases annually, check ATO for current rate)
  • Configure Ordinary Time Earnings (OTE) calculation rules
  • Set up employee super fund details: fund name, USI, member number
  • Configure salary sacrifice super if applicable
  • Set up the Super Clearing House connection for payments (or use the ATO Small Business Super Clearing House)

Step 6: Run a test pay run

Before lodging your first STP report, run a test pay run:

  • Create a payslip batch for the pay period
  • Generate payslips and review each employee's breakdown
  • Verify: gross pay, PAYG withholding (matches ATO tax tables), super (correct % of OTE), net pay
  • Check that all STP reporting categories are correctly populated in the payslip
  • Confirm the pay run total matches your expected bank file amount

Step 7: Lodge the STP report

After confirming the payslips:

  • Go to Payroll โ†’ Reporting โ†’ STP Submission
  • Select the pay period and review the STP data
  • Click Submit to ATO โ€” this sends the report via the registered STP channel
  • Wait for the ATO acknowledgement (usually within minutes, sometimes up to 72 hours)
  • If errors are returned, correct the employee data and resubmit
  • STP reports must be lodged on or before pay day
โ„น๏ธ

Common STP error: "Tax treatment code not valid for income type." This usually means the employee's residency status or tax-free threshold setting conflicts with their income type. Review the TFN declaration and update the tax treatment code.

Step 8: End of financial year finalisation

At the end of the financial year (30 June), you must finalise STP by 14 July:

  • Run the final pay run for the financial year
  • Review YTD totals for each employee โ€” cross-check against your payroll records
  • Submit the STP Finalisation event for all employees
  • Employees can then access their Income Statement (replacement for payment summary/group certificate) via myGov
  • For employees who left during the year, you should have already submitted a finalisation at termination time

Common STP issues and fixes

  • YTD amounts don't match โ€” Usually caused by a mid-year switch to Odoo. Enter opening YTD balances for each employee to correct.
  • ATO rejects submission โ€” Check the error code in the response. Common issues: invalid TFN, missing ABN, incorrect tax treatment code.
  • Employee can't see income statement in myGov โ€” The STP finalisation must be submitted and accepted first. Check the submission status.
  • Super amounts seem wrong โ€” Verify OTE calculations. Overtime and some allowances are excluded from OTE (and therefore super), but bonuses generally aren't.

Need help configuring STP in Odoo?

Single Touch Payroll setup and ATO compliance can be tricky. We can configure it correctly first time so your payroll reporting just works.

Get in touch โ†’