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 - United Kingdom v 18.0
  4. Sales Conditions FAQ

EH HR Payroll - United Kingdom

by ERP Heritage https://www.erpheritage.com.au/
Odoo
v 18.0 Third Party 9
Download for v 18.0 Deploy on Odoo.sh
Apps purchases are linked to your Odoo account, please sign in or sign up first.
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 2506
Technical Name eh_hr_payroll_uk
LicenseLGPL-3
Websitehttps://www.erpheritage.com.au/
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 2506
Technical Name eh_hr_payroll_uk
LicenseLGPL-3
Websitehttps://www.erpheritage.com.au/
Versions 16.0 17.0 18.0 19.0
ERP Heritage · HR Platform
UK payroll on the EH salary-rule engine

EH HR Payroll United Kingdom

A ready UK salary structure that computes PAYE on a personal allowance and progressive tax bands, plus per-period employee and employer National Insurance by category letter, all from editable rate tables you keep current with HMRC.

Free · LGPL-3Odoo 18 CommunityPAYE personal allowance and bandsv1.0.0
PAYE on a tax-free personal allowance
Progressive 20 / 40 / 45 percent tax bands
Employee and employer Class 1 National Insurance
NI category letters A, B, C, H, M
Per-period, non-cumulative NI thresholds

Why this module

EH HR Payroll United Kingdom

Method fixed, rates yours

The hard part is the calculation, not the numbers

The PAYE band loop and the per-period NI math are the fixed engineering. The tax bands, NI category rates, personal allowance, and annual NI thresholds are plain data on records and company settings, so when HMRC revises the tax year you edit rows, not code.

Honest per-period model

NI computed per period, the way HMRC tables work

National Insurance is per period and non-cumulative: the annual primary, upper earnings, and secondary thresholds are divided by the periods per year, and only the final contribution is rounded. This matches the HMRC table method where each pay period stands on its own.

Built on the platform

Workflow, audit, and scoping come from the engine

This module is a calculation layer. It adds three safe helpers to the rule sandbox and a seven-rule structure; the payslip workflow, the append-only audit log, and strict multi-company scoping are inherited from the shared EH HR platform, not reinvented here.

Day in the life

Run a UK monthly payroll

Assign the United Kingdom Standard structure to an employee, set their NI category letter (A by default), and compute the payslip. PAYE annualises the month, taxes it across the bands above the personal allowance, and divides back. Employee NI applies the category main rate between the per-period primary threshold and the upper earnings limit, then the upper rate above it. Employer NI applies above the per-period secondary threshold. Net is gross less PAYE and employee NI; employer NI is shown employer-side and does not reduce take-home. Before each new tax year, open Tax Bands (UK) and NI Categories (UK) under Payroll and reconcile every figure against the current HMRC rates and thresholds.

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.

Unknown NI letter

The category resolver falls back to the standard rate letter A when an employee's NI letter is empty or unrecognised, so a payslip never computes against a missing rate set.

No category seeded

If the NI category table is empty, the payslip drops back to per-company fallback NI rate fields rather than zeroing the contribution, keeping the calculation defined.

Income below allowance

When annual gross is at or below the personal allowance, taxable income floors at zero and PAYE returns exactly zero rather than a negative tax.

Earnings below thresholds

Employee NI is zero below the per-period primary threshold and the upper-rate slice only applies once earnings pass the upper earnings limit; employer NI is zero below the per-period secondary threshold.

Category C and M asymmetry

Over State Pension age (C) zeroes employee NI while the employer still pays at 15 percent; under 21 (M) charges the employee the standard rate while the employer pays nothing. Both are seeded and tested.

Period inference

Periods per year are inferred from the slip date span (weekly, fortnightly, monthly, annual), so the same annual thresholds and bands scale correctly to whatever cadence the period represents.

Rounding discipline

NI thresholds are scaled with no intermediate rounding and only the final contribution is rounded to two decimals, so per-period figures match the statutory worked examples.

Admin-gated rate tables

The tax band and NI category lists are editable but gated to the HR admin group, with officers read and create and self-service read only, so rate changes stay with authorised staff.

What is inside

Built to do the job, end to end.

  • PAYE on allowance and bands. eh.hr.uk.tax.band holds the taxable-income ceilings and rates. compute_annual_paye taxes annual gross less the personal allowance slice by slice; compute_period_paye annualises the period, taxes it, and divides back rounded to two decimals. Seeded with basic 20 percent to GBP 37,700 taxable, higher 40 percent, additional 45 percent.
  • National Insurance by category letter. eh.hr.ni.category carries the three published percentages per letter: employee main rate, employee rate above the upper earnings limit, and employer rate. Letters A, B, C, H, and M are seeded with the 2025/26 values and resolved per payslip from the employee's NI category field.
  • Company-level thresholds and allowance. res.company carries the annual personal allowance and the annual NI primary, upper earnings, and secondary thresholds, plus fallback NI rate fields. Per-period thresholds are these annual figures divided by the periods per year.
  • Three rule helpers on the engine seam. The payslip overrides _get_rule_helpers to expose paye_uk, ni_employee, and ni_employer to UK salary rules. Each is a safe callable that reads the resolved category and company settings and returns a per-period amount.
  • UK_STANDARD salary structure. A seven-rule structure wires basic, gross, PAYE, employee NI, employer NI, and net through the engine's category totals, so net is gross minus deductions and employer NI is shown employer-side.
  • Verified against statutory examples. The test suite asserts real 2025/26 figures: PAYE on GBP 60,000, monthly NI for categories A, C, and M, and a full payslip where net equals gross less PAYE and employee NI. The numbers are derived from the seeded HMRC data, not set by the tests.

Honest about the edges

What this does not do, so nothing surprises you.

  • This is a calculation layer for Odoo 18 Community and requires the EH HR payroll engine and Odoo hr. It is not a standalone payroll application.
  • The seeded figures are the published 2025/26 rates and thresholds. HMRC revises them each tax year, so you must verify every band, NI rate, allowance, and threshold against the current HMRC tables before each new year. The method is fixed; the numbers are yours to keep current.
  • National Insurance is per-period and non-cumulative (the HMRC table method). It does not run a cumulative year-to-date NI calculation or director's annual-earnings-period method.
  • PAYE here is the band calculation on a personal allowance. It does not apply individual tax codes, cumulative month-by-month tax-code mechanics, emergency codes, or the GBP 100,000 personal-allowance taper.
  • It does not file with HMRC. There is no Real Time Information, no Full Payment Submission or Employer Payment Summary, and no P45, P60, or P11D output.
  • It does not cover pension auto-enrolment, student loan deductions, statutory sick or maternity pay, the employment allowance, or salary-sacrifice handling.
  • Bands and NI rates apply England, Wales, and Northern Ireland figures by default and do not model separate Scottish or Welsh income tax bands.
  • It computes and records payslips but does not post them to accounting; journal posting is a separate concern.
  • The wage fed to rules defaults to the payslip's own basic wage for the period; reading a dated contract is an engine override point, not behaviour added here.
Search

UK payroll Odoo 18, PAYE Odoo, National Insurance Odoo payroll, NI category letters, UK income tax bands payroll, personal allowance PAYE, employer National Insurance, employee Class 1 NIC, HMRC rates and thresholds 2025 2026, UK salary structure Odoo, progressive tax bands payroll, per period National Insurance, Odoo 18 community payroll localization, ERP Heritage payroll

ERP Heritage

Production-grade Odoo accounting, built to an engineering bar and documented honestly. Support: info@erpheritage.com.au

v1.0.0 · LGPL-3 · Odoo 18 Community

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