Create invoice
Create a sales invoice as a draft, or approve it right away.
POST https://cotlet.dev/api/v1/holded/contacts/{contact_id}/invoices
Creates one sales invoice for a contact. With approve false, the default, it is saved as a draft you can still edit. With approve true it is approved, and an approved Holded invoice cannot be edited or deleted, only voided. The number comes from your Invoicing preferences, and the date defaults to today. Due date is one date. Taxes use the tax names in your account. By default you confirm each call; you can switch that off for this tool.
Parameters
| Name | Type | Description |
|---|---|---|
| contact_id string required | string | Contact ID from list_contacts. |
| items array required | array | Lines of the document. Each line has name, description, units, price and tax (the tax as named in Holded). Optional discount in percent per line. Use a product from list_products or a new name. |
| date date | date | Invoice date. Default: today. |
| due_date date | date | Due date. |
| message string | string | Text shown at the bottom of the invoice. |
| approve boolean | boolean | true approves the invoice, false saves a draft. Default: false. |
Request
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}' result = client.call("holded", "create_invoice", {"contact_id":"c_5f2a91","items":[{"name":"Consulting","description":"Landing page review, week 42","units":10,"price":80,"tax":"VAT 21%"}],"due_date":"2026-11-14","approve":False}) const result = await cotlet.call('holded', 'create_invoice', {"contact_id":"c_5f2a91","items":[{"name":"Consulting","description":"Landing page review, week 42","units":10,"price":80,"tax":"VAT 21%"}],"due_date":"2026-11-14","approve":false}); cotlet call holded create_invoice --data '{"contact_id":"c_5f2a91","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"
}