EH HR Payroll Australia
PAYG withholding by the ATO statement-of-formulas method and superannuation guarantee, on the EH salary-rule engine.
Why this module
EH HR Payroll Australia
ATO statement of formulas, not a flat rate
Withholding is y = a times x minus b for the bracket the weekly earnings fall in, where x is whole-dollar earnings plus 99 cents and y is rounded to the nearest dollar and floored at zero. This is the ATO Schedule 1 (NAT 1004) method, reproduced exactly, not an approximate percentage.
Super on ordinary time earnings, not basic alone
The Australia Standard structure carries an ordinary time earnings memo line so superannuation is computed on basic plus ordinary-time allowances. A site allowance lifts the contribution correctly, and a later overtime rule can feed gross without inflating super.
Coefficients are data you keep current
The scale-2 brackets are seeded from the ATO published values and pinned in a test against the ATO worked example. The method is fixed in code; the rate table is editable in the UI, because the ATO revises the coefficients each financial year and you confirm them against the current schedule.
Day in the life
A monthly pay run for an Australian team
You assign the Australia Standard structure and run payroll. Each payslip annualises the monthly gross to a weekly figure, withholds PAYG by the employee's tax scale using the ATO formula, then scales the withholding back to the month. Superannuation is computed at the company rate on ordinary time earnings, so allowances that form part of OTE lift the contribution while the employer cost stays out of take-home. Net is gross minus PAYG. When the ATO publishes new coefficients for the financial year, an HR admin edits the PAYG coefficient table in place; no code change is needed.
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 under the ATO method, then scaled back to the period. Pay periods per year (52, 26, 12) are inferred from the payslip date span by the engine, so weekly, fortnightly and monthly all withhold correctly without hardcoding a frequency.
x is the weekly earnings reduced to whole dollars plus 99 cents and the result is rounded to the nearest dollar with halves up, matching the ATO statement-of-formulas rounding rather than naive arithmetic. The ATO worked example ($1,333.45 on scale 2 withholds $250) is pinned in the test suite.
Earnings in the tax-free band (scale 2 below the first bracket) withhold nothing, and any formula result at or below zero is floored to zero, so a low-pay period never produces a negative or spurious withholding.
Superannuation is computed on an ordinary time earnings memo category, not gross. Ordinary-time allowances raise both gross and the super base, while the structure is shaped so a future overtime line can feed gross but be excluded from super, as the legislation requires.
Each employee carries a PAYG scale (tax-free threshold claimed, no threshold, or foreign resident) and the payslip resolves the matching coefficient bracket at compute time, defaulting to scale 2 when none is set.
Compute is inherited from the engine: it unlinks existing lines and rebuilds them, so recomputing a slip after a coefficient or allowance change never duplicates PAYG or super lines and always reflects the current table.
What is inside
Built to do the job, end to end.
- PAYG coefficient model. eh.hr.payg.bracket holds the scale, the upper weekly bound, and the a and b coefficients. compute_weekly_payg selects the bracket and applies the ATO formula; compute_period_payg annualises to weekly and scales back. An editable list view under the payroll menu lets an HR admin maintain the table.
- Australia Standard structure. Seeded salary rules for basic, ordinary-time allowance, gross, an ordinary time earnings memo line, superannuation guarantee, PAYG withholding, and net pay. Super reads the company rate; PAYG calls the helper exposed to the rule sandbox; net is gross minus deductions.
- Configuration fields. hr.employee gains a PAYG scale selection; res.company gains a superannuation guarantee rate defaulting to 12%. Both feed the salary rules at compute time, so payroll follows per-employee scale and the company super rate without touching code.
- Engine seam and security. The module overrides _get_rule_helpers to inject the payg callable and the super rate into the sandboxed rule namespace, reusing the platform's compute, workflow, audit and multi-company scoping. The coefficient model ships read, write and create access for HR admin and officer roles and read-only access for self-service.
Honest about the edges
What this does not do, so nothing surprises you.
- Only the scale-2 (tax-free threshold claimed) coefficient rows are seeded. Scale 1 (no tax-free threshold) and scale 3 (foreign resident) are selectable but you must add their bracket rows before assigning employees to them.
- The PAYG coefficients are seeded from the ATO Schedule 1 values for the year noted in the data file. The ATO revises them every financial year, so you must confirm and update the table against the current NAT 1004 before each new year. The method is fixed; the rate table is yours to keep current.
- This module covers PAYG withholding and superannuation guarantee. It does not implement Single Touch Payroll reporting, payroll tax, leave loading, HELP or STSL components, Medicare levy variations, or salary sacrifice, and it does not generate an ABA bank file or post to accounting.
- Superannuation is computed as an employer contribution at the configured flat rate on ordinary time earnings. It does not model the maximum contribution base cap, choice-of-fund records, or clearing-house lodgement.
- It is a localization on the EH payroll engine, not a standalone app. It requires the EH HR Payroll engine module and Odoo hr, and inherits compute, workflow, audit and multi-company behaviour from the platform rather than owning that code.
Odoo 18 Australian payroll, PAYG withholding Odoo, ATO statement of formulas, NAT 1004 Schedule 1, superannuation guarantee Odoo, ordinary time earnings super, Australian salary structure, tax-free threshold scale, Odoo payroll localization Australia, weekly fortnightly monthly PAYG, employer superannuation contribution, Odoo 18 Community HR payroll
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