MyWork24 Knowledge Base
Article

What gets sent to SimplePay (imports & sync)

Edit

What gets sent to SimplePay (imports & sync)

What this guide covers

Exactly what data crosses from myWork to SimplePay during a payroll run, and what comes back. myWork sends the variable inputs (leave and the mapped pay components); SimplePay holds the basic salary and does the maths, tax and bank file. This explains the two pushes, the read-back, what's never sent, and how employees are matched — so the numbers are never a mystery.

Who does this: payroll administrators, from the Payroll Runs 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

What myWork sends to SimplePay: first match the employee by their SimplePay link (else Worker ID; no match = UNRESOLVED). PUSH 1 Send leave to SimplePay's leave calendar — one entry per approved leave working-day carrying date, hours (half for half-day) and leave type, adding only what's new. PUSH 2 Export inputs to the draft payslip — every mapped component, overtime as hours, bonuses/allowances/deductions as amounts, overwriting the draft. READ BACK: SimplePay's recalculated Gross/Deductions/Net/Employer contributions shown side-by-side with myWork's (the reconciliation). NEVER sent: basic salary and tax/statutory (PAYE/UIF/SDL/ETI). Live write behind a switch; leave first; leaver payout added; myWork never pays the bank. Per-employee status OK/SKIPPED/UNRESOLVED/FAILED.

First: matching the employee

Before anything is sent, myWork resolves each person to their SimplePay employee:

  1. their stored SimplePay link (set by Create / link in SimplePay on the HR page), else
  2. 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. The export overwrites the draft inputs rather than adding to them, so re-running is safe.

Read back — the reconciliation

Right after a successful push, myWork reads SimplePay's recalculated totals for that employee — Gross / Deductions / Net / Employer contributions — and shows them side-by-side with myWork's own. That's the reconciliation in the export results. Small differences are normal (the two systems compute tax slightly differently); a material net mismatch is flagged for you to investigate. If a payslip is still recalculating ("dirty") the moment after sending, re-open the export so the read-back catches up.

What is never sent

  • Basic salary — SimplePay holds it (and uses it to value the overtime hours you send).
  • Tax & statutoryPAYE, 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:

Status Meaning
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.

Good to know

  • Order matters: send leave first, then the inputs — so unpaid leave is already reflected when you reconcile (see Running monthly payroll).
  • 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.
  • myWork never pays the bank — the EFT/bank file is produced in SimplePay.
  • 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.
  • The employee page (HR): Salary, banking & compliance — linking an employee to SimplePay.

Related articles