Integration
Paid in Xero but still showing unpaid in ServiceM8: why, and what to do
ServiceM8 pulls a payment back from Xero within 30 minutes, but only for invoices that ServiceM8 itself exported, and it only marks the job paid once the full amount is received. Part payments, invoices raised in Xero, an expired connection and invoices closed with a credit note or overpayment rather than a payment are the usual reasons it stays unpaid.
Last checked 25 Sep 2026 against the sources listed at the end of this page.
Symptom: Your bookkeeper has reconciled the payment in Xero, the invoice shows Paid there, but the ServiceM8 job still shows an amount owing and payment reminders keep going out.
Causes, most common first
It has not synced yet. Payments received in Xero come back to ServiceM8 within 30 minutes, not instantly.
Check: Note the time the payment was reconciled in Xero. If it was less than half an hour ago, wait.
Fix: Check again after 30 minutes before changing anything in either system.
Only part of the invoice is paid. ServiceM8 marks an invoice paid once full payment has been received in Xero.
Check: Open the invoice in Xero and compare Amount Due with the total. Any balance left, even a few cents, keeps it open.
Fix: Collect or write off the balance in Xero in the way your bookkeeper prefers. The job flips to paid on the next sync after the balance reaches zero.
The invoice was never exported from ServiceM8. It was created in Xero directly, or the job was approved with Approve job(s) without sending to Xero.
Check: Search Xero for the ServiceM8 job number. If the Xero invoice has a different number, or the job was approved without sending, there is no link for the payment to follow.
Fix: Payments only sync back for invoices ServiceM8 exported, so this job has to be closed by hand. Agree with your bookkeeper before recording anything on it, and stop raising invoices for ServiceM8 jobs in Xero.
The invoice was closed in Xero by a credit note, an overpayment or a prepayment rather than a payment.
Check: In Xero the invoice shows a credit applied rather than a payment. Xero records credit notes, overpayments and prepayments applied to an invoice separately from payments received, and ServiceM8's help centre only describes payments syncing back.
Fix: Do not record a matching payment in ServiceM8: payments added in ServiceM8 after approval are sent straight to Xero and would pay the invoice twice. Ask ServiceM8 support how to close the job without a payment, and use Xero for credits going forward.
The connection to Xero has expired, so nothing is flowing in either direction.
Check: Look for the 'Xero Access Token Has Expired' notice on the Invoicing page, and check whether new invoices are also stuck.
Fix: Click Authorise ServiceM8 With Xero and reconnect to the right organisation. Payments made while it was down come back on the normal cycle.
It is a ServiceM8 Pay deposit that is waiting to be applied. Deposits sit in Xero as a prepayment credit on the contact until the job is finished.
Check: The customer paid a deposit when accepting the quote, and the Xero invoice shows the prepayment unallocated.
Fix: Mark the job Completed, take the remaining balance and approve the invoice. The deposit is applied to the invoice in Xero once the job is Completed, fully paid in ServiceM8 and approved.
The customer paid several invoices in one transfer and your bookkeeper recorded it as a batch payment.
Check: In Xero, the payment appears as one batch transaction covering several invoices. ServiceM8's help centre does not describe how batch payments sync back.
Fix: Check each invoice in the batch in ServiceM8 after 30 minutes. Any that stay open, raise with ServiceM8 support with the Xero batch details rather than entering the payment again.
How payments are meant to flow
Payments travel both ways between ServiceM8 and Xero, but not symmetrically. A payment taken in ServiceM8 before the invoice is approved goes to Xero when the invoice is exported, and a payment taken after approval goes immediately, into whichever Xero account you set as the Default account for payments. In the other direction, a payment recorded in Xero against an invoice that ServiceM8 exported comes back within 30 minutes, and the job is marked paid once the full amount has been received.
Two words in that rule do most of the work. Exported means the invoice has to have started life in ServiceM8 and been approved across; ServiceM8 has nothing to match a payment against otherwise. Full means part payments do not flip the job to paid, so a customer who short pays by a few dollars stays on your debtor list in ServiceM8.
Credits are not payments
Xero keeps two separate totals on every sales invoice: the amount paid, which is the sum of payments received, and the amount credited, which is the sum of credit notes, overpayments and prepayments applied to it. ServiceM8 cannot create credit notes itself, so any credit is raised in Xero, and ServiceM8's help centre talks only about payments coming back. If an invoice was settled by applying a credit, treat the ServiceM8 side as something to check rather than assume.
Whatever the cause, resist fixing it by adding a payment on the ServiceM8 job. ServiceM8 sends that payment to Xero straight away, and your bookkeeper then has a duplicate payment to unwind. ServiceM8's own instruction for removing an exported payment is to do it in Xero, from the payment's account in the Chart of Accounts, using Options and Remove and Redo.
Pick one place to receipt money
Most double payments come from the office and the bookkeeper both recording the same money. Decide who owns receipting. If techs take card payments on site through ServiceM8, those flow to Xero on their own. If customers pay by bank transfer, let your bookkeeper reconcile them in Xero and let the sync carry them back. Keep a short weekly check of jobs that are paid in Xero but open in ServiceM8, and look at those individually rather than bulk editing.
Sources
- Payments received in ServiceM8 before approval go to Xero when the invoice is exported, and after approval immediately; payments received in Xero against an invoice exported from ServiceM8 sync to ServiceM8 within 30 minutes; once full payment is received in Xero the invoice is marked paid in ServiceM8; invoices created in Xero are not sent to ServiceM8. ServiceM8 Help Center, checked 25 Sep 2026.
- Jobs can be approved from Invoicing, Awaiting Approval without syncing to the accounting software, via right click and Approve job(s) without sending to Xero. ServiceM8 Help Center, checked 25 Sep 2026.
- On a Xero sales invoice, AmountPaid is the sum of payments received and AmountCredited is the sum of all credit notes, overpayments and prepayments applied to the invoice. Xero (Accounting API specification), checked 25 Sep 2026.
- Xero batch payments bundle multiple bills or invoices into one payment transaction. Xero (Accounting API specification), checked 25 Sep 2026.
- ServiceM8 cannot create credit notes; they are created in the accounting package. ServiceM8 Help Center, checked 25 Sep 2026.
- A payment exported from ServiceM8 to Xero must be removed in Xero, by finding it in the payment account's transactions from the Chart of Accounts and using Options, Remove and Redo. ServiceM8 Help Center, checked 25 Sep 2026.
- ServiceM8 Pay deposits sync to Xero as a prepayment credit against the client and are not applied to the invoice in Xero until the job is Completed, fully paid in ServiceM8 and approved to Xero. ServiceM8 Help Center, checked 25 Sep 2026.
- The 'Xero Access Token Has Expired' notice appears 12 months after connecting, if ServiceM8 is disconnected within Xero, if the Xero subscription expires or during Xero API interruptions. ServiceM8 Help Center, checked 25 Sep 2026.