BreatheHR and Xero payroll integration: the complete guide for UK businesses.
Most BreatheHR users struggle to sync payroll data to Xero. The native integration is more limited than the marketing suggests — and most businesses end up with a partial sync, a data mismatch, or a spreadsheet in the middle that someone updates manually every month. Here is exactly how it works, where it breaks, and what a properly connected stack looks like.
What the native BreatheHR–Xero integration actually does
BreatheHR has a built-in Xero integration. It is not nothing — but it is narrow. Here is what it covers out of the box.
Employee records sync. New starters created in BreatheHR can be pushed to Xero as employees. Name, start date and basic employment type come across. This saves the double-entry that most businesses do manually when onboarding.
Absence data. Approved leave in BreatheHR can feed into Xero Payroll to adjust pay calculations for the relevant period. This works reasonably well for straightforward salaried employees.
Salary and rate changes. When you update an employee's salary in BreatheHR, that change can be flagged and synced to Xero — though the timing and reliability of this varies.
That is broadly it. For a small, stable workforce with simple pay structures, this may be sufficient. But for most operators — especially anyone running multiple sites, shift-based rotas, or a mix of full-time and zero-hours contracts — the native integration creates as many problems as it solves.
Where the native integration falls short
It does not handle pay elements beyond salary. BreatheHR's Xero sync is built around salaried employees. If you are paying overtime, shift allowances, mileage, commission or any variable pay, none of that comes across automatically. It stays in BreatheHR — or in your head — and gets entered manually in Xero at payroll run.
Leavers are not reliably terminated in Xero. When an employee leaves, you mark them as a leaver in BreatheHR. That action does not consistently trigger a clean termination record in Xero — particularly if there is a notice period or final payment involved. Finance ends up chasing HR to confirm leaver details before every payroll run.
There is no payroll sign-off workflow. BreatheHR does not have a payroll approval process. There is no way for a line manager or ops director to review and approve the inputs — headcount, hours, absences — before they flow into Xero for processing. The integration pushes data, but there is no gate in between.
Multi-site businesses have no site-level visibility. If you are running more than one location, the native integration gives you one flat view. BreatheHR tracks employees by site or department, but that structure does not carry across to Xero in a useful way. Running payroll for three sites means manually splitting and verifying the data on the Xero side.
Error notifications do not exist. If a sync fails — wrong field format, missing employee ID, a change that did not push — you will not know unless you go looking. There are no alerts, no failed-sync logs surfaced to the user, no way to catch data drift before it hits your payroll.
What a properly connected BreatheHR–Xero stack looks like
The businesses that get this working well are not relying solely on the native integration. They use Make.com to build the connectors and logic that BreatheHR's built-in Xero integration does not cover.
New starter flow
When a new employee is marked as active in BreatheHR, Make.com pulls their full record — name, address, NI number, employment type, salary, start date, site. It checks Xero for a matching employee record to avoid duplicates, then creates or updates the employee in Xero Payroll with all required fields, sets the correct pay calendar and salary, and sends a confirmation to the finance contact. This eliminates the manual Xero entry that most payroll admins do after every HR induction.
Leaver flow
When an employee's status changes to leaver in BreatheHR, Make.com captures the leaving date, creates a termination record in Xero with the correct final pay date, flags any outstanding leave balance for inclusion in the final pay calculation, and notifies finance and the relevant manager with a summary — who is leaving, when, and what needs signing off before payroll closes.
Monthly payroll prep automation
Rather than relying on the native sync, a Make.com scenario runs at a fixed point each month — typically three to five working days before payroll close. It pulls all active employees with current pay rates, pulls approved absences for the period, cross-references against the Xero employee list to catch discrepancies, then generates a payroll preparation report — headcount by site, salary mass, absences, changes since the previous run — and delivers it to finance and the ops director for sign-off before Xero payroll is processed.
This replaces the spreadsheet that typically lives in someone's Downloads folder and gets emailed around manually every month.
Salary change handling
When a salary change is approved in BreatheHR, Make.com detects the updated pay rate, checks whether the effective date is past, current or future, updates Xero Payroll accordingly — immediately if current period, or scheduled for the correct future payroll run — and logs the change with a timestamp for audit purposes.
Common failure points (and how to avoid them)
Employee ID mismatch. BreatheHR uses its own internal IDs; Xero uses its own. If the link between these is not established correctly from the start, syncs fail silently. Always confirm the Xero employee reference is captured in BreatheHR, or map them explicitly in your automation layer.
Date format conflicts. BreatheHR and Xero handle date formats differently in their APIs. Always format dates to ISO 8601 (YYYY-MM-DD) before passing them to Xero.
Pay calendar timing. Xero Payroll works within pay calendars — weekly, fortnightly, monthly. If a new employee is added outside of the current pay period, Xero may not process them correctly without a manual override. Your automation needs to account for where in the pay cycle a change is being made.
Missing required fields. Xero requires more fields than BreatheHR does to create a valid employee — specifically around National Insurance and tax codes. Build field validation into your onboarding form, not your payroll process.
No error alerting. Whether you are using the native integration or Make.com, set up explicit failure notifications. In Make.com, configure an error handler on every module and route failures to a Slack channel or email. You should never be discovering sync failures during a payroll run.
Native integration or Make.com — which do you need?
Use the native integration if you have fewer than 15 employees, a stable headcount, salaried-only pay and a single location. It will cover your bases with minimal setup.
Build in Make.com if you have more than one site, shift or variable pay, regular headcount changes, or a payroll process that currently relies on any manual spreadsheet step. The native integration will create gaps that you fill with manual workarounds — which defeats the point.
The cost difference is not as large as it sounds. Make.com's basic plan covers most SME payroll automation scenarios. The time saved per payroll run — typically two to four hours of manual reconciliation — pays back the setup cost in month one.
Getting set up
If you are connecting BreatheHR and Xero for the first time, here is the sequence. Enable the Xero integration in BreatheHR under Settings → Integrations and authorise the Xero connection. Map your BreatheHR departments to Xero tracking categories if you are running multi-site. Do a manual data check — compare your active employee list in both systems and resolve any discrepancies before automation touches them. Then, if building with Make.com, use BreatheHR's API and Xero's accounting API — both have native Make.com modules. Start with the new starter scenario only. Get that working cleanly before automating leavers and salary changes.
Running BreatheHR and Xero alongside each other?
If your payroll prep still involves a spreadsheet and a round of chasing, book a 20-minute discovery call. We will map your current process and tell you straight what is worth automating first.
For more on how the integration works in practice, see our BreatheHR and Xero consultant page or the full HR onboarding automation service.