Payroll runs from myWork but the pay is calculated in SimplePay. myWork sends only what changes each month — overtime, bonuses, allowances, loan recovery, the unpaid-leave dock — and SimplePay works out the actual pay, tax and contributions. This guide shows the monthly steps, and then — scenario by scenario — how to find and fix any difference between what you expect and what SimplePay shows.
The golden rule. SimplePay computes the pay. Tax (PAYE), UIF, SDL and ETI are never sent by myWork, so a small tax difference is normal and expected — it just follows the income. When you chase a difference, look at the income and deduction lines (overtime, a bonus, a loan), not the tax.
The monthly run, step by step
Open People ▸ Payroll ▸ Runs and History ▸ Payroll Runs and open this month's run. The action bar is grouped into six numbered steps, plus a Repair group — do them in order.
1 · Prepare — Calculate. Make sure everyone's hours are authorised first (unauthorised hours are not in the figures), then click Calculate.
2 · Push to SimplePay — two buttons. Send leave to SimplePay (2a) pushes approved leave first, so unpaid leave lands before the inputs. Export to SimplePay (2b) sends this month's variable inputs — overtime, bonuses, allowances and deductions — to each employee's draft SimplePay payslip.
3 · Reconcile — check for differences. Click Get SimplePay results to pull SimplePay's figures next to myWork's, then read the Δ (SP − myWork) columns. Then click Check stale inputs. Resolve everything here before the next step.
4 · Adopt figures — Write to ledger. Makes SimplePay's figures the source of truth for the run. Only do this once the differences are resolved.
5 · Close — Mark as paid, then Finalise. Pay in SimplePay, then Mark as paid, then Finalise to lock the run. A finalised run cannot be changed.
6 · Pay the bank — Generate bank file builds the payment file for this run so you can preview it and download it for the bank.
Repair — Undo leave (SimplePay) and similar corrections, for when something has to be re-sent.
How to check that everything is correct
Two tools on the run do the checking for you:
Get SimplePay results puts SimplePay's figures beside myWork's and shows the Δ (difference) on Gross, Deductions, Net and Contributions. Any non-zero Net Δ is worth a look. A tiny Δ that is only tax is normal.
Check stale inputs lists any line SimplePay is paying that myWork did not send this month — the single most common cause of an employee being over-paid.
If a line you expected is missing from an employee, look at that employee's row in the export results (or open their payslip section) — myWork flags exactly why it didn't send.
Finding a difference — start here
Ask one question: is SimplePay paying MORE than it should, or LESS (a line is missing)? That splits every case into the two families below.
Scenario A — SimplePay is paying MORE than it should (a line that shouldn't be there)
What you see: an income line (e.g. a bonus or an incentive) that is too high, or one that should be gone this month but is still there. The employee's Gross Δ is positive.
Why it happens — "stale inputs". When myWork pushes a value it sets it; when it stops sending a value, it does not clear it — SimplePay simply keeps last month's number. So the old amount hangs around until something clears it. This happens when:
an item was re-mapped to a different SimplePay item (the old item keeps its last value and the new item now also pays — a double-up);
a bonus or loan was deliberately skipped this month (so myWork sends nothing for it, and SimplePay keeps last month's);
the employee no longer earns a mapped item.
How to fix it:
On the run, click Check stale inputs. Each unexpected line is listed with the employee, the SimplePay line name and the amount.
Click Clear in SimplePay on the row. This zeros the value on the payslip and on the employee's recurring Regular Input (the recurring one is what makes it come back every month), and asks SimplePay to recalculate.
Re-check the payslip. If the line is still showing the old amount, use the per-employee Send to SimplePay on that employee's row — that forces SimplePay to recompute the total.
Doing it by hand in SimplePay? You must clear it in two places: the Payslip Input for this month and the employee's Regular Input. Clearing only the payslip input means it returns next month.
Scenario B — SimplePay is paying LESS, or a line is missing
What you see: something myWork has (overtime, a bonus, a loan, an allowance) is not on the SimplePay payslip, or is lower than expected. myWork will always tell you why — check the employee's row in the export results, or the amber flag on their payslip section. There are four causes.
B1 — The component is not mapped for that employee's company
Sign: an amber "not mapped" chip on the payslip line, or "NOT sent (unmapped for this company)" on the export result.
Employees are split across more than one SimplePay company, and mappings are per company. A component mapped for one company is not automatically mapped for another, so a value with nowhere to go is silently dropped — the amber flag is myWork telling you it was.
Fix: go to People ▸ Payroll ▸ Payroll Settings ▸ SimplePay Export Setup, select that employee's company at the top, map the component to the right SimplePay item in the Send as column, Save, then re-run Export to SimplePay (or Send to SimplePay on just that employee).
B2 — The input doesn't exist on the employee's SimplePay profile
Sign: the employee's row is FAILED with "Unknown attributes".
SimplePay only accepts a value for an input the employee already has on their profile. If that pay item has never been added to the employee, the value is rejected.
Fix: myWork tries to create the missing input automatically and re-send (this is on by default). If it's still failing, add the pay item to the employee in SimplePay (on their Regular/Payslip inputs), then use Send to SimplePay on that employee to re-send. This is exactly the case of "it worked after I added the field on the employee's profile."
B3 — The feature is not enabled at company level in SimplePay
Sign: FAILED with a message like "Commission is not enabled".
The mapping and field are correct, but the feature is switched off for the whole company in SimplePay, so no employee in it can receive that item.
Fix: enable the feature for the company in SimplePay, then re-send. (Nothing to change in myWork.)
B4 — The employee is not linked to SimplePay
Sign: the employee's row is UNRESOLVED — "No SimplePay company set" or "No SimplePay employee id."
Fix: open People ▸ Human Resources ▸ SimplePay Employees, link the employee (set their company and SimplePay id, or match their worker number), then re-send.
Scenario C — A bonus or loan that is meant to be skipped this month
Skipping is normal: if a component simply has no value this month, myWork sends nothing for it — nothing more to do.
The catch is Scenario A: because myWork sending nothing does not clear SimplePay, a skipped bonus or loan can still show last month's amount. So after skipping, always run Check stale inputs — if the skipped item appears there, Clear in SimplePay so it doesn't pay again.
Reading the export results
After Export to SimplePay (or a single Send to SimplePay), each employee gets a status:
OK — everything myWork sent was accepted onto the draft payslip. Nothing to do — confirm the figures in step 3.
FAILED — "Unknown attributes" — an input isn't on the employee's SimplePay profile (B2). Add the pay item on the employee in SimplePay, re-send.
FAILED — "… is not enabled" — feature off for the whole company (B3). Enable it in SimplePay, re-send.
FAILED — "saved NOTHING" / "rejected N of M" — SimplePay rejected some or all values; the reason is shown. Read the reason (usually B2 or B3), fix, re-send.
UNRESOLVED — employee isn't linked to SimplePay (B4). Link on SimplePay Employees.
NOT sent (unmapped for this company) — a valued component isn't mapped for that company (B1). Map it on SimplePay Export Setup.
SKIPPED — the employee had no mapped inputs to send. Usually fine; check they weren't expecting something (B1).
CLEARED — a stale value was zeroed for this employee. Confirm the payslip updated.
Quick reference
SimplePay pays more / an old amount stayed — stale input (re-map, skip, or no longer earned). Check stale inputs, then Clear in SimplePay.
A value shows an amber "not mapped" flag — not mapped for that employee's company (B1). SimplePay Export Setup, that company, map, re-send.
Row FAILED — Unknown attributes — input not on the employee in SimplePay (B2). Add the pay item on the employee in SimplePay, re-send.
Row FAILED — … is not enabled — feature off at company level (B3). Enable in SimplePay, re-send.
Row UNRESOLVED — employee not linked (B4). Link on SimplePay Employees, re-send.
A skipped bonus/loan still pays — stale input from a previous month (A/C). Check stale inputs, then Clear in SimplePay.
Small tax-only difference — normal, SimplePay computes tax. No action.
Habits that stop differences
Reconcile every run (step 3) and clear the Δ before you Write to ledger — never finalise on a difference you haven't explained.
After any mapping change, run Check stale inputs — a re-map is the classic double-pay.
Keep every employee linked and mapped for their own company — most "missing line" cases are B1 or B4.
Fix and re-test one employee at a time with Send to SimplePay before re-running the whole export.