Payslip & Statutory Forms — Detailed Requirements
What the payroll produces for people and agencies: the on-screen payslip per run line, the annual EA Form (CP8A) per employee (HTML preview + PDF download), and the employer's annual Borang E with the CP8D employee listing (JSON + PDF). All forms aggregate only finalised runs — approved or paid — by the pay date's calendar year.
Payslip
Earnings and deductions per run line, rendered on screen from live payroll data.
EA Form (CP8A)
Annual statement of remuneration per employee — sections A–F mapped from payroll data.
Borang E + CP8D
Employer annual return: header particulars, headcounts, and the per-employee CP8D listing.
Outputs · Detailed
Payslip OUT-P
The payslip is composed from the run line on demand — earnings and deductions as labelled amounts, plus the salary summary fields.
- Before calculation the figures are live estimates; after calculation they are the stored results.
- Each payslip line is a name + amount pair suitable for direct rendering.
- Documented gap — see Known gaps.
Outputs · Detailed
EA Form (CP8A) OUT-EA
The annual Statement of Remuneration from Employment furnished to each employee for personal tax filing. Generated on demand per employee per tax year, as structured data, an HTML preview, or an A4 PDF.
Section mapping
| EA section | Content | Source |
|---|---|---|
| A Particulars | Employee name, IC/passport, designation; income-tax / EPF / SOCSO numbers; employer name, number, address | Employee master, employee statutory numbers, company record |
| B1 Gross remuneration | Salary + overtime + taxable allowances / bonus / commission | Run-line salary + OT + items categorised B1 |
| B2–B5 | Benefits-in-kind, living accommodation (VOLA), unapproved-fund refunds, loss-of-employment compensation | Items categorised B2 / B3 / B4 / B5 |
| C Pension / annuity | Pension amounts | Items categorised C |
| D Deductions | PCB (Σ run-line tax), zakat, CP38 | Run lines + items categorised D_ZAKAT / D_CP38 |
| E Contributions | Employee EPF and SOCSO shares | Contribution rows bucketed by scheme |
| F Tax-exempt allowances | Non-taxable amounts | Items categorised EXEMPT / non-taxable |
- An item's explicit EA category wins; otherwise basic salary counts via the run line, non-taxable items land in Section F, and taxable items default to B1. Plain deduction and tax-relief items are excluded.
- A year with no finalised runs returns a zero-valued form rather than an error.
- The PDF downloads as
EA-Form-{year}-{employee}.pdf.
Outputs · Detailed
Borang E + CP8D OUT-BE
The employer's annual return to LHDN: header particulars and headcounts, plus the CP8D listing — one row per employee with their annual figures. EA and CP8D share one aggregation engine, so the two reports always agree per employee.
- The employee set is everyone with at least one finalised run line in the year.
- New/ceased counts derive from join/resign dates falling in the year; "subject to PCB" counts employees with tax withheld.
- Available as structured data and a branded PDF download.
- A supplied override replaces the derived value; omitted fields keep the derived count.
Outputs · Detailed
Aggregation rules OUT-AG
- Draft, pending and cancelled runs never appear on EA or CP8D.
- A December-period run paid in January belongs to the January year.
Outputs · Detailed
Business rules
- Forms are read-only reports — generating them writes nothing and can be repeated at any time.
- The EA category on the item catalogue is the single lever deciding where an amount lands on the annual forms.
- Malaysia-gated: form generation is hard-gated to the Malaysian instance.
- Missing statutory numbers render blank — they never block generation.
Outputs · Detailed