EU Omnibus Price Display: The 30-Day Prior Price Rule
Steven | TrustYourWebsite · April 5, 2026 · Last updated: May 2026
That "Was €99, now €49" label on your product page might be illegal. Since May 2022 the EU Omnibus Directive's price-display rule requires that any advertised discount shows the lowest price the product was actually sold at in the previous 30 days. No more inflated "original" prices to make discounts look bigger than they are.
Want to check your own webshop for these patterns? Run a free scan. The check flags inflated "was" prices, missing reference prices and the broader Omnibus rules alongside the rest of your compliance.
Where this rule comes from
The EU Omnibus Directive (2019/2161) updated several older consumer protection laws, including the Price Indication Directive. The goal was simple: stop fake discounts. Too many online shops were raising prices a week before a sale, then "discounting" back to the normal price. Customers thought they were getting a deal. They weren't.
Every EU member state had to implement this by May 28, 2022. In the Netherlands, it's part of the Wet oneerlijke handelspraktijken (unfair commercial practices law). The ACM (Authority for Consumers and Markets) enforces it.
This applies to all businesses that sell to consumers. Online shops, physical stores, marketplaces. It doesn't matter if you're a sole trader or a chain with 50 locations.
How the rule works in practice
When you advertise a price reduction, you must show a reference price. That reference price must be the lowest price you charged for the product in the 30 days before the discount started.
Here's what that looks like across four worked scenarios.
| Scenario | Past-30-day low | Displayed reference price | Sale price | Verdict |
|---|---|---|---|---|
| Stable price then sale | €89 (sold for two months) | €89 | €59 | ✅ Compliant. Reference matches the 30-day low |
| Stepped reduction | €79 (already discounted from €89 two weeks ago) | €79 | €59 | ✅ Compliant. Reference must be the lowest in the 30-day window, not the original list price |
| Last-minute hike | €79 (stable for months, raised to €99 two days before sale) | €99 | €59 | ❌ Not compliant. The actual 30-day low was €79. Advertising "was €99" is misleading under the Omnibus Directive |
| Phantom original | None (product was never sold at "list") | €120 | €69 | ❌ Not compliant. No genuine prior price means the implied saving is a misleading commercial practice |
Progressive reductions
Black Friday week is a good example. Say you start Monday with a 20% discount, Wednesday you go to 30%, and Friday you hit 40% off. Do you need to recalculate the reference price for each new reduction?
No. For progressive, uninterrupted price reductions on the same product, the reference price stays the same. It's the lowest price in the 30 days before the first reduction. So if the product was €100 before Monday's discount, that €100 stays your reference price for the entire sequence, even when you drop to 40% off on Friday.
The key word is "uninterrupted." If you end the sale and start a new one a week later, that's a new price reduction. You'll need to recalculate the reference price based on the new 30-day window, which now includes the discounted prices from the previous sale.
What's excluded
Not everything falls under this rule. There are three main exceptions.
| Exception | Why it's excluded | Watch-out |
|---|---|---|
| Perishable goods | Products with a short shelf life that get marked down as the expiry date approaches do not need 30-day tracking. A bakery discounting bread at the end of the day is the textbook case. | "Perishable" means real shelf-life risk. A seasonal clothing line is not perishable just because it goes out of fashion. |
| Products on the market less than 30 days | A genuinely new product has no 30-day price history, so an introductory discount cannot be benchmarked against one. | Once the product has been available for 30 days, the regular rule kicks in. The clock starts at first availability, not first sale. |
| Personalized pricing | Individual prices set via automated profiling fall outside the directive's reference-price rule. | You still have to inform the customer that the price was personalized, which raises GDPR questions of its own. |
Loyalty programs and individual negotiated discounts are also generally outside the scope of this rule. A coupon code for a specific customer is not a "price reduction announcement" under the directive.
How the ACM enforces this in the Netherlands
The ACM has been active on pricing transparency. They've investigated online retailers for misleading discount practices and have the authority to issue fines. For unfair commercial practices, penalties can reach up to €900,000 per violation or 1% of annual turnover.
In practice, the ACM tends to start with warnings and the opportunity to correct. But repeat offenders and blatant cases of artificial price inflation get less patience. The ACM specifically listed Omnibus Directive compliance as a priority area when the law took effect in 2022.
On 11 June 2024 the ACM made the enforcement bite real. It announced fines totalling €621,000 against five Dutch webshops for misleading "vanaf"-prijs labels on Black Friday product pages. Day Traders/Koopjedeal was fined €163,000, Leen Bakker €130,000, JYSK €112,500, G-Star €110,000 and Tommy Hilfiger €105,500. The ACM's reasoning hit the core 30-day-prior-price rule: each retailer had shown a "from"-price that the product had not actually been sold at in the preceding 30 days. The decision (case date 2 May 2024) is the clearest current signal that this is a live ACM priority and not an EU-level theoretical rule.
Other EU countries have their own enforcement agencies doing the same thing. Belgium's FOD Economie, Germany's Bundeskartellamt and France's DGCCRF (under Ordonnance n° 2021-1734 transposing the Omnibus Directive) have all signaled they are watching discount pricing closely.
How to implement this in your webshop
The practical challenge is tracking price history. You need to store the price of every product for at least 30 days and automatically pull the lowest price when you create a discount.
Quick orientation before the platform detail:
| Shopify | WooCommerce | |
|---|---|---|
| Native 30-day history | No | No |
| Recommended apps or plugins | Omnibus Price, Prior Price | "Omnibus Directive" plugins on the WordPress directory (several free) |
| Manual workaround | Spreadsheet of prices, set "compare at" to the 30-day low before each discount | Hook woocommerce_product_set_price to log into a custom table, then render the 30-day low on the frontend |
| Pitfall to avoid | Setting "compare at" to the current price and dropping the actual price | Showing the regular price as the strikethrough when the 30-day low is in fact lower |
Shopify
Shopify doesn't natively track 30-day price history. You have two options:
- Use an app. Apps like "Omnibus Price" or "Prior Price" add automatic price tracking and display the correct reference price on product pages. Most cost a few euros per month.
- Manual tracking. Keep a spreadsheet of your product prices. Before applying any discount, check the lowest price from the past 30 days and enter it as the "compare at" price. This works for small catalogs but gets painful fast.
Whatever you do, don't just put the current price in the "compare at" field and drop the actual price. That's exactly the pattern the Omnibus Directive was designed to prevent.
WooCommerce
WooCommerce stores the regular price and sale price but doesn't track price changes over time by default. Options:
- Plugins. Search for "Omnibus Directive" in the WordPress plugin directory. Several free plugins add a price history log and automatically show the lowest 30-day price on the frontend.
- Custom implementation. Hook into the
woocommerce_product_set_priceaction to log price changes to a custom database table. Then display the lowest price from the last 30 days wherever you show the sale badge.
For either platform, test your implementation by changing a product's price, waiting a day, then creating a discount. Verify the displayed reference price matches the actual lowest price, not the most recent regular price.
Common mistakes to avoid
| Mistake | Why it fails |
|---|---|
| Using MSRP as the reference price | The reference price must be the lowest price you actually charged in the past 30 days. Not the manufacturer's suggested retail price, not a competitor's price. |
| Forgetting about marketplace pricing | The 30-day history applies per sales channel. If you sell the same product on your own site and on Bol.com, each channel keeps its own price history and reference price. |
| Ignoring percentage discounts | "20% off everything" still needs a reference price for each individual product. The rule applies to any announced reduction, whether it is a fixed amount or a percentage. |
| Assuming it only applies to "sale" events | Any communication of a price reduction triggers the rule. That includes banners, product-page strikethrough prices, email campaigns and social media posts. If you tell customers the price is lower than before, you need a valid reference price. |
How this connects to your broader compliance
Price display rules are one piece of a bigger picture. Dutch webshops also need to show VAT-inclusive prices, display shipping costs upfront and use legally compliant order buttons. If you're checking your discount pricing, it's worth reviewing the whole list.
Read our Dutch webshop compliance checklist for the full overview. And if your checkout button text is wrong, that can make orders non-binding. Check our order button requirements guide for the specifics. Don't forget that your webshop also needs your KVK and VAT number displayed correctly.
Want to see how your webshop scores on pricing rules and other compliance checks? Run a free scan and get your results in under a minute.
FAQ
Does the 30-day rule apply to services or only physical products?
The Omnibus Directive primarily targets goods. Services, digital content and digital services have different rules. However, if you sell subscriptions or digital products at a listed price and then advertise a discount, many national regulators interpret the spirit of the law as applying. The safe approach is to follow the same 30-day reference rule for any consumer-facing price reduction.
What if I give a discount through a coupon code instead of a site-wide sale?
A targeted coupon sent to specific customers typically doesn't count as a "price reduction announcement" under the directive. But if you publish the coupon code publicly, post it on social media or make it available to anyone who visits your site, it's effectively an announced price reduction. In that case, the 30-day rule applies.
Do I need to show the reference price on product listing pages or only on the product detail page?
Anywhere you display the reduced price alongside a claim of a discount, the reference price should be visible. That includes category pages, search results within your shop, homepage banners and any other place where the customer sees a "was/now" comparison or a percentage discount. The consumer should never see a claimed discount without the reference price.
Can the ACM actually check my historical pricing?
Yes. The ACM can request your pricing records as part of an investigation. Third-party price tracking tools also archive public pricing data. If a customer or competitor files a complaint, the ACM can cross-reference your claimed discount against publicly available price history. Keeping accurate internal records protects you if questions come up.
Website Guides
EU Consumer Rights for Online Sellers: Plain-Language Guide
EU consumer rights for online sellers: the 14-day withdrawal right, Omnibus pricing rules and pre-contractual disclosures in plain language.
"Buy Now" vs "Order": Why Your Button Text Matters Legally
EU law requires specific wording on order buttons. The wrong text could make your orders non-binding. Here's what your checkout button must say.
ODR Platform Abolished: Remove the Link From Your Website
ODR platform abolished July 2025. If your website still links to the EU Online Dispute Resolution platform, here is what to do.