Generate the Infotech export
Who does this: Payroll Executive · Payroll Lead When: A cycle has cleared validation and is in
READY_FOR_EXPORTResult: An Infotech upload workbook is generated and downloadable from the cycle's Exports tab. The cycle moves toEXPORTED. An approval request is auto-emailed to the client's first active approver.
Generating the export is the bridge between client intake and the payroll-processing system. The platform takes everything in the cycle's submission, applies the client's active import template, and produces an .xlsx file shaped exactly the way Infotech expects to receive it. From there you upload it to Infotech, run payroll, and import the results back.
The Generate Export button is gated — it only shows when the cycle is genuinely ready. If you don't see it, see Why is the Generate Export button greyed out? for the common reasons.
The final approval and the export (current, 28 Oct 2026)
NOTE
The rest of this page still describes the older order (export, then client approval). Today the client approves first, and the Payroll Lead's final approval (G3, Approve & export on the month's page) records the sign-off and exports straight away.
- The final approval refuses for whatever the export would. While the month has an open blocking issue, a change still awaiting approve/reject, a change not matched to an employee on the roster, or a due salary increment not confirmed, Approve & export is greyed out with the reason, and the server refuses with The final approval cannot be given yet: … before anything is saved. Both read the export's own check, so a sign-off can no longer be recorded on a month whose export then fails for one of these, and later go out on someone else's export.
- Not the person who prepared the month. Anyone who did preparing work on it (see the roles page) cannot give its final approval, release its tie-out, sign off its CPF filing or approve its payment while someone else who may do so exists; the refusal names them. No role is exempt, a Platform Admin included. With nobody else, they may, and the gate's audit row records
preparerPassedAlonewith what they did. - New input after the client approved. A figure the client approved that moves (a corrected amount, a change taken out of the month or put back in) withdraws their approval and goes back to them as a new request (see Request client approval). Any other change re-runs the checks; if the final approval had been given (month at Ready for export), it is voided and the month goes back to Client approved for the Lead to approve again (the client is not asked again, and
cycle.reapproval_cascaderecordsG3_SIGN_OFF_VOIDED). - The export pack's
approvals.csvlists the validation sign-off whether the run gave it or staff confirmed it (Validation sign-off (Confirm review)), and a round a Payroll Lead approved without the client as APPROVED BY THE PAYROLL LEAD WITHOUT THE CLIENT, by the Lead with their reason, never the client contact. A round approved and later replaced reads APPROVED, later SUPERSEDED (FIGURES_CHANGED_AFTER_APPROVAL).
Before you start
- [ ] Cycle is in READY_FOR_EXPORT status. (If it's in
READY_FOR_INTERNAL_REVIEW, click Confirm Review on the cycle header first to advance it.) - [ ] All BLOCKING issues are closed. The Issues tab badge is zero (or shows only WARNING-severity items, which don't block).
- [ ] The client has an active export template of kind
UPLOAD. Confirm on the client detail → Templates tab. - [ ] The client has an active approver if you want approval to auto-fire. (If not, the export still generates — you just get a warning toast and have to fire approval manually.)
TIP
Generate Export runs validation again automatically before producing the file. So even if the cycle has been sitting for a couple of days, you don't need to re-validate manually first — clicking the button does it for you, and falls back gracefully if anything has changed.
Steps
- Open the cycle in the staff dashboard.
- On the cycle header, click Generate Export. The button label flips to "Validating & generating…" while the platform works.
- The platform runs validation, builds the Infotech workbook, and shows the Export preview dialog.
- In the preview:
- Look at the Row count — should match the cycle's total submission items.
- Skim the first few rows for obvious errors (employee names, salary figures, change types).
- Click Download to pull the
.xlsxto your machine.
- Close the preview.
The cycle's status badge now reads EXPORTED. The Exports tab shows the new export as v1 (or v2, v3 if you've regenerated).
NOTE
An approval request fires automatically within ~30 seconds of clicking Generate Export, going to the client's first active Can approve contact (alphabetical by name). You'll see a success toast confirming who it went to. If the client has no approver, the toast warns you and you'll need to fire approval manually after configuring one.
How to know it worked
- Cycle status flips from
READY_FOR_EXPORTto EXPORTED. - The Exports tab on the cycle shows a new row with version number, row count, and download link.
- The cycle's Activity log records
cycle.exportedandapproval_report.generatedevents attributed to you, plus anapproval.requestedevent when the auto-approval fires. - Your Outbox shows an outbound row with template
approval-request, status Dispatched within ~30 seconds. See Verify an email was sent. - The cycle's Approvals tab shows a new approval round (#1 typically) with status Pending.
What the client sees
The first active Can approve contact gets an email:
- Subject: Payroll approval required for {cycle month} - Round {N}(N = the round number; this is normally
1unless you've already had a revision cycle.) - Body: brief framing, the client name and cycle month, plus a single CTA button: Review & approve.
- Link expiry: 48 hours. While the approval is pending, a reminder goes every 2 days until the pay-by date, each with a fresh link and the date we need approval by; you can also use Send a fresh link on the month's Work page.
The link drops the approver onto the BreezyCorp approval report — a plain-language summary of the prepared payroll (per-employee net pay, totals, CPF figures). They can either approve or request a revision with a written reason.
Common situations
| If you see… | It means… | What to do |
|---|---|---|
| Generate Export button isn't visible | Cycle isn't in a state that allows export, or one already exists | See Why is the Generate Export button greyed out? |
| Toast: "Can't export yet — N blocking issues need attention" | Validation re-ran and found new blockers | Click into the Issues tab; resolve the new ones. Validation runs every time you click Generate Export, so a stale cycle can pick up new failures |
| Toast: "Export generated" but no approval-toast detail | The client has no active Can approve contact configured | Open client → Contacts; add an approver. Then on the cycle, click Request approval to fire the email manually |
| Export preview opens with row count = 0 | The submission is genuinely empty (a "No changes this month" zero-item cycle is allowed) | This is fine — the export is still produced and approval still fires. Confirm with the client this is expected |
| Approval-request email never arrives in the Outbox | Approval was skipped (no approver, or transient platform issue) | Check the cycle's Approvals tab — if no round is recorded, fire manually with the Request approval button |
| You need to regenerate the export after fixing something | The button is hidden because an export already exists | Open the Exports tab; the platform supports re-generating only via specific revision-cycle paths. For most cases, the right fix is to handle the change as a revision request — see SOP §6 |
| Export downloads but Infotech rejects it on upload | Template mismatch — the active template doesn't match the Infotech version your processor uses | Talk to your Payroll Lead; the template needs an update on the client's Templates tab |
Related runbooks
- Resolve a blocking validation issue — when validation fails on click
- Override a blocking issue — when a rule needs to be bypassed
- Why is the Generate Export button greyed out?
- Verify an email was sent — confirm the approval request landed
- Finalize and close a cycle — what happens after the client approves
- Notifications catalog — full email reference
- Payroll cycle status machine — visualizing the cycle's lifecycle