• New
PrestaShop Omnibus module: lowest price of the last 30 days next to the reduced price

Got a question before you buy? Tell us about your shop and we'll reply within 24 hours.

Ask us

Lowest Price in the Last 30 Days for PrestaShop — EU Omnibus Directive

When you announce a price reduction, EU law requires you to show the lowest price of the last 30 days, and to calculate the “−X%” from that price, not from your usual one. PrestaShop doesn't do it. This module does: it records each product's price history from the day you install it, lets you import the earlier one from your orders, and shows it next to the crossed-out price, on the product page and in listings.

$49.99
Option
PS 1.7+, 8.x, 9.x
SSL Secure
Instant Download
Developer support
Licensed
PrestaShop Omnibus module: lowest price of the last 30 days next to the reduced price
Lowest Price in the Last 30 Days for PrestaShop — EU Omnibus Directive
Selected:
$49.99

What your customer sees

When you put a product on sale, your customer sees the crossed-out price and, next to it, one more line: the lowest price that product has had in the last 30 days. That is what the law requires across the European Union every time you announce a price reduction. PrestaShop doesn't include it, and it doesn't keep past prices to work it out either.

Reduced product page in PrestaShop showing the lowest price of the last 30 days and the discount recalculated from it (Omnibus Directive)

An example with numbers

Your jacket normally costs €49.99. Two weeks ago you had it at €39.99 for a few days. Today you reduce it to €29.99. PrestaShop announces “−40%” and a saving of €20, both worked out from the €49.99. With the module, your customer reads “Lowest price in the 30 days before the discount: €39.99”, and the discount and the saving come from that figure: −25% and €10. That is the calculation the EU Court of Justice asks for.

Product page and listings

The line appears wherever your customer sees the reduced price: on the product page and in category and search listings. If the product has combinations, each size or colour has its own lowest price, because each one may have had a different price. You choose where in the price block it goes, on the product page and in listings, and if your theme is custom-made, your developer can place it anywhere with a single line in the template.

PrestaShop category listing with the 30-day lowest price line on each reduced product

When it shows

  • When the product has an announced reduction: a crossed-out price, a percentage or “was” and “now”
  • With the lowest price for that shop and that currency
  • In your customer's language: it comes in English, Spanish, French, Italian, German, Polish and Czech, and you can change the wording

When it doesn't

  • A price that isn't on sale announces nothing, so it doesn't get the line
  • Customers in the business groups you exclude don't see it
  • Products, categories or brands you leave out of the module
  • A reduction whose previous price isn't known: by default it isn't announced, with no crossed-out price, no percentage and no sale badge
  • Your prices don't change: only the way the reduction is announced does

The discount, done right

In September 2024 the EU Court of Justice made it clear in the Aldi Süd case (C-330/23): the percentage and the saving you announce are calculated from the lowest price of the last 30 days, not from your usual price. PrestaShop calculates the “−X%” from the price before the reduction, and many Omnibus modules just add the lowest-price line underneath. Your shop then shows the right figure and, next to it, a percentage the law doesn't allow.

Both figures in agreement

The module recalculates the “−X%” and the saving from the 30-day lowest price, on the product page and in listings. What your customer reads on the discount badge and what they read in the lowest-price line say the same thing.

Its own price history

To know what the lowest price was, someone has to have written it down. The module keeps its own history: per product, per combination, per shop and per currency. It records each price change by itself, and a scheduled sale is recorded at the exact time it starts or ends, with no scheduled tasks (cron) to set up on your hosting.

The day you install it

The module takes your shop's prices on that day as its starting point. If you already have sales running with a start date, it also records the price they had just before they began, taken from your own shop. What it doesn't know, it doesn't make up: a reduction whose previous price it doesn't know isn't announced (no crossed-out price, no percentage, no sale badge) until you import your history.

When you change a price

Every change is recorded with its date, and the lowest price is always worked out over the 30 days before the reduction. Sales you schedule with dates are recorded at their exact time, even if you don't open the back office that day.

Several shops and currencies

Each shop keeps its own history. If your złoty prices are converted from euros, the lowest złoty price is rebuilt with each day's exchange rate; if you give a product its own złoty prices, those keep their own history.

Your earlier history

Installing it with a campaign just around the corner? No need to wait 30 days: import your earlier prices and the module uses them for the time before its own history, without ever overwriting what it has recorded.

Importing price history from orders or from a CSV file with a preview in the Omnibus module for PrestaShop

From your orders

It takes the price you actually charged in each order over the days you choose, and treats it as valid until the next order of that product. It leaves out what wasn't the price for everyone: business customers, quantity discounts and prices agreed with a single customer.

From a CSV file

If your earlier prices live in your ERP or a spreadsheet, upload them in a CSV by product, combination, shop and currency, with or without tax. Before importing, you see a preview with the errors on each line.

Import again, safely

Importing again replaces the previous import of the same kind. What the module has recorded on its own is never touched.

Every reduction, explained

If someone asks you why a product shows that previous price, or why a reduction has no percentage, the answer is in your back office.

Omnibus module tab on the PrestaShop product page: previous price, what it does with the reduction and why

On the product page

A module tab on each product's page in the back office tells you, combination by combination, today's price, since when it has been reduced, the previous price, what the module does with that reduction and why, along with the price changes behind it.

Installation checks

The module's screen checks that your theme has the spot where the line goes, warns you if a full-page cache could serve an old price, and counts the reductions with no known previous price so you can import them.

The history is yours

If you uninstall or reset the module, the history stays: it is the proof of the prices you announced. It is only deleted if you tick the box that asks for it.

Settings by country

The directive lets each country decide a few cases, and they haven't all decided the same. The module lets you set them for each country you sell to. They apply by your visitor's country, taken from our Geolocation for PrestaShop: Prices, Currency & Language by Country module if you have it, or from the country your shop detects.

Country settings of the Omnibus module for PrestaShop: progressive reductions, new products and reference price

Progressive reductions

If you lower the price in steps during a campaign, where the law allows it the reference is the price before the first step. It comes switched on for Germany and France.

New products

A product that has been on sale for less than 30 days doesn't have 30 days of history. By default, in Spain its reduction is shown as it is; in other countries, the lowest price is counted from the day it went on sale. You can change both lists of countries.

Business customers

The rule protects consumers. If you also sell to businesses, exclude their customer groups and they won't see the line.

What the law requires

Article 6a of Directive 98/6/EC, added by Directive (EU) 2019/2161, the one everybody calls Omnibus, has applied since 28 May 2022: every time you announce a price reduction, you must show the prior price, which is the lowest price you applied in the previous 30 days.

Fines are already here

In Spain, the consumer affairs ministry imposed €350,000 in fines in total on seven online shops over their Black Friday 2023 sales, and the High Court of Justice of Madrid upheld them in October 2025. In Poland, the consumer authority (UOKiK) fined Zalando 30.9 million złoty in January 2026, in a decision that can still be appealed.

Where each country's law says it

  • Spain: article 20 of Law 7/1996 on Retail Trade
  • France: article L112-1-1 of the Code de la consommation
  • Italy: article 17-bis of the Codice del consumo
  • Germany: § 11 of the Preisangabenverordnung (PAngV)
  • Austria: § 9a of the Preisauszeichnungsgesetz (PrAG)
  • Poland: article 4(2) of the Act on informing about prices of goods and services
  • Czech Republic: § 12a of the Consumer Protection Act

Who it applies to

It applies to you if

  • You sell goods to consumers in the European Union, even if your company is outside the EU
  • You announce a reduction: a crossed-out price, a percentage, “was” and “now”, Black Friday, seasonal sales
  • You sell to consumers and businesses in the same shop: consumers see the line

It doesn't apply if

  • You only sell to businesses
  • You lower a price without announcing it as a reduction: no crossed-out price, no percentage, no “was”
  • You only sell services: the directive is about goods (in France and Poland the law covers services too)

Before choosing a module

Almost every Omnibus module shows a line with a price. What separates one that gets the numbers right from one that only looks like it does is in these questions: ask them of any module before you buy.

QuestionThis moduleWhy it matters
Does it calculate the “−X%” from the 30-day lowest price?YesThat is what the Aldi Süd ruling requires. A percentage based on the usual price is still a badly announced reduction, even with the lowest-price line underneath.
Does it keep the lowest price of each combination?YesSize M and size XL may have had different prices.
Does it keep shops and currencies apart?YesThe lowest price in euros says nothing about the price in złoty or koruna.
Does it need a scheduled task?NoIf the cron stops running, the lowest price goes stale and nobody notices.
What does it do with prices from before it was installed?Imports them from your orders or a CSVA module that fills in 30 days backwards with no data is guessing prices it doesn't know.
And if it doesn't know a reduction's previous price?It doesn't announce itA crossed-out price or a percentage with no previous price behind it is exactly what the rule doesn't allow.
Does it work on my PrestaShop?1.6.1 to 9.xMany shops that run sales are still on 1.6 or 1.7.

Compatibility

Your shop

  • PrestaShop 1.6.1 to 9.x, tested on 1.6.1, 1.7.5, 1.7.8, 8.1 and 9.0
  • PHP 5.6 to 8.4
  • On 1.6 it installs an override of Product; if another module already has one, the screen tells you which line to add
  • Products with combinations
  • Multistore and multiple currencies
  • Seven languages: English, Spanish, French, Italian, German, Polish and Czech

No extra work

  • No scheduled tasks (cron), with an optional URL if your shop goes days without visits
  • Your prices are left untouched
  • The history starts by itself the day you install it, and you import the earlier one
  • If you uninstall the module, your history is kept

Frequently asked questions

What is the Omnibus Directive and what does it make me show in PrestaShop?

It is Directive (EU) 2019/2161, which added a rule on price reductions to the EU price indication rules: when you announce a price reduction, you must show the lowest price you applied in the previous 30 days. It has applied across the EU since 28 May 2022.

How do I show the lowest price of the last 30 days in PrestaShop?

PrestaShop doesn't keep a price history, so you need a module that records it and shows it next to the reduced price. This one does it on the product page and in listings, per combination, shop and currency, from the day you install it.

Which price is the discount percentage calculated from?

From the lowest price of the last 30 days. The EU Court of Justice said so in the Aldi Süd case (C-330/23, September 2024): a “−30%” based on the usual price isn't valid if the product was already cheaper in the last month. The module recalculates the percentage and the saving from that lowest price.

Do I have to show it if I don't run sales?

No. The obligation starts when you announce a reduction: a crossed-out price, a percentage or “was” and “now”. If you just change a price without announcing it, there is nothing to show, and the module shows nothing.

Does it apply to B2B shops?

Not if you only sell to businesses: the rule protects consumers. If you sell to both in the same shop, exclude your business customer groups in the module and only consumers will see the line.

What happens to prices from before I install the module?

The module starts with your shop's prices on that day and doesn't make up earlier ones. So you don't have to wait 30 days, import them: from your orders, with the price you actually charged, or from a CSV with your prices. What you import only fills the time before the module's own history.

How does it work on Black Friday if I lower the price in steps?

Some countries allow the reference for a growing reduction to be the price before the first step. The module lets you switch this on in the countries where it is allowed, and it comes on for Germany and France.

Do I need a scheduled task (cron)?

No. Every price change is recorded by itself, and the sales you schedule with dates are recorded at the exact time they start or end. If your shop goes days without visits, there is an optional cron URL so nothing falls behind.

Does it work on PrestaShop 1.6, 1.7, 8 and 9?

Yes. It works from PrestaShop 1.6.1 to 9.x and is tested on 1.6.1, 1.7.5, 1.7.8, 8.1 and 9.0, with multistore and multiple currencies, on PHP 5.6 to 8.4.

What does my customer see if the module doesn't know a reduction's previous price?

By default, the reduction isn't announced: the product sells at the reduced price, but with no crossed-out price, no percentage and no sale badge. Once you import your order history or a CSV with your prices, the module knows the previous price and the reduction is announced with its lowest price.

What happens to the history if I uninstall the module?

It stays in your database, because it is the proof of the prices you announced. It is only deleted if you first tick the box to delete it on uninstall.

Configuration

Install and you're done

When you install it, the module records that day's prices, picks up the previous price of running sales that have a start date, and the line starts showing on your reduced products. No theme changes and no scheduled tasks to create.

Each country its own way

Progressive reductions and new products under 30 days, switched on or off for each country you sell to.

Your business customers

Choose the customer groups that shouldn't see the line, such as your business accounts.

Which products

Apply it to the whole catalogue or only to some categories (with their subcategories), brands or products, and leave out the ones you want. The history is kept for everything, so widening it later loses nothing.

The line, your way

Choose where it goes on the product page and in listings, change its wording in each language, and decide whether the crossed-out price and the percentage are recalculated from the lowest price or hidden so only the line shows.

Display options for the 30-day lowest price in PrestaShop: position, wording and percentage

Got a question before you buy? Tell us about your shop and we'll reply within 24 hours.

Ask us

Tell us what your business needs

A module, an app, a server that is giving you trouble or something urgent. We answer within 24 hours, with a fixed quote with a price and a date.