EH HR Payroll Australia
PAYG withholding by the ATO statement-of-formulas method, plus superannuation guarantee on ordinary time earnings, as editable data on the EH salary-rule engine.
Why this module
EH HR Payroll Australia
The ATO formula, not a flat percentage
Withholding is y = a times weekly earnings minus b for the bracket the earnings fall in, with x reduced to whole dollars plus 99 cents and the result rounded to the nearest dollar. This is the ATO statement-of-formulas method from Schedule 1 (NAT 1004), the same arithmetic the ATO publishes, not an approximation.
Coefficients are data you can edit
Bracket coefficients live on eh.hr.payg.bracket and ship seeded with the ATO scale 2 values. The ATO revises them every financial year, so the rate table is yours to verify and update from an editable list view, while the withholding method stays fixed in code.
Super on ordinary time earnings, not basic alone
The guarantee is computed on OTE, a memo line that is basic plus ordinary-time allowances, so an allowance that forms part of OTE correctly lifts the contribution. It posts as an employer line that does not reduce take-home pay.
Day in the life
Run a monthly pay
You assign the Australia Standard structure to an employee, set their PAYG scale, and compute the payslip. The engine builds basic, gross and ordinary time earnings, applies the superannuation rate from the company to OTE as an employer contribution, annualises the period gross to a weekly figure, withholds PAYG by the ATO formula for the employee's scale, scales it back to the month, and lands net pay. PAYG is a deduction, super is not, so take-home reflects only the withholding.
Edge cases
The cases most modules quietly ignore.
In the shipped code today, each one a place where a cheaper module silently does the wrong thing.
Non-weekly pay is annualised to a weekly figure, withheld weekly by the ATO method, then scaled back to the period. The engine infers periods per year from the payslip span: 52 weekly, 26 fortnightly, 12 monthly, so fortnightly and monthly runs use the ATO's intended weekly arithmetic.
When the matching bracket has coefficient a of zero, or computed withholding is negative or zero, PAYG floors at zero. Earnings under scale 2's tax-free threshold withhold nothing rather than a negative amount.
If earnings exceed every defined upper bound, the highest bracket for the scale is used, so a very large gross still resolves to a defined coefficient row instead of failing.
Super is computed on the OTE memo category, not on gross, so any future overtime rule that feeds gross but not OTE is correctly excluded from the super base. The OTE line is a memo and does not appear on the payslip.
An ordinary-time allowance fed as a payslip input counts toward both gross and the OTE super base. A 1,000 allowance on a 5,000 base raises OTE to 6,000 and super at 12 percent from 600 to 720, which the test suite pins.
Superannuation posts under the employer category and is excluded from net, so it does not reduce take-home pay. Total deductions equal the PAYG line alone.
x is floored to whole dollars plus 99 cents and y is rounded to the nearest dollar with halves up, reproducing the ATO's published Example 1: weekly earnings of 1,333.45 on scale 2 withhold exactly 250.
What is inside
Built to do the job, end to end.
- PAYG coefficient brackets. eh.hr.payg.bracket holds scale, weekly upper bound and the a and b coefficients, ordered by scale then bound. Seeded with the ATO Schedule 1 (NAT 1004) scale 2 values effective from 1 July 2024 and continuing 2025-26. Editable from an inline list view under the payroll menu, restricted to HR admin and officer.
- Australia Standard structure. A salary structure (code AU_STANDARD) with rules for basic, allowances, gross, ordinary time earnings as a memo, superannuation guarantee, PAYG withholding and net. Rules run in sequence on the EH engine and read earlier category totals.
- Per-employee and per-company settings. eh_payg_scale on the employee selects scale 1 (no tax-free threshold), 2 (threshold claimed) or 3 (foreign resident). eh_super_rate on the company sets the superannuation guarantee percentage, defaulting to 12.
- Sandbox helpers. The structure exposes payg(gross, periods) and super_rate to salary rules through the engine's rule-helper seam, so the withholding and super arithmetic stay in tested code rather than in free-text rule expressions.
- Pinned test suite. Tests check the per-bracket formula, period scaling, the OTE allowance lift, that super is an employer contribution outside net, and a hard assertion against ATO NAT 1004 Example 1 so the seeded coefficients reproduce the ATO's own published figure.
Honest about the edges
What this does not do, so nothing surprises you.
- Only scale 2 ships with seeded coefficients. Scales 1 and 3 are selectable but have no seeded brackets, so you must enter their coefficient rows before using them.
- The seeded coefficients are the ATO scale 2 values for 2024-25, continuing 2025-26. The ATO revises them annually, so you must verify and update the rate table against the current Schedule 1 each financial year. The method is fixed; the numbers are yours to maintain.
- No Single Touch Payroll (STP) reporting or lodgement to the ATO. This module computes withholding and super on the payslip; it does not generate or submit STP events.
- No HELP or STSL study and training loan components, no Medicare levy adjustments or variations, no tax offsets, and no leave loading rule are included. Add these as further rules or brackets if you need them.
- No end-of-year payment summary, no superannuation fund file or clearing-house export, and no payroll tax. Super is calculated as a payslip line only.
- Targets Odoo 16 Community and depends on the EH payroll engine and HR. It does not integrate with the Enterprise payroll app.
australian payroll odoo, PAYG withholding odoo, NAT 1004 statement of formulas, ATO tax scales, superannuation guarantee, ordinary time earnings, OTE super calculation, employer super contribution, weekly fortnightly monthly withholding, australia salary structure, odoo 16 payroll australia, PAYG coefficient brackets, ATO schedule 1 withholding, tax free threshold scale 2, foreign resident scale 3
Need this fitted to the way you work?
ERP Heritage delivers end to end Odoo work: Odoo Implementation, Customization and Development, Integration, Migration, Consultation, Support and Training. We help teams put this module into production, shape it to their process, and keep it running.
We work with businesses across Australia (Melbourne, Sydney, Brisbane, Perth, Adelaide, Canberra) and the Middle East (Dubai, Abu Dhabi, Riyadh, Jeddah, Doha, Kuwait City, Muscat). Start a conversation at erpheritage.com.au or email info@erpheritage.com.au.
Languages
Available in 19 languages
The interface ships translated out of the box. Switch language in Odoo and the fields, menus, and messages follow.
Please log in to comment on this module