> For the complete documentation index, see [llms.txt](https://docs.rafflex.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.rafflex.io/marketing/website-tools/promos-and-discounts/why-a-discount-code-wont-apply.md).

# Why a Discount Code Won't Apply

Why a coupon code can be refused at checkout even when it is live, and what each customer message means.

A saved coupon that has not reached its **Expiry** is live. Whether it applies for a particular customer depends on the limits you set when you created it. If one of those limits is not met, the code is refused and the customer sees a short message explaining why.

The good news is that the customer is never left guessing. When you are testing a code and it does not apply, read the message on screen first rather than assuming the code is broken. In most cases the code is working exactly as it was set up.

{% hint style="info" %}
To check a coupon's settings, open the **Competitions** group in your admin panel's left hand menu, click **Coupons**, then click **Edit** on the code's row. Each setting below uses the same name as on that form.
{% endhint %}

***

### Messages at a glance

Customers enter codes on the **Checkout** page, using the **Discount Code** button. Here is every message they can see, and what it means.

| The customer sees                                                                                                 | What it means                                                                                                                      | What to check                                                                                                    |
| ----------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| "Discount code required."                                                                                         | The customer clicked **Submit** without typing a code.                                                                             | Nothing to change. Ask the customer to type the code in the box first.                                           |
| "Discount code not found"                                                                                         | No coupon with that code exists.                                                                                                   | Spelling. Codes use letters and numbers only, so look out for a zero typed as a letter O, or an extra character. |
| "Discount Code not found or has expired."                                                                         | The code exists but its **Expiry** date and time has passed.                                                                       | **Expiry**                                                                                                       |
| "This discount code is for new customers only. Stay tuned for more exciting offers!"                              | **New Customers Only** is ticked and this customer has completed a paid order before.                                              | **New Customers Only**                                                                                           |
| "This discount code requires a minimum spend of £20.00"                                                           | The basket is worth less than your **Min spend**.                                                                                  | **Min spend**                                                                                                    |
| "This discount code has a maximum spend of £50.00"                                                                | The basket is worth more than your **Max spend**.                                                                                  | **Max spend**                                                                                                    |
| "This coupon code has reached its maximum usage and is no longer available. Stay tuned for more exciting offers!" | The code has been used in as many completed orders as your **Limit** allows.                                                       | **Limit**                                                                                                        |
| "You have reached your maximum usage for this coupon. Stay tuned for more exciting offers!"                       | This customer has used the code as many times as your **User limit** allows.                                                       | **User limit**                                                                                                   |
| "This coupon excludes the following competition(s): ... Remove to continue."                                      | The basket contains a competition in your **Exclude products** list. The customer is taken back to their basket.                   | **Exclude products**                                                                                             |
| "This coupon only includes the following competition(s): ... Remove others to continue."                          | The basket contains a competition that is not in your **Include products** list. The customer is taken back to their basket.       | **Include products**                                                                                             |
| "Coupon Missing, Expired or Invalid."                                                                             | The code was accepted earlier, but no longer passes its checks when the customer tries to pay. The code is removed from the order. | See [Codes that stop working at payment](#codes-that-stop-working-at-payment) below.                             |

The amounts in the spend messages show your own currency and the figures you set. The competition messages list the competition names, so the customer knows exactly what to remove.

{% hint style="info" %}
**Customers see one reason at a time.** The checks run in the order shown in the table. If a code breaks two rules, the customer sees the first message, fixes it, then sees the second when they try again.
{% endhint %}

***

### Each check in more detail

#### Expiry

A code works right up until its **Expiry** date and time, then stops the moment that passes. If a promo was working yesterday and is not today, check the **Expiry** first. Remember that the expiry includes a time. A code set to expire on 12 October at 00:00 stops working as 12 October begins, not at the end of that day. If you want a code to last the whole day, set the time to 23:59.

#### New Customers Only

When **New Customers Only** is ticked, the code only works for a customer who has never completed a paid order on your site.

There is one nuance worth knowing. Orders with nothing to pay, such as entries into free competitions, do not count. A customer who has only ever placed free orders is still treated as **new** and can use the code. So "first order only" really means "first **paid** order only". If a long standing customer can still use a new customer code, this is usually why.

#### Min spend

The basket must be worth at least your **Min spend**. The basket value is measured before any discount, so the discount itself never pushes a basket below the minimum. A **Min spend** of 0 means there is no minimum.

#### Max spend

This one often surprises operators.

{% hint style="warning" %}
**Max spend does not cap or shrink the discount.** It is an upper limit on the basket. If the basket value (measured before any discount) is **above** your **Max spend**, the code is refused entirely. It does not apply a smaller discount instead.

If you want a promo to work only on smaller baskets, **Max spend** is the right tool. If you were hoping to limit how big a single discount can be, this setting will not do that. For a fixed amount saving, choose **Fixed Discount** instead.
{% endhint %}

#### Limit (total uses)

**Limit** is the total number of times the code can be used across all customers. Only **completed** orders count. Customers who apply the code but never complete their order do not use up your limit, so the **Usage Count** on your Coupons list shows completed orders only.

#### User limit (uses per customer)

**User limit** works the same way for one customer. It counts how many completed orders that customer has placed using this code. Entering the code in a basket they never pay for does not use up their allowance.

#### Exclude products and Include products

These apply to the **whole basket**, not item by item. A code never quietly discounts only the eligible competitions and ignores the rest.

* If you **exclude** competitions and the basket contains any of them, the code is refused and the customer is told which competitions to remove.
* If you **include** only certain competitions and the basket contains anything else, the code is refused and the customer is told which competitions the code is for.

In both cases the customer is taken back to their basket to adjust it. Once the basket only contains eligible competitions, the code applies.

***

### Codes that stop working at payment

When a customer clicks to pay, the code is checked again. If something has changed since it was applied, the code is removed from the order and the customer sees "Coupon Missing, Expired or Invalid." They can then pay without the discount, or adjust their basket and try the code again.

Common reasons:

* The **Expiry** passed while the customer was at checkout.
* The **Limit** was reached by other customers in the meantime.
* The customer changed their basket so it no longer meets your **Min spend**, **Max spend** or competition rules.
* You edited or deleted the coupon after they applied it.

***

### Quick checklist when a code will not apply

{% hint style="info" %}
Run through these in order:

1. Is the code spelt correctly, and does it exist on your Coupons list?
2. Has the **Expiry** passed?
3. Is **New Customers Only** ticked, and has this customer completed a paid order before?
4. Is the basket below the **Min spend**, or above the **Max spend** (measured before the discount)?
5. Has the **Limit** or this customer's **User limit** been reached by completed orders?
6. Does the basket contain a competition in **Exclude products**, or one that is not in **Include products**?

The message shown at checkout points you straight to the answer in almost every case.
{% endhint %}

***

{% content-ref url="/pages/pTNWD9U8rVBqJnfvePj5" %}
[Promos and Discounts](/marketing/website-tools/promos-and-discounts.md)
{% endcontent-ref %}
