Create quote
Save a draft quote for a contact. Nothing is sent.
POST https://cotlet.dev/api/v1/lexware-office/contacts/{contact_id}/quotations
write
Saves a quote (Angebot) as a draft. It has no number yet, reaches no customer and is deleted with one call in the app, so it does not ask for your OK. Returns the totals so you can read them before finalize_document.
Parameters
| Name | Type | Description |
|---|---|---|
| contact_id string required | string | Contact ID from list_contacts or create_contact. |
| quotation_date string required | string | Quote date, YYYY-MM-DD. |
| lines array required | array | Line items. Each has name, quantity, unit_price_net (EUR) and tax_rate (percent, as offered in your Lexware Office tax settings). Free-text lines need only a name. |
| valid_until string | string | Last day the quote is valid, YYYY-MM-DD. |
| intro_text string | string | Introduction text above the lines. |
Request
curl -X POST https://cotlet.dev/api/v1/lexware-office/contacts/contact_8c41d2/quotations \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"quotation_date":"quotation date","lines":"lines"}' result = client.call("lexware-office", "create_quotation", {"contact_id":"contact_8c41d2","quotation_date":"quotation date","lines":"lines"}) const result = await cotlet.call('lexware-office', 'create_quotation', {"contact_id":"contact_8c41d2","quotation_date":"quotation date","lines":"lines"}); cotlet call lexware-office create_quotation --data '{"contact_id":"contact_8c41d2","quotation_date":"quotation date","lines":"lines"}' Example response
{
"document_id": "d_e5120a",
"type": "quotation",
"number": null,
"status": "draft",
"contact": {
"contact_id": "c_88d0e1",
"name": "Studio Fjord"
},
"date": "2026-10-14",
"lines": [
{
"name": "Site audit",
"quantity": 1,
"unit_price_net": 1200,
"tax_rate": 19
},
{
"name": "Fixes, hours",
"quantity": 6,
"unit_price_net": 95,
"tax_rate": 19
}
],
"total_net": 1770,
"total_tax": 336.3,
"total_gross": 2106.3,
"currency": "EUR"
}