EU Omnibus rules for discounts: what Shopify stores must show
The 30-day lowest price rule explained for online stores: which price goes next to a discount, why repeat sales are risky, and how to keep a store and its marketplaces consistent.
5 min read
If you sell to consumers in the EU and you ever show a crossed-out price, the Omnibus rules apply to you. They have been in force since 28 May 2022, national consumer authorities check them, and the fines are set by each country. Yet many online stores still run promotions the old way: type a higher number into the “compare at” field, save, and hope nobody asks where that number came from.
This article explains what the rule actually requires, where Shopify stores usually get it wrong, and how to build a promotion routine that stays compliant without a spreadsheet.
What the rule says
The Omnibus Directive (EU) 2019/2161 added Article 6a to the Price Indication Directive. The core of it is one sentence: any announcement of a price reduction must show the prior price, and the prior price is the lowest price you applied during a period of at least 30 days before the reduction.
In practice that means:
- The “was” price next to a discount is not your list price, your recommended price or the price you “normally” charge. It is the lowest price the product actually sold for in the previous 30 days.
- The percentage you advertise has to be calculated from that same prior price. The EU Court of Justice confirmed this in 2024 (case C-330/23, Aldi Süd): a “-30%” badge must mean 30% off the lowest 30-day price, not off some other reference.
- Member states may adapt details, for example shorter periods for goods that spoil quickly or products on the market for less than 30 days, and a special rule for progressive reductions during one continuous campaign. Check the rules of each country you sell to.
The rule covers announcements of a price reduction: a strike-through price, a “sale” badge with a percentage, a banner that says “now only”. It does not stop you from changing prices; it stops you from presenting a price as a reduction when it isn’t one.
Where online stores usually go wrong
The compare-at price is typed by hand
Shopify’s compare-at price is a single field. It does not know what the product cost last week. If someone sets it from memory, from the supplier’s recommended price or by copying last season’s value, the discount is only compliant by luck.
Repeat sales shrink the “was” price
Suppose a necklace sells for €100, goes on sale at €80 for two weeks, returns to €100 and, ten days later, goes on sale again. For the second sale, the lowest price of the last 30 days is €80, not €100. Showing “€100, now €80” the second time announces a 20% discount that the customer did not get. The safe habit is to leave enough time between promotions on the same product, and to check the 30-day history before every new one.
Every channel tells a different story
A product can be on sale in your Shopify store, full price on a marketplace and discounted again in a newsletter. Each place where you announce a reduction needs a prior price that holds up. That is hard to reconstruct later unless every price change was recorded when it happened, per channel.
Offers that never end
A promotion that was supposed to last a weekend and is still running in November creates two problems: you lose margin, and the “sale” price quietly becomes your real price for the next 30-day window.
A routine that stays compliant
You can do all of this by hand. It takes discipline:
- Keep a price history per product and channel. Every time a price changes, note the date, the channel and the new price. Without history you cannot prove the prior price.
- Calculate the prior price before every promotion. Take the lowest price of the last 30 days on that channel and use it as the “was” price. Calculate the percentage from it.
- Check repeat promotions. If the product was on sale recently, either wait or accept that the announced reduction is smaller.
- Give every offer an end date. Decide when prices return to normal before the offer starts, and make sure they do.
- Apply it to every channel. The same product on a marketplace needs the same care.
How Opvelo handles it
Pricing rules and promotions are part of Know Your Market, which is in early access. What it is built to do:
- Promotions in bulk. You set a pricing rule once, such as a discount, a clearance or a price change, for whole collections, by collection, material or tag, with exclusions. Opvelo applies it across your store and marketplaces.
- The right “was” price, automatically. Opvelo records prices as it publishes them, for each product on every channel, and shows the lowest price of the previous 30 days next to each discount.
- Products that can’t go on sale yet are flagged, not published. If a product was discounted too recently, it is held back from the promotion instead of getting a misleading “was” price.
- Offers with a start and an end. Campaigns, clearances and price changes go live only after you approve them, and prices return to normal when an offer ends.
- Margins in view. Price recommendations account for product cost, shipping, marketplace fees and VAT, so a promotion doesn’t quietly sell below cost.
Nothing changes without your approval. Opvelo prepares the promotion and checks it; you decide whether it goes live.
A short checklist before your next sale
- Can you show, for every discounted product, the lowest price of the last 30 days?
- Is the advertised percentage calculated from that price?
- Was any of these products on sale in the last month?
- Do your marketplaces show the same story as your store?
- Do you know the exact date the offer ends, and who reverts the prices?
If any answer is “not sure”, the promotion is a risk. The fix is less about legal wording and more about keeping a reliable price history, which is exactly the kind of bookkeeping software should do for you.
This article is general information, not legal advice. National rules differ in the details; check with a local adviser for your markets.