Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Approvals
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Property Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
      • Get a Tailored Demo
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +32 2 290 34 90
    • Get a Tailored Demo
  • Pricing
  • Help
  1. APPS
  2. Employees
  3. EH HR Payroll - Canada v 17.0
  4. Sales Conditions FAQ

EH HR Payroll - Canada

by ERP Heritage https://www.erpheritage.com.au/
Odoo
v 17.0 Third Party 10
Download for v 17.0 Deploy on Odoo.sh
Apps purchases are linked to your Odoo account, please sign in or sign up first.
Versions 16.0 17.0 18.0 19.0
You bought this module and need support? Click here!
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Employees (hr)
• Discuss (mail)
Community Apps Dependencies Show
• EH HR Payroll
• EH HR Compatibility
• EH HR Platform Core
• EH HR Workflow Engine
Lines of code 2503
Technical Name eh_hr_payroll_ca
LicenseLGPL-3
Websitehttps://www.erpheritage.com.au/
Versions 16.0 17.0 18.0 19.0
ERP Heritage · HR Platform
Canada payroll on the EH engine

EH HR Payroll Canada

Federal and provincial income tax, CPP and EI on one auditable salary structure you control.

Free · LGPL-3Odoo 17 CommunityLGPL-3v1.0.0
Federal income tax
Provincial income tax
CPP on pensionable earnings
EI on insurable earnings
Progressive marginal brackets

Why this module

EH HR Payroll Canada

Honest method

The math is fixed and tested, the rates are yours

Federal and provincial income tax run as progressive marginal brackets: income is annualised, taxed band by band, then divided back to the pay period. CPP and EI annualise period earnings against the exemption and maximums the same way. The engine math is covered by tests with controlled brackets so you can trust the computation while you keep the figures current.

You stay in control

Brackets are data, rates are company settings

Federal and provincial bands live on eh.hr.ca.tax.bracket with an editable list and a Payroll menu entry, gated to HR admins. CPP and EI rate, basic exemption and the pensionable and insurable maximums are fields on the company. When the CRA revises a number you edit a row or a setting, no code change, no redeploy.

Clean wiring

One structure, deductions that add up

The seeded Canada - Standard structure carries Basic, Gross, Federal tax, Provincial tax, CPP, EI and Net rules in sequence. Each tax helper is injected into the engine's closed rule sandbox, so formulas read tax_federal, tax_provincial, cpp and ei without ever touching a raw recordset. Net is gross less the deduction category, and the tests assert it ties out.

Day in the life

Run a Canada payslip

Install alongside eh_hr_payroll, open the company and confirm the CPP rate, basic exemption and maximum pensionable, plus the EI rate and maximum insurable, against the current CRA figures for the year. Open Tax Brackets (CA) and set the federal bands and the bands for the province you operate in, replacing the representative provincial schedule that ships. Assign the Canada - Standard structure to an employee, create a payslip for the period and compute: the slip annualises gross from the period length, applies the marginal federal and provincial tax, takes CPP on pensionable earnings and EI on insurable earnings, then nets it. Every line is on the slip for review before you confirm.

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.

Pay frequency

Helpers annualise using pay periods inferred from the period span (52 weekly, 26 fortnightly, 12 monthly), and accept an explicit periods override, so a weekly and a monthly slip annualise to the same marginal rate correctly.

Zero and negative gross

compute_annual_tax, compute_period_tax, cpp and ei all short-circuit to 0.0 when gross is not positive or periods is missing, so an empty or nil-wage slip produces clean zero lines instead of errors.

CPP exemption and cap

Pensionable earnings are clamped: annual earnings are capped at the maximum pensionable, the basic exemption is removed, and the result floored at zero, so earnings below the exemption yield no CPP and earnings above the cap stop contributing.

EI insurable cap

Insurable earnings are capped at the maximum insurable before the rate applies, so high earners stop accruing EI at the ceiling rather than paying on the full wage.

Top bracket

The marginal loop walks bands in ascending order and stops once annual income is exhausted, with the top band using a very large upper bound, so any income level is taxed without a missing-bracket gap.

Multi-company

CPP and EI figures are read from the payslip's own company_id, so each company in the database carries its own rates, exemption and maximums.

Sandboxed formulas

Tax helpers are injected into the engine's closed rule namespace where payslip and employee are read-only proxies, so a salary rule can call the tax functions but cannot reach or mutate a raw recordset.

What is inside

Built to do the job, end to end.

  • eh.hr.ca.tax.bracket. The federal and provincial schedules as data. Each row is a jurisdiction, an annual upper bound and a marginal rate. compute_annual_tax taxes income band by band for one jurisdiction; compute_period_tax annualises a period amount, taxes it and divides back. Editable list view, ordered by jurisdiction and upper bound, on the Payroll menu for HR admins.
  • Rate helpers on the payslip. payslip_ca.py extends _get_rule_helpers to add tax_federal, tax_provincial, cpp and ei to the rule sandbox. CPP and EI read the company CPP rate, basic exemption and maximum pensionable, and the EI rate and maximum insurable, then annualise, clamp and divide back to the period.
  • Company settings. res.company gains CPP rate, CPP basic exemption, CPP maximum pensionable, EI rate and EI maximum insurable, each with a template default that you must verify against the current CRA figures for the tax year.
  • Seeded structure and brackets. ca_structure.xml seeds the Canada - Standard structure with Basic, Gross, Federal tax, Provincial tax, CPP, EI and Net rules. ca_brackets.xml seeds template federal bands and one representative provincial schedule to replace for your province. Both are noupdate so your edits survive upgrades.
  • Tests. test_ca_payroll.py sets controlled brackets and rates, then asserts the federal marginal split, the provincial flat case, and a full monthly payslip where federal tax, provincial tax, CPP, EI, total deductions and net all tie out. The suite proves the engine math, not the template CRA figures.

Honest about the edges

What this does not do, so nothing surprises you.

  • Tax and contribution figures are templates. You must verify the federal and provincial brackets and the CPP and EI rates, exemption and maximums against the current Canada Revenue Agency and provincial rates for the tax year before running real pay.
  • One provincial schedule is active at a time. The module holds a single provincial bracket set, so it does not select a province per employee or run several provinces side by side in one database.
  • Income tax only models marginal brackets. It does not apply TD1 personal amounts, non-refundable tax credits, surtaxes or other province-specific adjustments.
  • CPP and EI are the base employee contributions only. CPP2 additional contributions, QPP, QPIP and employer-share remittance reporting are not modelled.
  • No CRA filing, remittance or year-end forms. There is no T4, T4A, ROE, PD7A or electronic CRA submission; this is a payslip computation localization.
  • Depends on eh_hr_payroll and the EH HR platform groups. It runs on the EH salary-rule engine, not on the stock Odoo or Enterprise payroll app.
  • Built and tested for Odoo 17 Community. Other versions are not in scope for this package.
Search

Canada payroll Odoo 17, Odoo Canada CRA payroll, federal income tax Odoo payroll, provincial income tax payroll, CPP contribution Odoo, EI premium Odoo payroll, pensionable earnings calculation, insurable earnings cap, progressive marginal tax brackets, Odoo HR payroll localization, salary structure Canada, payslip computation Odoo 17 Community, editable tax bracket tables, per company payroll rates, Canada salary rule engine

Work with ERP Heritage

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.

Build and tailor
Odoo Implementation, Customization and Development, scoped to your workflow.
Connect and move
Odoo Integration and Migration across systems and Odoo versions.
Run and support
Odoo Support and Training so your team stays productive after go live.
Plan and advise
Odoo Consultation and ERP Consulting, from discovery to roadmap.

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.

العربية简体中文繁體中文NederlandsFrançaisDeutschहिन्दीBahasa IndonesiaItaliano日本語한국어PolskiPortuguês (Brasil)РусскийEspañolSvenskaไทยTürkçeTiếng Việt
More from ERP Heritage

Modules teams pair with this one.

Premium ERP Heritage modules that extend the same stack, each built to the same engineering bar.

USD 19
Employment Hero Webhook

Inbound webhook receiver for the Employment Hero people and payroll platform on Odoo 17 Community

USD 369
Mauritius e-Invoicing

Real-time fiscalisation of customer invoices and credit notes with the Mauritius Revenue Authority e-Invoicing (E...

USD 49
User Access Studio

A user driven access overlay for Odoo 17

USD 9
Employment Hero Canada

The Canada country pack for the ERP Heritage Employment Hero integration

USD 39
Employment Hero Documents

Sync Employment Hero documents into the Odoo Documents app

USD 59
Employment Hero Payroll Bridge

Imports finalised pay run journals from the Employment Hero payroll platform (KeyPay) into Odoo Community account...

ERP Heritage

v1.0.0 · LGPL-3 · Odoo 17 Community

Developed by Odoo Implementation Australia • LinkedIn

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author, please use the developer contact information. They can usually be found in the description.
Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with