When a WooCommerce coupon is rejected, compare its restrictions with the exact basket and billing email used at checkout. Start with the displayed error. Increasing the discount or clearing every cache will not fix a customer who is outside the coupon's eligibility rules.
Build a reproducible example
Copy the code from Marketing > Coupons rather than from a formatted email. Confirm that it is published and that coupon use is enabled in WooCommerce settings. Record the error, product IDs, quantities, sale status, other applied coupons and the time of the attempt.
Keep customer email addresses private. For diagnosis, use controlled test accounts with the same eligibility pattern, such as an allowed domain or an excluded previous purchaser. Avoid repeatedly submitting real orders just to test a code.
Check the rule that could reject this basket
| Symptom |
Likely rule to inspect |
| Works before a sale product is added |
Sale-item exclusion or cart-wide eligibility |
| Works alone but not with another code |
Individual-use setting or extension stacking rule |
| Works for staff but not a shopper |
Billing-email restriction or per-user usage limit |
| Works with two units but not one |
Minimum spend or eligible product requirement |
| Stopped working after a campaign |
Expiry or total usage limit |
Read the coupon's Usage restriction and Usage limits tabs. For core minimum-spend checks, inspect the subtotal and tax rather than assuming that shipping pushes the basket over the threshold. If a coupon extension changes these rules, use its documentation and test its behavior separately.
Change one input, not every restriction
Suppose a promotion should apply to a full-price accessory but not a discounted bundle. Create one basket with the accessory, one with the bundle and one with both. Write down the expected result before testing. If the mixed basket must receive a partial discount, confirm that the selected coupon type and restrictions actually implement that policy.
Eligible basket: Discount applies. Excluded basket: Restriction remains active. Quantity changed: Threshold recalculates. Final order: Approved discount retained. Explanatory checklist, not a customer test result.
Do not remove all exclusions as a quick repair. That can make a campaign stack with sale prices or expose a private customer offer to everyone. If the intended offer differs from the configured rules, have the campaign owner approve the corrected terms.
Distinguish rejection from a stale total
If the coupon applies successfully but the displayed amount differs between cart and checkout, move to the coupon and cache mismatch guide. That is a different failure from an invalid-code message.
Repeat the approved basket cases in a fresh guest session and with an eligible customer account. Remove and reapply the code, then change quantity. Confirm the final order totals with a controlled test order and cancel or refund it through the store's normal test procedure.
Preserve the old settings and the small eligibility test matrix. HandL WP can investigate a coupon failure using that evidence without guessing at your promotion's business rules.
Reference: WooCommerce coupon management.
References reviewed October 4, 2026. Examples are explanatory; production changes require an appropriate backup and authorized access.