Quote workflow
Status model
A quote passes through these statuses:
| Status | Storefront label | Admin label | Meaning |
|---|---|---|---|
requested | Requested | Requested | The customer has requested; not yet processed. |
in_progress | In progress | In progress | The merchant is negotiating (draft, editable). |
sent | Quote received | Sent | The binding quote has been sent to the customer. |
accepted | Accepted | Accepted | The customer has accepted; the cart is filled. |
ordered | Ordered | Ordered | An order has been created and linked to the quote. |
declined | Declined | Declined | Declined/withdrawn by customer or merchant. |
expired | Expired | Expired | The validity has lapsed (automatic). |
superseded | Superseded | Superseded | Replaced by a newer version and frozen. |
Open quotes
requested, in_progress and sent count as open. In these statuses the customer can post messages and decline; only open quotes count towards the spam limit (Configuration).
Allowed status transitions
Status changes in the admin run through server-validated actions — an illegal transition can never be saved, regardless of what the frontend sends.
| From | Allowed to |
|---|---|
requested | in_progress, sent, declined |
in_progress | sent, declined |
sent | declined |
The remaining statuses are not set via these actions but by other flows:
accepted— by the customer's acceptance (or "Convert to order" in the admin),ordered— automatically once the order is placed,expired— automatically by the expiry task,superseded— automatically when revising a sent quote.
The full flow
1. Request
The customer requests (from the cart, via "Price on request", via quick request) or the merchant creates a draft. On a customer request the current terms are captured (payment method, shipping method, shipping costs from the cart). Status: requested (customer request) or in_progress (merchant draft). See Request.
2. Negotiation
The merchant opens the quote under Catalogues/Orders → Quotes, marks it in progress, and adjusts positions, prices, tiers, alternatives, texts and terms. The quote stays editable while it is requested or in_progress. See Management.
3. Send
The merchant clicks Send quote. This:
- sets the status to
sentand stores the send date, - generates an express token for the deep link in the email,
- sends the "Your individual quote" email to the customer (optionally with a PDF attachment).
Send lock
A quote can only be sent once payment method and shipping method are set (shipping costs may be 0 = free). Otherwise the button is disabled, and the server additionally rejects the send.
A sent quote is binding and is no longer edited in place — changes go through a new version.
4. Acceptance
The customer accepts under Account → My quotes with "Accept quote & order". The shop checks status and validity, sets the quote to accepted, switches the session to the quoted payment/shipping method, and fills the cart with the negotiated positions. Optional positions, alternatives and (for tiers) the quantity are taken from the customer's selection.
5. Order
Immediately afterwards:
- If "Place a binding order directly on acceptance" is on (default), a binding order at the quoted terms is created right away.
- Otherwise the customer lands in the normal checkout (confirm page). If the direct order fails (e.g. because a payment method needs input), the shop automatically falls back to the guided checkout.
Once the order exists, it is detected and linked to the quote: status → ordered, order stored.
Price and shipping-cost lock in the checkout
A quote is a package of terms, not just individual prices. So that the negotiated values survive the entire checkout (payment/shipping changes, page reloads, order placement), two cart processors kick in:
- Position prices — the positions filled from the quote carry a marker with the negotiated price. On every cart calculation the unit price is set to the quoted price (or the matching tier price); taxes are recalculated correctly. Pure free-text positions are priced this way too.
- Shipping costs — the shipping costs fixed in the quote override the calculated shipping costs of the delivery.
INFO
This lock only applies to carts that stem from a quote acceptance. Normal carts are unaffected.