Skip to content

Quotes and offers Pro

Pro: let customers ask for a price, answer with a negotiated offer, and turn an acceptance into exactly one order.

Updated August 26, 2026

Some sales do not start with a price. A customer builds a list, asks what it would cost, and someone at the store answers. Quotes give that conversation a place to happen and a record afterwards.

The shape of it

  1. A customer adds products to a quote request and sends it.
  2. Staff review the request and publish an offer: negotiated amounts, terms, and a date it is good until.
  3. The customer accepts or declines the offer they were shown.
  4. An acceptance becomes an order they can pay for.

Each step names who did it and when, and the whole sequence stays readable afterwards.

A quote request is not a basket

Quote lines are kept separately from the cart. That is deliberate. If a request sat in the cart, a customer could check out at list price the very lines they had asked you to price — which is the opposite of what they wanted.

For the same reason, sending a request does not reserve stock and does not hold a price. Every customer-facing screen says so, because a quote that quietly implies a reservation is a promise your store has not made.

Offers do not change under the customer

Publishing an offer writes a revision. If you edit it afterwards, that creates a new revision — the one the customer was looking at is never rewritten. So "what did I agree to?" always has an answer, and it is the same answer for both of you.

Acceptance names a revision. A customer who left the page open while you published a better offer accepts nothing: they are shown the current one instead.

One acceptance, one order

Two browser tabs, a double-click and a flaky connection all try to accept at once on a busy day. The database settles it: exactly one acceptance wins, and exactly one order is created. The others are told the offer has already been answered.

If a converted order is later deleted, StoreMaster refuses to quietly make a second one. That refusal is the point — silently issuing a replacement is how a customer ends up with two.

Amounts

Line prices on an offer are yours to set, and they carry over to the order exactly as agreed.

Shipping and tax on a quote are estimates, labelled as estimates, and they are calculated properly when the order is created. A quote that showed a firm tax figure and then charged a different one would be the complaint this design avoids.

Who can open a quote

A signed-in customer sees their quotes in My Account → Quotes.

A guest gets a link by email. The link on its own is not enough: opening it asks for the address the request was made with. A forwarded email should not hand over another company’s pricing.

An unknown quote and one that belongs to someone else give the same answer — otherwise the page becomes a way to find out which references exist.

Expiry

An offer can carry a date. After it, the offer reads as expired and cannot be accepted. This is checked when a quote is opened as well as by a daily sweep, so a host with unreliable cron cannot leave a stale offer live.

Internal notes

Notes you write while preparing an offer stay internal. Terms you write for the customer appear on the quote. They are separate fields and stay separate — including when an application is declined, where the reason is never shown to the applicant.

Still stuck? Email [email protected].