Blog ·
Quote, order and invoice are not the same document
The tempting model is one document with a status that advances: quote, then order, then invoice. It collapses the moment the business does something normal.

The tempting model is one document with a status that advances: quote, then order, then invoice. It collapses the moment the business does something normal.
They’re separate documents because they’re separate commitments, with different legal weight and different lifecycles:
- A quote can expire, be rejected, or be superseded by a new version. It commits nobody.
- An order commits both parties and reserves stock. It can be partially fulfilled.
- An invoice is a fiscal document with a sequence number and its own irreversibility.
The cases that break the status-field model
All of them ordinary:
One quote becomes two orders because the customer takes half now. One order produces several invoices as goods ship. An invoice exists while the order is still open. And the customer asks for the original quote months later — and it has to say what it said then, not what the current version says.
None of that fits a single row advancing through states.
The model that holds
Separate entities with explicit links: this order came from that quote; this invoice covers these order lines. The conversion is an operation that creates a new document and records the relationship — not a status mutation.
What you get: each document keeps its own numbers frozen at issue, the history is legible without reconstruction, and partial conversions stop being special cases.
The general pattern
It recurs everywhere in business software: if two things have different lifecycles or different obligations, they’re different entities — even when one becomes the other most of the time.