# Invoice completed Workiz jobs and send the invoices

> Bill every Workiz job marked Done: skip jobs already invoiced or with no line items, create the invoice and send it to the client.

Source: https://cotlet.dev/integrations/workiz-api-mcp-server/invoice-completed-jobs

Every morning the Need invoices widget on the Workiz Invoices dashboard shows yesterday's Done jobs again, and someone has to generate the invoices, check them and send each one before the client forgets the visit.

Cotlet does it in your own Workiz account with list\_jobs, list\_invoices, get\_job, create\_invoice and send\_invoice, called by your AI agent, an n8n workflow or a script.

[Request access](https://cotlet.dev/app/signup?app=workiz) [All Workiz tools](https://cotlet.dev/integrations/workiz-api-mcp-server)

Hosted · nothing to install or maintain

Official options

## Can Workiz do this on its own?

Workiz's API has no invoice endpoints (checked 11 Oct 2026). The Workiz Automations add-on has a Create invoice / Immediately template that creates an invoice when a job reaches a chosen status, and the help center describes that rule as creating the invoice only; sending stays a manual step on the Invoices dashboard (checked 12 Oct 2026). When the job has no line items, the rule creates a blank invoice. Zapier, on the Ultimate plan only, has a Job Is Done trigger and no invoice action.

By hand

## How you do it in Workiz today

1. Open the Workiz Invoices dashboard and select the Need invoices widget to see Done jobs that have no invoice yet.
2. Select the jobs, choose Generate invoice, then Create X invoices.
3. Open any new invoice with the status No amount, because the job had no line items, and add the items before it goes out.
4. Filter the Invoices dashboard by Unsent, select the invoices and choose Send invoice.
5. The Need invoices list fills up again every day, and an empty invoice from a job where the tech never added items is easy to send by mistake.

With an agent

## How to invoice completed Workiz jobs and send the invoices

Prompt

```
Invoice every job marked Done yesterday, skip any job that already has an invoice or has no line items, and email the invoices to the clients.
```

1. 01  
### Collect the Done jobs  
Your agent calls list\_jobs for yesterday with the status Done and follows next\_cursor until the list ends, so a busy day with more than one page is not cut short.
2. 02  
### Skip jobs that are already billed  
It reads recent invoices with list\_invoices and drops every job that already has one, for example an invoice your Automations rule or a tech on the mobile app created. If that invoice was never sent, the agent queues it for sending instead of creating a second one.
3. 03  
### Check the job before billing  
For each remaining job it opens get\_job. A job with no items or a zero total is not invoiced, because Workiz would produce a No amount invoice; it goes on the list for the office. A job whose amount due is already zero, paid on site, is invoiced only if your prompt asks for paid invoices as records.
4. 04  
### Create, then send  
create\_invoice runs without a due date, so Workiz applies the client's payment terms or your account default. send\_invoice then goes out by email, or by text when the client has no email on file. You approve the batch of sends unless you switched confirmation off.
5. 05  
### Report the exceptions  
The agent ends with what it sent, what it skipped and why, so the only jobs left for a person are the ones that need items or a decision.

### What you get back

Example data

```
Done jobs on Oct 11: 9
Invoiced and emailed: 6, $3,840.00 due
Already invoiced by your Automations rule, sent now: 1 (#2318, Kim Alvarez)
Skipped, no line items: 1 (Drain cleaning, 44 Birch Ln, tech Luis P.)
Skipped, paid in full on site: 1 (#2321, $180.00 cash)
```

### Other ways to ask

- Every evening at 7, invoice today's Done jobs but hold anything over $2,000 for my review.
- Invoice last week's Done jobs for Mike R. only and text the invoices instead of emailing them.
- List Done jobs from this month that still have no invoice, without creating or sending anything.

Before you automate it

## What Workiz allows, and what to know first

- Workiz copies a job's items and payments to an invoice created from that job, and later item changes sync both ways between the job and the invoice.
- A standalone Workiz invoice can never be linked to a job afterwards, so invoices for field work belong on the job to keep job reports and automations correct.
- A Workiz invoice takes its due date from the client's payment terms when they are set, otherwise from Default payment terms under Account preferences; for job invoices the account can count from job creation or the scheduled date.
- Workiz sets invoice status itself (No amount, Due, Overdue, Paid), and a partially paid invoice is not marked Paid until the whole balance is collected.
- Requesting an online payment through the Workiz invoice link requires Workiz Pay to be enabled on the account.

send\_invoice asks for your OK by default. To run it daily without you, switch confirmation off for that tool in your dashboard.

Sources: [Workiz Help: Managing and tracking invoices](https://help.workiz.com/hc/en-us/articles/18055834605969-Managing-and-tracking-invoices) · [Workiz Help: Automatically creating invoices when jobs are done](https://help.workiz.com/hc/en-us/articles/22330473454353-Automatically-creating-invoices-when-jobs-are-done) · [Workiz Help: How to create and send invoices](https://help.workiz.com/hc/en-us/articles/18055818794769-How-to-create-and-send-invoices) · [Workiz Help: Understanding invoice statuses](https://help.workiz.com/hc/en-us/articles/18054292231441-Understanding-invoice-statuses)

REST

## Call send\_invoice from a script

curl

```
curl https://cotlet.dev/api/v1/workiz/send_invoice \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"invoice_id":"inv_30214","via":"email"}'
```

Example response

```
{
"invoice_id": "inv_30214",
"status": "sent",
"sent_via": "email",
"amount_due": "480.00",
"sent_at": "2026-10-11T18:00:00-07:00"
}
```

MCP: add https://cotlet.dev/mcp/v1 with the same key; the tool is workiz\_send\_invoice. Example data.

[Schedule it in n8n, Make, Zapier or cron](https://cotlet.dev/integrations/workiz-api-mcp-server#automations)

Tools

## Workiz tools this automation uses

__Cotlet Workiz tools used to invoice completed Workiz jobs and send the invoices__
| Tool | Parameters |
| --------------- | ----------------------------------------- |
| list\_jobs | from, to, status, tech\_id, limit, cursor |
| list\_invoices | status, since, limit |
| get\_job | job\_id |
| create\_invoice | job\_id, due\_date |
| send\_invoice | invoice\_id, via |

[All 15 Workiz tools with descriptions](https://cotlet.dev/integrations/workiz-api-mcp-server#tools)

## More Workiz automations

- [Log cash and check payments on Workiz jobs](https://cotlet.dev/integrations/workiz-api-mcp-server/record-job-payments)
- [Reschedule or reassign a Workiz technician's jobs for a day](https://cotlet.dev/integrations/workiz-api-mcp-server/reschedule-jobs-for-a-day)
- [Book Workiz jobs from new leads](https://cotlet.dev/integrations/workiz-api-mcp-server/book-jobs-from-new-leads)
- [Workiz API and MCP server: every tool](https://cotlet.dev/integrations/workiz-api-mcp-server)
- [All use cases](https://cotlet.dev/use-cases)

## Give your agent access to Workiz.

Free 7-day trial with 5,000 credits, no card needed. Cotlet is independent and not affiliated with Workiz.

[Request access](https://cotlet.dev/app/signup?app=workiz)
