Find completed ServiceM8 jobs that were never invoiced

By General Input

Every Monday at 8am, get a Slack list of finished ServiceM8 jobs with no invoice in Xero, ranked by dollar value with your total exposure at the top.

Integrations

  • ServiceM8
  • Xero
  • Slack

Type

Agentic Task

Categories

  • Finance
  • Operations

Every Monday at 8am, hunt down work my ServiceM8 account has finished but never billed, and post a recovery list to Slack.

Start with List Job Queues in ServiceM8 so you know how my job statuses are actually named, and work out which queues represent completed or work done states rather than assuming a fixed set of names. Then use List Jobs and keep only the jobs sitting in those queues. Ignore any ServiceM8 record whose active field is 0, because deletes in ServiceM8 are soft and inactive records still come back over the API, so without that filter you will report on deleted jobs. Also exclude anything completed in the last three days, so I am not chasing paperwork that is still legitimately in progress.

For each remaining candidate job, pull the detail. Use List Job Materials for the value of the parts and labour lines, List Job Admin Activities for the hours actually logged on site, and List Job Payments to see what has already been received against that job. Use List Clients to resolve the client name for each job so it can be matched in the accounting system and read properly in the summary.

Cross-check every candidate against Xero before reporting it. Call List Invoices and look for an invoice for that client that plausibly covers the job, matching on the client name and on any job number or reference carried on the invoice. This step is the point of the whole workflow: a job can look unbilled in ServiceM8 while the invoice was actually raised straight into Xero. Drop any job where a real invoice exists. If a match is ambiguous, keep the job on the list but flag it as uncertain and say why, rather than silently dropping it.

Post the result to Slack with Send a Message as one message. Put the total unbilled exposure at the top, then list the jobs ranked by dollar value, highest first. For each job show the client name, the job number, the date it was completed, the value of materials and labour, the hours logged on site, anything already paid, and the remaining amount at risk. If nothing qualifies, still post a short message confirming the check ran and that everything completed is accounted for.

Keep the scope tight: this is about work that was never billed at all, not about chasing payment on invoices that have already been issued. Nothing should be sent to clients and nothing should be created or edited in ServiceM8 or Xero. Both systems are read only here, and the output is an internal recovery list for me.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentWin back LiveChat visitors whose chats went unansweredChat quality review board for LiveChat support leadsWin back no-show and cancelled appointments every morningLive Loop returns analytics with product-level drill-downNewsletter pre-flight and approval board for Mailjet sendsTurn a prospect spreadsheet into personalized sequence enrollmentsMailjet email delivery lookup console for support teamsCatch feature flags that never got switched on in productionKajabi customer support console for member access fixes