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 - Singapore v 19.0
  4. Sales Conditions FAQ

EH HR Payroll - Singapore

by ERP Heritage https://www.erpheritage.com.au/
Odoo
v 19.0 Third Party 11
Download for v 19.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!
Versions 16.0 17.0 18.0 19.0
  • Description
  • Manifest
ERP Heritage · HR Platform
ERP Heritage · Singapore Payroll

Singapore CPF Payroll for Odoo

Age-banded CPF, Ordinary and Additional Wage ceilings, on the EH payroll engine.

Free · LGPL-3Free · LGPL-3Odoo 19 · Communityv1.0.0
CPF employee + employer
5 age bands
OW + AW ceilings
SG_STANDARD structure
Cited CPF Board data

Why this module

Singapore CPF Payroll for Odoo

AGE BANDS

CPF is not one flat rate

Employee and employer percentages step down with age. This pack seeds all five published bands (55 and below, above 55 to 60, above 60 to 65, above 65 to 70, above 70) and picks the band from the employee age at the period end, so a senior worker is contributed correctly without manual rate edits.

CEILINGS

OW and AW caps, done right

Contributions apply to the Ordinary Wage capped at the monthly ceiling plus the Additional Wage capped at the annual ceiling, less the year Ordinary Wage already subject to CPF. The math that trips up spreadsheets is in the engine, not in your head.

ENGINE

Reads like your other slips

CPF is exposed to salary rules as cpf_employee() and cpf_employer() helpers on the same EH payroll engine, so the SG slip computes, accumulates categories, and nets the same way every other country pack on the engine does.

Day in the life

Run a January 2026 SG payroll

You assign the Singapore - Standard structure to your employees and compute the run. For each payslip the engine reads the employee age at the period end, resolves the CPF rate band, caps the Ordinary Wage at the monthly ceiling and the bonus at the remaining Additional Wage room, then posts CPF_EE as a deduction and CPF_ER as an employer cost. Take-home reflects only the employee share. A staffer turning 61 lands on the lower band automatically. A $10,000 month is capped to the $8,000 Ordinary Wage ceiling without you touching a rate.

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.

OW ceiling

Ordinary Wage above the monthly ceiling ($8,000 from 1 Jan 2026) is capped before CPF is applied, so a high earner is contributed on the ceiling, not on full salary.

AW ceiling

A bonus is treated as Additional Wage and capped at the annual ceiling ($102,000) less the year Ordinary Wage already subject to CPF, projected as twelve months of the capped Ordinary Wage when no actual annual figure is supplied.

Age at period end

Age is computed from the birthday at the pay period end (date_to), including the month and day comparison, so a contribution rate change in the band that month is applied on the correct side of the birthday.

Missing birthday

When an employee has no birthday on file, the engine falls back to the 55-and-below band rather than failing the run, so payroll still computes and the gap is visible to correct.

Restricted field read

Birthday is a group-restricted HR field. It is read with sudo only to pick the CPF age band and is never passed into the salary-rule sandbox, so an officer running payroll does not need to see dates of birth.

No band table

If the cited rate table is cleared, computation falls back to the company flat employee and employer percentages on the Ordinary Wage ceiling, so a misconfiguration degrades to a defined number instead of zero or an error.

Per company ceilings

The Ordinary Wage and Additional Wage ceilings and the fallback rates live on res.company, so a multi-company database can hold different settings per entity.

What is inside

Built to do the job, end to end.

  • CPF rate table (eh.hr.cpf.rate). Five age bands with employee and employer percentages, ordered by age, seeded as cited noupdate data from the CPF Board contribution table effective 1 January 2026. A _rate_for_age helper resolves the band covering an age, with the youngest band as a safe default.
  • compute_cpf and the ceilings. A single method caps the Ordinary Wage at the monthly ceiling, caps the Additional Wage at the annual ceiling remaining for the year, sums the contributable wage, and rounds the employee and employer amounts to two decimals at the band rate.
  • Rule helpers on the payslip. The SG payslip extension adds cpf_employee() and cpf_employer() to the rule helper set, resolves the age band once per slip, and routes either to the band calculation or to the company flat-rate fallback.
  • Singapore - Standard structure. A complete SG_STANDARD salary structure with BASIC, GROSS, CPF employee deduction, CPF employer cost, and NET rules, wired to the standard payroll categories so the slip computes end to end out of the box.
  • Company settings (res.company). Monthly Ordinary Wage ceiling, annual Additional Wage ceiling, and fallback employee and employer rates, each defaulted to the cited figures and documented to verify against the current CPF Board table each year.
  • Tests against published figures. Four tests assert real CPF Board numbers: a below-ceiling slip, an Ordinary-Wage-ceiling cap, a senior age-band slip, and an Additional Wage ceiling case with a bonus, not rates the test invents.

Honest about the edges

What this does not do, so nothing surprises you.

  • No monthly income-tax (PAYE) withholding. Singapore residents file income tax annually, so it is not a payroll deduction. This pack covers CPF, which is the monthly obligation.
  • CPF rates and the wage ceilings are seeded as cited data and company settings. The CPF Board revises them (senior-worker rates step up over several years), so verify both against the current table each year.
  • Rates are seeded for Singapore Citizens and Singapore Permanent Residents from their third year, on wages above $750 per month. First and second year SPR graduated rates and the lower-wage tapered bands are not separately modelled.
  • The Additional Wage ceiling is applied per payslip using a twelve-month projection of the capped Ordinary Wage unless a real year-to-date Ordinary Wage figure is supplied. It does not by itself reconcile across a full year of historical slips.
  • This is a country pack. It requires and runs on the EH payroll engine (eh_hr_payroll), which provides the salary-rule evaluation, category accumulation, and slip computation.
  • No CPF e-submission, CPF EZPay file, or IRAS reporting export is included. The pack computes contributions; it does not file them.
  • Self-Help Group and SDL contributions are not included.
Search

Singapore CPF payroll Odoo, CPF contribution Odoo 19, Central Provident Fund Odoo, Singapore salary structure Odoo, CPF employee employer rate, Ordinary Wage ceiling CPF, Additional Wage ceiling CPF, Singapore HR payroll Community, CPF age band rates, Odoo 19 Singapore payroll free

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 69
Ireland - Payroll Account

Post Irish payslips to the general ledger on the Irish chart of accounts

USD 99
Project Gantt

Interactive drag and drop Gantt planner for Odoo 19 Community project tasks with a deterministic server side sche...

USD 59
Employment Hero Connector

Employment Hero Connector is the integration core of the ERP Heritage Employment Hero suite, providing per compan...

USD 9
Employment Hero UK

The United Kingdom country pack for the ERP Heritage Employment Hero integration

USD 59
Employment Hero HR

Sync Employment Hero employees, departments and payroll bank details into standard Odoo Community HR over the pla...

USD 19
Employment Hero Webhook

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

ERP Heritage

v1.0.0 · LGPL-3 · Odoo 19 Community

Developed by Odoo Implementation Australia • LinkedIn

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 2438
Technical Name eh_hr_payroll_sg
LicenseLGPL-3
Websitehttps://www.erpheritage.com.au/

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