PrestaShop discount code not working? 8 causes and how to check them

A discount code in PrestaShop usually fails for one of eight reasons: it is disabled, outside its validity dates, has used up its usage limit, is restricted to a customer group, the basket doesn't meet the minimum amount or product condition, it clashes with another code, or it only covers products that are already on sale. Check them in that order.

Author: The TellMyShop team. A guide for PrestaShop store owners: the cause, the manual fix and the same work in a chat conversation.
Last updated: · 5 min read

What does PrestaShop check before accepting a code?

Every discount code in PrestaShop is a cart rule. When a customer enters a code, the store goes through a list of conditions and rejects the code at the first one that isn't met. The customer sees a generic message, and you don't know which condition failed.

A cart rule has three tabs in the admin: Information, Conditions and Actions. Most problems sit in Conditions, but the trickiest ones are in Actions.

TabWhat you setTypical mistake
Informationname, code, description, priority, status, partial usecode disabled or a typo in the code
Conditionscustomer, dates, minimum amount, limits, carriers, groups, compatibility with other rules, product selectionend date has passed, Guest group not ticked, minimum amount counted with or without tax
Actionsfree shipping, percentage or amount discount, what it applies to, excluding discounted productsdiscount only on sale products, which are excluded

How to find the cause step by step

Take the code that doesn't work and the basket it doesn't work in. Then go through in order.

  1. Status. Is the switch in the Information tab on?
  2. Dates. Have the start date and time passed, and the end not yet? A code valid “from today” with a time of 23:59 only works in the evening.
  3. Limits. How many times has the code been used in total, and how many times can one customer use it?
  4. Customer and groups. Is the code assigned to a specific customer? Is the buyer's group ticked? Guest is a separate group.
  5. Minimum amount. Does the basket exceed it, counted the way you set it: with or without tax, with or without shipping?
  6. Product selection. If the code applies to a category or manufacturer, does the basket contain such products in the required quantity?
  7. Combining with other codes. Is there already another code in the basket that this one doesn't combine with? With several rules the priority also counts: a lower number means it is checked earlier.
  8. Products on sale. Is excluding discounted products ticked in Actions, while the basket only contains such products? The discount is then zero.

The eighth point is the most common source of reports like “code accepted, but no discount”. That several cart rules at once can give an unexpected result also shows in issues in the PrestaShop project on GitHub. The basics of setting up vouchers are covered in a forum thread on discount vouchers (in Polish). Store owners also discuss combining codes with sales on the PrestaShop forum and in a thread about a code combined with specific prices, both in Polish.

Why does a test purchase work while a customer reports an error?

Because you test in different conditions from the customer. You log into your own account, which is in a different group or already has an order history. You have a different set of products in the basket. You check in the afternoon, while the customer entered the code in the morning, before it took effect.

The most reliable test is a private browser window, a purchase as a guest and exactly the basket the customer had. If it works then, the difference lies in the customer's account: the group, the per-customer limit or the code being assigned to a specific person.

Remember the cache too. Rarely, but it happens that the theme or a basket module shows an old state. We describe how to spot this in the piece on PrestaShop changes not visible.

How to check discount codes with the chat

You ask for a review of your codes, or give the one that doesn't work. Your chat (Claude or ChatGPT) reads the cart rules with all their restrictions and usage counts, compares them with the situation you describe and points to the condition blocking the code.

You: A customer writes that the code AUTUMN15 gives no discount. They have two lanterns from the Lanterns category in the basket.

Your chat: AUTUMN15 is enabled, valid until 2026-10-31, used 37 times out of a limit of 200.

Cause: the 15% discount only applies to products that aren't on sale, and both lanterns in the basket currently have a sale price. The code is accepted, but the discount is €0.

You have two options: leave it as it is and reply to the customer, or turn off excluding discounted products for this code.

You: We'll leave it. Show me which codes are out of date as well.

Your chat: Expired or used up: 9 codes. I suggest disabling them:

The other 8 are in the same preview. I'll save it after your approval.

Card status: waiting for your “yes”
change preview

old version: SUMMER10 enabled

new version: SUMMER10 disabled

Illustration: products, numbers and replies are examples.

Changes to discount codes need the Sales switch. It is off after the module is installed; you turn it on yourself in the panel and it stays on until you turn it off. New codes created by the chat start disabled until you ask for them to be enabled. A code that has been used in an order can only be disabled, not deleted, so that the order history stays correct.

Example requests: review of active codes and promotions, a discount code for the newsletter and disabling expired codes. If you are preparing a bigger pricing campaign, also read about bulk price changes. Discount codes are handled by TellMyShop Pro, described on the pricing page.

How to set up a code so you don't get more reports

A few rules save most of the questions from customers.

  • In the newsletter, state the code's conditions: minimum amount, end date and whether it works on sale products.
  • Set the end date with a time of 23:59, and the start with 00:00.
  • Tick the Guest group if the code should work without logging in.
  • For the newsletter, generate single-use codes instead of one shared code that ends up on coupon sites.
  • Once a month, disable codes that have expired.

Questions and answers

Why does the discount code work for me but not for the customer?

Most often because you test while logged in, while the customer buys as a guest or belongs to a different customer group. The second common cause is a used-up per-customer limit: you used the code once in a test, the customer twice. Check the group restrictions and usage limits in the Conditions tab.

How do I stop a discount code combining with a sale?

In the Actions tab of the cart rule, tick the option to exclude discounted products. Then the discount won't apply to products with a specific price. If you don't want the code to combine with other codes, set the compatibility restriction with other cart rules in the Conditions tab.

Can a discount code apply to one category only?

Yes. In the Conditions tab you add a product selection restriction, for example to a category or manufacturer. Remember it is a condition: the basket has to contain such products. For the discount to apply only to them, set the discount on selected products in the Actions tab, not on the whole order.

Why doesn't a new discount code work straight away?

Check the status switch and the start date. A code with a start date in the future, or a time later than now, doesn't work yet. Codes created by the chat start disabled until you clearly ask for them to be enabled, so a code may be waiting for your decision.

Can the chat check all my codes at once?

Yes, in TellMyShop Pro. The chat shows a list of codes with usage counts, dates and restrictions, and points out the ones that have expired or used up their limit. Disabling old codes needs the Sales switch, which you turn on in the module panel. Then you do it in the same conversation, with a preview before saving. A used code can't be deleted, only disabled.

PrestaShop is a registered trademark of PrestaShop SA. Claude is a trademark of Anthropic PBC. ChatGPT and OpenAI are trademarks of OpenAI. TellMyShop is not affiliated with these companies.

The English version launches in January 2027

Join the list and you'll hear first when it opens, with a 72-hour head start on the launch offer.

A few emails before launch. Unsubscribe in one click. Privacy policy

Read next