[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)

# Create and send Exact Online sales invoices with AI

> Create Exact Online sales invoices from a list of customers and hours, check each draft, then send them by email or Peppol. Runs weekly.

Source: https://cotlet.dev/integrations/exact-online-api-mcp-server/create-and-send-sales-invoices

Every month-end you retype the same customers, items and amounts into Exact Online sales invoices, then send each one separately.

Cotlet does it in your own Exact Online account with search\_relations, create\_sales\_invoice and send\_sales\_invoice, called by your AI agent, an n8n workflow or a script.

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

Hosted · nothing to install or maintain

## Can Exact Online do this on its own?

Exact Online has a REST API for this job (checked 14 Oct 2026). SalesInvoices creates an invoice, and you must pass SalesInvoiceLines in the same POST. A separate PrintedSalesInvoices call sends it. The gap is access: you register an app, run OAuth, and the sales invoice endpoints exist only in some packages.

## How you do it in Exact Online today

1. Open the company (division) you invoice from and make sure the customer exists as a relation; create it first if it is new.
2. Create a new sales invoice, pick the customer, and enter each line with item or description, quantity, price and VAT code.
3. Save the invoice, then use the print or send option to email it, post it to the customer postbox or send it via Peppol.
4. Repeat per customer. The send is a second action after saving, so an invoice that was saved but never sent is easy to miss.

## How to create and send Exact Online sales invoices with AI

Prompt

```
For each customer in this list, create a sales invoice in my main Exact Online company with the hours and rate I give you, then send it to the customer by email. Show me each invoice before sending.
```

1. 01  
### Resolve every customer first  
search\_relations looks each name up in the chosen division. An unknown name is listed for you, and create\_relation runs only if you said new customers are allowed.
2. 02  
### Build one invoice per customer  
create\_sales\_invoice gets all lines of that customer in a single call, because Exact needs the lines in the same POST as the header. The agent reads the returned total and compares it with your hours times rate.
3. 03  
### Stop on a mismatch  
If Exact returns a different total than you expect, for example because a VAT code changed it, the agent reports both numbers and does not send.
4. 04  
### Send only checked invoices  
send\_sales\_invoice runs per invoice, after you OK it, with email, postbox or Peppol as you chose. Sending and recording the financial transaction are separate results in Exact, and the agent reports what came back.
5. 05  
### Report what is left  
Invoices created but not sent stay in a list with their invoice numbers, so nothing sits half finished.

### What you get back

Example data

```
Division: 1234567 (Example BV)
Created 3 invoices from your list:
- 20260412 Northwind Studio: 12 h x 95.00 = 1,140.00 + VAT, sent by email
- 20260413 Bakker Logistics: 8 h x 95.00 = 760.00 + VAT, sent by email
- 20260414 Van Dijk Design: 5 h x 95.00 = 475.00 + VAT, held, customer has no email address
Not sent: 1
```

### Other ways to ask

- Create the invoices but do not send any; list them so I can review them in Exact.
- Send the invoices that are created but not sent yet, by Peppol where the customer has an endpoint.
- Every first working day of the month, invoice the retainer customers on my list with last month's amount.
- Create a sales invoice for relation Northwind Studio with these three lines and tell me the total.

## What Exact Online allows, and what to know first

- The Exact Online SalesInvoices endpoint is documented for the Wholesale & Distribution, Manufacturing, Professional Services and Accountancy Premium Accounting packages, so it is not there for every plan.
- A POST to SalesInvoices needs SalesInvoiceLines in the same request; lines are not added by a later POST to the header.
- PrintedSalesInvoices needs the InvoiceID of an existing invoice and sends by email, customer postbox or Peppol, depending on the options you set.
- Exact documents the SalesEntries API for invoices you do not send out from Exact, so a sales invoice and a sales entry are not the same record.
- Every Exact REST call carries a division in the URL, so one sign-in with several companies needs the right division on each invoice.

create\_sales\_invoice and send\_sales\_invoice ask for your OK by default. To run it weekly without you, switch confirmation off for those tools in your dashboard.

Sources: [Exact Online REST API: SalesInvoices](https://start.exactonline.nl/docs/HlpRestAPIResourcesDetails.aspx?name=SalesInvoiceSalesInvoices) · [Exact Online REST API: SalesInvoiceLines](https://start.exactonline.nl/docs/HlpRestAPIResourcesDetails.aspx?name=SalesInvoiceSalesInvoiceLines) · [Exact Online REST API: PrintedSalesInvoices](https://start.exactonline.nl/docs/HlpRestAPIResourcesDetails.aspx?name=SalesInvoicePrintedSalesInvoices)

## Call create\_sales\_invoice from a script

curl

```
curl -X POST https://cotlet.dev/api/v1/exact-online/sales-invoices \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"division":1234567,"customer":"Northwind Studio","invoice_date":"2026-10-14","lines":[{"description":"Consulting, October","quantity":12,"unit_price":95,"vat_code":"2"}]}'
```

Example response

```
{
"invoice_id": "b21e9d77-5a0c-4f1e-8d13-0c6a77e45002",
"invoice_number": 20260412,
"customer": "Northwind Studio",
"invoice_date": "2026-10-14",
"lines": [
{
"description": "Consulting, October",
"quantity": 12,
"unit_price": 95,
"vat_code": "2",
"amount": 1140
}
],
"amount_excl_vat": 1140,
"currency": "EUR",
"status": "created"
}
```

MCP: add https://cotlet.dev/mcp/v1 with the same key; the call is exact\_online\_write → create\_sales\_invoice. Example data.

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

## Exact Online tools this automation uses

__Cotlet Exact Online tools used to create and send Exact Online sales invoices with AI__
| Tool | Parameters |
| ---------------------- | --------------------------------------------------- |
| search\_relations | division, query, limit, cursor |
| create\_sales\_invoice | division, customer, invoice\_date, lines, your\_ref |
| send\_sales\_invoice | division, invoice\_id, channel, sender\_email |

[All 12 Exact Online tools with descriptions](https://cotlet.dev/integrations/exact-online-api-mcp-server.md#tools)

## Frequently asked questions

### Is it safe to connect Exact Online to Cotlet?

Yes. You sign in to Exact Online yourself, in your own Cloud Browser in the EU, and we never save your password. Your agents only get Exact Online 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 Exact Online automations

- [Book Exact Online journal entries with AI](https://cotlet.dev/integrations/exact-online-api-mcp-server/book-journal-entries.md)
- [Exact Online API and MCP server: every tool](https://cotlet.dev/integrations/exact-online-api-mcp-server.md)
- [All use cases](https://cotlet.dev/use-cases.md)

## Give your agent access to Exact Online.

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

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

---

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 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.

## For AI agents: sign your user up

Is your user asking you to sign them up for Cotlet? You can do it for them, no account or key needed.

1. Read the fields and their allowed values: GET https://cotlet.dev/api/v1/access-requests
2. Ask the user for each value: email, apps, what you will do with them. If they leave the password to you, generate a strong one and show it to them.
3. Show the user what you will send, then POST it as JSON to https://cotlet.dev/api/v1/access-requests.

One call creates the account and sends the access request; we email the user when access is granted.
