Skip to content

Validation rules ​

The eight blocking validation rules evaluated against a payroll submission before it can move to READY_FOR_EXPORT. Generated from packages/domain/src/payroll/rules/validation-rules.ts at build time.

A rule that fails creates a blocking issue on the submission. A blocking issue prevents the cycle from moving forward until it's resolved or overridden via POL approval (Payroll Lead / Platform Admin only).

KeySeverityDescription
ATTENDANCE_REQUIREDBLOCKINGAttendance data must be provided
DOCUMENT_REQUIREMENTS_METBLOCKINGEach change type must have the specific supporting documents configured for the client (SOP §6 Step 2.0)
FOREIGN_LEAVER_IR21BLOCKINGForeign employee leavers require IR21 task
NS_DOCUMENTATIONBLOCKINGNS claims require supporting documentation
DUPLICATE_RECEIPTSBLOCKINGDuplicate receipts must be resolved before submission
SALARY_DELTA_THRESHOLDBLOCKINGSalary changes exceeding threshold require POL approval
PAYROLL_VARIANCE_THRESHOLDBLOCKINGAggregate payroll variance exceeding threshold requires POL approval
OCR_LOW_CONFIDENCEWARNINGLow-confidence OCR extractions require manual review
CPF_AW_CEILINGBLOCKINGCPF Additional Wage ceiling breach risk detection

What "BLOCKING" means in practice ​

A blocking issue:

  • Is shown on the cycle's Issues tab with a red severity badge.
  • Stops the Generate export button from being enabled.
  • Can be resolved by the client uploading the missing data (e.g. attendance, supporting documents).
  • Can be overridden by a Payroll Lead via POL approval, recorded in the audit log.
  • A Payroll Executive on their own cannot override.

How the month's checks are judged (as built, 28 Oct 2026) ​

These describe the shipped behaviour of the checks before Confirm review (the validation sign-off, which the Payroll Executive signs). Where it differs from the SOP's wording, the SOP (Step 3 rule B, Step 4) is the reference.

  • Documents for each change (DOCUMENT_REQUIREMENTS_MET). Each change is judged on its own. With no company document rules, a change passes when it has a document of its own, when a person approved it (a confirmed manual entry), or when the client typed it on the payroll link. A change with none of these raises its own blocking issue on that change, naming it. Rejected changes, and changes held, deferred or moved to another month, are left out. With company rules, a change is matched against its own documents only; another change's upload no longer counts for it.
  • Duplicate receipts (DUPLICATE_RECEIPTS). One issue per repeated claim line (or identical file). This month's claims in play are compared with each other and with earlier claims that were actually paid: approved, on a month that was not cancelled. A claim carried to the next month (or deferred, or moved to the month it is dated for) is not compared with the original it left behind.
  • Low reading score (OCR_LOW_CONFIDENCE). One issue per document. It counts only fields on a document a change in play rests on, and only until that change is approved: a rejected document, one no change uses, and a value a person approved on its card are out. Approve the card, then Re-check, and the warning goes.
  • What a Lead's override covers. An override is remembered for the one finding it was on (the claim line, the document, the change). A new duplicate, a new low-score document or another change without its document raises a fresh issue. A month-wide check (attendance) has one finding, so its override covers it for the rest of the month. Overrides recorded before this change were not linked to anything; the next re-check raises those findings again once, for the Lead to look at.
  • Warnings named at Confirm review. The signer (Executive or Lead) must name every open warning. Each is closed as ACKNOWLEDGED (reason ACCEPTED_AT_SIGN_OFF), not overridden, and the checklist says "Accepted at the validation sign-off by <name>". A later re-check keeps it closed while the same finding stands. The IR21 pay-withheld warning is never closed this way: it stays open until IRAS's clearance letter is recorded.
  • The checklist is kept with the sign-off. "Confirm review" on a month staff or the schedule opened stores every rule, its result and its reasons on the cycle.review_confirmed audit record (checks); the agent run's sign-off stores its findings on cycle.validation_approved.
  • CPF Additional Wage ceiling (CPF_AW_CEILING). It needs each employee's year-to-date Ordinary and Additional Wages, which nothing on the platform records yet. When they are missing the rule shows as not checked (never as passed), with a warning SG.PAY.CPF_AW_CEILING_NOT_CHECKED naming whose figures are missing. In a bonus or AWS month, check the ceiling in Infotech.

Where to learn more ​

Internal use only — BreezyCorp