Discount code not working: Shopify causes and replies
A Shopify discount code that 'doesn't work' is usually doing what it was set to do: a minimum isn't met, the customer or product isn't eligible, the dates or usage limit have passed, or it can't combine. How to tell which, and the reply for each.
By Max Lindberg · · 8 min read
When a customer writes "your discount code doesn't work", the code is usually doing exactly what it was set up to do: the cart is under a minimum, the products or the customer aren't eligible, the code has expired or been used up, or it can't be combined with another discount. Open the code in your Shopify admin, find which setting stopped it, and send the matching reply below.
Words in double braces, like {{discount_code}}, are blanks: fill each one from the discount settings or the order, never from memory.
Start with the message the customer saw
Ask for the exact wording at checkout, or a screenshot. Shopify's own help pages list what each message means:
| Message at checkout | What it means | Reply |
|---|---|---|
| "Enter a valid discount code" | The code doesn't exist or isn't currently active | Template 1 |
| "Unable to find a valid discount matching the code entered" | The code has been deactivated | Template 1 |
| "{{discount_code}} discount code isn't valid for the items in your cart" | The code exists but doesn't apply to these products | Template 3 |
| "The {{discount_code}} discount code has already been used" | Usage limit reached, one use per customer, or an unfinished checkout is holding it | Template 5 |
| "Discount couldn't be used with your existing discounts" | It can't combine with a discount already in the cart | Template 6 |
| "Some discount codes couldn't be used together. We applied the best combination" | Several codes were entered and not all can combine | Template 6 |
| No discount field at all | No active codes, a draft order invoice, Shop Pay not logged in, or an app | See "Things that look like a broken code" |
Shopify's help pages don't list a separate message for every setting, so if the wording doesn't match the table, check the settings in the next section.
Where to check it in the Shopify admin
Go to Discounts and click the code. Each section on that page can stop a code:
| Section | What can stop the code |
|---|---|
| Applies to | The code covers specific products or collections, and the cart has none of them. |
| Minimum requirements | A minimum purchase amount or a minimum quantity of items. Only items the discount applies to count, and the amount counts product prices only, without shipping or taxes. |
| Eligibility | The code is limited to specific customers, customer segments or markets. |
| Maximum discount uses | A limit on total uses, or one use per customer, tracked by email address or phone number. |
| Combinations | The code isn't set to combine with the other discount in the cart. |
| Active dates | The start date hasn't arrived, or the end date has passed. Times follow the time zone set in your admin, not the customer's. |
The discount's Timeline shows when it was created, edited, activated or expired, which helps when the customer says "it worked yesterday".
Template 1: the code has expired or isn't active
Hi {{first_name}},
Thanks for letting me know. The code {{discount_code}} ended on {{end_date}}, which is why checkout didn't accept it.
{{offer_or_no_offer}}
{{your_name}}
For {{offer_or_no_offer}}, write either "It's not something I can reopen, but here is what's on offer right now: {{current_offer}}." or "I've set up a new code for you: {{new_code}}, valid until {{new_end_date}}." Decide which before you write; don't promise a code you haven't created. If the code hasn't started yet, say the start date and time instead, and name your time zone.
Template 2: the cart is under the minimum
Hi {{first_name}},
The code {{discount_code}} applies to orders of {{minimum_amount}} or more of {{eligible_items}}. Your cart came to {{eligible_cart_amount}} on those items, so it fell just short. Shipping and tax don't count towards the minimum.
If you add {{amount_missing}} more of eligible items, the code will apply at checkout.
{{your_name}}
Check whether the minimum is an amount or a number of items, and whether the code covers the whole store or only some products: if it's limited, only those products count towards the minimum.
Template 3: the code doesn't cover those products
Hi {{first_name}},
I'm sorry for the confusion. {{discount_code}} only applies to {{eligible_products_or_collections}}, and the items in your cart aren't part of it. That's why checkout said the code isn't valid for your items.
If you add any item from {{eligible_products_or_collections}}, the discount will apply to that item.
{{your_name}}
If the product should have been included, that's your mistake, not the customer's: fix Applies to, then use Template 7.
Template 4: the customer isn't eligible
Codes limited to specific customers or a segment (for example, email subscribers) only work for those customers. Shopify identifies segment members at checkout by their email address or phone number, so the most common cause is a different address.
Hi {{first_name}},
{{discount_code}} is reserved for {{eligible_group}}, and it's checked against the email address or phone number used at checkout. Could you try again with {{email_on_file}}? That's the address we have for you.
If you'd rather use a different address, reply and I'll {{what_you_can_offer}}.
{{your_name}}
If the code is limited to markets, say plainly that it's only available in {{eligible_markets}}.
Template 5: the code has already been used
First, go to Orders and search for the customer. If they have an order with the code, it's used. If they don't, Shopify says an unfinished checkout can still be holding it: the code is held while a payment is pending, and the hold stays only if the checkout never finishes. Deactivating, reactivating or renaming a code doesn't reset its usage history. Shopify's suggested fix is a new code with the same conditions.
Hi {{first_name}},
I've looked into it: {{discount_code}} can be used once per customer, and our system still had it attached to an earlier checkout that didn't complete. That's not something you did wrong.
I've made you a new code with the same discount: {{new_code}}. It works until {{new_end_date}}.
{{your_name}}
If they did use it on order {{order_number}}, say so, and give the order date so they can find it.
Template 6: two discounts can't be combined
Hi {{first_name}},
Only one of those discounts can apply to your order. {{discount_code}} isn't set to combine with {{other_discount}}, so checkout kept the one that saves you more.
{{your_name}}
Shopify always applies the better discount when two can't be combined, so this reply is usually true. Before sending it, open both discounts and look at Combinations: each discount must allow the other's class (product, order or shipping). An automatic discount the customer never typed in can also be the "existing discount".
Template 7: the order is already placed without the discount
When the code should have worked, fix it on the order rather than asking the customer to order again. In Shopify, open the order, click Edit, click the item price, add a discount, then review and update the order. You can't add a discount to a line item that is only partly fulfilled. Editing the order doesn't move money: if the total goes down, you still have to issue the refund. You can also apply a discount to a line item from the refund page.
Hi {{first_name}},
You're right, {{discount_code}} should have applied to order {{order_number}}, and that was our error. I've applied the discount and refunded {{refund_amount}} to your {{payment_method}}.
Your bank may take a few days to show it.
{{your_name}}
Send this only after the refund is done, and copy {{refund_amount}} from the refund, not from your own maths.
Things that look like a broken code but aren't
Shopify's help pages list several cases that catch store owners out:
- No discount field at checkout. It appears only when at least one discount code is active. Checkouts from a draft order invoice don't let customers enter codes by default, Shop Pay customers must log in first, and checkout or pricing apps can hide it.
- Too many codes. Customers can use at most 5 product or order discount codes and 1 shipping discount code on one order.
- Buy X get Y. On plans other than Shopify Plus, products in a Buy X get Y discount can't take further product discounts; Shopify applies the best overall discount.
- Where the order is placed. Discount combinations work on the Online Store, the Storefront API and Shopify POS, not on Facebook, Instagram, Google or other external checkouts.
- Zero-value discounts. A discount worth $0 or 0% might not work correctly at checkout.
- Recreated codes. If you delete a one-use-per-customer code and create a duplicate, customers who used the old one can use the new one once.
Before a sale, place a test order or go through checkout with the code and stop before payment. Shopify suggests testing excluded products and different addresses at the same time. If customers write about the same code more than once, the fix belongs in the discount settings, not in more replies; see writing store policies that answer emails.
If a customer is upset rather than confused, start with the apology and the fix; our complaint reply structure helps. If they want to cancel the order because of the price, use an order cancellation reply instead.
When AI drafts the discount reply
Discount emails are easy to word and easy to get wrong: a draft that says "I've refunded the difference" or "here's a new code" promises something nobody has done yet.
Corresso drafts every reply from documents your store approved, such as your FAQ, and each fact cites the document it came from. Rules written in code hold a draft that promises a refund without citing a document allowed to offer one, or that contains an order number or date the AI wrote itself. With Shopify connected, the customer's orders appear beside the email and one click fills the order number into the draft. The refund itself stays in your Shopify admin, and a person reads every draft and presses Send. How Corresso works with Shopify.