[Cotlet](https://cotlet.dev/index.md) · [Integrations](https://cotlet.dev/integrations.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Use cases](https://cotlet.dev/use-cases.md) · [Security](https://cotlet.dev/security.md) · [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md) · [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [Contact](https://cotlet.dev/contact.md) · [Pricing](https://cotlet.dev/pricing.md) · [Sign up](https://cotlet.dev/signup)

# Invoice completed AroFlo jobs automatically

> Create, check, approve and email AroFlo final invoices for every completed job, and skip jobs someone already invoiced. Runs daily.

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

Your technicians close a dozen jobs by Friday, and each one still needs Create Final Invoice, a look at the lines, an approval and an email before the client sees a bill.

Cotlet does it in your own AroFlo account with list\_tasks, list\_invoices, create\_invoice\_from\_task, get\_task, get\_invoice, approve\_invoice and email\_invoice, called by your AI agent, an n8n workflow or a script.

[Sign up free](https://cotlet.dev/app/signup?app=aroflo) [All AroFlo tools](https://cotlet.dev/integrations/aroflo-api-mcp-server.md)

Hosted · nothing to install or maintain

## Can AroFlo do this on its own?

AroFlo documents this job as manual steps in Office and Field (checked 23 Oct 2026). Periodic Invoicing generates preset invoices at regular intervals with an option to email them, but it covers recurring work only. The API docs show invoice queries by status. No AroFlo feature invoices a batch of completed jobs by a rule you set.

## How you do it in AroFlo today

1. In AroFlo Office, open the completed task through Workflow > Tasks > Closed, using the search or the task name.
2. Click Create Final Invoice at the bottom of the worksheet. For an unquoted job, AroFlo adds all the labour and material from the job sheet.
3. Check the lines, then choose Status > Approved and click Save.
4. Click Email and tick Invoices to send it, as a PDF attachment or a link to view it online.
5. Repeat for the next task. The Invoices List, filtered by In Progress, Pending Approval or Approved, shows what is stuck between steps.

## How to invoice completed AroFlo jobs automatically

Prompt

```
List AroFlo tasks completed since Monday. Skip any job that already has an invoice, create the final invoice for the rest, and show me the lines. Approve and email only the unquoted ones.
```

1. 01  
### Find the finished jobs  
Your agent reads the Closed view with status Completed and a start date from your prompt, and follows next\_cursor to the end. Each job keeps its task\_id, job number and client for the later steps.
2. 02  
### Skip jobs already invoiced  
For every job it searches the invoices by job number, one of the fields the Invoices List searches. Any hit means someone invoiced it by hand, so the job goes on the "already done" line and nothing is created.
3. 03  
### Create the final invoice  
create\_invoice\_from\_task runs once per remaining job, in the order the list gave them. The agent stops on the first failure, so a job that is not Completed never gets a half-built invoice.
4. 04  
### Read before approving  
get\_task shows whether a quote sits behind the job, and get\_invoice returns the lines. An invoice with no lines, a zero total or a quoted job is held back for you, because AroFlo documents the automatic fill only for unquoted jobs.
5. 05  
### Approve, then send  
approve\_invoice runs only for invoices that passed the check, since an Approved invoice cannot be edited. email\_invoice goes to the address you name, as a PDF or a link. Both wait for your OK by default.

### What you get back

Example data

```
Completed since Monday: 7 jobs
Already invoiced by hand: 2
Invoiced, approved and emailed: 4, e.g. Harbour Café, 3 h labour and 1 part, $840.00
Held back for you: 1 (Northside Strata, quoted job, lines differ from the quote)
```

### Other ways to ask

- Every Friday at 4 pm, create final invoices for tasks completed this week and leave them In Progress for me to review.
- Email the invoices I approved yesterday that were never sent, as a link to view online.
- Show completed jobs with no invoice older than 7 days, but create nothing.

## What AroFlo allows, and what to know first

- AroFlo Field raises Final Invoices only on completed tasks, and part invoices only on tasks still in progress.
- An Approved AroFlo invoice cannot be changed; set it back to In Progress or Pending Approval and save to edit it.
- An invoice must be Approved before AroFlo pushes it to your accounting package.
- AroFlo needs the invoice saved before it can be printed or emailed to the client.
- The Invoices List searches by Invoice No, Task Ref, Job Number, Cust. Order No or client name.

create\_invoice\_from\_task, approve\_invoice and email\_invoice ask for your OK by default. To run it daily without you, switch confirmation off for those tools in your dashboard.

Sources: [AroFlo Help: Create an Invoice for a Completed Job (Office)](https://help.aroflo.com/en%5FAU/workflows-office-admin/create-an-invoice-for-a-completed-job) · [AroFlo Help: Invoice Status](https://help.aroflo.com/en%5FAU/invoicing-office/office-invoice-status) · [AroFlo Help: Send an Invoice](https://help.aroflo.com/office-send-an-invoice) · [AroFlo Help: Invoices List](https://help.aroflo.com/en%5FAU/invoicing-office/office-invoices-list) · [AroFlo Help: Periodic Invoicing](https://help.aroflo.com/en%5FAU/invoicing-office/office-periodic-invoicing)

## Call email\_invoice from a script

curl

```
curl -X POST https://cotlet.dev/api/v1/aroflo/invoices/inv_2041/email \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"to":"accounts@harborcafe.example","format":"pdf"}'
```

Example response

```
{
"invoice_id": "inv_2041",
"invoice_no": "2041",
"status": "Approved",
"sent_to": "accounts@harborcafe.example",
"format": "pdf",
"sent_at": "2026-10-23T09:12:00+11:00"
}
```

MCP: add https://cotlet.dev/mcp/v1 with the same key; the call is aroflo\_write → email\_invoice. Example data.

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

## AroFlo tools this automation uses

__Cotlet AroFlo tools used to invoice completed AroFlo jobs automatically__
| Tool | Parameters |
| --------------------------- | --------------------------------------------------------------- |
| list\_tasks | view, status, client, search, cursor |
| list\_invoices | status, unpaid\_only, search, business\_units, from, to, cursor |
| create\_invoice\_from\_task | task\_id |
| get\_task | task\_id |
| get\_invoice | invoice\_id |
| approve\_invoice | invoice\_id |
| email\_invoice | invoice\_id, to, format, message |

[All 14 AroFlo tools with descriptions](https://cotlet.dev/integrations/aroflo-api-mcp-server.md#tools)

## Frequently asked questions

### Is it safe to connect AroFlo to Cotlet?

Yes. You sign in to AroFlo yourself, in your own Cloud Browser in the EU, and we never save your password. Your agents only get AroFlo once you enable it, every background request is listed, and the browser profile is stored encrypted with AES-256-GCM, the cipher 1Password uses for its vaults. The AI model never sees a login, posts and messages wait for your OK, and Disable for agents cuts access in one click. Independent scanners grade cotlet.dev A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory; live results are on https://cotlet.dev/security.

## More AroFlo automations

- [Create an AroFlo task and schedule a technician](https://cotlet.dev/integrations/aroflo-api-mcp-server/create-and-schedule-jobs.md)
- [AroFlo API and MCP server: every tool](https://cotlet.dev/integrations/aroflo-api-mcp-server.md)
- [All use cases](https://cotlet.dev/use-cases.md)

## Give your agent access to AroFlo.

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

[Sign up free](https://cotlet.dev/app/signup?app=aroflo)

---

Give your AI agents your signed-in browser.

**Product:** [Integrations](https://cotlet.dev/integrations.md) · [Use cases](https://cotlet.dev/use-cases.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Pricing](https://cotlet.dev/pricing.md) · [Security](https://cotlet.dev/security.md)

**Resources:** [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [GitHub](https://github.com/cotletdev/cotlet)

**Solutions:** [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md)

**Company:** [About](https://cotlet.dev/about.md) · [AI info: company facts](https://cotlet.dev/ai-info.md) · [Contact](https://cotlet.dev/contact.md)

**Legal:** [Terms of service](https://cotlet.dev/terms) · [Privacy policy](https://cotlet.dev/privacy) · [Refund policy](https://cotlet.dev/refunds) · [Acceptable use](https://cotlet.dev/acceptable-use) · [Cookie policy](https://cotlet.dev/cookies) · [DPA](https://cotlet.dev/dpa) · [Subprocessors](https://cotlet.dev/subprocessors)

**Elsewhere:** [Status page](https://status.cotlet.dev) · [Cotlet on GitHub](https://github.com/cotletdev) · [Cotlet on X](https://x.com/cotletdev) · [Cotlet on LinkedIn](https://www.linkedin.com/company/cotletdev) · [Cotlet on Product Hunt](https://www.producthunt.com/products/cotlet) · [Cotlet on Crunchbase](https://www.crunchbase.com/organization/cotlet) · [Cotlet on SaaSHub](https://www.saashub.com/cotlet)

Cotlet.dev is built by Bart Krawczyk and Jake Slugocki, the founders of Take Group sp. z o.o., ul. Wincentego Janasa 4, 40-855 Katowice, Poland. KRS 0000871398, NIP 6342984273, VAT EU: PL6342984273. [About us](https://cotlet.dev/about.md)

Cotlet is an independent service. It is not affiliated with, endorsed by or sponsored by any of the products listed on this site. Product names are trademarks of their respective owners.
