Upload the Infotech output
Who does this: Payroll Executive · Payroll Lead · Platform Admin When: After you've run the generated export through Infotech and Infotech has produced the processed payroll workbook Result: The cycle moves
EXPORTED → OUTPUT_IMPORTED → CLIENT_REVIEW. The platform parses the workbook and produces the Spade approval report — the cross-check artifact the client signs off on.
The export is what you hand to Infotech. The output is what Infotech hands back: the same employees, but now with calculated CPF, SDL, net pay, and any system-side adjustments. Uploading that output back into the platform is what lets the client compare their submission against what was actually processed — they approve the cross-check, not the raw export.
NOTE
Output upload is optional in MVP. You can request client approval directly off EXPORTED, in which case the platform builds the approval report from intake data only and the CPF / SDL columns will be blank. The dialog warns you when this would happen. Use this fallback only when Infotech is genuinely unavailable; the standard flow is upload-output-then-approve.
Before you start
- [ ] The cycle is in
EXPORTEDstatus. (Earlier statuses don't have an export to round-trip; later statuses already moved past output upload.) - [ ] Infotech has processed the export and given you back a workbook.
- [ ] The output file is a
.xlsxmatching the client's import layout — same sheet names, same column order. Anything else and the parser will refuse it. - [ ] You're a Payroll Executive, Payroll Lead, or Platform Admin.
Steps
- Open Cycles in the staff dashboard sidebar.
- Find the cycle you're processing — it should show status Exported.
- Click into the cycle.
- Switch to the Outputs tab. (The button also lives on the page header while the cycle is
EXPORTED— use whichever is closer to your cursor.) - Click Upload output in the top right of the Outputs tab.
- In the dialog, drag the Infotech output
.xlsxin, or pick it from the file browser. - Click Upload.
The dialog closes with a "Output uploaded — parsing has started" toast. The Outputs tab now shows a new row, version v1 (or the next version up if a previous parse failed and you're re-uploading), parse status Pending at first, then Parsed within ~30 seconds.
How to know it worked
Three signals, in order of confidence:
- The Outputs tab row flips from
PendingtoParsedwithin ~30 seconds. The Approval Report column populates with a Review report button. - The cycle status badge at the top of the page transitions
EXPORTED → OUTPUT_IMPORTED → CLIENT_REVIEWautomatically. The page header is now showing Request approval in place of the upload buttons. - The Activity log records two events:
output.uploaded(the moment you clicked Upload) andoutput.parsed(when the parser finished). Both attributed to you.
Click Review report on the Outputs row to download the Spade approval report — review it before sending to the client.
TIP
Always download and skim the approval report before clicking Request approval. The report is what the client sees, and once it's been emailed you can't recall it. Sanity-check at least one or two payslips against what you remember from intake — anomalies in CPF rates or LOP days are easier to catch here than after the client comes back.
Common situations
| If you see… | It means… | What to do |
|---|---|---|
| Upload dialog refuses with "File must be an .xlsx workbook" | File is .xls, .csv, or corrupted | Re-export from Infotech as .xlsx; re-upload |
| Outputs row shows parse status Failed with an error count | Column mismatch — Infotech rolled out a layout change you haven't mirrored | Check the error detail; if columns moved, upload a new template for this client and re-upload the output |
| Outputs row stays Pending for more than 5 minutes | The parse worker is backed up or stuck | Refresh the page once; if still pending, escalate via the outbox stuck runbook — the parser uses the same job queue |
| Parse succeeds but the approval report has blank CPF columns for some employees | Infotech didn't compute CPF for those rows (e.g. permit holders without CPF account) | Expected for non-CPF employees; the client will recognise this. Review with the relationship manager if the population doesn't match expectations |
Cycle stays in OUTPUT_IMPORTED and never moves to CLIENT_REVIEW | The auto-transition raced or failed | See Cycle is stuck in OUTPUT_IMPORTED |
| Need to re-upload because the first output had errors | A new version is allowed | Just upload again — the new file becomes v2, the old row stays for audit |
What the client sees
Nothing yet — uploading the output does not email the client. The auto-approval-request fires only on certain transitions; on the standard EXPORTED → OUTPUT_IMPORTED → CLIENT_REVIEW path the request is queued and dispatched at the moment the cycle enters CLIENT_REVIEW. (If your client has no active approver contact, the auto-request silently skips — see the troubleshooting page below.)
To verify the email actually went out, see Verify an email was sent.
Related runbooks
- Generate the Infotech export — produces the workbook this output round-trips against
- Upload an Infotech import template — fix column mismatches by updating the template
- Request client approval — the manual button for when the auto-request didn't fire
- Approval request didn't auto-fire after Generate Export
- Cycle is stuck in OUTPUT_IMPORTED
- Payroll cycle status machine