If your WooCommerce shop sells to consumers in the EU and you ever show a sale price, the “Omnibus” price rule applies to you. It is short, but it changes how a discount must be displayed, and WooCommerce does not handle it out of the box.

This guide explains what the rule says, which price you must show, what the Court of Justice added in 2024, where countries differ, and how to put it into practice in WooCommerce.

In short

  • Whenever you announce a price reduction to consumers, you must show the prior price: the lowest price you charged in at least the 30 days before the reduction started.
  • Since the Aldi Süd judgment (26 September 2024), a percentage or "you save" claim must be calculated from that prior price, not from your usual price.
  • WooCommerce stores only a regular price and a sale price. It does not keep a price history, so it cannot know the 30-day lowest price by itself.

This is not legal advice. It is a plain-language summary of the official texts linked at the end. Check them, or ask a lawyer in your country, before relying on it for a specific case.

What Article 6a requires

The rule is Article 6a of Directive 98/6/EC on price indication. It was added by the “Omnibus” Directive (EU) 2019/2161. Member states had to adopt their national rules by 28 November 2021 and apply them from 28 May 2022. Some countries started later; for example, Poland and the Netherlands applied their versions from 1 January 2023.

Article 6a has five short paragraphs. In plain words:

  1. Any announcement of a price reduction must show the prior price the trader applied for a set period before the reduction.
  2. The prior price is the lowest price the trader applied during a period of not less than 30 days before the reduction.
  3. Member states may set different rules for goods that spoil or expire quickly.
  4. For products on the market for less than 30 days, member states may allow a shorter period.
  5. For progressively increased reductions (for example -10%, then -20%, then -30% in one campaign), member states may keep the price from before the first step as the prior price.

Paragraphs 3 to 5 are options. Each country decided whether to use them, which is why the details differ between countries (see country differences below).

The directive applies to traders selling goods to consumers. The European Commission’s guidance on Article 6a (2021/C 526/02) says it does not cover services or digital content. National law can go further: Poland, for example, applies the rule to paid services as well.

Which price is the reference

The reference is not your “normal” price. It is the lowest price you actually applied in the 30 days before the reduction started. That has some consequences that surprise people.

Earlier sale prices count. If the product was on sale for a few days within the 30-day window, that sale price is part of the window. The Commission’s guidance says any previous reduced price in that period counts.

The window is fixed to the start of the reduction. It covers the 30 days before the moment the reduced price first applied. It does not move forward while the sale runs.

Each sales channel has its own history. The guidance accepts that prices can differ between channels, for example your online shop and a physical store. The prior price is the lowest price in that same channel. If you sell in the same channel to everyone, there is one history per product, and for a variable product, one per variation.

A longer period is allowed. Thirty days is a minimum. You may look back further, as long as the price you show is not higher than the 30-day lowest price.

Showing other prices next to it

The guidance allows a trader to show other reference prices, such as the usual price, as long as they are clearly explained and do not confuse the consumer. But after the Aldi Süd judgment (next section), the reduction itself must be based on the prior price. In practice, the safest layout is: current price, the 30-day lowest price as the crossed-out or “was” price, and any percentage calculated from it.

Which announcements are covered

According to the Commission’s guidance, the rule covers announcements that suggest a lower price than before, such as:

  • a crossed-out price, or a “was / now” comparison,
  • a percentage or an amount off (“-20%”, “save €10”),
  • labels such as “sale”, “special offer” or “Black Friday deal”, even without a number.

The guidance lists things that Article 6a does not cover (they can still be judged under the Unfair Commercial Practices Directive):

  • general claims like “best price” or “lowest prices in town”,
  • comparisons with other prices, for example a recommended retail price or a competitor’s price, as long as they are not presented as your own reduction,
  • conditional and bundled offers, such as “buy one, get one free”,
  • genuinely individual discounts, such as personalised offers or long-term loyalty arrangements. If a “personal” or members-only discount is in fact offered to consumers in general, the guidance says Article 6a does apply.

For a WooCommerce shop, this matters in one specific place: the default “Sale!” badge that many themes add to any product with a sale price is itself an announcement of a reduction. If it appears, the prior price must appear too.

What the Aldi Süd ruling changed

On 26 September 2024 the Court of Justice of the EU decided case C-330/23, Verbraucherzentrale Baden-Württemberg v Aldi Süd.

Aldi Süd’s brochure showed bananas at €1.29 with a crossed-out €1.69 and a percentage. Next to the offer it also gave the “lowest price in the last 30 days”, which was €1.29: the same as the offer price. So the shop did state the 30-day price, but the advertised reduction was calculated from €1.69.

The Court held that a reduction announced as a percentage, or through a promotional statement that highlights how good the price is, must be determined on the basis of the prior price. Mentioning the 30-day lowest price only “for information”, while the discount is calculated from a higher price, is not enough. The Court also noted that the reduced price cannot be the same as the prior price or higher than it.

For a WooCommerce shop this means:

  • The crossed-out price should be the 30-day lowest price, not the regular price field.
  • A “-X%” badge must be calculated from the 30-day lowest price.
  • If the 30-day lowest price is equal to or lower than the current price, there is no genuine reduction, and the product should not be shown as reduced.

The Commission’s 2021 guidance already said that an indicated percentage must be based on the prior price. The judgment confirmed it with binding effect for all member states.

Country differences

All member states use the 30-day rule. The differences are in the three options from paragraphs 3 to 5. A few examples, each from the national text or the national authority:

CountryProgressive reductionsNew products (under 30 days)Perishable goods
Germany (§ 11 PAngV)Allowed: the price before the first step can be keptNo special rule in § 11Exempt when reduced because of imminent spoilage or expiry, if this is made clear
PolandNot adopted: each step needs a correct referenceLowest price since the product was first offeredPrice before the first reduction (shelf life up to 14 days or special storage)
Netherlands (ACM)Allowed, for up to three monthsLowest price in the period the product has been on the marketException for perishable products
Italy (Art. 17-bis Consumer Code)Allowed within one uninterrupted campaignShop must state the period the prior price refers to30-day rule does not apply to perishable agricultural and food products

Two practical points come out of this table:

  • Do not assume progressive discounts are fine everywhere. In Poland, a second step in the same campaign gets a new reference price. Where the option exists, it only covers one uninterrupted campaign. The Commission says any interruption ends it.
  • New products need care. The Commission’s guidance says countries may shorten the period but may not exempt new products completely. In Italy, the notice must say which period the prior price refers to.

Other countries have their own variations, and the national texts change over time. Check the rule of each country you sell into, not only your own.

Common mistakes in WooCommerce shops

These are the patterns that come up again and again, including in enforcement decisions.

1. Using the regular price as the crossed-out price. This is WooCommerce’s default display. It is only correct if the regular price happens to be the lowest price of the last 30 days. Poland’s competition authority UOKiK fined Zalando in January 2026 partly for calculating reductions from an “initial” or “regular” price instead of the 30-day lowest price (the decision is not final).

2. Showing the 30-day price only on the product page. The rule applies to every announcement of the reduction. UOKiK’s Zalando decision also concerned the lowest price missing at various stages of product presentation and in external ads. Think of category pages, search results, related products, the cart, newsletters and product feeds.

3. Getting variations wrong. If a reduction applies to all sizes or colours, each one needs a correct prior price. In the same January 2026 round, UOKiK fined Temu, among other things, for giving the lowest price for only one size or colour although the reduction applied to all of them (also not final).

4. Moving the reference during the sale. The reference is fixed when the reduction starts. A reference that changes from day to day while the sale price stays the same was one of the issues in the Temu decision.

5. Raising the price shortly before a sale. A higher price in the days before a sale does not raise the reference, because the lowest price of the window still counts. We explain this in detail in Raised the price before a sale?.

6. Not keeping a record. If an authority asks how you calculated a reduction, you need the price history. WooCommerce does not store it.

How to show it in WooCommerce

WooCommerce has two price fields per product or variation: regular price and sale price, plus an optional sale schedule. It shows the regular price crossed out next to the sale price. It does not record past prices.

Without a plugin

It is possible, but it is manual work for every sale:

  1. Keep your own price log. Write down every price change with its date, per product and per variation, including short promotions.
  2. Before a sale starts, find the lowest price of the previous 30 days for each product in the log.
  3. Show that price as the reference. One common workaround is to temporarily set the regular price to the 30-day lowest price, so WooCommerce’s crossed-out price is the right one. Remember to restore it afterwards, and remember that this changes what your theme, feeds and other plugins see.
  4. Add a short notice such as “Lowest price in the 30 days before the discount: €49.99”, using your theme or a code snippet on a WooCommerce price filter.
  5. Check the badge. If your theme shows a percentage, make sure it is calculated from the reference, or switch it off.

This can work for a handful of products and occasional sales. It becomes error-prone with many variations, scheduled sales or frequent price changes.

With a plugin

Several WooCommerce plugins record prices and show the 30-day lowest price. Whichever one you choose, check that it:

  • records every price change from the moment it is installed, including scheduled sales and variations (no plugin can know prices from before it was installed, unless it can import them from another tool),
  • calculates the window from the start of the reduction and keeps it fixed during the sale,
  • bases the crossed-out price and any percentage on the prior price, as Aldi Süd requires,
  • hides the reduction display when there is no genuine reduction,
  • handles your countries’ options (progressive reductions, new products),
  • shows the notice wherever prices appear, not only on the product page,
  • lets you export the history if you need to show your calculation.

FAQ

Does the rule apply to B2B shops?

Directive 98/6/EC is about prices offered to consumers. If your shop sells only to businesses, Article 6a does not apply to those sales. Shops that sell to both need it for consumer-facing prices.

Do I need to show the 30-day price if I just lower a price without calling it a sale?

Article 6a is triggered by an announcement of a price reduction. A simple price change without a crossed-out price, a percentage or a “sale” label is not such an announcement. But be careful: a theme that adds a “Sale” badge automatically turns it into one.

What about a product that has been on sale for less than 30 days?

That depends on the country. Poland and the Netherlands use the lowest price since the product was first offered; Italy also requires you to state the shorter period. See the table above.

Sources

  1. Directive 98/6/EC, consolidated text with Article 6a (EUR-Lex)
  2. Directive (EU) 2019/2161, the “Omnibus” Directive, Article 7 on dates (EUR-Lex)
  3. Commission guidance on the interpretation and application of Article 6a, 2021/C 526/02 (EUR-Lex)
  4. Judgment in case C-330/23, Aldi Süd, 26 September 2024 (EUR-Lex) and the Court’s press release No 152/24
  5. § 11 Preisangabenverordnung (Germany) (gesetze-im-internet.de)
  6. PARP: how to mark price reductions correctly (Poland) (Polish Agency for Enterprise Development)
  7. ACM: stricter rules against fake discounts (Netherlands) (Authority for Consumers and Markets)
  8. Italy: Article 17-bis of the Consumer Code (Legislative Decree 206/2005), inserted by Legislative Decree 26/2023. Unofficial text; the Gazzetta Ufficiale version prevails.
  9. UOKiK: penalties for Zalando and Temu, 14 January 2026 (Polish Office of Competition and Consumer Protection)