Create a draft invoice

Create a customer invoice in Draft status.

POST https://cotlet.dev/api/v1/odoo/contacts/{contact_id}/draft-invoices

write

Creates the invoice in Draft status and returns its ID and totals. A draft has no accounting impact and no number until it is confirmed, so it reaches nobody and does not wait for your OK. Confirm it with post_invoice.

Parameters

Parameters: create_draft_invoice
NameTypeDescription
contact_id integer required integer Contact ID from list_contacts or create_contact.
lines array required array Invoice lines: description (string), quantity (number), unit_price (number).
invoice_date date date Invoice date. Default: today.
due_date date date Due date. Default: from the contact's payment terms.
reference string string Customer reference shown on the invoice.

Request

cURL
curl -X POST https://cotlet.dev/api/v1/odoo/contacts/931/draft-invoices \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"invoice_date":"2026-10-31","due_date":"2026-11-14","lines":[{"description":"Monthly retainer, October","quantity":1,"unit_price":2400}]}'
Python
result = client.call("odoo", "create_draft_invoice", {"contact_id":931,"invoice_date":"2026-10-31","due_date":"2026-11-14","lines":[{"description":"Monthly retainer, October","quantity":1,"unit_price":2400}]})
Node.js
const result = await cotlet.call('odoo', 'create_draft_invoice', {"contact_id":931,"invoice_date":"2026-10-31","due_date":"2026-11-14","lines":[{"description":"Monthly retainer, October","quantity":1,"unit_price":2400}]});
CLI
cotlet call odoo create_draft_invoice --data '{"contact_id":931,"invoice_date":"2026-10-31","due_date":"2026-11-14","lines":[{"description":"Monthly retainer, October","quantity":1,"unit_price":2400}]}'

Example response

JSON

{
  "invoice_id": 4201,
  "number": null,
  "contact": "Northwind Studio",
  "status": "draft",
  "payment_status": "not_paid",
  "invoice_date": "2026-10-31",
  "due_date": "2026-11-14",
  "lines": [
    {
      "description": "Monthly retainer, October",
      "quantity": 1,
      "unit_price": 2400,
      "subtotal": 2400
    }
  ],
  "amount_untaxed": 2400,
  "amount_tax": 0,
  "amount_total": 2400,
  "currency": "EUR"
}

Sign in once. Your agent does the rest.

Sign up and add the apps you need. Free 7-day trial with 2,000 credits, no card needed.