Skip to main content

Estimates

The Estimates API provides CRUD access to estimates, line-item management, status, tags, clone, publish, email and convert-to-invoice.
New to the API? Start with Getting started (base URL, response envelope, errors, pagination) and Authentication (API keys).
Identifier note: estimates are addressed by their numeric bill_estimateid.
Totals are computed server-side. You never send totals. You set the line items (and, for summary mode, the tax rates) and the header discount/adjustment; the API computes the subtotal, discount, tax and final amounts to match the CRM exactly.
Scope: file attachments and bulk actions are out of API scope.

The estimate object


List / search estimates

Query params: status, client_id, project_id, category_id, search, sort (bill_date,bill_expiry_date,bill_final_amount,bill_created), order, limit, page.

Get an estimate

Returns the estimate with line items + computed totals.

Create an estimate

Creates an empty estimate header. Add line items next via the items action.
Returns the new estimate (201, status draft).

Update an estimate (header) + recalculate

Sets header fields, including the discount, tax mode and adjustment that drive the totals; the estimate is recalculated. The status is preserved.

Set line items + recalculate

Replaces the estimate’s line items and recomputes all totals (matching the CRM UI to the cent). The behaviour follows the estimate’s tax_type:
  • summary — pass estimate-level tax_rate_ids[]; the tax applies to the whole estimate.
  • inline — give each item its own tax_rate_id (and optional per-line discount_type/discount_value).
Returns the estimate with recomputed totals (200).

Delete an estimate


Change status


Set tags

Full-set replace (empty clears).

Clone

Returns the new estimate (201, status draft).

Publish

Publishes a draft estimate (moves it out of draft and queues the estimate email to the client). No body. 409 if already published.

Email the client

Queues the estimate email to the client (as the UI does). The estimate must not be a draft (409 otherwise). No body.

Convert to invoice

Creates an invoice from the estimate (carrying over the line items and totals) and links the two. No body. Returns the new invoice object (201) — see Invoices.

Errors

See Getting started. Estimate-specific: