Holded automation · runs weekly
Record supplier bills in Holded as purchases
Supplier bills pile up in an inbox and a folder, and each one still needs a purchase in Holded with the supplier, its own document number, the lines and an expense account.
Cotlet does it in your own Holded account with list_contacts, create_contact, list_purchases and create_purchase, 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 purchases on paid plans, and Zapier has a Create Purchase Invoice action (checked 14 Oct 2026). Holded has no rule that records a bill as a purchase for you, and it has no official MCP server.
How you do it in Holded today
- In Holded you open Expenses > Expenses and click New Purchase, or press N.
- You select the supplier, or type a name and click + Add, then enter the document number the supplier printed on the bill. The internal number fills in from your Billing preferences.
- You set the due date, and optionally a deduction date, which controls the tax period for the deduction.
- You attach the file, add the concept, description, amounts, prices and taxes, and assign the expense account so the purchase reaches the ledger.
- You click Save to approve it or Save as Draft, and Holded creates the accounting entry for the purchase.
- Vouchers can also reach an Inbox email address you set under Settings, but turning each one into a purchase is still a manual step.
How to record supplier bills in Holded as purchases
Record these supplier bills in Holded as purchases with the expense account I named for each one. Skip any bill whose supplier document number is already in Holded and save the rest as drafts. - 01
Find or add the supplier
list_contacts looks for the supplier by name or tax ID. If none exists, the agent calls create_contact with type supplier, using only the details on the bill.
- 02
Check for a duplicate
list_purchases is searched for the same supplier and the same supplier document number. A bill that is already there is skipped and named in the report, so a bill sent twice is recorded once.
- 03
Apply your account rules
Each line gets the expense account from your prompt, for example "software" to the account you name. A bill that fits no rule is saved as a draft with no account and listed for you.
- 04
Keep the dates apart
The bill date, due date and deduction date are set separately, because the deduction date moves the bill into another tax period. The agent leaves the deduction date empty unless you give one.
- 05
Save as draft, approve on request
create_purchase runs with approve false and the file attached when you supply a link. Approving is a second call that asks for your OK by default.
What you get back
Bills in the batch: 9
Recorded as drafts: 6
- Fastcloud Hosting, bill 88213: 49.00 + tax 10.29 = 59.29, account Software
- Print & Pack, bill 4410: 120.00 + tax 25.20 = 145.20, account Office supplies
Skipped as duplicates: 2 (bill 88101, bill 3977)
Needs you: 1 bill with no matching account rule
Approved: 0 Other ways to ask
- Record the attached supplier bills as purchases with a due date of 30 days after the bill date.
- Every Monday, list purchases from last week that are still drafts so I can approve them.
- Add Fastcloud Hosting as a supplier and record its three monthly bills with the account Software.
What Holded allows, and what to know first
- Holded asks for the supplier's own document number and creates a separate internal number from your Billing preferences.
- Holded needs an expense account on every purchase invoice, and the accounts you can pick come from Group 6 (Purchases and Expenses).
- A deduction date on a Holded purchase controls the tax period for the deduction, not the bill date.
- Holded generates an accounting entry automatically for each purchase document.
- Holded purchases can carry a different currency, and a different currency uses today's exchange rate unless you edit it.
create_purchase asks for your OK by default. To run it weekly without you, switch confirmation off for that tool in your dashboard.
Sources: Holded Help: Create a purchase invoice · Holded Help: Expenditure, a start-up guide · Holded on Zapier: triggers and actions
Call create_purchase from a script
curl -X POST https://cotlet.dev/api/v1/holded/contacts/c_a7731e/purchases \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"document_number":"88213","date":"2026-10-09","due_date":"2026-11-08","items":[{"name":"Cloud hosting, October","description":"Hosting plan","units":1,"price":49,"tax":"VAT 21%","account":"Software"}],"approve":false}' {
"purchase_id": "pu_5e17",
"supplier": "Fastcloud Hosting",
"document_number": "88213",
"status": "draft",
"subtotal": 49,
"tax_total": 10.29,
"total": 59.29,
"currency": "EUR",
"due_date": "2026-11-08"
} MCP: add https://cotlet.dev/mcp/v1 with the same key; the call is holded_write → create_purchase. Example data.
Schedule it in n8n, Make, Zapier or cronHolded tools this automation uses
| Tool | Parameters |
|---|---|
| list_contacts | search, type, limit, cursor |
| create_contact | name, type, email, tax_id |
| list_purchases | contact_id, document_number, since, limit, cursor |
| create_purchase | contact_id, document_number, items, date, due_date, deduction_date, attachment_url, approve |
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.