FFP Guides

Integration

Why is ServiceM8 creating duplicate contacts in Xero?

ServiceM8 creates a new Xero contact whenever you approve an invoice for a client that is not already a synced contact. A client added or imported in ServiceM8 with a slightly different name from the Xero contact therefore becomes a second contact. Merge the duplicate clients in ServiceM8 first, then tidy Xero, and add new customers in one system only.

Last checked 25 Sep 2026 against the sources listed at the end of this page.

Symptom: Xero shows two or more contacts for the same customer, such as 'Smith Plumbing' and 'Smith Plumbing Pty Ltd', and invoices from ServiceM8 are split between them.

Causes, most common first

  1. The client was created in ServiceM8 instead of being picked from the Xero contacts ServiceM8 already imported, so it was never linked.

    Check: In ServiceM8 open Account, Clients and search the customer's name. Two entries for one customer is the usual sign.

    Fix: Tick both versions and use Actions, Merge Clients. From now on, search before creating a client, because ServiceM8 already holds every Xero customer.

  2. A CSV bulk import into ServiceM8 brought in clients that already existed in Xero under slightly different names.

    Check: The duplicates in Xero were created on the date of their first ServiceM8 invoice after the import, and the names differ by a suffix, an ampersand or a spelling.

    Fix: Merge the imported clients into the synced ones in ServiceM8. For future imports, connect Xero first and let it populate ServiceM8, which ServiceM8 recommends as the best way to load clients.

  3. Near matching names. Xero rejects an exact duplicate name among active contacts, so the duplicates that get through always differ in some small way.

    Check: Sort Xero contacts by name and look for pairs that differ only by 'Pty Ltd', 'The', punctuation or a trading name.

    Fix: Agree one naming rule (usually the legal name, with the trading name in the contact's details) and fix the survivor's name in one system; the change syncs to the other within 30 minutes.

  4. Someone archived the original Xero contact, the next invoice failed, and a new contact was created to get it through.

    Check: Look in Xero under Contacts, Archived for an older copy of the customer.

    Fix: Restore the archived contact rather than creating another. ServiceM8 needs the linked contact active before it can create invoices for it.

  5. Each property of a multi site customer was set up as its own client, so each one became its own Xero contact.

    Check: Xero has a contact per address for one agency, builder or head office.

    Fix: Use the Client Sites add-on so sites sit under one head office client and invoices go to Xero under the head office name.

How ServiceM8 decides to create a contact

When you first connect, ServiceM8 pulls every customer contact out of Xero and keeps them linked. From then on, the rule is simple: when you approve an invoice for a client that is not already a synced contact, ServiceM8 creates a new contact in Xero. ServiceM8's help centre does not publish how it would match a new client to an existing Xero contact by name, so treat any client you create by hand in ServiceM8 as a future new contact unless you picked it from the list.

There is one case that runs the other way. If a client exists in ServiceM8 but has not yet synced, and someone types the same client into Xero, ServiceM8's help centre says the ServiceM8 client will be overwritten. Adding the same new customer in both systems on the same day is therefore risky in both directions.

Merging without losing history

Start in ServiceM8. Go to Account, Clients, tick each copy of the customer and choose Actions, Merge Clients, so every job and invoice sits under one client. Then work on Xero with your bookkeeper, because the invoice history lives there.

Be careful with deletes. ServiceM8 archives the Xero contact of any client deleted in ServiceM8, and removes a client from ServiceM8 within 30 minutes of its contact being archived or deleted in Xero. So after any merge, wait half an hour, then check that the surviving customer is still active in both systems and that Xero's Archived list does not now hold the contact you meant to keep. If it does, restore it before approving the next invoice.

Keep one front door for new customers

Duplicates stop when new customers are created in one place. For most trade businesses that is ServiceM8, since the job starts there, and the contact reaches Xero with the first approved invoice. Tell your bookkeeper not to create contacts in Xero for anyone who will be invoiced from ServiceM8, and ask the office to search by phone number or email before creating a client, since names are where the variations creep in.

Sources

  1. New contacts are automatically created in Xero when an invoice is sent for a client that is not already a synced contact. ServiceM8 Help Center, checked 25 Sep 2026.
  2. On first connection all customer contacts in Xero are pulled into ServiceM8; clients created in ServiceM8 are created in Xero when their first invoice is approved; after that names, phone numbers, addresses and billing fields sync both ways about every 30 minutes. ServiceM8 Help Center, checked 25 Sep 2026.
  3. A client in ServiceM8 not yet synced with Xero will be overwritten if the same client is entered manually into Xero; contacts deleted or archived in Xero are removed from ServiceM8 within 30 minutes; contacts are archived in Xero when deleted from ServiceM8. ServiceM8 Help Center, checked 25 Sep 2026.
  4. Duplicate clients are fixed in the Online Dashboard under Account, Clients by ticking each version and choosing Actions, Merge Clients. ServiceM8 Help Center, checked 25 Sep 2026.
  5. The best way to get existing clients into ServiceM8 is to connect Xero, MYOB or QuickBooks Online; otherwise clients can be bulk imported from CSV via Clients, Bulk Import. ServiceM8 Help Center, checked 25 Sep 2026.
  6. Xero's API rejects a contact name already assigned to another contact: the contact name must be unique across all active contacts. Xero (Accounting API specification), checked 25 Sep 2026.
  7. An archived Xero contact blocks new invoices until it is restored from Contacts, All contacts, Archived. ServiceM8 Help Center, checked 25 Sep 2026.
  8. With Client Sites, invoices for all sites are sent to the accounting package under the head office name. ServiceM8 Help Center, checked 25 Sep 2026.