ZyncDocs · MY-Payroll · Modules · Payslip & statutory forms (detailed)
Must Should Could
Detailed Functional Requirements

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.

3
Outputs
6
Requirements
2
PDF endpoints

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.

FR-OUT-P01Must
For every run line the system SHALL expose payslip earnings — basic salary, each non-basic allowance item, and overtime when present — and deductions — each deduction item, each employee statutory share (EPF/SOCSO/EIS by name), PCB when present, unpaid leave, and absence — plus gross, net, total deductions, employer cost, HRDF, tax relief and chargeable income.
Acceptance criteria
  • 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.
FR-OUT-P02Could
The system MAY add payslip PDF generation, e-mail distribution, and employee self-service access — none exist today; the payslip is an admin-side on-screen view only.
Acceptance criteria

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 sectionContentSource
A ParticularsEmployee name, IC/passport, designation; income-tax / EPF / SOCSO numbers; employer name, number, addressEmployee master, employee statutory numbers, company record
B1 Gross remunerationSalary + overtime + taxable allowances / bonus / commissionRun-line salary + OT + items categorised B1
B2–B5Benefits-in-kind, living accommodation (VOLA), unapproved-fund refunds, loss-of-employment compensationItems categorised B2 / B3 / B4 / B5
C Pension / annuityPension amountsItems categorised C
D DeductionsPCB (Σ run-line tax), zakat, CP38Run lines + items categorised D_ZAKAT / D_CP38
E ContributionsEmployee EPF and SOCSO sharesContribution rows bucketed by scheme
F Tax-exempt allowancesNon-taxable amountsItems categorised EXEMPT / non-taxable
FR-OUT-EA01Must
The system SHALL generate an EA form per employee per tax year mapping payroll data to sections A–F as above, with a per-item breakdown for drill-down, exposed as structured data plus an HTML preview and a downloadable A4 PDF.
Acceptance criteria
  • 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.

FR-OUT-BE01Must
The system SHALL generate, per tax year, a Borang E header — employer name, LHDN E-number (from statutory identity), SSM registration, address, and four headcounts (total employees paid, new joiners, ceased, subject to PCB) — plus CP8D rows per employee carrying gross remuneration, BIK, VOLA, employee EPF, zakat, PCB and CP38, with report totals.
Acceptance criteria
  • 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.
FR-OUT-BE02Should
Because join/resign date hygiene is unreliable, every derived header count SHALL be operator-overridable at generation time.
Acceptance criteria
  • A supplied override replaces the derived value; omitted fields keep the derived count.

Outputs · Detailed

Aggregation rules OUT-AG

FR-OUT-AG01Must
Annual forms SHALL aggregate only finalised runs — status approved or paid — assigning each run to the tax year of its pay date (remuneration-received basis), never the pay period.
Acceptance criteria
  • 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

Known gaps

No payslip document or distribution. No PDF, no e-mail, no employee self-service — employee self-service today covers profile and attendance only, with no compensation data.
No statutory e-submission files. No CP39/e-PCB, EPF Form A, SOCSO 8A, EIS, e-CP8D/e-Data Praisi, or bank payment files — operators re-key figures into agency portals from the JSON/PDF outputs (explicit design deferral).
EA employer number is best-effort. The EA form falls back to the SSM registration number while Borang E uses the true LHDN E-number from statutory identity — the two can disagree.
No BIK/VOLA valuation engine. Sections B2/B3 only carry amounts operators enter as categorised items; prescribed-value computation is out of scope.
Subscription gating is inconsistent. The annual-form queries are not behind the HR-module feature gate that guards the rest of payroll, and no fine-grained per-action permission applies to any compliance output.