When AI Quotes a Customer the Wrong Price
AI quoted a customer the wrong price. Whether you have to honour it, how to respond in the first hour, and the three controls that stop a repeat.
When your AI quoted a customer the wrong price, you have two problems and they resolve on different timescales. The customer in front of you needs an answer today. The system that produced the number needs a change before it does it again.
Deal with them in that order, and do not let the second problem delay the first.
Do you have to honour it?
This is the question everyone asks first, and the honest answer is that it depends on facts about your own setup rather than on anything about AI. Consumer protection and contract rules vary by jurisdiction and this is not legal advice, but the factors that tend to matter are consistent:
Factor | Points toward honouring it | Points toward not |
|---|---|---|
How the quote was presented | A confirmed order total, an invoice, a booking confirmation | An informal chat reply, clearly conversational |
Whether the customer acted on it | They paid, booked time off, cancelled another supplier | They asked a question and nothing else happened |
How obvious the error is | Plausible price, just lower | Clearly absurd, such as 95 percent off a fixed-fee service |
What your terms say | Nothing about quote accuracy or confirmation | A clear confirmation step the customer passed through |
Whether a human confirmed | A staff member repeated the number | The bot said it and nobody reviewed it |
The pattern is that the more your quote looked like a commitment and the more reasonably the customer relied on it, the harder it is to walk back. A number that appeared in something labelled as a confirmation is in a very different position from one that appeared in a chat window. That distinction is worth checking against local rules in your market, because several jurisdictions now have specific disclosure requirements for automated customer interactions, as covered in the EU AI Act transparency rules and Colorado's AI chatbot law.
The first hour
Four steps, in order. The sequencing matters more than the wording.
Freeze the quoting path. Before anything else, stop the bot quoting prices. A static message pointing customers at a human is better than a second wrong number while you investigate. If you cannot disable just that capability, disable the bot.
Find out how many. Query your logs for every price the assistant stated in the affected window, not just the one that was reported. One complaint usually means several quiet ones, and the customer who did not complain is the one who quietly went elsewhere.
Decide the policy once, for everyone affected. Pick a single rule, such as honouring every quote below a stated threshold and contacting anyone above it. Deciding case by case produces inconsistency that is far harder to defend than a generous blanket rule.
Contact them before they contact you. Reaching out first converts a complaint into a service recovery. Waiting converts it into a review.
On step 3, do the arithmetic before you get precious about it. If the gap is $40 on a $300 job and eleven customers are affected, the entire exposure is $440, which is less than the staff time you will spend negotiating individually. Honour them all and move on.
What to say
Short, factual, no mechanism. Customers do not need to hear about tokens.
Name the error plainly. Our system quoted you $240. The correct price is $310.
State your decision in the same message, not in a follow-up. Do not leave them to ask.
Do not blame the AI as though it were a third party. You chose to put it in front of customers, and it reads as deflection.
Do not over-apologise. One sentence. A long apology makes a small error look larger.
If the answer is that you cannot honour it, say so once with a concrete alternative attached, such as the correct price with a goodwill discount. An offer is a conversation. A refusal is an argument. There is a longer version of this in what to do when an AI chatbot gives a customer wrong information.
Why AI quoted a customer the wrong price
The underlying cause is nearly always one of four things, and knowing which one you have determines the fix:
Cause | What it looks like | Fix |
|---|---|---|
No price data in context | Invented a plausible figure from nothing | Retrieval, so prices come from your system of record |
Stale price data | Correct number, from six months ago | Fetch at request time, never paste into the prompt |
Arithmetic | Right inputs, wrong total on a multi-item or discounted quote | Do the calculation in code, let the model collect inputs |
Invented a discount or policy | Offered a 20 percent first-order discount you do not have | Explicit refusal rule plus a closed list of what it may offer |
The arithmetic case is the one teams underrate. A language model doing percentage maths across several line items will mostly be right, and mostly is not a standard you can quote prices to. Have the model extract quantities and hand them to a function.
Check whether the number was ever yours
One case deserves separating out, because the remedy is different. Sometimes the figure was not a misread price at all, it was invented wholesale, along with a policy to justify it. A bot that offers a first-order discount you have never run has not made an arithmetic error, it has made up a commercial term.
That matters for two reasons. First, the fix is a refusal rule rather than better data, because no price lookup prevents a model inventing a promotion. Second, the customer conversation is harder, since they were told about a benefit that does not exist rather than given a wrong number for one that does.
The test is simple: could the stated figure have come from any row in your pricing data? If no, you are in this case, and the control you need is an explicit closed list of what the assistant may offer, with everything else refused and escalated.
The three controls that prevent a repeat
Never let the model state a number it did not read. Prices come from a lookup, and the instruction is to quote only from retrieved data and otherwise say it will check. Keeping the price list in the prompt itself is the trap, because it goes stale silently.
Put a ceiling and a floor on anything quotable. A bounds check in code, outside the model, that refuses to send a quote below a floor or above a ceiling. This is five lines and it catches the catastrophic cases regardless of why they happen.
Require confirmation for anything binding. The bot may discuss a price. A human or a priced checkout page confirms it. That one boundary moves every future error from a commitment into a conversation.
A bounds check in its simplest form:
FLOOR, CEILING = 0.60, 1.40 # fraction of the list price
def gate(quoted, list_price):
if list_price is None:
return None, "no list price found, escalate to a human"
ratio = quoted / list_price
if not (FLOOR <= ratio <= CEILING):
return None, f"quote {quoted} is {ratio:.0%} of list, blocked"
return quoted, NoneIt will occasionally block a legitimate quote, and that is the correct trade. A blocked quote costs you a handoff to a human. An unblocked wrong one costs you the difference, plus the conversation above. Where the quotable price list belongs is covered in what goes in the prompt vs what goes in the data, and the broader containment pattern in guardrails for a customer-facing AI chatbot.
Questions
Should I just stop letting AI discuss prices?
For many small businesses, yes, and it costs less than people assume. An assistant that answers questions and routes pricing to a human still removes most of the volume. Let it quote only when prices come from a lookup and a bounds check sits in front of the response.
Will a disclaimer protect me?
Partly, and less than you hope. A visible note that quotes are indicative and subject to confirmation helps, but burying it in terms nobody reads helps very little. The confirmation step does more work than the disclaimer.
How do I find out whether this already happened?
Search your conversation logs for currency symbols and price-shaped numbers in assistant messages, then compare against your price list. If you are not logging assistant messages, that is the first fix, ahead of everything else on this page.
Does my insurance cover this?
Possibly, and it is worth finding out before you need to know rather than during. Ask your broker specifically whether professional indemnity covers an incorrect quote generated by an automated system, because the answer is often different from the one for a staff error.
Who is responsible if the vendor's model got it wrong?
From the customer's position, you are. Vendor terms almost never make them liable for your customer commitments. Who is responsible when AI makes a mistake covers how that allocation usually works.
How did this land?
About the author

Developer Advocate
Steve builds something with Swarmz every week and writes up what worked, what broke, and what he'd do differently. Tutorials and hands-on guides are his lane.


