Request client approval
Who does this: Payroll Executive · Payroll Lead · Platform Admin When: The auto-approval-request didn't fire after Generate export, or you need to redirect approval to a different approver Result: A new approval round is opened on the cycle and an approval-request email goes out to the chosen client approver.
The platform sends approval requests automatically when you click Generate export, picking the first active contact with Can approve ticked, alphabetical by name. You only run this manual flow when:
- The client had no active approver at the moment you generated the export, so the auto-request silently skipped.
- You added the right approver afterwards and now need to send the request.
- The auto-request went to the wrong approver (e.g. the previously-default contact has handed over their portfolio) and you need to redirect.
- The first approver bounced the email or sat on the link, and a different approver is now decision-ready.
NOTE
The Request approval button only appears on the cycle detail page when cycle status ∈ {EXPORTED, OUTPUT_IMPORTED} and no approval round has been opened yet. If a round is already open and you need a different approver to act, the path is to wait for the current link to expire / be declined, or contact the relationship manager about the approver swap. Don't open a parallel round — that's where audit gets messy.
Before you start
- [ ] The cycle is in
EXPORTEDorOUTPUT_IMPORTEDstatus. - [ ] No approval round exists on the cycle yet (the Approvals tab shows "No approval rounds").
- [ ] The client has at least one active contact with Can approve ticked. If not, add one first — and verify the email address before sending.
- [ ] (Recommended) The Infotech output has been uploaded and parsed. If not, you'll see an amber warning that the approval report will go out with blank CPF / SDL figures.
Steps
- Open Cycles in the staff dashboard sidebar and click into the cycle.
- In the page header, click Request approval.
- In the dialog:
- Approver — pick from the dropdown of active contacts with Can approve. The list is alphabetical; if a previous attempt picked the wrong person, choose the right one here.
- If you see an amber No payroll output uploaded yet banner, decide: continue with intake-only figures, or close the dialog and upload the output first.
- Click Send approval request.
The dialog closes with a "Approval request sent" toast. The Approvals tab now shows a new row, Round #1 (or the next round number on a re-do), decision Pending.
How to know it worked
- The Approvals tab on the cycle shows the new round, decision Pending, Requested stamp matching the click time.
- The Outbox shows a new row, template
approval-request, Recipient set to the contact you picked, status Dispatched within ~30 seconds. - The Activity log records
approval.requestedattributed to you.
If the Outbox row is Pending for more than 5 minutes, see Outbox stuck runbook. If it's Failed or Bounced, verify the email and confirm the contact's address.
What the client sees
The approver receives an email:
- Subject: Payroll approval required for {YYYY-MM} — Round {N}
- From: the firm's no-reply sender on BreezyCorp
- Body: A short note plus a Review & approve button. The button opens the secure portal where they see the full Spade approval report with payslips, net pay, CPF and SDL — and either click Approve or Request revision with a note.
The link inside the email expires in 48 hours. After that, an approval reminder mints a fresh link if the round is still pending — see timing.
Common situations
| If you see… | It means… | What to do |
|---|---|---|
| Request approval button is not visible | A round already exists, or cycle is past OUTPUT_IMPORTED | Open the Approvals tab — if a round is pending, wait for the client; if APPROVED / REVISION_REQUESTED, follow the appropriate runbook |
| Dialog dropdown shows "No active approvers — add one in client admin" | Client has no contact with Can approve ticked | Add or edit a contact, then come back |
| Amber banner "No payroll output uploaded yet" | You skipped the output round-trip | Either upload the output first, or accept that the report goes out with blank CPF / SDL columns |
| Toast: "Approval request sent" but the Outbox shows nothing after a minute | Outbox dispatcher stuck | Outbox stuck runbook |
| Client says "I never got the link" but Outbox says Dispatched | Email landed in spam, or wrong address on the contact record | Verify the email was sent; confirm the contact's address with the client by phone |
| Auto-request didn't fire after Generate Export and you're not sure why | Usually no active approver at export-time | Approval request didn't auto-fire |
Related runbooks
- Approval request didn't auto-fire after Generate Export — diagnose why the auto-request was skipped
- Add or edit client contacts — to add the missing approver
- Verify an email was sent
- The magic link expired before the client opened it
- Handle a revision request — what to do when the approver clicks Request revision
- Notifications catalog — exact subject lines and reminder cadence