WordPress 4 min read

WooCommerce coupon not applying at checkout: what I check

Discount code entered but WooCommerce will not apply it at checkout. Here is the checklist I run: expiry, usage limits, product rules, stacking, cart totals, and plugin conflicts.

WooCommerce coupon not applying at checkout: what I check

Customer pastes the code, hits Apply, and nothing happens. Or it flashes an error and the total stays the same. On a busy day that looks like the shop is broken, even when the catalogue and payment gateway are fine.

I treat a coupon that will not apply as a rules problem first, not a theme problem. Below is the order I work through before I start disabling plugins on a live checkout.

Confirm the coupon still exists and is published

In Marketing → Coupons (or WooCommerce → Coupons on older installs), open the code exactly as the customer typed it. Check it is Published, not Draft or Trash. Confirm the coupon code string matches character for character, including case if a plugin enforces that.

I also check whether someone created a near-duplicate code with a trailing space or a different discount type. Two almost-identical codes are a classic support ticket.

Expiry, usage limits, and per-user caps

Open the Usage restriction and Usage limits tabs. Common blockers:

  • Expiry date already passed (timezone on the server vs the date you typed in admin)
  • Usage limit reached on a launch or newsletter code
  • Usage limit per user hit because the email or account already redeemed it
  • Minimum or maximum spend the cart does not meet after tax and shipping settings

If the coupon is limited to specific emails, the checkout email must match. Guests who mistype the email fail silently or with a vague message depending on the theme.

Product, category, and excluded sale items

Coupons often only apply to certain products or categories, or they exclude items already on sale. A cart full of sale SKUs with "exclude sale items" ticked will never take the code, even though the code is valid.

I add one eligible full-price product to a test cart, apply the code, then swap back to the customer's mix. If it works on the clean cart, the restriction is doing its job and the messaging on the front end is what needs fixing, not the coupon engine.

Individual use and stacking

"Individual use only" means the coupon refuses to sit next to another discount, automatic coupon, or membership price. Some plugins add a second discount in the background (loyalty points, BOGO, dynamic pricing). The customer sees one field and assumes the shop is broken.

On staging I empty other automatic discounts, apply the code alone, then re-enable stacking plugins one at a time until the conflict shows up.

Tax, shipping, and what the coupon actually discounts

Percentage and fixed cart coupons behave differently once tax-inclusive pricing and shipping are in play. A fixed product coupon will not shave shipping. A coupon set to apply before tax can look "wrong" next to a tax-inclusive catalogue.

I compare the cart totals line by line with tax display settings in WooCommerce → Settings → Tax. If the number moves but the customer expected free shipping instead of 10% off products, that is a expectations and copy problem, not a broken apply button.

Checkout blocks, caching, and JavaScript errors

After a theme or checkout-blocks update, the Apply button can stop talking to Woo even when the coupon rules are fine. Open the browser console on the checkout page, apply the code, and look for failed admin-ajax or Store API calls.

Full-page cache on cart and checkout is another regular cause. Purge cache for those URLs, bypass the CDN for a test, and try again in a private window. If the coupon applies with cache off, fix the cache exclusions before touching coupon settings again.

Plugin conflicts after an update

Coupon, loyalty, and currency plugins all hook the same totals pipeline. After an update they can disagree about whether a code is valid.

On staging:

  1. Switch to a default theme briefly
  2. Keep Woo and the payment plugin only
  3. Create a simple percentage coupon with no restrictions
  4. Apply it on checkout
  5. Re-enable marketing and pricing plugins in small batches

If a bare coupon works on a default stack, the rules or a conflict are the issue, not Woo core.

When to stop guessing

If a wide-open test coupon works, the customer's code fails only on their cart mix, and cache plus console are clean, stop shotgun-editing live coupons. At that point you want a staging clone, the exact cart contents, and someone who has seen stacking and Store API checkout conflicts before.

Need this sorted properly? If coupons still will not apply after the checklist, I dig into restrictions, stacking plugins, and checkout conflicts on live Woo stores.

WordPress & WooCommerce support →

Most "coupon not applying" tickets come down to expiry or usage caps, product or sale exclusions, individual-use stacking, or a cached checkout that never hits Woo. Check the coupon record against a clean cart first, then cache and plugins. Cheers, and get that discount landing.

Need a hand with this?

Get help with a broken order journey, custom store features or ongoing WooCommerce care.

A related project

A custom price history feature for WooCommerce

Bespoke plugin work to record product price changes and present the history by date, delivered through an agency.

Talk directly to Adam

Share this article

Back to Blog