Skip to content
Order Genie is live on the Shopify App Store — 25 free conversations, forever →
Order Genie 7 min read

Shopify Discount Code Not Working? Why and What to Reply

Most "your code doesn't work" emails come from a rule the buyer couldn't see. Find the cause, send the right reply, and make the condition visible.

ShopAppsLab The team building Order Genie
A coupon outline with a dashed tear line on a dark navy background, half of its edge fading out, with one amber dot

The code is fine. The rule was invisible.

When a customer writes “your code doesn’t work”, the code almost always does. It did exactly what you set it up to do. The customer just could not see what you set it up to do: a minimum spend that lived in the admin but not in the email, an end time that passed at midnight in your timezone and early evening in theirs, a collection that left out the very product they wanted.

That changes how you should handle it, because the message is never really about one customer. If one person hit the hidden rule, everyone who saw the same promotion hit it too. Most of them did not write. Some paid full price and felt slightly cheated; the rest left the cart.

So the job has two halves: answer the person in front of you quickly, then make the rule visible so the next ten never need to ask.

Seven reasons a valid code gets rejected

Before you reply, open the discount in your Shopify admin and hold it up against the customer’s cart. The cause is almost always one of these:

  1. It has not started, or it has already ended. Start and end times follow your store’s timezone, not the buyer’s. A “weekend only” code that ends at 23:59 on Sunday ends hours earlier for some of your customers.
  2. The cart is below the minimum. A minimum purchase amount or a minimum number of items is easy to set and easy to forget to mention. Shipping does not count toward it, which is exactly the arithmetic a buyer gets wrong.
  3. It only applies to some products. A code limited to one collection does not touch anything outside it. With a mixed cart, the buyer sees a smaller discount than they expected and reads that as “it didn’t work”.
  4. It is limited to certain customers. A code meant for a customer segment or a list of specific customers fails for everyone else, including the friend the email was forwarded to.
  5. It has hit a usage limit. A total number of uses, or one use per customer. A second order from the same person is where this usually shows up.
  6. Another discount is already applied. Discounts do not combine unless you set them to. If an automatic discount is running, or the buyer already entered another code, the new one may be refused, or checkout may keep whichever discount is worth more.
  7. It is not set up for where the buyer is buying. If you sell in more than one country or sales channel, a discount can be available in one and not another.

Two causes are not settings at all: a typo (the letter O instead of a zero is the classic), and a code copied with a trailing space from a message on a phone. Rule both out before you change anything.

The first reply: the answer, the reason, the way through

Whatever the cause, the customer wants to know one thing: are they getting the discount or not. Answer that first, then explain. A reply that opens with “Our codes have the following conditions” reads as a refusal even when it is not one.

Hi {first name},

Thanks for letting me know. I’ve checked the code {code} against your cart.

It didn’t apply because {the reason, in one plain sentence}. {The way through: add one more item to reach {minimum}, or use it on {collection} — or, if the mistake was ours, say what you have done: applied the discount to your order, or sent a new code.}

Sorry for the hassle.

— {your name}, {store name}

Notice what the template does not do: argue. If the condition was not visible where the customer found the code, the fair reading is that the mistake is yours, not theirs. Honouring the discount in that case usually costs less than the reply chain it prevents, and far less than the customer who quietly does not come back.

If the order has already been placed at full price, you can refund the difference on the original order in Shopify instead of asking them to cancel and buy again. Say that you have done it, and roughly when they will see the money, in the same message.

Decide your rules before the next message

Like most support situations, this one goes faster when the decision was made before the message arrived. Write down three answers once:

  • If the condition was hidden, do we honour the code? Most small stores say yes, for the order in question.
  • If the code has expired, how much grace do we give? A day after the end time is a common choice. Whatever you pick, apply it to everyone.
  • If the buyer already paid full price, do we refund the difference? Set a time limit, so a code from six months ago does not turn into an open debate.

With those written down, the reply above takes two minutes, and nobody on your side has to make a judgment call at the end of a long day.

Make the rule visible where the code lives

The reply fixes one order. This part fixes the next ten.

Put the condition next to the code, everywhere. In the email, the banner, the social post, the partner’s caption: “15% off orders over $50, until Sunday 11:59 pm”. If a condition will not fit next to the code, it is probably too complicated for a promotion.

Write the end as a time, not a day. “Ends Sunday” means different things in different places. A specific time, with the timezone, removes the argument.

Use a discount link where you can. Shopify can give you a shareable link that applies the code when the buyer opens it, so there is nothing to type and nothing to mistype. In an email campaign, that removes the typo cause completely.

Test the code the way a customer would. Before a campaign goes out, build two real carts in a private browser window, one that should qualify and one that should not, and read what checkout says for each. If the message on the failing cart does not tell you what is wrong, it will not tell your customer either.

Retire old codes on purpose. Expired codes keep circulating in old emails and on coupon sites. If one keeps producing messages months later, decide whether to switch it off for good or keep honouring it deliberately.

Where this fits with the rest of your inbox

In the five emails you answer over and over, “My code did not work” was the last bucket, and the one where the fix is rarely words. That is still the case. Almost everything above is work in your Shopify admin and in the copy around your promotions, not a support decision.

Where we come in, briefly. Order Genie is the AI Order Agent we build at ShopAppsLab. It sits on your storefront, looks the order up in your store, and answers “where is my order?” — plus the shipping, returns and FAQ questions that tend to follow it — 24/7, without you in the loop. When a message is a decision rather than a lookup — a refund, an address change, a parcel that is actually lost — the conversation is handed to you with the full transcript. Honouring a code or refunding a difference is that kind of decision, so it still comes to you. It starts free with 25 conversations a month, and paid plans begin at $29. Everything above works without it — that is the honest version.

If you do one thing this week

Open your active discount codes and, for each one, read its conditions next to the place you published it. Wherever a condition exists in the admin but not in the email or banner, add one line. That single pass removes most of the messages this post is about.