The "invoice must be unique" error means Xero already holds an invoice with the number ServiceM8 is trying to send. Find the clashing invoice, fix it based on its status, then approve the job again.
- Search Xero under Business > Invoices > All with Include Deleted & Voided ticked. Voided and deleted invoices still hold their numbers.
- Draft or Awaiting Approval: delete it or change its number. Awaiting Payment or Paid: change the number under Invoice Options > Edit.
- Voided or Deleted: copy the invoice in Xero, then approve the job in ServiceM8 with "Approve job(s) without sending to Xero."
- If the error keeps coming back, email support@servicem8.com and ask them to change the job number.
- Renumber an invoice before you void it in Xero, such as adding "void" to the end, so the original number is freed.
- Select Let Xero issue invoice number under Settings > Preferences > Invoicing > Xero so the two systems stop competing for numbers.
Keep asking about it in
Quick answer: The “invoice must be unique” error means Xero already has an invoice with the same number ServiceM8 is trying to send. Search Xero for that number with deleted and voided invoices included. Then delete, renumber or copy the clashing invoice, depending on its status, and approve the job again.
What does “invoice must be unique” mean in ServiceM8?
You see it as an error icon on a job in Invoicing > Awaiting Approval. Xero will not accept two invoices with the same number. ServiceM8 tried to send one, Xero found a match, and the approval failed.
The match is often an invoice you can’t see. A voided or deleted invoice in Xero still holds its number.
How do I find the clashing invoice in Xero?
- In Xero, go to Business > Invoices > All > Search.
- Tick Include Deleted & Voided.
- Type the invoice number into the search field.
- Click Search.
Note the status of the invoice that comes up. The fix depends on it.
How do I fix the error for each Xero invoice status?
| Xero invoice status | Fix in Xero | Then in ServiceM8 |
|---|---|---|
| Draft or Awaiting Approval | Delete it with Invoice Options > Delete, or change its number and click Save. | Approve the job again. |
| Awaiting Payment or Paid | Open Invoice Options > Edit, change the number, click Save. | Approve the job again. |
| Voided or Deleted | Click Invoice Options > Copy to make a new invoice from it. | Go to Invoicing > Awaiting Approval, select the job, right-click, and choose Approve job(s) without sending to Xero. |
Watch the last row. That option approves the job in ServiceM8 and sends nothing to Xero. The copy you made in Xero is the invoice. Check its line items and total match the job before you move on.
What if the error keeps coming back?
Email ServiceM8 Support at support@servicem8.com. Ask them to change the job number so the invoice can sync. You can’t change it yourself.
How do I stop the error from happening again?
Two habits cover most of it.
Renumber before you void. If you need to void or delete an invoice in Xero and send it again later, change its number before you void it. ServiceM8 suggests adding “void” to the end of the number. That frees the original number.
Stop making invoices in Xero by hand. An invoice typed straight into Xero can take a number ServiceM8 wants later. If your office does both, change one setting in ServiceM8:
- Go to Settings > Preferences > Invoicing > Xero.
- Find Xero invoice number.
- Select Let Xero issue invoice number.
With that on, Xero hands out the numbers, so the two systems stop competing for them. If someone was typing up one Xero invoice to cover several jobs, see how to bill multiple ServiceM8 jobs together.
Why didn’t my invoice reach Xero even with no error?
Two other causes look similar but are not a number clash:
- The invoice total is $0.00. ServiceM8 does not send zero-value invoices to Xero. Add priced line items and approve again.
- It went to a different Xero organization. If you have more than one, check the others.
Running QuickBooks Online instead? Here is why QuickBooks payments can still show unpaid in ServiceM8.
Need more calls coming in?
Web Blend builds websites, video and Google Ads for contractors. If the phone is too quiet, let’s talk.