How well do ServiceM8, Tradify and Fergus sync with Xero?
Short answer: All three sync invoices, payments and customers with Xero, a cloud accounting package, but they work differently. ServiceM8, a job management app for trades, sends an invoice to Xero when you approve it, syncs payments and contacts both ways within about 30 minutes, and never pulls Xero-made invoices back. Tradify, a quoting and job tool for contractors, asks you to map account codes first. Fergus, a job management tool for trade businesses, sends approved invoices automatically but syncs customer edits one way only. Pick based on where you create invoices, and keep that to one place.
You run jobs in ServiceM8, Tradify or Fergus, your books live in Xero, and you want to know what really syncs, what breaks and how to see profit per job.
I'm Ranjit, and I run Blur Studio: 15+ years building software, 120 apps taken live, and clients who have gone on to raise $10M+. I build AI systems and processes that help businesses do a lot more with a lot less time. I also work differently from most of what else is out there, more on that further down this page. Say hello.
What the Xero sync does in each tool
A sync is a link that copies records between two programs. For a trades business the records that matter are customers, invoices and payments. Here is how each tool handles them, taken from the vendors' own help pages as of November 2026.
| ServiceM8 | Tradify | Fergus | |
|---|---|---|---|
| Invoices to Xero | Sent when you approve the invoice | Posted from Tradify; stays a draft until Xero assigns the number if you use the Xero numbering preset | Sent automatically when you approve a customer invoice |
| Invoices made in Xero | Not sent to ServiceM8 | Allowed, if you turn on the Xero numbering preset | Payment reconciled in Xero marks the Fergus invoice paid |
| Payments | Both ways, within 30 minutes | Both ways: payments recorded or reconciled in Xero mark the Tradify invoice Paid | Mark paid in Xero, shows paid in Fergus |
| Customers | Both ways, within 30 minutes | Imported from Xero; edits made in Tradify sync when you send invoices and bills | One way: Fergus to Xero only |
| Suppliers and bills | Suppliers not imported | Bills and suppliers supported | Supplier invoices sent when processed, no automatic supplier sync |
Prices as of November 2026, in US dollars: ServiceM8 charges by jobs per month, not by user: Free ($0, 1 user, 30 jobs), Starter $29 (50 jobs), Growing $79 (150 jobs), Premium $149 (500 jobs) and Premium Plus $349 (1,500 or more jobs), with unlimited users on paid plans. Tradify charges per user a month: Lite $47, Pro $51, Plus $61, and lists Xero and QuickBooks Online sync on all three. Fergus shows "from" prices of $31 (Essentials) and $44 (Professional) a month on its US pricing page, so confirm the total for your headcount.
ServiceM8 and Xero in detail
ServiceM8's sync rules are the most fully written down, so they are worth knowing even if you pick another tool.
- Approve to send. An invoice goes to Xero when you approve it. If you change the total afterwards, the line items re-sync, but only until a payment or credit note is allocated in Xero. After that, edit in Xero.
- Zero-value invoices do not sync. An invoice of 0.00 is never sent. If an approved invoice fails to appear, check for missing line items first.
- Contacts and items. Contacts and items typed into Xero reach ServiceM8 within 30 minutes. Xero items become ServiceM8 Materials. Clients and materials made in ServiceM8 only travel to Xero with an approved invoice. Suppliers in Xero (contacts that have had a bill applied) are not imported unless they are also customers.
- Tax rates flow one way. Taxes imported from Xero update when you change them in Xero. Changes made in ServiceM8 do not sync back.
- Invoice number clashes. The invoice number must be unique in Xero. If it is taken, ServiceM8 adds a letter, so job 4899 becomes 4899A, then 4899B. You can set Xero to issue the invoice numbers instead.
- Xero-side limits. Archived contacts block invoices until you restore them. Xero's Starter plan caps invoices per month, which causes the error "You have reached the limit of invoices you can approve."
- Tracking categories. A ServiceM8 add-on lets you pick Xero tracking categories on the job card and sends them with the invoice. They sync once a day, so changes in Xero can take up to 24 hours to show.
An edge case that costs people money: a client in ServiceM8 that has not yet synced is overwritten if you type the same client by hand into Xero. Let one system create customers.
Tradify and Fergus in detail
Tradify. Setup asks for four account codes: Sales of Labour, Sales of Materials, a bank account and Purchases. It also has presets. "Use Xero invoice numbering sequence" is recommended if you create invoices in both programs, and the invoice stays a draft in Tradify until Xero assigns the number. "Send invoice description to Xero" turns the description into a line item. Tradify advises managing customers, suppliers and price list items in Tradify, because re-importing from Xero overwrites matching Tradify records. Tradify's Xero sync is offered in New Zealand, the UK, Australia, the US, Canada, Ireland and South Africa. Tradify also has a separate help page on Xero error messages.
Fergus. You connect from Settings, Integration Centre, then Xero, and can import customers from Xero on day one. Fergus advises importing customers and suppliers first so records match. Customer edits sync one way, from Fergus to Xero with the next invoice. It does not sync inventory, so export your Xero items as a CSV and load them as a price book. Voiding an invoice in Fergus voids it in Xero too, but does not make a credit note, so your tax figures need a credit note made in Xero. It also advises using Fergus Invoice Reminders rather than Xero's, to keep invoice formatting consistent.
How to set up a clean sync, step by step
- Tidy Xero first. Merge duplicate contacts and archive the dead ones. Duplicate names are the main cause of weird syncs.
- Decide where invoices are born. Pick the job tool. Do not create invoices in both places unless you have set up Xero invoice numbering.
- Connect from the job tool. In ServiceM8, go to Settings, ServiceM8 Add-ons, then connect Xero and choose the organisation. In Tradify, go to Settings, Integrations, Xero. In Fergus, go to Settings, Integration Centre.
- Map the accounts. Choose the revenue, bank and payment accounts. Ask your bookkeeper, because a wrong code is the hardest thing to unpick later.
- Run one test job. Create a small job, invoice it, approve it, take a payment. Check the invoice, the contact and the payment in Xero.
- Write the rule down. One line: "Invoices are created in the job tool. Payments can be recorded in either. Edits after payment are made in Xero."
Reporting across job and Xero data
Neither side gives you full profit per job on its own. The job tool knows time, materials and the invoice. Xero knows bills, wages and the bank. To join them you need one shared key, the job number.
- In ServiceM8, the Xero reference field holds the PO number when your invoice number is the job number, or the job number when Xero issues invoice numbers. Pick one and keep it.
- In Fergus, turn on "Show job ID in reference field" so the Fergus job number appears in Xero.
- In ServiceM8, use Xero tracking categories to tag jobs by type or team.
A worked example, with made-up figures. A two-person electrical firm invoiced $4,800 for a job (ServiceM8 data) and has $1,350 of materials bills and $1,200 of labour posted against the job reference in Xero. Profit is $4,800 minus $2,550, which is $2,250, or 47 percent. Export both lists to a spreadsheet, match on job number, and one formula does this for every job. If you want that done automatically, a small tool can pull both sides and produce a weekly job profit sheet. See business process automation for how I scope that kind of link.
When you need more than the built-in sync
ServiceM8 has a REST API. You create an API key under Settings, API Keys, with no developer account needed for private use, and send it in an X-API-Key header. Webhooks tell your own system when a job changes. For Fergus and Tradify, ask the vendor's support whether API access is offered on your plan before you plan custom work. For a plain comparison of the tools, see my Simpro vs ServiceM8 and ServiceM8 alternatives pages, and my UK job management software guide. If the office runs on repeat jobs and quotes, my note on AI for tradies shows where the next hour of savings usually is.
How I'd approach this
I would pick the tool for how your jobs run, not for the Xero link, because all three do the basics. Then I would spend my effort on the rule of one place for invoices, a clean Xero contact list, and a job number on every record. Most "the sync is broken" problems I see are really two people creating the same customer in two places. Do those three things and the built-in sync is enough for a long time.
Questions people ask
Does ServiceM8 sync with Xero both ways?
Partly. Payments and contacts sync both ways within about 30 minutes, and Xero items become ServiceM8 Materials. Invoices go one way only: from ServiceM8 to Xero when approved. Invoices made in Xero are not sent to ServiceM8, and tax changes made in ServiceM8 do not sync back to Xero.
Why is my ServiceM8 invoice not appearing in Xero?
Two causes are most common. The invoice has a value of 0.00, which ServiceM8 does not send, or you have more than one Xero organisation and it synced to a different one. Add line items or reconnect to the right organisation, then approve again. A duplicate invoice number or an archived contact also blocks a sync with a clear error.
Which is better for Xero, Tradify or Fergus?
Both send invoices to Xero. Tradify has account code mapping, five presets and a help page on Xero error messages. Fergus syncs customers one way and has no inventory sync, but it creates missing customer and supplier records in Xero for you. Choose by the rest of your workflow, then compare in job management software UK.
Can I get profit per job from ServiceM8 and Xero?
Not from either side alone. Put the job number in the Xero reference field, optionally use tracking categories, then match invoices to bills in a spreadsheet. A small custom report can automate it. See AI for tradies for other quick wins.
Does ServiceM8 have an API for custom work?
Yes. ServiceM8 has a REST API, API keys for private use under Settings, API Keys, and webhooks. It also has a developer portal and an add-on store. A private key lets a developer read and write your own account only. Compare options in ServiceM8 alternatives.
More in this topic: Field service: templates, integrations and how-tos (10 guides) →
Sources
- ServiceM8 help: How the sync with Xero works
- ServiceM8 help: How do I connect ServiceM8 to Xero
- ServiceM8 help: Resolving Xero invoice number conflicts
- ServiceM8 help: Xero tracking categories
- ServiceM8 developer docs: Authentication
- ServiceM8 US pricing
- Tradify help: Understanding Xero and Tradify's integration
- Tradify pricing
- Fergus help: Accounting software Fergus integrates with
- Fergus help: Connect to Xero
- Fergus help: Voiding customer invoices with an accounting integration
- Fergus US pricing
- ServiceM8 help: Resolving Xero invoice synchronization issues
- ServiceM8 help: Resolving contact archive errors
- ServiceM8 help: Invoice approval limit
- ServiceM8 help: Xero reference field