EH HR Payroll Canada
Federal and provincial income tax, CPP and EI on a Canada salary structure, computed by the EH payroll rule engine with rate tables you keep current.
Why this module
EH HR Payroll Canada
The math is tested, the figures are verifiable
Progressive marginal tax, CPP pensionable earnings and EI insurable earnings are computed by code with unit tests. The brackets, CPP and EI rates, exemption and maximums are seeded as a template you confirm against current CRA and provincial figures for the tax year.
A real salary structure, not a calculator
Federal tax, provincial tax, CPP and EI are salary rules on a Canada Standard structure. Compute a payslip and they run in sequence against gross, then a net rule subtracts total deductions. The same engine handles other EH localizations.
Edit brackets and rates from the back office
Tax brackets are editable records under the payroll menu, gated to HR admins. CPP and EI rate, basic exemption and maximums live on company settings, so a multi-company database keeps separate figures per company.
Day in the life
Running a monthly Canada pay run
You set the company CPP and EI rate, basic exemption and maximums, and confirm the federal and provincial brackets for the year. You compute an employee payslip on the Canada Standard structure. The engine annualises the period gross from the pay-period length, taxes it bracket by bracket for federal then provincial, divides back to the period, takes CPP on earnings between the basic exemption and the maximum pensionable amount, takes EI on insurable earnings up to the cap, and nets the slip. Each deduction appears as its own line so you can read the breakdown.
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.
The engine infers periods per year from the slip span (daily, weekly, fortnightly, monthly or annual). Tax, CPP and EI all annualise period gross, apply the annual rule, then divide back, so a monthly and a weekly slip on the same annual pay reach consistent figures.
CPP applies only to earnings between the basic exemption and the maximum pensionable amount. Earnings below the exemption yield zero, and the annualised base is capped at the maximum before the contribution is divided back to the period.
EI is taken on insurable earnings capped at the annual maximum insurable amount. Above the cap the contribution flattens at the ceiling rather than continuing to rise.
The top federal and provincial bracket uses a very large upper bound so any income falls within the schedule. Zero or negative gross returns zero tax, CPP and EI rather than erroring.
CPP and EI rate, exemption and maximums are read from the payslip company, so each company in a multi-company database can carry its own figures.
Recomputing a payslip rebuilds its lines from the structure rules, so re-running after a rate change replaces the old deduction lines rather than stacking new ones.
What is inside
Built to do the job, end to end.
- Canada Standard salary structure. Seeded rules for basic, gross, federal tax, provincial tax, CPP, EI and net pay, each on the correct payroll category so totals roll up correctly.
- Income tax bracket model. eh.hr.ca.tax.bracket holds federal and provincial schedules selected by jurisdiction, with an editable list view under the payroll menu gated to HR admins.
- Company CPP and EI settings. Rate, basic exemption and maximum pensionable for CPP, and rate and maximum insurable for EI, all on res.company with verify-me template defaults.
- Engine seam helpers. tax_federal, tax_provincial, cpp and ei are exposed to the rule sandbox so salary rules call them by name, keeping the structure readable.
- Role-based access. Bracket records are read, write and create for HR admins and officers and read-only for employee self-service, through the EH HR core groups.
- Engine math tests. Tests assert progressive federal, flat provincial, CPP and EI figures on controlled rate tables, plus a full payslip net, so the method is locked even though the shipped CRA figures need verifying.
Honest about the edges
What this does not do, so nothing surprises you.
- Tax brackets and the CPP and EI rates, exemption and maximums ship as a template. You must confirm every figure against the current Canada Revenue Agency and provincial rates for the relevant tax year before running real pay.
- There is one provincial schedule, federal and provincial. It is not a per-province selector. The seeded provincial brackets are one representative set you replace for the province you operate in.
- Income tax uses progressive marginal brackets only. It does not model basic personal amount credits, surtaxes, the Canada employment amount, or other federal or provincial credits.
- CPP is a single contribution on pensionable earnings. It does not model the second additional CPP tier, CPP2, or separate employer matching lines.
- The tax bracket records are not company scoped, so federal and provincial brackets are shared across companies in one database. Only the CPP and EI settings are per company.
- This module computes the employee-side deductions on the structure. It does not file with the CRA, produce T4 or ROE forms, or remit source deductions.
- Requires the EH HR payroll engine and the base HR app. It runs on Odoo 16 Community.
Canada payroll Odoo 16, Odoo Canada payroll module, CRA payroll Odoo, federal income tax brackets, provincial income tax Canada, CPP Canada Pension Plan payroll, EI Employment Insurance payroll, pensionable earnings, insurable earnings, basic exemption CPP, maximum pensionable earnings, maximum insurable earnings, marginal tax brackets, payslip deductions Canada, salary structure Canada, HR payroll Canada Community, net pay calculation, progressive tax Odoo
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.
Modules teams pair with this one.
Premium ERP Heritage modules that extend the same stack, each built to the same engineering bar.
Inbound webhook receiver for the Employment Hero people and payroll platform on Odoo 16 Community
Real-time fiscalisation of customer invoices and credit notes with the Mauritius Revenue Authority e-Invoicing (E...
The Canada country pack for the ERP Heritage Employment Hero integration
Imports finalised pay run journals from the Employment Hero payroll platform (KeyPay) into Odoo Community account...
Please log in to comment on this module