The rule in brief: Section 11 PAngV and judgment C-330/23
Section 11(1) of the German Price Indication Ordinance (PAngV) requires anyone who has to state a total price to name, whenever a price reduction for goods is announced to consumers, the lowest total price applied within the last 30 days before the reduction took effect (Section 11 PAngV). The total price is the price including VAT and other price components (Section 2 PAngV). The revised ordinance entered into force on 28 May 2022 (PAngV). Its European counterpart is Article 6a of Directive 98/6/EC, inserted by Directive (EU) 2019/2161 (CJEU, C-330/23).
What the lowest price means for the advertised reduction was settled by the Court of Justice of the European Union on 26 September 2024 (CJEU, C-330/23). If a reduction is announced as a percentage or with a claim that highlights the price as a bargain, it has to be calculated on the basis of the prior price, i.e. the lowest price of the 30 days. A price advertised as reduced therefore cannot be equal to or higher than that prior price (CJEU, C-330/23). Mentioning the lowest price only as extra information below the offer, while the struck price and the percentage refer to a higher price, is not enough.
The original case shows what this looked like in practice. A food retailer advertised bananas in a weekly leaflet from October 2022 at €1.29, next to a struck-through €1.69 (CJEU, C-330/23). Below the price, the leaflet stated the lowest price of the last 30 days as also €1.29 (CJEU, C-330/23). The lowest price was on the page, yet the higher price was the one highlighted for comparison.
Two exceptions matter for online shops. If a reduction increases step by step without interruption, the lowest price from before its start may remain the stated reference during the promotion (Section 11 PAngV). Individual price reductions are exempt from the obligation (Section 11 PAngV). A discount code that potentially every visitor receives, however, is not a genuinely personalised reduction according to the European Commission's guidance. In that case the prior price must be the lowest publicly available price of the last 30 days (European Commission, guidance on Art. 6a).
The legal position is outlined here only as far as the evidence requires. Introductory prices, seasonal or perishable goods and parallel sales channels come with special rules that should be checked legally in the individual case.
Black Week: when several promotions fall into the same window
For Black Friday and Cyber Monday 2025, the German Retail Federation expected sales of €5.8 billion (HDE). In a survey carried out by IFH Köln on the federation's behalf among more than 1,000 online shoppers in October 2025, 48 percent said they planned to go bargain hunting on Black Friday (HDE). In 2026, Black Friday on 27 November follows Thanksgiving on 26 November, and Cyber Monday falls on 30 November (OPM). How the shifting calendar affects reporting is covered in the article on year-over-year comparisons in Q4.
For strikethrough prices, this means promotions sit close together. In its guidance, the European Commission explicitly names successive campaigns such as Singles Day, Black Friday, Cyber Monday or Christmas sales in November and December. For each further reduction, the prior price is then the lowest price of at least the last 30 days, even if that was the reduced price of an earlier campaign (European Commission, guidance on Art. 6a).
The worked example in the illustration above shows the consequence; the prices in it are invented. An item normally costs €59.90, is on offer for €49.90 during Singles Day week from 11 to 17 November and then costs €59.90 again. On 27 November it is to be sold for €44.90. The window runs from 28 October to 26 November, and the lowest price in it is the €49.90 from Singles Day week. So €49.90 belongs next to the sale price as the prior price, and any percentage has to be calculated from it: about 10 percent. The 25 percent that a comparison with €59.90 would produce would contradict judgment C-330/23.
Things are different if Black Week is set up as one continuous promotion with discounts that increase in stages. In that case, the lowest price from before the first discount may stay, as long as the reduction increases without interruption (Section 11 PAngV). The Commission reads this exception narrowly: it only applies if the price is reduced step by step, without interruptions and without increasing the stated prior price (European Commission, guidance on Art. 6a). Anyone who returns to the regular price for a day between two discount stages has two promotions and therefore two reference prices.
| Promotion pattern | Prior price | What needs to be documented |
|---|---|---|
| Single promotion on 27 November | lowest price from 28 October to 26 November | complete price history for the window |
| Singles Day, then Black Friday | lowest price including the Singles Day price | both promotions with start, end and price |
| Black Week with increasing discounts and no interruption | lowest price before the first discount | start of the promotion and continuous history |
| Price increase shortly before the promotion | lowest price in the window, usually the price before the increase | date and amount of the increase |
| Discount code for all visitors | lowest publicly available price of the 30 days | period in which the code was announced, and the prices |
Why the evidence is the real work
Anyone who intentionally or negligently fails to state the lowest price, or states it incorrectly or incompletely, commits an administrative offence (Section 20 PAngV). The offence can be punished with a fine of up to €25,000 (Section 3 WiStG). Alongside this there is the civil-law route. Under German unfair competition law, anyone who breaches a statutory provision that is also intended to regulate market conduct in the interest of market participants acts unfairly if the breach is liable to appreciably harm the interests of consumers, other market participants or competitors (Section 3a UWG). Injunctive relief can then be claimed by competitors, registered trade associations and qualified consumer associations, among others (Section 8 UWG).
In both cases, the decisive question only comes after the promotion: which price was on the product page on the morning of 27 November, which one was struck through, and what did the lowest-price notice say? Injunctive claims under the UWG become time-barred after six months (Section 11 UWG). The period only starts, however, once the claimant knows of the circumstances and the identity of the debtor, or would have known without gross negligence (Section 11 UWG). An enquiry in spring about a November promotion is therefore entirely possible.
Anyone who can then only show today's page and a database in which the prices have long been overwritten has little to go on. The evidence becomes robust when two independent trails show the same thing.
Two trails: price history and the visible page
The first trail is the price history in the shop system, the ERP or the product information management system. Only there is it recorded which price applied on which day, and only from there can the lowest price of the 30 days be calculated. Some systems, however, only store the new value when a price changes. Then exactly the history that Section 11 PAngV presupposes is missing. Before Black Week it is therefore worth checking whether every price change is logged with the date, the old and new value and the triggering source: an import, a price rule or a manual edit.
The second trail is the page as consumers saw it. It answers questions that a database cannot. Was the lowest price displayed, or did the field in the template stay empty? Was the notice clearly assigned, easy to recognise and clearly legible next to the price, as the ordinance requires for all price information (Section 1 PAngV)? Did the badge show the correct percentage? And did a cache still serve the previous day's page after the switch?
| Question | Price history in the shop | Dated capture of the page |
|---|---|---|
| Which price applied on which day? | yes, with the time of the change | only at the moment of the capture |
| What was the lowest price in the window? | can be calculated | no |
| Which struck price was displayed? | only if the system stores the display | yes |
| Was the notice legible and placed next to the price? | no | yes, per view |
| Did the percentage match the reference price? | can be checked arithmetically | visible as it was displayed |
| Did a cache serve an outdated state? | no | yes, if the capture catches it |
A capture taken from the outside via the public address does not depend on the database whose content it is meant to confirm. The same principle underpins the acceptance test report for websites: a state recorded with a date and a method replaces memory. How dated captures prove the availability of a mandatory function is shown in the article on the withdrawal button during peak season.
Where the display and the price history drift apart
Errors do not only arise in the calculation rule, but also on the way from the data record to the delivered page. These are the typical spots:
The theme shows the list price or a recommended retail price as the struck price instead of the calculated lowest price. Everything is correct in the database, but not on the page.
The badge calculates against the last price before the promotion instead of the lowest price. This is exactly the constellation behind judgment C-330/23.
A cache still serves the old page after the switch. How to find outdated pages is described in the article on stale caches after a deploy.
Sizes or colours have their own prices and their own histories. The category page often shows a from-price, the product page the price of the selected variant.
Trade, app or store prices follow their own rules. Where prices differ by sales channel, the lowest price has to be determined per channel (European Commission, guidance on Art. 6a).
An overnight import, a manual correction in the morning: until all prices are right, pages sit in an intermediate state for a while.
What these cases have in common is that they only become visible on the delivered page. A check in the back end usually does not find them, a capture of the page can show them.
What the screenshot changelog records and what it does not
XICTRAQ captures monitored pages at fixed intervals: every 24 hours on the free plan and every 12 hours on paid plans, each for desktop, tablet and mobile (XICTRAQ feature page). Every new capture is compared with the previous one. For every detected change, the screenshot changelog stores the before image, the after image and the diff (XICTRAQ feature page). The visual comparison is available from the Starter plan (XICTRAQ manual), and the number of subpages that can be monitored depends on the plan (XICTRAQ feature page).
For strikethrough prices one limit is decisive: a change only enters the changelog from 5 percent of changed image content, corrected for vertical shifts, and only if a before and an after image could be archived (XICTRAQ manual). A single changed price figure on a long product page usually stays below that. A sale banner, discount badges and struck prices across an entire category page, by contrast, change a much larger area. The changelog is therefore not a price log but a log of visible state changes.
For fixed reference dates there is the on-demand scan: independently of the plan interval, a capture can be triggered for a page, limited to ten a day (XICTRAQ manual). A before-and-after pair is archived when a change is detected, and the latest screenshot per device is updated continuously (XICTRAQ feature page). Anyone who wants to record a reference date on which little visibly changes should therefore file the capture with its date in their own evidence folder right after the scan.
Alongside the visual comparison, XICTRAQ shows text changes as a classic text diff and lists all recorded changes in a chronological overview with a before-and-after view (XICTRAQ feature page). How visual diff works technically and how false alarms from changing content such as tickers or teasers can be contained is explained in the article on visual diff. What an automatic website changelog records beyond that is covered in the introductory article.
XICTRAQ does not know the prices in the shop system and does not calculate a lowest price. Whether a struck price meets the requirements of Section 11 PAngV follows from the shop's price history, not from a capture. The captures show what was publicly visible. They do not currently cover pages behind a login, because screenshots are taken as seen from the public internet, without credentials (XICTRAQ manual).
Which pages belong in the capture series
The capture series does not provide a complete price history of the catalogue, and it does not need to. Its purpose is evidence at the places where strikethrough prices are advertised. Because the number of monitored pages depends on the plan, a deliberate selection pays off:
- The Black Week sale page. If it runs under the same address every year, the capture series also stays comparable over the years. Why that also pays off for search engines is explained in the article on the permanent URL for the Black Friday page.
- Category pages with many sale items. Here the switch changes a large area, and the struck prices of several items appear in one image.
- Product pages of the most heavily promoted sale items, such as the items from the newsletter, the home page banner and ads. For general announcements, the prior price does not have to appear in the banner itself but in the price information of the individual item in the online shop (European Commission, guidance on Art. 6a).
- The home page with the sale banner, so that the start and end of the campaign are documented with dates.
For product pages, one simple question helps: which items would a competitor look at first? As a rule, those are the items with the highest discount and the widest reach in advertising. The plans and the number of pages that can be monitored are listed on the pricing page.
A Black Week workflow in five steps
- By 27 October: check the price history. For every planned sale item, the history from 28 October onwards must be complete, because that is when the window for 27 November starts. Important for planning: a price increase within the window does not raise the reference price as long as the lower price before it is still inside the window.
- From early November: add the pages to monitoring. The sale page, category pages and the most important product pages get a capture series. The captures before the promotion show the starting state. The changelog records earlier promotions such as Singles Day if the visual comparison detects the switch as a change.
- 26 November: secure the starting state. Trigger an on-demand scan of the selected pages the day before and file the captures with their date. Because on-demand scans are limited, choose the pages in advance.
- 27 November after the switch: secure and cross-check the sale state. Trigger another on-demand scan, then compare the displayed struck price with the lowest price from the price history for a sample of items. Correct deviations and capture the corrected page again.
- After the promotion ends: close the folder. Capture the final sale state, then file the changelog entries for the period and the export of the price history in the evidence folder. If a report includes the security section, XICTRAQ appends a table of detected changes, in the PDF with the latest entries of the period. Every report can be exported as PDF, HTML, JSON or CSV (XICTRAQ manual); more on the page about reports.
A simple structure that keeps both trails separate and can be reused every year is enough for the evidence folder:
promotion: Black Week 2026
sale_days: 2026-11-27 to 2026-11-30
reference_window: 2026-10-28 to 2026-11-26
sample: sale-items-sample.csv
trail_1_price_history:
- price-history-2026-10-01-to-2026-12-01.csv
- lowest-price-per-item.csv
trail_2_visible_page:
- captures/2026-11-26_sale-page_desktop.png
- captures/2026-11-27_sale-page_desktop.png
- captures/2026-11-27_category-jackets_mobile.png
- changelog-report-2026-11.pdf
corrections:
- corrections-2026-11-27.csv # item, displayed, correct, corrected at
open_points:
- customer group prices not covered by the captures
Sample check on sale day: display against history
The cross-check on sale day is the step that turns two trails into evidence. From the export of the price history, the lowest price in the window is calculated for each item in the sample and compared with the struck price on the page. A simple way using standard tools, shown here for an example item:
It is important that the export contains the price that applied at the start of the window, not just the changes within it. Otherwise a lower price set before 28 October is missing, and the calculated lowest price comes out too high. For the page, this checklist applies to every item in the sample:
- the struck price matches the lowest price from the price history in the window up to the previous day
- the percentage is calculated on that lowest price
- the notice sits next to the price and is legible in the mobile view as well
- the category page and the product page show the same struck price
- for variants, the struck price belongs to the variant displayed
- after every correction there is a new capture with a date
If the sample reveals deviations, not only the correction belongs in the folder but also the time from which the correct price was visible. That is exactly what the new capture after the correction is for.
Keeping and finding the evidence
Injunctive claims under the UWG become time-barred after six months from knowledge, claims for damages after ten years from when they arose, regardless of knowledge (Section 11 UWG). Section 11 PAngV does not set its own retention period for the evidence. How long the folder is kept is therefore a judgement call that should be agreed with legal counsel. Deleting it shortly after the promotion ends is usually too early.
In the XICTRAQ account, how long captures are retained depends on the plan (XICTRAQ manual). The images that matter for the evidence therefore also belong in your own archive, together with the export of the price history and the sample. How retention and data minimisation can be kept apart cleanly for monitoring data is shown in the article on the data retention policy for monitoring data.
Plan strikethrough prices so they can be proven, instead of searching afterwards
The 30-day rule takes a minute to explain; the work lies in the evidence. The price history in the shop answers which price applied. Dated captures of the sale pages answer what consumers saw. Anyone who sets up both trails before 27 November, triggers captures deliberately on the reference dates and documents the sample check can answer enquiries with records instead of recollections. XICTRAQ takes care of the visible page; the obligation under Section 11 PAngV stays with the shop.
If you also want to spot copycat shops using your brand early in the Christmas season, there is a separate article on that.
This article is based on: German Price Indication Ordinance (PAngV), Sections 1, 2, 11 and 20, and Economic Offences Act 1954 (WiStG), Section 3, each in the version published on gesetze-im-internet.de; German Act against Unfair Competition (UWG), Sections 3a, 8 and 11; judgment of the Court of Justice of the European Union of 26 September 2024, case C-330/23; European Commission notice, guidance on the interpretation and application of Article 6a of Directive 98/6/EC (2021/C 526/02); German Retail Federation (HDE), press release of 17 November 2025 with a survey by IFH Köln; U.S. Office of Personnel Management, Federal Holidays 2026; XICTRAQ feature page Screenshot & Changelog and XICTRAQ manual Screenshots & Visual Diff, accessed on 6 October 2026. This article does not constitute legal advice.