When a client says "the coupon doesn't work," the first instinct is to dig into code. In my experience, that is usually the wrong first move. Most WooCommerce coupon failures are configuration or environment problems, and they show up in a predictable order.
Here is the sequence I use.
1. Read the exact error message
WooCommerce tells the customer why a coupon was rejected, and the message points at the cause:
| Message (approx.) | Likely cause |
|---|---|
| Coupon "X" does not exist | Draft status, wrong code, hidden characters |
| This coupon has expired | Expiry date passed |
| Usage limit has been reached | Total or per-user limit used up |
| Minimum spend not met | Cart below the minimum |
| Not valid for sale items | "Exclude sale items" enabled |
| Not applicable to selected products | Product or category restrictions |
| Coupon is not yours | Allowed emails or per-user limit mismatch |
2. Reproduce as a guest
Test in a private window, not as an admin. A coupon that works for you but not for customers points to email restrictions, usage limits, or caching.
3. Check the coupon itself
- Status must be Published
- Expiry date in the future
- Usage count versus usage limit (stale pending orders can hold usage)
- Every restriction on the Usage restriction tab
4. Free shipping coupons need a shipping method
Ticking "Allow free shipping" on the coupon is only half the setup. The customer's shipping zone also needs a Free shipping method set to require a valid free shipping coupon. If the address is outside every zone, there is nothing for the coupon to apply to.
5. Check the environment
Coupons are applied through background requests that refresh the cart totals. Problems here look like "applied, but nothing changed":
- Cart, checkout, and account pages should be excluded from page caching
- Clear every cache layer: plugin, host, CDN
- Open the browser console and watch for JavaScript errors while applying the code
- Temporarily turn off JS minify, combine, and delay options
6. Run a conflict test on staging
Switch to a default theme, deactivate everything except WooCommerce, then reactivate plugins one at a time. Discount, loyalty, and dynamic pricing plugins are the usual suspects because they all alter how totals are calculated.
Subscriptions are a special case
WooCommerce Subscriptions has its own coupon types, such as sign-up fee and recurring discounts. A standard cart discount will not behave the same way on a subscription product, so test with the exact product type you are promoting.
Quick FAQ
Are coupon codes case sensitive?
No. Extra spaces or hidden characters copied from another document are the more likely culprit.
Why does the coupon work for me but not customers?
Check allowed emails, usage limits, and whether cart and checkout are cached.
Can coupons be combined?
Yes, unless one has "Individual use only" ticked.
Why did it stop working after an update?
Updates can change checkout templates or scripts. Clear caches and run the staging conflict test.
I wrote the full version, with the complete 10-step checklist and error message table, on my site: Fixing WooCommerce Coupons That Won't Apply.
Top comments (0)