/dashboard/commerce/estimates/, with data in crm_estimates and crm_estimate_line_items.
When to use estimates vs. invoices
- Estimate — The client hasn’t yet committed. You want their explicit approval of scope and price before any work starts. They need to see numbers but you’re not ready to demand payment.
- Invoice — The work is committed (verbally, by signed contract, or by accepted estimate). You’re asking for payment now.
The estimate lifecycle
Draft
A new estimate starts as a draft — visible to your team only. Iterate on line items, scope language, and pricing until it’s ready.
Sent
Click Send and the prospect receives an email with a public approval link. The estimate is now visible to the prospect.
Accepted
The prospect clicks Accept on the public link (or you mark it accepted manually for offline approvals). Convert to invoice with one click.
Declined
The prospect clicks Decline or you mark it declined. Often paired with creating a revised estimate (see versioning below).
Creating an estimate
- From scratch
- From a deal
- Cloning an existing estimate
Click New Estimate, pick a prospect (CRM contact or company — they don’t need to be a paying client yet), and start adding line items.
Line items
Estimate line items work the same way as invoice line items — pulled from your Products catalog or added ad-hoc. Each line has:- Product reference (optional)
- Description (the client-facing scope language)
- Quantity
- Unit price (overridable)
- Discount (per-line)
- Taxable flag
Tax, discounts, and terms
Same structure as invoices:- Tax — Per-jurisdiction rates, tax-exempt clients honored.
- Discounts — Per-line and estimate-level, percentage or fixed.
- Terms — Free-text field for payment terms, project timeline, or any conditions tied to acceptance (“Pricing valid for 30 days from issue”).
Sending for approval
When you click Send, the prospect gets an email with:- A summary of the estimate
- A link to the public approval page
The approval link is single-use per email send but can be re-sent. If you need to update the estimate after sending, create a revision (see versioning) — don’t edit the live estimate, since the prospect’s view would change underneath them.
Versioning and revisions
When a prospect requests changes, click Create Revision. This:- Locks the current version (rev 1) so the audit trail stays intact
- Creates a new draft (rev 2) with the same line items
- You edit, send, and the prospect sees rev 2
Converting to an invoice
When the estimate isaccepted, the Convert to Invoice action:
- Copies all line items, tax, discounts, and terms to a new draft invoice
- Links the estimate to the invoice (visible on both records)
- Leaves the estimate accepted — it’s a historical document; conversion doesn’t void it
draft so you can adjust the due date, payment terms, or add a deposit line before sending. From there, it follows the standard invoice lifecycle.
Multi-signer estimates and contracts
For larger deals where the prospect needs internal sign-off (legal, finance), pair the estimate with a contract from the Contracts module. Send the estimate first for pricing approval, then the contract for legal terms — or combine them into a single signature workflow if your process supports it.API patterns
Common API operations against/api/crm/estimates:
POST /api/crm/estimates— create a draftPOST /api/crm/estimates/:id/send— transition to sent and email the prospectPOST /api/crm/estimates/:id/accept— manual acceptance (for offline approvals)POST /api/crm/estimates/:id/convert— convert to a draft invoiceGET /api/crm/estimates?status=sent&older_than=14d— list stale outstanding estimates for follow-up automation
Best practices
- Set an expiry date. Open-ended estimates haunt your pipeline. 14 or 30 days is standard.
- Write descriptions for the buyer, not for accounting. This is your sales document.
- Track accepted/declined ratios. Estimates create a clean acceptance funnel — if you’re at 30% acceptance, your pricing or scoping needs work; if you’re at 95%, you’re under-pricing.
- Convert on acceptance, not before. Don’t pre-convert as an invoice — the conversion timestamp is meaningful for revenue recognition.
Troubleshooting
Public approval link shows 'expired' but I just sent it
Public approval link shows 'expired' but I just sent it
Check the expiry date on the estimate — if it was copied from a template with a fixed date, the date may have already passed. Edit the estimate, set a fresh expiry, and re-send.
Prospect accepted but I don't see Convert to Invoice
Prospect accepted but I don't see Convert to Invoice
The button only appears for status
accepted. If they accepted via comment in email instead of clicking the public link, mark it accepted manually from the estimate’s actions menu.Converted invoice has the wrong amount
Converted invoice has the wrong amount
Check whether you edited the estimate after acceptance — the converter copies the current state of the estimate, not the snapshot at acceptance. For audit-clean conversions, lock the estimate before clicking Accept.
Need to revoke a sent estimate
Need to revoke a sent estimate
Use Void from the actions menu. The public link starts returning a “no longer available” message and the estimate is removed from active reporting.
What’s next?
Create and Send an Estimate
Build, send, and convert your first estimate.
Contracts & E-Signatures
Pair estimates with legally binding contracts.
Invoices
Where accepted estimates end up.
Products Catalog
The line items that power estimates and invoices.