ZyncDocs · MY-Payroll
Must Should Could
Functional Requirements

MY-Payroll — Malaysian Payroll

The complete requirements capture of the Malaysian payroll as implemented in the Zerp ERP backend (zerp-be, dev-my branch): a monthly pay-run engine with the full Malaysian statutory stack — EPF/KWSP, SOCSO/PERKESO, EIS/SIP, HRDF and PCB/MTD income tax — plus GL journal posting, payslips, and the annual EA Form (CP8A) and Borang E (CP8D). Each module below summarises the capability and links to its detailed, testable requirements; the Processes tab walks the end-to-end operating cycle.

7
Modules
57
Requirements
6
Process flows
5
Statutory schemes

Configure

Item catalogue, contribution groups, tax brackets, statutory identity, GL accounts.

Enrol

Employee tax profiles, standing item assignments, statutory numbers.

Run

Snapshot inputs → calculate → approve → post journal → pay.

Comply

Payslips, EA Forms, Borang E + CP8D; statutory amounts for remittance.

Foundation

Setup & configuration CFG

Everything configured before the first run: what pay components exist, which statutory schemes apply to whom, the year's tax parameters, the employer's agency registrations, and the ledger accounts.

Detailed requirements →
Actors: HR Admin, Finance AdminRequirements: 9

Capabilities & scope

  • Payroll item catalogue — allowance / deduction / overtime / tax-relief definitions carrying taxability, statutory bases, EA-form category, GL account, frequency, and the basic-salary and bonus flags.
  • Contribution groups — reusable statutory policies mapping schemes to who-pays and GL payable accounts.
  • Per-year tax brackets — PCB bands, personal reliefs and statutory relief caps, auto-seeded from LHDN defaults.
  • Company statutory identity — one employer registration number per scheme (EPF / SOCSO / EIS / LHDN).
  • Company config — payroll GL accounts and the HRDF toggle/rate; spreadsheet import for catalogue, groups and assignments.

Key requirements

IDRequirementPriority
FR-CFG-I01Maintain the payroll item catalogue with full behavioural flags; no items are seeded — the catalogue is tenant-defined.Must
FR-CFG-I02Enforce a single basic-salary item per company.Must
FR-CFG-G01Define contribution groups listing statutory types with who-pays and per-scheme GL accounts.Must
FR-CFG-T01/T02Maintain per-year tax brackets; auto-seed current + next year from LHDN defaults at boot.Must
FR-CFG-S01Hold one employer registration number per statutory scheme, upserted via a single form.Must

Statuses & key values

Item types: ALLOWANCE / DEDUCTION / OVERTIME / TAX_RELIEF Frequency: MONTHLY / ANNUALLY / ONE_OFF EA categories: B1–B5, C, D_ZAKAT, D_CP38, EXEMPT

Foundation

Employee payroll profile EMP

The payroll-relevant employee data: tax profile, nationality and birth date (which parameterise every statutory rule), the standing item assignments that define pay, and per-employee statutory numbers.

Detailed requirements →
Actors: HR Admin, HR StaffRequirements: 7

Capabilities & scope

  • Tax profile on the employee master — residency, tax category, children, manual relief top-up.
  • Standing item assignments — catalogue item + amount + effective date window; no-overlap rule; annual ÷12 smoothing.
  • Per-employee statutory registration numbers for payslips and annual forms.
  • Spreadsheet import of assignments resolving employees by reference/PIN and items by name.

Key requirements

IDRequirementPriority
FR-EMP-P01Hold the tax/statutory profile on the employee master; payroll reads it without modifying it.Must
FR-EMP-A01Assignments are active for a run when the pay date falls inside their effective window.Must
FR-EMP-A02No overlapping active assignments of the same item per employee.Must
FR-EMP-A03Annual amounts smooth ÷12 — except additional remuneration, which pays in full.Must

Statuses & key values

Assignment: ACTIVE / INACTIVE Residency: RESIDENT / NON_RESIDENT Tax category: SINGLE / MARRIED_SPOUSE_WORKING / MARRIED_SPOUSE_NOT_WORKING

Engine

Pay run lifecycle RUN

The monthly run: create → add employees (snapshotting overtime, unpaid leave, absence and contributions) → calculate → approve → post journal → mark paid, with reject/cancel paths and calendar-day proration for partial months.

Detailed requirements →
Actors: HR Admin (preparer + approver)Requirements: 9

Capabilities & scope

  • Five-state lifecycle with status-driven editability; DRAFT is the only editable state.
  • Period-input snapshotting from approved leave, timesheets and attendance; resync + manual overrides.
  • Deterministic calculation order — prorate → gross → statutory → PCB → net → employer cost — written atomically.
  • Live estimates on uncalculated lines; in-app notifications on approve / reject / paid.

Key requirements

IDRequirementPriority
FR-RUN-L01Enforce the status machine; every transition audited.Must
FR-RUN-E01Snapshot unpaid leave, overtime, absence and contributions per employee on add/resync.Must
FR-RUN-P01Prorate salary, allowances, deductions, statutory base and HRDF base by calendar-day fraction for mid-month joiners/leavers.Must
FR-RUN-X01Calculate in the defined order and write all lines + roll-ups in one transaction; net pay floors at zero.Must
FR-RUN-W02Maker/checker separation (today the same user can calculate and approve).Could

Statuses & key values

Run: DRAFT / PENDING_APPROVAL / APPROVED / PAID / CANCELLED net = max(0, gross − deductions − statutory − tax)

Engine

Statutory contributions STA

Malaysia's mandatory wage contributions, computed from a built-in legal schedule: EPF (no ceiling, round up to the ringgit), SOCSO and EIS (RM6,000 ceiling, 5-sen rounding), and the employer-only HRDF levy.

Detailed requirements →
Actors: System (computed)Requirements: 9

Capabilities & scope

  • EPF/KWSP: 11% + 13/12% under 60; 0% + 4% at 60+; foreign workers 2%/2% from 1 Oct 2025.
  • SOCSO/PERKESO: Category 1 (1.75%/0.5%) under 60, Category 2 (1.25%/0%) at 60+; EIS 0.2%/0.2% ages 18–59.
  • HRDF: configurable employer levy on prorated basic + fixed allowances, Malaysian employees only.
  • Custom (non-scheduled) contributions honour percentage/fixed group configuration.

Key requirements

IDRequirementPriority
FR-STA-R01One contribution row per scheme per employee per run, with prorated and full-month twin amounts.Must
FR-STA-R03EPF/SOCSO/EIS always follow the legal schedule — configured group rates are ignored.Must
FR-STA-E01/E02EPF per the rate schedule with age/citizenship/wage rules and the foreign-worker effective date.Must
FR-STA-S01 / I01SOCSO and EIS on min(wage, RM6,000) with age categories and 5-sen rounding.Must
FR-STA-H01HRDF employer levy when enabled — never an employee deduction, never journalled.Must

Engine

PCB / MTD income tax TAX

The LHDN Computerised Calculation: annualised chargeable income with capped reliefs, progressive band walk, s.6A rebate, year-to-date true-up, bonus differential method, zakat offsets, and a flat 30% for non-residents.

Detailed requirements →
Actors: System (computed)Requirements: 13

Capabilities & scope

  • Monthly MTD with months-remaining projection and true-up against tax already withheld this year.
  • Reliefs: EPF (cap RM4,000), SOCSO+EIS (cap RM350), personal/spouse/child (configurable per year), item reliefs ×12.
  • Bonus/commission/arrears taxed by the LHDN differential method — never smoothed or prorated.
  • LHDN rounding (truncate then round up to 5 sen) and the RM10 remittance floor.

Key requirements

IDRequirementPriority
FR-TAX-D01/D02Non-residents at flat 30%; residents by the official MTD method in every real run.Must
FR-TAX-M01The full monthly MTD formula with YTD true-up, relief caps, RM10 floor, LHDN rounding.Must
FR-TAX-B01/B02Per-year configurable bands + s.6A rebate; brackets auto-seeded with default reliefs.Must
FR-TAX-A01/A02Additional remuneration taxed by the differential method, paid in full.Must
FR-TAX-Z01Zakat offsets PCB ringgit-for-ringgit.Must

Finance

GL journal posting GL

An approved run becomes one balanced journal: DR Salary Expense (Σ gross); CR item deductions, employee statutory shares, PCB, and per-employee net salary payable. Preview first; unmapped accounts block; journal required before payment.

Detailed requirements →
Actors: Finance AdminRequirements: 4

Key requirements

IDRequirementPriority
FR-GL-L01Post one balanced entry per run with the defined legs; employer costs excluded by design.Must
FR-GL-P01/P02Dry-run preview; posting refuses on unmapped accounts or a missing liability account.Must
FR-GL-R01Re-posting replaces the prior entry — never two live entries per run.Must

Compliance

Payslip & statutory forms OUT

The on-screen payslip per run line; the annual EA Form (CP8A) per employee with sections A–F mapped from payroll data; and Borang E with the CP8D employee listing — all aggregating finalised runs by pay-date year.

Detailed requirements →
Actors: HR Admin, Employee (recipient)Requirements: 6

Key requirements

IDRequirementPriority
FR-OUT-P01Compose the payslip (earnings, deductions, summary) from every run line.Must
FR-OUT-EA01Generate the EA form per employee per year — structured data, HTML preview, A4 PDF.Must
FR-OUT-BE01/BE02Generate Borang E + CP8D with derived-but-overridable headcounts.Must
FR-OUT-AG01Aggregate only approved/paid runs, by the pay date's calendar year.Must

Reference

Glossary

TermMeaning
EPF / KWSPEmployees Provident Fund (Kumpulan Wang Simpanan Pekerja) — mandatory retirement savings.
SOCSO / PERKESOSocial Security Organisation — employment injury + invalidity insurance.
EIS / SIPEmployment Insurance System (Sistem Insurans Pekerjaan) — retrenchment protection.
PCB / MTDPotongan Cukai Bulanan / Monthly Tax Deduction — income tax withheld from salary per LHDN's Computerised Calculation.
LHDNLembaga Hasil Dalam Negeri — the Inland Revenue Board of Malaysia.
HRDF / HRD CorpHuman Resource Development Fund — employer-only training levy.
EA Form / CP8AAnnual Statement of Remuneration furnished to each employee (due end of February).
Borang E / CP8DEmployer's annual return to LHDN with the per-employee remuneration listing (due 31 March).
CP38LHDN instruction to deduct additional tax instalments from an employee's salary.
CP39Monthly PCB remittance statement to LHDN (not generated by the system — see gaps).
Additional remunerationBonus / commission / arrears taxed by the LHDN differential method, never smoothed or prorated.
ZakatIslamic alms paid via salary deduction — offsets PCB ringgit-for-ringgit.
s.6A rebateRM400 tax rebate for residents with annual chargeable income ≤ RM35,000.
Contribution groupReusable policy mapping statutory schemes (who pays, GL account) to employees.
True-upThe MTD term subtracting tax already withheld this year so withholding converges on the annual liability.

Reference

Known gaps — roll-up

The significant gaps found in the implementation, consolidated from the detailed pages. Each links to its module for context.

No bank/disbursement data or payment files — payment exists only as a GL accrual. (employee, GL)
Employer statutory costs and HRDF never reach the GL. (GL)
Recalculating an approved, journalled run orphans the posted journal; delete has no status guard. (run)
No statutory e-submission files (CP39/e-PCB, EPF Form A, SOCSO 8A, EIS, e-CP8D) — figures are re-keyed into agency portals. (outputs)
No payslip distribution and no employee self-service access to pay data. (outputs)
Claims, loans and advances are not fed into the run — manual item assignments required. (run)
No maker/checker separation on run approval. (run)
Statutory rates are code-shipped; SOCSO/EIS use the percentage method rather than the official contribution tables. (statutory)