EH HR Payroll Malaysia
EPF, SOCSO, EIS and PCB (MTD) on a ready Malaysia salary structure.
Why this module
EH HR Payroll Malaysia
The four core deductions, wired
EPF, SOCSO, EIS and PCB land on every payslip from a standard Malaysia structure. EPF is a wage-banded percentage (employee 11%, employer 13% at or below RM5,000 and 12% above). SOCSO and EIS are fixed-amount band tables, not a percentage of the wage.
Band tables, not flat rates
SOCSO Category 1 and EIS follow the PERKESO Jadual Caruman as fixed RM amounts per wage band, capped at the RM6,000 ceiling. A wage above the ceiling contributes the top band amount, verified against the published top band (SOCSO RM104.15 / RM29.75, EIS RM11.90 each).
You keep the rates current
SOCSO and EIS bands, income tax brackets and EPF rates are data and company settings, editable in the UI by an HR admin. The lookup and tax methods are fixed; the seeded figures (1 October 2024 ceiling) are yours to confirm against the current PERKESO and LHDN schedules.
Day in the life
Run a Malaysian monthly payroll
Assign the Malaysia Standard structure to an employee, set the contract wage, and compute. The payslip carries Basic, Gross, EPF employee and employer, SOCSO employee and employer, EIS employee and employer, PCB and Net. EPF is a percentage of gross with the employer rate stepping at RM5,000; SOCSO and EIS pull the fixed band amount for the wage; PCB annualises the wage, deducts the RM9,000 individual relief and the EPF relief (capped at RM4,000 per year), taxes it across the LHDN brackets and divides back by the pay periods. Employer EPF is a company contribution and does not reduce net. When the statutory tables are revised, open the SOCSO, EIS or Income Tax Bracket menus and edit the figures in place, no code change.
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.
A wage over the RM6,000 SOCSO/EIS ceiling does not contribute a percentage of the higher wage. The band lookup falls through to the top band and returns its fixed amount, so RM10,000 and RM25,000 both yield the published top-band figures.
The employer EPF rate is wage-banded, not flat. At or below the RM5,000 threshold it is 13%; above it the rate steps down to 12%, so a RM6,000 wage pays employer EPF of RM720, not RM780.
A non-positive wage returns zero from every helper: the band lookup short-circuits on wage at or below zero, and EPF, SOCSO, EIS and PCB all floor at zero rather than producing a negative deduction.
When annualised income minus the standard reliefs is zero or below, PCB returns zero. The formula only taxes positive chargeable income and floors the monthly deduction at zero.
PCB credits the employee EPF as relief but caps it at RM4,000 per year inside the model, so a high earner whose annual EPF exceeds the cap still only relieves RM4,000, matching the simplified MTD formula.
PCB annualises using the engine's inferred pay periods (monthly, fortnightly, weekly) from the payslip date span, so a non-monthly period is annualised and divided back consistently rather than assuming twelve months.
Only the standard individual relief and the EPF relief are applied. Spouse, child, lifestyle and other reliefs are deliberately not modelled, so PCB is an approximation of the computerised formula, not the full MTD schedule.
What is inside
Built to do the job, end to end.
- Salary structure and rules. A Malaysia Standard structure (code MY_STANDARD) with eleven sequenced rules: Basic, Gross, EPF employee and employer, SOCSO employee and employer, EIS employee and employer, PCB and Net. Deductions reduce net; employer EPF is a company contribution that does not.
- Statutory data models. Three editable models: SOCSO Category 1 bands, EIS (SIP) bands and LHDN resident income tax brackets, each seeded from the current schedule with wage bounds, fixed amounts or marginal rates and a name field.
- Company EPF settings. Per-company EPF fields on res.company: employee rate (11%), employer low rate (13%), employer high rate (12%) and the RM5,000 wage threshold, so each company can hold its own EPF configuration.
- Engine helpers. The localization exposes epf_employee, epf_employer, socso_employee, socso_employer, eis_employee, eis_employer and mtd as safe callables to the salary-rule sandbox, computed against the seeded tables and company settings.
- Admin menus and access. SOCSO Bands, EIS Bands and Income Tax Brackets menus under Payroll, with list views editable in place. Access is gated: HR admin full control, HR officer read and edit, self-service read only.
- Tests against published figures. A test suite pins real PERKESO and LHDN figures: top-band SOCSO and EIS amounts, the RM5,000 band, cap-above-ceiling behaviour, EPF rate step-down on a computed payslip, progressive tax on chargeable income and a full structure net check.
Honest about the edges
What this does not do, so nothing surprises you.
- Built on the EH payroll engine (depends on eh_hr_payroll); it is not a standalone payroll and does not run on Odoo's Enterprise payroll.
- PCB (MTD) is the simplified computerised formula (annualise, individual relief plus EPF relief, progressive brackets), not the full official MTD schedule. Only the standard individual relief and EPF relief are applied; spouse, child, lifestyle and other reliefs are out of scope.
- Seeded SOCSO, EIS and tax figures reflect the schedule effective 1 October 2024 (RM6,000 ceiling). Statutory rates are revised, so you must confirm the tables against the current PERKESO Jadual Caruman and LHDN schedule before production use.
- SOCSO is modelled as Category 1 (employees below age 60, both schemes). Category 2 (invalidity only, age 60 and over) is not seeded as a separate table.
- SOCSO and EIS band tables and tax brackets are global data, not company-scoped; only the EPF rates and threshold are per-company. A multi-company database shares one set of bands and brackets.
- The module seeds the structure, tables and rules but does not generate statutory submission files or government forms (for example CP39, Form E or PERKESO returns).
Malaysia payroll Odoo, EPF KWSP Odoo, SOCSO PERKESO payroll, EIS SIP contribution, PCB MTD Odoo, Potongan Cukai Bulanan, LHDN income tax Odoo, Jadual Caruman band table, Malaysia salary structure, Odoo 19 Community payroll, Malaysia statutory deductions, RM6000 wage ceiling
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.
A reusable two way synchronisation engine that keeps Odoo in step with the people and payroll platform, idempoten...
The Australia country pack for the ERP Heritage Employment Hero integration
Sync certifications, qualifications and employee document metadata from the Employment Hero people platform into...
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Employees (hr)
• Discuss (mail) |
| Community Apps Dependencies | Show |
| Lines of code | 3521 |
| Technical Name |
eh_hr_payroll_my |
| License | LGPL-3 |
| Website | https://www.erpheritage.com.au/ |
Please log in to comment on this module