What this guide covers
Exactly what data crosses between myWork and SimplePay during a payroll run. myWork sends the variable inputs (leave and the mapped pay components); SimplePay holds the basic salary and does the maths and tax; myWork reads the results back, can adopt them as the payslip of record, and builds the bank payment file. This explains the two pushes, the read-back, the adoption step, the one delete, what's never sent, and how employees are matched — so the numbers are never a mystery.
Who does this: payroll administrators, from the payroll run console. It's a live write to SimplePay (behind a feature switch) — nothing is sent without you clicking a button, and every step is safe to re-run.
The data flow at a glance
Leave (push 1) → inputs (push 2) → SimplePay calculates → results read back (step 3) → figures adopted into myWork's ledger (step 4) → run closed → bank file built from the ledger (step 6).
First: matching the employee
Before anything is sent, myWork resolves each person to their SimplePay employee in the selected SimplePay company:
their stored SimplePay link (set by "Create / link in SimplePay" on the HR page), else
a match on Worker ID (employee number, leading zeros tolerated).
If neither matches, that employee comes back UNRESOLVED and nothing is sent for them until they're linked.
Push 1 — Send leave (to SimplePay's leave calendar)
For the run's period, myWork takes the approved leave straight from the attendance records — one entry per actual leave working-day (so weekends and public holidays are naturally excluded). Each entry carries:
the date,
the hours for that day (the scheduled day length — halved for a half/partial-leave day), and
the leave type (its SimplePay leave type, from the mapping).
A leave type with no SimplePay mapping is reported as unmapped and skipped. The leave API adds days, so myWork first reads what's already in SimplePay and skips anything already there — re-running never duplicates.
Push 2 — Export inputs (to the draft payslip)
myWork then pushes the period's variable pay components onto each employee's draft SimplePay payslip (dated the run's pay date). For each mapped component it sends:
overtime / public-holiday → hours (SimplePay works out the rand from the basic it holds), and
bonuses, allowances, deductions, loan recovery, the unpaid-leave dock → amounts (the rand value).
Components that aren't mapped (or have nothing for the period) are simply not sent — unless the mapping's "Clear if absent" is ticked, in which case the SimplePay line is blanked. The export overwrites the draft inputs rather than adding to them, so re-running is safe.
Read back — the reconciliation
"Get SimplePay results" reads SimplePay's recalculated totals for each employee — Gross / Deductions / Net / Employer contributions — plus the line detail, stores them against the run, and shows them side-by-side with myWork's own. That's the reconciliation. Small differences are normal (the two systems compute tax slightly differently); a material net mismatch is flagged for you to investigate. "Check stale inputs" lists SimplePay lines that myWork does not send, so values keyed directly in SimplePay stand out. If a payslip is still recalculating ("dirty") the moment after sending, run the read-back again so it catches up.
Adopt — SimplePay's figures become the payslip of record
"Write to ledger" takes the stored SimplePay figures and makes them the payslip of record in myWork's payroll ledger. From then on Employee Overview, Payslip History and the bank file show what SimplePay calculated, line for line, with a "Paid from SimplePay" chip. "Revert to myWork" undoes it. Nothing is sent to SimplePay in this step — it is a copy into myWork.
The bank file
For a run that has been marked paid or finalised, "Generate bank file" builds the ACB (.SSV) bank payment file inside myWork, from either the adopted SimplePay net or myWork's own net, and downloads it for submission to the bank. This is a myWork step, not a SimplePay one — see Running monthly payroll (myWork → SimplePay).
The one delete — Undo leave
"Undo leave (SimplePay)" in the Repair section deletes this period's leave entries in SimplePay so corrected leave can be re-sent. It is the only step that removes data from SimplePay.
What is never sent
Basic salary — SimplePay holds it (and uses it to value the overtime hours you send).
Tax & statutory — PAYE, UIF, SDL, ETI. These are never mapped, so they're never pushed; SimplePay calculates them.
myWork only ever sends the variable inputs + leave.
Per-employee outcome
Every employee gets a status in the results:
OK — sent/saved on their SimplePay draft (and read back for the reconciliation).
SKIPPED / NOOP — nothing to send (no mapped inputs, or the leave is already in SimplePay).
UNRESOLVED — not linked to a SimplePay employee yet.
FAILED — SimplePay rejected it (reason shown — e.g. the payslip is already finalised).
A failure for one person never breaks the run or the others — each is independent and best-effort.
A note on leavers
For an employee terminating in the period, myWork folds their expected annual-leave payout (annual-leave days × daily rate) into its gross and net, because SimplePay pays that out on the final payslip. Without it, the payout would look like a false mismatch in the reconciliation. Only Annual leave pays out on termination.
Good to know
Order matters: send leave first, then the inputs — so unpaid leave is already reflected when you reconcile.
It's live, but gated — the export is behind a feature switch and only runs when SimplePay is configured; nothing leaves myWork without your click.
Mappings are per SimplePay company. An employee linked to a different company than the one mapped will not export cleanly.
Related guides
Running monthly payroll (myWork → SimplePay) — the step-by-step run that performs these sends.
How SimplePay mapping works — what makes a component or leave type sendable in the first place.
Employee Overview (payroll) — where the adopted figures are read per employee.
Employee page: Personal Info — linking an employee to SimplePay.