Holded logo Holded automation · runs weekly

Draft and send Holded invoices from a job list

At the end of the week you have a spreadsheet of finished jobs, and every row still has to become a Holded invoice with the right contact, lines, tax and due date.

Cotlet does it in your own Holded account with list_contacts, list_products, create_invoice and send_invoice, called by your AI agent, an n8n workflow or a script.

Hosted · nothing to install or maintain

Can Holded do this on its own?

Holded has an API for invoices on paid plans, and Zapier has Create Sales Invoice and Send Invoice actions (checked 14 Oct 2026). Holded has no feature that builds invoices from a list of jobs, and it has no official MCP server for an agent to do it.

How you do it in Holded today

  1. In Holded you open Sales > Invoices and click New Invoice, or press N.
  2. You pick the contact, or type a new name and click + Add, then set the due date yourself because only the date defaults to today.
  3. In the item field you choose a product or service, add a description, set quantities and prices and select the tax. A discount is added with + Add discount, on the item or on the total.
  4. You click Preview, then either Approve or Save as draft. The document number fills in by itself from your Invoicing preferences.
  5. To send it, you open the invoice, click Submit, check the recipient and the message, choose email or post and click Send.
  6. This repeats for every client, every week, and a missed row means a late invoice.

How to draft and send Holded invoices from a job list

Prompt

Here are this week's completed jobs with client, hours and rate. Create a draft invoice in Holded for each client, due in 30 days, and send me the list. Do not approve or send anything yet.
  1. 01

    Match each client to a contact

    The agent searches list_contacts for every client name in your list. A name with no match, or with two close matches, is listed for you; contacts are never created from a guess.

  2. 02

    Reuse your products and services

    list_products gives the items you already sell, so a line like "Consulting, 10 hours" uses the product and its price rule instead of a free-text line. Rows that match no product become plain lines with the name you wrote.

  3. 03

    Build one draft per client

    create_invoice runs with approve left at false, so each invoice lands as a draft that you can edit, and rows for the same client are merged into one invoice. The due date is today plus the days in your prompt.

  4. 04

    Show totals before anything leaves

    The agent reports the subtotal, tax and total per draft so you can compare them with your sheet. An approved invoice cannot be edited or deleted in Holded, which is why approval is a separate step.

  5. 05

    Approve and send after your OK

    When you say go, create_invoice is called with approve true and send_invoice emails each one. Both ask for your OK per call by default, and a failed send is reported without sending twice.

What you get back

Example data

Jobs in the list: 7 across 4 clients
Drafts created: 4
- Northwind Studio: 10 h x 80 = 800.00 + tax 168.00 = 968.00, due 2026-11-14
- Lumen Dental: 6 h x 80 = 480.00 + tax 100.80 = 580.80, due 2026-11-14
Needs you: 1 client with no matching contact ("Acme" or "ACME Ltd")
Approved and sent: 0

Other ways to ask

  • Every Friday, draft invoices for the hours in this timesheet and email me the totals, but do not approve anything.
  • Approve and send the four drafts from Monday to the contacts on file.
  • Create a draft invoice for Northwind Studio with 10 hours of consulting and a 5 percent discount on the total.
  • Copy last month's invoice lines for each client and draft them for this month.

What Holded allows, and what to know first

  • Holded fills the document number in automatically from your Invoicing preferences, so the agent never types a number.
  • An approved Holded invoice cannot be edited or deleted, you can only void it, and a change needs a correcting invoice.
  • Holded lets you add several due dates to one invoice with Multiple dates, which Cotlet leaves out: the agent sets one due date.
  • Accounts that send invoices to a tax system through Verifactu, FacturaE, TicketBAI or SII fill extra fields in the Options menu, so such invoices are worth a look in draft first.
  • Some Holded accounts use mandatory draft mode, in which a new invoice always starts as a draft.

create_invoice and send_invoice ask for your OK by default. To run it weekly without you, switch confirmation off for those tools in your dashboard.

Sources: Holded Help: Create an invoice · Holded Help: Send your invoices by email · Holded on Zapier: triggers and actions

Call create_invoice from a script

curl

curl -X POST https://cotlet.dev/api/v1/holded/contacts/c_5f2a91/invoices \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"items":[{"name":"Consulting","description":"Landing page review, week 42","units":10,"price":80,"tax":"VAT 21%"}],"due_date":"2026-11-14","approve":false}'

Example response

{
  "invoice_id": "inv_7d31",
  "number": "INV-0045",
  "status": "draft",
  "contact": "Northwind Studio",
  "subtotal": 800,
  "tax_total": 168,
  "total": 968,
  "currency": "EUR",
  "due_date": "2026-11-14"
}

MCP: add https://cotlet.dev/mcp/v1 with the same key; the call is holded_write → create_invoice. Example data.

Schedule it in n8n, Make, Zapier or cron

Holded tools this automation uses

Cotlet Holded tools used to draft and send Holded invoices from a job list
Tool Parameters
list_contacts search, type, limit, cursor
list_products search, limit, cursor
create_invoice contact_id, items, date, due_date, message, approve
send_invoice invoice_id, to, method, message
All 12 Holded tools with descriptions

Frequently asked questions

Is it safe to connect Holded to Cotlet?

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

Give your agent access to Holded.

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