Documents
Create an estimate
Creates a draft estimate (quote) with the same lines and maths as an invoice. Send type: "estimate".
An estimate has its own type and its own number sequence (EST-{YYYY}-{SEQ:4} by default) and uses the same line maths as invoices. It is created as a draft with no number and takes its number when first sent.
After sending, the client opens the estimate link to accept it or request changes. Turn an estimate into an invoice with Convert an estimate. See Estimates.
Idempotency-Keyis required for API-key and MCP calls.
- Permission
documents.create- Type
- Write. Creates or changes data and writes an audit entry.
- Auth
- API key, MCP token or signed-in session
- Capability
create_estimate- MCP tool
- create_estimate
- CLI
freeinvoiceautomation estimate create- Available
- At launch, 1 January 2027
curl --request POST \
--url https://api.freeinvoiceautomation.com/v1/documents \
--header 'Authorization: Bearer <api-key>' \
--header 'Idempotency-Key: <unique-key>' \
--header 'Content-Type: application/json' \
--data '{
"type": "estimate",
"client_id": "0193f2a0-5b3c-7d4e-8f50-6a7b8c9d0e1f",
"currency": "USD",
"issue_date": "2027-02-01",
"expires_at": "2027-03-03",
"lines": [
{
"item_id": "0193f2a1-7c4e-7b9a-9f10-3c2d1e0a4b51",
"description": "Logo design",
"quantity": "1",
"unit": "piece",
"unit_price_minor": "45000"
},
{
"description": "Brand guidelines, 12 pages",
"quantity": "1",
"unit_price_minor": "75000"
}
],
"notes": "Valid for 30 days."
}'{
"data": {
"id": "0193f2b2-8e7d-7c6b-9a50-4f3e2d1c0b9a",
"business_id": "0193f29e-11aa-7c3b-8d2e-5a6b7c8d9e0f",
"client_id": "0193f2a0-5b3c-7d4e-8f50-6a7b8c9d0e1f",
"type": "estimate",
"status": "draft",
"number": null,
"issue_date": "2027-02-01",
"due_date": null,
"expires_at": "2027-03-03",
"currency": "USD",
"fx_rate": "0.7900000000",
"fx_rate_source": "ecb:2027-02-01",
"subtotal_minor": "120000",
"discount_minor": "0",
"tax_minor": "0",
"total_minor": "120000",
"amount_paid_minor": "0",
"amount_credited_minor": "0",
"balance_minor": "120000",
"terms": null,
"notes": "Thank you for your business.",
"accepted_methods": null,
"pdf_template_id": null,
"late_fees_enabled": false,
"reminder_sequence_id": null,
"promise_to_pay_date": null,
"recurring_schedule_id": null,
"current_version": 0,
"first_sent_at": null,
"last_sent_at": null,
"accepted_at": null,
"paid_at": null,
"overdue_at": null,
"voided_at": null,
"voided_by": null,
"void_reason": null,
"source": "api",
"external_ref": null,
"client_generated_id": null,
"lines": [
{
"id": "0193f2b4-2d20-7b11-8c01-0a1b2c3d4e01",
"position": 1,
"kind": "item",
"item_id": "0193f2a1-7c4e-7b9a-9f10-3c2d1e0a4b51",
"description": "Logo design",
"quantity": "1",
"unit": "piece",
"unit_price_minor": "45000",
"discount_type": null,
"discount_value": null,
"tax_rate_id": null,
"tax_name": null,
"tax_rate": null,
"tax_calculation": null,
"subtotal_minor": "45000",
"tax_minor": "0",
"total_minor": "45000",
"credited_line_id": null
},
{
"id": "0193f2b4-2d20-7b11-8c01-0a1b2c3d4e02",
"position": 2,
"kind": "item",
"item_id": null,
"description": "Brand guidelines, 12 pages",
"quantity": "1",
"unit": null,
"unit_price_minor": "75000",
"discount_type": null,
"discount_value": null,
"tax_rate_id": null,
"tax_name": null,
"tax_rate": null,
"tax_calculation": null,
"subtotal_minor": "75000",
"tax_minor": "0",
"total_minor": "75000",
"credited_line_id": null
}
],
"links": [],
"pay_url": null,
"created_at": "2027-01-31T15:00:00Z",
"updated_at": "2027-01-31T15:00:00Z"
}
}Authorizations
Bearer <api-key>. An API key from Settings > API keys, or an MCP token. See Authentication.Headers
Body
application/jsonestimate for this capability.Available options: invoice, estimate, receipt
YYYY-MM-DD.Response
201 - application/jsonAvailable options: invoice, estimate, credit_note, receipt
draft, sent, partially_paid, paid, overdue, void. Estimates: draft, sent, changes_requested, accepted, expired, converted, void. Credit notes: draft, issued, applied, refunded. Receipts: issued, void. See Document statuses.Available options: draft, sent, partially_paid, paid, overdue, void, changes_requested, accepted, expired, converted, issued, applied, refunded
INV-2027-0017. null until the document is first sent.YYYY-MM-DD.0 for a draft, 1 after the first send, then one more for each revision.Available options: app, api, mcp, cli, agent, shopify, woocommerce, generator_sync, recurring
Errors
Plus the common errors every call can return. See Errors.