Statutory Contributions — Detailed Requirements
The deep specification for Malaysia's mandatory wage contributions as computed by the pay run: EPF/KWSP retirement fund, SOCSO/PERKESO social security, EIS/SIP employment insurance, and the employer-only HRDF/HRD Corp training levy. Rates are fixed by statute and applied from a built-in legal schedule — an operator can choose which schemes apply to an employee (via contribution groups) but cannot override the scheduled rates.
EPF / KWSP
Retirement savings — employee + employer shares, age- and citizenship-dependent, no wage ceiling.
SOCSO / PERKESO
Employment injury & invalidity — two categories by age, RM6,000 wage ceiling.
EIS / SIP
Employment insurance — 0.2% + 0.2% for ages 18–59, RM6,000 wage ceiling.
HRDF levy
Employer-only training levy on prorated basic + fixed allowances, configurable rate.
Statutory · Detailed
How contributions resolve STA-R
An employee's statutory treatment is driven entirely by the contribution group they are assigned to. Each group lists the statutory types that apply; when the employee is added to a pay run, one contribution row is written per type with the employee and employer amounts already computed. The statutory types themselves are seeded master data — epf, socso, eis, pcb — and the schedule matches on these keys case-insensitively.
- An employee with no contribution group produces no contribution rows (and no statutory deductions).
- Contribution rows are deleted when the employee is removed from the run and recreated on resync.
- Both a prorated amount (used for net pay and the journal) and a full-month amount (used ×12 for the EPF tax relief) are stored per row.
- An allowance flagged as EPF-able joins the EPF base; an untagged catalogue leaves the default base in force.
- A mid-month joiner's contribution base is prorated by the same worked-days factor as their salary.
- Configuring EPF as a custom percentage has no effect — the legal schedule computes the amounts.
- Only non-scheduled (custom) contribution types honour the group's
PERCENTAGE/FIXEDconfiguration (see STA-C).
Statutory · Detailed
EPF / KWSP STA-EPF
The Employees Provident Fund — the retirement savings scheme. Rates depend on age at pay date, citizenship, and monthly wage. EPF has no wage ceiling, and each share is rounded up to the next whole ringgit.
Rate schedule
| Case | Employee | Employer |
|---|---|---|
| Citizen / PR, under 60, wage ≤ RM5,000 | 11% | 13% |
| Citizen / PR, under 60, wage > RM5,000 | 11% | 12% |
| Citizen / PR, age ≥ 60 | 0% | 4% |
| Non-citizen foreign worker (any age) | 2% | 2% |
- Wage RM5,000.00, citizen under 60 → employee RM550, employer RM650 (13% band boundary is inclusive).
- Wage RM5,000.01 → employer share drops to the 12% band.
- A RM20,000 wage contributes on the full RM20,000 (no RM6,000 cap).
- Fractional shares round up: RM550.01 → RM551.
- Non-citizen, pay date 2025-09-30 → EPF 0/0. Pay date 2025-10-01 → 2%/2%.
- An employee with an empty or unknown nationality is treated as Malaysian (the foreigner rule never auto-applies to incomplete records).
Statutory · Detailed
SOCSO / PERKESO STA-SOC
Social security — employment injury and invalidity coverage. The contribution wage is capped at RM6,000; amounts round to the nearest 5 sen.
Rate schedule
| Category | Condition | Employer | Employee |
|---|---|---|---|
| Category 1 — injury + invalidity | age < 60 | 1.75% | 0.5% |
| Category 2 — injury only | age ≥ 60 | 1.25% | 0% |
min(wage, RM6,000) per the category table above, rounding each share to the nearest 5 sen.- Wage RM8,000 contributes as RM6,000 (ceiling).
- An employee aged 60+ pays 0% while the employer still pays 1.25% (Category 2).
- Rounding:
round(x × 20) / 20— nearest 5 sen. - A missing date of birth is treated as under 60 (Category 1 applies).
Statutory · Detailed
EIS / SIP STA-EIS
The Employment Insurance System — retrenchment protection. Same RM6,000 ceiling and 5-sen rounding as SOCSO; applies only to employees aged 18–59.
min(wage, RM6,000) for employees aged 18–59, and zero outside that age range, rounding to the nearest 5 sen.- Age 17 or 60+ → EIS 0/0.
- Missing age is treated as within 18–59 (EIS still charges).
- Wage RM6,000+ contributes RM12.00 / RM12.00.
Statutory · Detailed
HRDF / HRD Corp levy STA-HRD
The employer-only human-resource development levy. It never reduces employee pay — it is an employer cost computed at calculate time and reported on the run, but excluded from the salary journal.
round(base × rate%) per Malaysian employee, where base is the prorated basic salary plus fixed allowances — excluding overtime, bonus/commission, unpaid-leave and absence adjustments.- HRDF disabled → levy 0 for everyone; enabled → levy only for Malaysian employees.
- The rate is configurable (HRD Corp mandatory registration 1%; optional-category employers 0.5%).
- The levy joins
employerCostand the run'stotalHrdfLevy, but never the employee's deductions and never the salary journal.
Statutory · Detailed
Custom (non-scheduled) contributions STA-C
Contribution groups may also carry non-statutory types (e.g. a private pension top-up). Only these honour the group's configured rates.
PERCENTAGE → base × (mandatory + voluntary)%; FIXED → the configured flat amount (÷12 when the type's frequency is annual); TABLE → the statutory schedule.- Each side (employee / employer) is configured independently with mandatory and voluntary components.
- Frequency
MONTHLYapplies every run;ANNUALLYis smoothed ÷12. - An unknown statutory key routed to the schedule contributes zero (no error).
Statutory · Detailed
Business rules
- Two rounding regimes. EPF rounds each share up to the next ringgit; SOCSO/EIS round to the nearest 5 sen. They are not interchangeable.
- Age is evaluated at the run's pay date, not at calculation or approval time.
- Wage ceiling RM6,000 applies to SOCSO and EIS only (in force since 1 Oct 2024); EPF has none.
- Safe defaults for missing data: unknown nationality → Malaysian; missing date of birth → under 60 and within EIS age range.
- Proration twin amounts. Every contribution stores the prorated amount (net pay + journal) and the unprorated full-month amount (annualised ×12 for the PCB EPF relief). They must not be conflated.
- Employer-side amounts never reduce net pay — they only accumulate into
employerCostand the run's employer totals.
Statutory · Detailed