twimco.Let’s talk ↗︎
Menu
Field notes / Commerce

The quote expired in the system and is still open in email

ERP says the wholesale quote died Tuesday. The buyer still has Thursday's PDF in their inbox and a sales rep who does not want to be the bad news. Until expiry is visible in every place the price was promised, you will keep honoring ghosts.

Editorial engraving of a sunlit wholesale office where a rep holds a corner-washed quote printout while ops points at abstract portal blocks.

When a B2B quote expires in the system of record, retire it everywhere the buyer still sees a price—email PDF, portal, CRM, and rep talk tracks. Show expired state, replacement path, and who may extend. An open inbox PDF is not a binding exception unless someone with authority creates one on purpose.

Two clocks, one buyer

Composite scene, details changed: a mid-market wholesaler with a portal, an ERP, and a sales team that still lives in email. Quote Q-4418 expired Tuesday at 11:59 PM according to ERP. The buyer never logged into the portal that week. On Friday they reply to last Thursday's message, attach the PDF, and ask to "book against the attached before inventory moves." The sales rep sees a CRM opportunity still parked in Negotiation—nobody flipped a stage when the quote died—and forwards the PDF to customer service with a note that this is a good customer. Ops knows the price file moved Wednesday. Customer service knows overrides are how they keep peace. Nobody set out to create a shadow price list. The artifact simply outlived the record.

An expired quote that still looks printable is a discount waiting to happen. Wholesale desks and marketplace sellers who treat email as the system of record will keep discovering that buyers did too. The fix is not a stern memo. The fix is making expiry as visible as the price was when it was alive.

Make expiry a customer-visible state

Expiry cannot live only as a status code inside ERP. The portal line for that quote must flip to Expired with a human-readable timestamp and a next step. If the PDF remains downloadable after cutover, watermark Expired across every page or revoke the download link. CRM must banner the opportunity so Negotiation cannot look like a live commercial path. Rep order pads and "last quoted price" shortcuts must refuse expired IDs unless an extension creates a new quote version with a new ID.

Say what happens next in the same breath as the expired state: request a requote, apply the current price list, or ask a named role for a time-bound extension. Silence after expiry is how buyers invent policy and how reps invent exceptions. For marketplace sellers who still quote in off-platform messages, refuse durable prices without a quote ID your OMS can kill. A free-text number in a chat thread is a future dispute, not a controlled commercial instrument.

If channel software cannot express expiry, shorten the promise: verbal ballparks only, with portal quotes as the only bookable path. That feels slower in the moment and saves the Friday scramble later.

Sequence of work

Retire a quote everywhere it still shows

  1. ERP expiry

    Quote status flips at the cutover timestamp.

  2. Portal

    Buyer sees Expired with next-step CTA.

  3. PDF and links

    Watermark or revoke download after cutover.

  4. CRM

    Opportunity banner blocks silent Negotiation.

  5. Order entry

    Live quote ID or current list only—extensions are new versions.

Illustrative expiry handoff; not a client screenshot or measured result.
An expired quote that still looks printable is a discount waiting to happen.

Extensions are products, not favors

Define who may extend a quote, for how many days, how many times, and whether price or quantity may change on extension. Every extension should mint a new version—do not silently revive Q-4418 as if Tuesday never happened. Require a reason code. If margin, freight, or inventory moved since the original, show the delta on the extension proposal before anyone approves.

Sales pressure will ask for just this once. Once is acceptable when once is an audited exception with an owner and an end date. Once is not acceptable when it means the PDF never dies and CS learns that forwarding always works. Publish the extension policy where reps actually read—next to commission rules helps—and review override counts weekly beside margin leakage, not as a morale slide.

If you use CPQ, bind document generation to quote version status so a regenerate after expiry cannot produce a clean PDF.

Decision guide

Ghost PDF vs versioned quote

ConsiderationEmail PDF as source of truthVersioned quote with visible expiry
Buyer experiencePrintable price forever.Clear expired state and requote path.
Rep behaviorForward and plead.Request extension with a new ID.
Ops riskMargin and inventory surprises.Order entry blocks dead IDs.
AuditWho promised what is unclear.Versions and override log.
ExceptionInformal honor requests.Named role, time bound, logged.
Decision framework: assess against your wholesale workflow; not client data.

Close the inbox path on purpose

You will not delete buyers' inboxes. You can stop sending naked price tables without quote IDs and expiry lines. You can expire download links on a schedule that matches ERP. You can teach reps that forwarding an old PDF is not an order path. You can make CS order entry require a live quote ID or an explicit current price-list pull with a logged override.

Walk one expired-quote order attempt through your wholesale or marketplaces stack as a drill. Start at the PDF sitting in the inbox. End at the order line that should have been blocked. Circle every system that still treated the PDF as live—email templates, CRM sync, customer-service macros, EDI maps that carry old unit prices. Those circles are the backlog. A training lunch will not close them.

Where marketplace free-text makes it worse

Off-platform quotes in WhatsApp, SMS, and marketplace message centers are expiry black holes. If your sellers negotiate there, require them to paste a portal quote link rather than a number. Moderators and channel partners should treat a bare unit price without an ID as non-actionable.

When a marketplace itself issues quotes or provisional prices, map their expiry into your OMS the same day. A channel that keeps showing a price after your ERP died will train buyers to ignore your portal forever.

Price lists and quotes are different instruments; do not let an expired quote silently fall back to a stale cached list line without showing the buyer which instrument they are on.

Finance should see expired-but-honored orders as a named variance, not a mystery discount in the margin report.

Price lists and quotes are different instruments; do not let an expired quote silently fall back to a stale cached list line without showing the buyer which instrument they are on.

Put this into practice

Pull ten recent orders that booked against quotes past expiry or against email PDFs with no live ID. Tag each failure: portal failed to block, CS override, rep promise, marketplace free-text, or integration replay. Fix the top path first with versioned quotes and a hard stop at order entry. Add the watermark or link revoke in the same sprint as the portal banner so buyers do not see one truth on the web and another in the attachment.

Then publish the extension policy on one page: roles, limits, price-change rules, and logging. Run a monthly sample of overrides. If the same rep or the same account clusters, you have a commercial conversation to have—not a quieter CS team to request.

We build commerce systems where price promises expire on purpose. If your inbox still underwrites dead quotes—talk to us.

Related work: Paddle8.

twimco.

We build alongside the people doing the work.
Bring us the problem you’re thinking about.

Related work

Paddle8 ↗︎