← All white papersGuide · October 2026

Finished ServiceM8 jobs nobody invoiced in Xero, found by Grok Bot or Claude

Your AI compares last month’s finished jobs against Xero and lists the ones with no invoice, biggest first. Office Voice drafts them from your own price list, and you release them.

7 min read·Published by AI Pathway

The cheapest money a trade business loses is the job that was done and never billed. It is not chased because nobody knows it is owed. Grok Bot and Claude can both read ServiceM8 and Xero side by side and find it with one prompt. Raising the invoice is where an AI needs fences, so that step goes to a service built with them.

In short

What you get
Every week, completed jobs with no invoice in Xero, ranked by dollars, plus drafts nobody released and jobs with a line that has no price.
Connecting
ServiceM8's own connector and Xero's, in Grok Bot or Claude. Both read-only for this job.
The invoice
Office Voice drafts it in Xero from your price list only, parks anything the list does not cover, and never sends. You release it.
Never
A typed or remembered rate, a second invoice for one job, an invoice for a job not marked complete, or anything sent without your release.

Take the spec to Claude, ChatGPT or Copilot. The sentence to paste is one click away.

Want the whole thing by email?

This paper, plus the rest of the library. One click to stop them.

1. What the list is

Every job completed in the last 30 days, checked against Xero, in one of four queues:

  • Not invoiced. Done, with no invoice. Ranked by job total, then days since completion.
  • Draft waiting. An invoice exists but nobody released it.
  • Needs a price. A line has no price. These come to you, never to an invoice.
  • Invoiced. Left off the list.

This is the light version, built for a bot. The full Invoice Out standard is the version a business runs at scale: the invoice out the day the job finishes, the release gate, builders’ stage invoices, and a pass test that proves it works.

2. Connect ServiceM8 and Xero

Grok Bot.Create a Bot called “Unbilled Jobs” and put the standing rules in its profile: read only, never send email or SMS, never change a job’s status, never create anything in Xero. Then paste this into its chat, click Add it and Authorize, and sign in to ServiceM8:

Add a custom MCP server called ServiceM8 at https://api.servicem8.com/mcp

It signs in with OAuth, so give me the Authorize card.

For Xero, add it from Connect apps with a read-only custom connection, step by step in our Xero debtor list guide.

Claude. Under Customize, then Connectors, add Xero from the directory and sign in, then add a custom connector named ServiceM8 at https://api.servicem8.com/mcp and sign in to ServiceM8. Set both to ask before every action, and start a Cowork task with a folder for the weekly files.

More on each connector in our guides to Claude with ServiceM8 and Claude with Xero.

3. The prompt

The same prompt works in both. Paste it into the Bot’s chat or the Cowork task.

Use the ServiceM8 connector and the Xero connection, both read only. Do not send any email or SMS, do not change any job's status, and do not create or edit anything in Xero.

In ServiceM8, list every job marked Completed in the last 30 days. For each one collect: the job number, the ServiceM8 job ID, the client's name, the completion date, the job total, and whether any line on the job has no price.

In Xero, look for an invoice for each job: the job number in the invoice number or reference, or the same client with a matching total within a week of completion. Count drafts as invoiced but flag them.

Put each job in one queue:
- Not invoiced: completed, with no invoice in Xero. Ranked by job total, largest first, with days since completion breaking ties.
- Draft waiting: an invoice exists but is still a draft in Xero.
- Needs a price: at least one line has no price. These go to me, never to an invoice.
- Invoiced: leave these out of the table.

Save the list as unbilled-YYYY-MM-DD.csv. If last week's file is there, mark any job that has left Not invoiced since.

Give me Not invoiced as a table with the total dollars, then Draft waiting and Needs a price as short lists.

Check the first run by hand against a few jobs you know were billed and one you know was not. If your ServiceM8 sends invoices to Xero under its own numbers, tell the prompt how they match.

4. Run it every week

  • Grok Bot:ask it to “save this as a skill called unbilled jobs, and create a routine that runs it every Friday at 3pm Brisbane time.” Friday afternoon catches the week before anyone forgets it.
  • Claude: type /schedule and choose weekly, Friday, 3pm. It runs while your computer is awake and the app is open.

5. Hand the drafts to Office Voice

Letting a chatbot write invoices into Xero is where things go wrong: a rate typed from memory, a job billed twice, an invoice sent before anyone looked. Office Voice, our product, drafts the invoice with those three closed off. It prices every line from your own price list, parks anything the list does not cover with the reason, raises one invoice per job, and never approves or sends. You release each one in Xero.

  1. Start an Office Voice trial and connect the same ServiceM8 and Xero. Invoice drafting comes with Get Paid, $199 a month, which also rings the invoices that go 30 days overdue.
  2. In Office Voice, create a key under Keys. Keep it like a password.
  3. Grok Bot:paste this into the Bot’s chat and click Add it. Enter the key in the secure secret card, never in the chat.
Add a custom MCP server called Office Voice at https://office-voice.com/api/mcp

It needs an Authorization header: the word Bearer, a space, then my Office Voice key. Ask me for the key with a secure secret card. Do not ask me to type it in this chat.

Claude: add a custom connector at https://office-voice.com/api/mcp, choose No sign-in, and put the key in a request header named Authorization, as “Bearer” then the key. If your organisation hides the header field, Claude Code takes it in one line.

For your developer. Show the Claude Code line
claude mcp add --transport http office-voice https://office-voice.com/api/mcp \
  --header "Authorization: Bearer <your Office Voice key>"

Then add this to the end of the weekly prompt:

Now hand the Not invoiced queue to Office Voice.

For each job in that queue, in ranked order: call read_pricebook once, then call draft_invoice with the ServiceM8 job ID and the job's lines named by catalogue_id and quantity from that price list. Never send a rate. If a line is not in the price list, leave it off and tell me; Office Voice parks the invoice with the reason.

Show me which drafts were raised, which were parked and why. Do not release, approve or send any invoice.

Steps as each tool set them out on 27 October 2026; menus move, so expect the odd label to differ. Once the invoices are out, the Monday debtor call list picks up the ones that do not get paid.

6. Questions

Can Grok Bot or Claude find jobs I forgot to invoice?

Yes. Connect ServiceM8 through its own connector and Xero through Xero's, and one prompt compares finished jobs against invoices. Both connections stay read-only for this; nothing is created or sent.

Can the AI raise the invoice in Xero for me?

Not from a typed price. Office Voice raises a draft in Xero from your own price list only, parks any line the list does not cover, and never approves or sends. A person releases each invoice in Xero.

Why not let the Bot create the invoice in Xero directly?

An AI that types a rate will one day type the wrong one, and an invoice once sent is awkward to take back. The draft-from-price-list step and a person's release are the two guards that make it safe to run every week.

Does this work for builders' progress claims?

No. A stage invoice can follow the same pattern, but a payment claim under security of payment law stays with the builder and their advisor. The full Invoice Out standard covers the difference.

What happens after the invoice goes out?

If it is not paid, it lands on the Monday debtor list, and Get Paid on Office Voice can ring it once it is 30 days overdue.

Rather skip the build?

Get Paid does the money end without a Bot in the middle: it reads your systems through its own connections, drafts invoices from your price list for you to release, and rings the ones that go overdue, $199 a month, flat, with no call caps.

Building it properly, at scale? The rules are open. Take the full standard.

Published by AI Pathway · https://aipathway.com.au

Read the full interactive version at https://aipathway.com.au/explore-ai/unbilled-jobs-servicem8-xero-grok-bot-claude