When a discount code is not working, the usual cause is that the cart or the time of purchase fails a promotion rule, not that the store is broken. The code may have expired, exclude the items in the cart, require a higher order value or clash with a discount already applied. The customer only sees a short rejection. Your job is to turn that message into a specific rule and explain what it means.

This guide covers promotional codes only: percentage, fixed-amount or free shipping discounts. For a gift card or a stored-value voucher, see our guide on what to do when a gift voucher does not work, where balance and the issuer matter. Here we cover diagnosis, the reply and who may grant an exception.

Six rules that block a code

Store platforms let you combine several conditions, and the customer sees none of them. Start with the exact error wording, because it narrows down the causes. The table lists the rules in the order easiest to check in your store admin.

Scroll the table sideways to see all columns.

RuleWhat the customer seesWhat to check
Date and timeCode inactive or invalidPromotion start and end plus the store time zone
Products and categoriesCode does not match the items in the cartEligible products, exclusions and items already on sale
Minimum orderCode rejected although the promotion is activeAmount or quantity threshold and how it is calculated
Combining discountsCode cannot be combined with another discountCombination settings and any automatic discount
Customer and channelCode fails for this account or place of purchaseLimits by email, customer group, market or channel
Usage limitCode has already been usedTotal limit, per-customer limit and unfinished orders

The WooCommerce documentation lists coupon restrictions such as minimum and maximum spend, excluding sale items, allowed email addresses, usage limits and an expiry date, and states that coupon codes are case-insensitive. It does not describe other platforms or the configuration of your own store. WooCommerce: Coupon Management.

What to ask for in your first message

One well-structured request saves several rounds of messages. Ask only for what you need to recreate the situation in your admin. You never need a card number, an account password or banking credentials.

  • The code exactly as it was entered, ideally copied from the cart field.
  • The wording of the message or a screenshot of the cart showing the error.
  • Items in the cart, their variants and the order value before shipping.
  • Where the code came from: newsletter, insert in a parcel, partner or social media post.
  • Whether the customer was logged in and which email address was used for the order.
  • When the attempt happened and where: website, app or physical store.

A screenshot often settles the case at once, showing the message and cart together. Our guide on screenshots for technical support explains how to ask for one. If your chat accepts attachments, the customer can send it in the same conversation.

The order of checks in your store admin

Diagnosis is faster when the whole team checks rules in the same order. Write it down as a decision tree, as described in our guide to troubleshooting instructions. The sequence starts with rules affecting every customer and ends with those affecting one person.

  1. Does the code exist and is it active?.Find the code in the discounts section. Check its status, start and end time, and the store time zone. A promotion ending at midnight may expire earlier than a customer elsewhere expects.
  2. Does the cart meet the conditions?.Compare the items with eligible products and exclusions. Check the amount or quantity threshold and any items already on sale.
  3. Is another discount already applied?.Look for an automatic discount or another code in the cart. Check whether both promotions allow combining.
  4. Is the code tied to a customer or channel?.Verify restrictions to an email address, customer group, market or sales channel. A code made for the app or a physical shop may not work online.
  5. Has the usage limit been reached?.Check total and per-customer uses. Look for an unfinished order that may be holding the code.

Combining discounts and usage limits

The hardest cases are those where the code is valid but the price does not change. The cart shows only the automatic discount that was already there. The store works as configured, yet for the customer the code does not work.

The Shopify Help Center explains that discounts combine only when each of them is set to allow it, and that when several discounts cannot be combined, the best discount for the customer's cart is applied. This describes Shopify configuration, not every store platform. Shopify Help Center: Combining discounts.

In its discounts FAQ, Shopify explains that once an order is submitted, the code is held against its usage limit until the payment completes or fails, and the hold remains when the checkout never finishes. That explains an already-used message after an interrupted payment. The source does not say how long that state lasts in a given store. Shopify Help Center: Discounts FAQ.

With a one-use-per-customer limit, ask whether an earlier payment was interrupted, and check the order status before promising anything. On WooCommerce, our guide to WooCommerce customer support explains how to read payment statuses.

A reply that names the rule

Customers accept a refusal more easily when they see a reason tied to their own cart rather than a generic "invalid code". A good reply states what you checked, which condition failed and what the customer can do now. Do not imply it is their fault. The templates below use a fictional clothing store.

Template: condition not met

"I checked the code JACKETS15. It only covers the Jackets category, and your cart contains shoes from another category, so the system did not accept it. If you add a jacket, the discount will apply to it. The full promotion terms are in the help article linked below."

Keep ready-made wording in templates, but always fill it in with details from the specific cart. Our guide to reply templates in customer support shows how to build a library of answers that does not sound automated.

Exceptions, fixing the promotion and one source of rules

When the store is at fault, agents should not promise a manual discount or partial refund on their own. Decide in advance who may grant an exception, in what form and up to what amount. The customer gets a clear decision deadline, and the team avoids an informal second promotion. Report the configuration fix separately so later customers do not hit the same problem. When the customer has no code at all and simply asks for a better price, use the rules in our guide on replying when a customer asks for a discount.

Most of these requests disappear when promotion rules are written down in one place before launch. Prepare them with the plan from our guide on Black Friday customer support. In Meetlead customer support you can publish a help article with the promotion rules that customers find in the widget, then tag the discount code conversation and add a note with the result of your check. You still verify the code in your store admin, because Meetlead does not read discounts or apply them to the cart.

Tags show which rules trigger the most questions. If most chats concern the minimum order, describe the threshold better on the site. Our guide to live chat for an online store covers where to show chat so it does not disrupt checkout.

Questions about codes that do not work

Should I apply the discount manually because the code failed? Only if the conditions were met or the store made a mistake, and only by someone authorised. Otherwise explain the condition and what the customer can change in the cart. An exception without a clear rule quickly becomes what the next customers expect.

What should I say when the promotion ended a few minutes before the purchase? Give the end time from the terms and the store time zone. If campaign messages stated a different time than the settings, treat it as a store error and escalate. If they matched, a polite and specific refusal is fair.