Integrations
The Integrations page is where payroll data gets into FairCheck without anyone uploading a file. There are two routes in: push pay runs to FairCheck's signed webhook from your own systems, or connect a payroll platform and let FairCheck pull the data. Either way, every payslip that arrives goes through the same compliance checks as an uploaded one.
Anyone can view the page, but your real webhook key and signing secret only appear when you are signed in, and connecting, changing, syncing or disconnecting a provider — and rotating the signing secret — is limited to account admins (see Team members).
Send pay runs to our webhook
The Endpoint card shows the URL to POST pay-run payloads to, together with two credentials that belong to your account:
- Webhook key — sent as the
X-Faircheck-Keyheader so FairCheck knows which account is pushing. It starts withwhkey_and, as the page says, is "Safe to embed in config". - Signing secret — starts with
whsec_and is used to compute the request signature. Treat it like a password and never expose it client-side.
Both have a copy button when you are signed in.
Each request must carry these headers:
| Header | What it holds |
|---|---|
X-Faircheck-Key |
your account's webhook key (whkey_…) |
X-Faircheck-Signature |
HMAC-SHA256 of "<timestamp>.<raw body>", keyed with your signing secret |
X-Faircheck-Timestamp |
unix seconds; rejected if more than 5 minutes from now |
Idempotency-Key |
your own unique id per payslip (optional but recommended, so a retry never double-checks a pay run) |
Content-Type |
application/json |
The page lists the response codes you can expect:
| Code | Meaning |
|---|---|
202 |
Accepted — queued for compliance |
400 |
Malformed payload |
401 |
Missing / invalid signature or stale timestamp |
409 |
Duplicate (idempotency key seen) |
429 |
Rate limited — retry with backoff |
A delivery can contain up to 100 payslips. Accepted payslips are queued straight away and evaluated asynchronously.
Rotate secret
Rotate secret issues a new signing secret. The previous secret keeps verifying for 24 hours, so you can roll keys in your own systems without downtime — the confirmation reads "Rotate the signing secret? Your current secret stops working in 24 hours." During that window both the current and the previous secret are accepted.
The full payload contract, the example request, and the outbound payslip.completed notification are documented at /developers/webhooks.
Choose your payroll platform
The Connect an app gallery lists every platform FairCheck knows about. Each card shows the provider's status and how it authenticates.
| Provider | Status | Authenticates with | What FairCheck pulls |
|---|---|---|---|
| Xero Payroll | Available | Secure OAuth connection | Employees, posted pay runs and payslips from Xero Payroll (AU) |
| MYOB AccountRight | Available | Secure OAuth connection, plus the company file's own sign-in | Employees and timesheet hours by date. Pay runs are not pulled — the hours attach to payslips you upload for the same period |
| Employment Hero (KeyPay) | Available | API key and Business ID | Pay runs and payslips, plus rostered and actual hours |
| Deputy | Coming soon | Secure OAuth connection | — |
| QuickBooks Payroll | Coming soon | Secure OAuth connection | — |
| Reckon Payroll | Coming soon | API key | — |
| ADP | Coming soon | Secure OAuth connection | — |
"Coming soon" cards show a disabled Notify me button and cannot be connected. If your platform is not listed, push data via the webhook instead, or use ask us to add it.
Every connection is read-only. FairCheck never writes back to your payroll system or changes anyone's pay.
None of the three live providers publishes a payroll webhook FairCheck could subscribe to, so polling is the automatic option for all of them: FairCheck checks each connected provider for completed pay runs every hour, and pulls roster and timesheet feeds every four hours. The first pull of pay runs reaches back 90 days; roster pulls cover the last 60 days.
Provider notes worth knowing before you connect:
- Xero Payroll — only posted pay runs are read; drafts are skipped because they can still change.
- MYOB AccountRight — timesheets record a date and a number of hours, with no start or finish times. That settles weekend, public-holiday and overtime questions, but evening and night penalties can't be checked from this feed.
- Employment Hero (KeyPay) — approved timesheets count as evidence of the hours worked, which is what lets a result claim an actual dollar figure rather than only flag something as Worth checking.
Connecting a provider
Click Connect on an available card (or Log in to connect if you are signed out) to open that provider's setup page. It lists the steps under How it works and the read-only scopes FairCheck will request.
OAuth providers (Xero, MYOB)
Click Continue to
MYOB needs a second credential. Your my.MYOB sign-in reaches the list of company files, but opening a file needs that file's own username and password. After authorising, the setup page shows Company file sign-in needed, with:
- Company file — a selector, if more than one file was shared
- File username — defaults to
Administrator - File password — leave blank if the file has none
Click Open company file. FairCheck stores the credentials encrypted and checks the file actually opens before keeping them; if MYOB rejects them, the previous working credentials are put back and you are asked to check the username and password. On success a sync is queued and you are taken to the Employers page: "Last step: pick the employer, then set each person's award." You can update the file sign-in later from the same card (Update file sign-in).
API key providers (Employment Hero)
Enter your Business / Company ID and a read-only API key, then click Connect. The key is stored encrypted, and FairCheck checks it works before saving, "so a mistyped key can't sit there looking connected while nothing syncs."
After connecting
Once connected, the setup page shows a Connected chip and:
- Last synced — when the last pull finished, or "never".
- Sync now — queues a pull immediately instead of waiting for the hourly poll. This is limited to five requests a minute.
- For Xero, a Setup checklist showing how many pay items are mapped and how many employees have an award, with Pay items and Employers buttons. Until pay items are set, "every line would be priced as ordinary hours".
Two things need to be in place before a result from a connected provider means anything: what each pay item is (see What does each pay item mean?) and which award each person is on (set on the Employees screen, the same place used for uploaded payslips).
Needs reconnecting
If the provider rejects FairCheck's authorisation — it expired or was revoked at their end — the chip changes to Needs reconnecting and the page says Syncing has stopped. Nothing syncs until you click Reconnect
Sync mode
The How should payslips flow in? form on a connected provider's setup page offers:
- Poll on a schedule — "We check
for completed pay runs every hour." - Push via webhook — "
notifies us the moment a pay run is finalised." This option is only offered for providers that publish payroll webhooks, which none of the live providers do, so you will not see it today. - Fixed / manual — "No automatic sync — import runs on demand."
Click Save sync mode to apply. Sync now is available whichever mode is selected.
Disconnect
Disconnect from
- For OAuth providers, FairCheck also revokes the grant at the provider, so it disappears from your connected-apps list there. If the provider can't be reached, FairCheck still disconnects on its side and asks you to also remove FairCheck under the provider's Settings → Connected apps.
- For API key providers, the key was issued by you, so revoke it in the provider's own admin.
What does each pay item mean?
Payroll platforms let each organisation name its own pay items — "Ordinary Hours", "Lumpsum W", "Sat Penalty" — and FairCheck can't price a payslip until it knows which of those are hours someone worked and which are allowances. Hours are checked against the award minimum wage; allowances are not. Marking an allowance as hours would compare a flat payment against an hourly floor and report an underpayment that isn't real.
The mapping page (Pay items on the setup page) lists every pay item the provider returned, with three columns: Name in
The options are:
| Option | Meaning |
|---|---|
| Ordinary hours | Normal working hours at the base rate. |
| Saturday hours | Hours worked on a Saturday, usually paid at a higher penalty rate. |
| Sunday hours | Hours worked on a Sunday. |
| Public holiday hours | Hours worked on a gazetted public holiday. |
| Evening / afternoon hours | A loading for finishing late in the evening. |
| Night hours | A loading for an overnight or graveyard shift. |
| Overtime hours | Hours beyond ordinary hours. The only kind of hours that doesn't count towards super. |
| Paid leave hours | Annual, personal/sick or long service leave — paid time not worked. |
| Allowance that counts towards super | A regular payment on top of wages forming part of ordinary time earnings — a tool, leading-hand or industry allowance. |
| Allowance that does NOT count towards super | A payment that isn't ordinary time earnings — a reimbursement, meal or travel allowance, or a termination payment. |
If you are not sure whether an allowance counts towards super, leave it as "does NOT count towards super" — FairCheck then treats it as uncertain and widens the range it accepts, rather than reporting a super shortfall that may not exist.
Suggestions and confidence
For Xero, every row arrives pre-filled with a suggestion, read from the item's name in Xero and how it is paid, and a badge saying how sure FairCheck is:
| Badge | What it means |
|---|---|
| Saved | You have already chosen this; a saved choice always wins over a suggestion. |
| Xero says this is an ordinary pay rate | Xero itself records this as someone's ordinary pay — the strongest evidence. |
| Suggested from the name | The name was descriptive enough to decide. |
| Best guess from how it's paid — please check | Decided from the rate type and multiplier; give it a second look. |
| Best guess — please check | An AI guess for a genuinely ambiguous name; give it a second look. |
| Not sure — assumed ordinary hours, please check | Nothing pointed anywhere; defaulted to ordinary hours. |
Other providers get plain dropdowns without suggestions. Click Save and continue to store the mapping and move on to the Employers page to set each person's award. You can come back and change the mapping at any time; a wrong answer only means a compliance result you shouldn't trust, so fix it and re-check the affected payslips.
When there is nothing to map
- If the Xero organisation doesn't have Payroll enabled, the page redirects back to setup with: "This Xero organisation doesn't have Payroll enabled, so there's nothing for FairCheck to read. Turn on Payroll in Xero, then come back."
- MYOB has no pay items to map, because pay runs are not pulled from it; opening the mapping page redirects with "MYOB AccountRight has no pay items to map."
- If the provider's authorisation has lapsed, you are asked to reconnect before editing the mapping.