Skip to content

Override a blocking issue (Lead approval)

Who does this: Payroll Lead only When: A blocking validation issue is correct in form but does not apply to this specific cycle, and you've satisfied yourself that proceeding is the right call Result: The issue is closed with an override reason on the audit trail. The cycle can advance toward export.

Override is the escape hatch for cases where the validation rules flagged something legitimate, but the rule doesn't fit the reality of this client/cycle. It's deliberately scoped to Payroll Lead only — Payroll Executives can resolve issues by providing the missing artifact, but they cannot bypass a rule. Every override carries a free-text justification that survives in the audit log.

If a normal-shaped resolution path exists (upload the document, ask the client), use Resolve a blocking issue instead. Override is the last resort.

Before you start

  • [ ] You have the Payroll Lead role. (Payroll Executives, Platform Admins, and other roles cannot override — see the RBAC matrix. The action is OVERRIDE_ISSUE in the permission model.)
  • [ ] You can articulate, in one or two sentences, why the rule doesn't apply. This goes verbatim onto the audit log; assume an external auditor will read it.
  • [ ] You've checked there's no normal resolution path. Specifically:
    • For missing documents: confirm the document genuinely doesn't exist (e.g. a contractor leaver doesn't need IR21 because they were never on a work pass).
    • For variance breaches: confirm with the client that the salary or payroll movement is intentional and you have written confirmation.
    • For OCR confidence: confirm you've manually verified the field by looking at the source document.

WARNING

Override is logged with your name, the timestamp, and your justification text. Singapore audit / IRAS reviews can pull this. Keep the reason factual and complete — "client confirmed by email 24 Apr 2026" is good; "approved" is not.

When override is appropriate

Issue codeOverride is appropriate when…
FOREIGN_LEAVER_IR21The leaver was a Singapore citizen / PR despite being flagged foreign in the source data, OR was a contractor never on a work pass and IR21 is genuinely not required
NS_DOCUMENTATIONThe NS claim has been withdrawn by the client, OR the documentation has been verified out-of-band and you've recorded the verification
DUPLICATE_RECEIPTSThe client confirms two near-identical files are intentionally separate (e.g. two months of the same recurring claim)
SALARY_DELTA_THRESHOLDThe client confirms the salary change is intentional (promotion, market adjustment, role change) and you have it in writing
PAYROLL_VARIANCE_THRESHOLDThe client confirms the aggregate movement is correct (bulk hiring, large bonus month, restructure)
CPF_AW_CEILINGThe client has explicitly elected to cap or to proceed; recorded in writing
OCR_LOW_CONFIDENCEYou've manually verified the extracted field against the source document

Override is not appropriate for ATTENDANCE_REQUIRED or DOCUMENT_REQUIREMENTS_MET — those need actual artifacts. If a client truly has no attendance for the month (e.g. all-salaried with no time tracking), the right fix is the document rules configuration, not an override.

Steps

  1. Open the cycle in the staff dashboard, go to the Issues tab.
  2. Click into the issue you intend to override. The card shows the rule, the linked employee/change (if any), and the plain-language reason.
  3. Click Resolve on the issue card.
  4. In the resolve dialog, set the reason code to POL_APPROVED (Payroll Lead approved — override).
  5. In the Reason text field, write your justification. Be specific. Examples of good text:
    • "Contractor leaver — never on a work pass, IR21 not applicable. Confirmed with client by email 24 Apr 2026."
    • "25% salary increase reflects promotion to Senior Manager effective 1 Apr 2026. Letter of appointment on file (uploaded as Files tab evidence)."
    • "Aggregate variance reflects 8 new joiners onboarded mid-month per workforce plan. Client headcount confirmation attached."
  6. Click Resolve.

The issue closes immediately. The cycle re-validates; this issue won't be re-raised because it now has an active override on file.

NOTE

If you uploaded a supporting file (e.g. an appointment letter, an email screenshot) before clicking Resolve, you can attach it as the override's evidence using the file picker in the dialog. Recommended for any override that's not self-explanatory.

How to know it worked

  • The issue card shows status CLOSED, override badge, your name, and the justification text inline.
  • The Activity log for the cycle records issue.overridden (note the distinct event type vs issue.resolved) with the full justification text and a link to the file you attached, if any.
  • The cycle status moves on once the last open BLOCKING issue is closed — see Resolve a blocking issue for the post-resolve flow.
  • The Generate Export button becomes available after you click Confirm Review on the cycle header.

What the client sees

Override is an internal action. The client is not notified. If the override stems from something they confirmed with you (a salary increase letter, a bonus authorization), they've already done their part — no further email is needed.

Common situations

If you see…It means…What to do
POL_APPROVED option is missing from the resolve dialogYou're signed in as a role other than Payroll LeadHand off to a Payroll Lead, or have your role corrected by a Platform Admin
You override and the issue immediately re-flagsThe validation engine thinks new data triggered the rule againRe-read the issue card — it may be a different employee triggering the same rule. Check the Linked employee tag
Auditor asks for justification on a closed cycleThe audit log has itCycle detail → Activity log → filter to issue.overridden. Export the log via the Activity log export action
You overrode in errorOverride events are immutableResolve isn't reversible. The cycle moves on; if it reaches the client and is genuinely wrong, raise a revision request after they review

Internal use only — BreezyCorp