Guides Coupon troubleshooting

Field guide 11

WooCommerce Coupon Not Working? Check These 6 Settings

A coupon error tells you that something in the current cart or customer context does not match the coupon. Before adding custom code, work through these six checks. Record the exact message, coupon settings, products, quantities and customer state so each test has a clear result.

1. Check whether coupon use is enabled

Under WooCommerce → Settings → General, verify coupon use is enabled. Save any intended setting change. If the coupon field is missing, also record the theme, checkout layout and extensions. A hidden field needs a presentation investigation; it does not prove the coupon itself is invalid.

2. Compare the code, status and expiry

Open the coupon under Marketing → Coupons. Confirm it is published and available on the store's current date. Copy its code directly into the checkout test. Visually similar characters can confuse a manual comparison: SAVE2O ends with the letter O; SAVE20 ends with the number zero. Record the configured expiry rather than guessing from the promotional message.

3. Check the discount type and amount

Determine whether the coupon gives a percentage, fixed-cart or fixed-product discount. Reproduce the calculation against the eligible items, including their quantities. Compare like-for-like carts; changing product eligibility or quantity can change the result even when the displayed coupon amount stays the same.

4. Inspect the cart's restrictions

Review spend thresholds, stacking rules, sale-item exclusions, product/category eligibility and email restrictions. WooCommerce uses cart subtotal plus tax for minimum spend. In a tax-free staging example, a $40 cart fails a $50 minimum. Email restrictions are checked against the billing email. Extensions can add more conditions.

5. Check whether usage remains

Inspect the total coupon limit, item limit and customer limit. Capture the current usage count and the identity used during checkout. Compare a fresh test customer with the customer reporting the error. For guest tests record the billing email; for logged-in tests record the account as well. Avoid changing existing order records to manufacture a successful result.

6. Establish a working baseline on staging

Create a staging copy. Start with one normally priced simple product, a fresh cart and a new coupon with no restrictions. Record whether it applies. Then introduce the original coupon's conditions one at a time, recording the result after each change. The first condition that makes the test fail gives you a specific lead.

If the baseline fails too, compare the classic checkout and Checkout block where applicable. Isolate pricing, membership, subscription, coupon and currency extensions on staging. Clear relevant staging caches and begin a fresh session between tests. Keep a record of each change and restore the environment after testing.

What to capture if it still fails

Save the exact error, a redacted cart snapshot, coupon settings, checkout type, customer login state, relevant extension versions and a step-by-step reproduction. Include both the failing case and a working comparison. Redact personal information before sending a support report.

Final checklist

  • Coupon use enabled
  • Code, publication status and expiry checked
  • Discount calculation matches its type
  • Cart meets all restrictions
  • Usage remains for the test context
  • Minimal staging baseline tested

Change one condition at a time so the outcome explains the cause.

Sources and further reading