coupon code not working: what to check first
What to check first when a coupon code does not work: expiry, plan and product eligibility, stacking rules, and typos. Use when customers report invalid coupon codes, during promotions, or when writing promo help docs. Not for coupon fraud investigation, promo strategy, or discount policy design.
TL;DR
Coupon failures are eligibility problems, not broken codes: expired, wrong plan, one-per-customer already used, or cannot stack with another discount. Check the code's rules against the customer's cart before anything else. Then check the typed code character by character: homoglyphs (0 vs O, 1 vs l) kill more redemptions than bugs do.
The query
coupon code not working: what to check firstUse this when
- Customers report invalid coupon codes
- During active promotions
- Writing promo help documentation
- Checkout abandonment blamed on coupons
Not for
- Coupon fraud investigation
- Promo strategy or discount design
- Affiliate commission disputes
- Pricing policy
Steps
1. Read the code's rules
Expiry date, eligible plans or products, new-customers-only, minimum purchase, one per customer, non-stackable. Every rule is a rejection reason. Pull the rules before testing anything.
Expected output: the full rule set for the code.
2. Match the rules against the customer's cart
Plan eligible? Customer new or existing? Already used this code? Another discount applied that blocks stacking? Walk the rules top to bottom against their specific situation.
Expected output: the failing rule identified, or rules all pass.
3. Check the typed code character by character
Have them read it back or paste it. Homoglyphs (0/O, 1/l/I), trailing spaces, and case sensitivity are the classic killers. Copy-paste from the promo email beats retyping.
Expected output: the exact entered string verified.
4. Test it yourself
Apply the code to a test cart matching their situation. If it works for you, it is their input or their eligibility. If it fails for you, it is the code: escalate to whoever owns promos.
Expected output: reproduced or not, on your side.
5. Resolve: explain, substitute, or escalate
Eligibility miss: explain which rule and offer the closest valid alternative. Typo: give the correct code. Broken code: escalate and honor the discount manually if the promo is live and the customer qualifies.
Expected output: the customer gets the discount or a clear reason.
Template: the reply
Let me check that code for you, [Name].
What I see: the code [CODE] is [valid until date], for [eligible plans], [new/existing customers], [stacking rules].
[If a rule fails:] It looks like the snag is [rule]: [why it fails for them]. The closest alternative is [option].
[If it is a typo:] Try copying it directly from [source] and pasting it in. Watch for [0 vs O / spaces].
[If it is broken:] You are right, it is not applying correctly. I have applied the discount manually: [details]. We are fixing the code now.Variant phrasings
promo code invalid
Steps 1 through 3. Rules, cart match, typed string.
discount code not applying at checkout
Steps 2 and 4. Eligibility, then reproduce it yourself.
coupon expired but promotion still running
Step 1. Check whether the code or the promotion expired; they are different things.
Why it works
Coupons are rule engines, and users experience rule rejections as "broken." Reading the rules first turns the ticket from debugging into matching, which is faster and more accurate. The character check matters because users will swear they typed it right while a trailing space sits there invisible.
Edge cases
- The promo email promised broader terms than the code rules: honor the email. Marketing's promise beats the rule engine.
- Stacking with automatic discounts: the cart may already have a better deal. Show the math.
- One-per-customer tracked by email: the customer checking out as guest triggers it. Merge or exempt.
- Fraud patterns (code sharing on deal sites): that is a promo-owner decision, not a support ticket. Do not accuse the customer.
Provenance
Resolved from the public thread: https://vectle.com/posts/pst_Ka8Nnlhj8QKAnKKoIuBcZQ
Maintainer review
No maintainer verification is recorded for this version.
This records the version a maintainer checked. It does not assert that the version is the latest upstream release.