Docs · § 11 PAngV · Last updated 2026-05
PAngV compliance.
Germany's Price Indication Ordinance (Preisangabenverordnung, PAngV) governs every discount you advertise to German consumers. Heartly enforces § 11 automatically so your deals stay compliant. This page explains the rules, what we block, and how to override the only block that's merchant-discretionary.
01 · The rule
What § 11 PAngV requires
When you advertise a price reduction (a struck-through price, a discount badge, "-30% off", etc.), § 11 PAngV requires the reference price to be the lowest price the product was sold at during the 30 days before the promotion started. This rule codifies the EU Omnibus Directive (Article 6a of Directive 98/6/EC) into German law.
Two consequences flow from this:
- The reference price (the Streichpreis) cannot exceed the 30-day low. Selling at €80 down from a "regular" €100 is misleading if the actual lowest price in the prior 30 days was €75.
- Products without 30 days of observable price history cannot show a struck-through price or discount badge at all. The reference price is mathematically undefined.
02 · What we block
The deal gate
Every flash sale, carousel deal, and raffle you create runs through nine deal-gate rules (R-001 through R-009) before the platform discount is created. The two most common blocks:
R-001 — Streichpreis below 30-day low
Your reference price equals or exceeds the lowest price the product was sold at in the prior 30 days. This is a real PAngV violation and cannot be overridden.
R-004 — Insufficient history / snapshot missing
The product has been observable in your shop for less than 30 days, or we have no price snapshot at all (typical when a shop was just connected). The reference price is undefined, so a discount badge is misleading per § 11 PAngV + EU guideline 2.4 (Neuprodukt). This is the only block merchants can override.
03 · The override
When you can override R-004
You can override the R-004 block when the product has existed externally at the reference price for at least 30 days, even though Heartly has not observed it for that long. Common cases:
- You connected your shop fewer than 30 days ago but the product has been listed at the same price for months.
- The product was sold through a retail store or another sales channel at the reference price.
- You imported the product from another platform with continuous price history that Heartly didn't inherit.
When you override, Heartly logs your declaration with a timestamp, your user ID, and IP address into an append-only audit table. PAngV compliance liability for that specific deal shifts from Heartly to you. In a dispute the audit row is the evidence we hand to counsel or authorities.
Use the override only when you can document the external price history. If you can't, run the deal as an "Einführungspreis" (intro price) without a struck-through comparison — that's § 11-compliant out of the box.
04 · How to override
Step by step
- Start a flash sale on a product that triggers the snapshot-missing banner.
- Click Proceed anyway (accept responsibility) on the yellow banner.
- In the modal, write a justification of at least 30 characters explaining where and when the product was available at the reference price. Mention specific dates and channels.
- Tick the responsibility checkbox and click Confirm override.
- The banner turns green. Submit the deal normally — the gate lets it through and the audit row is written.
05 · FAQ
Frequently asked questions
Can I override R-001 too?
No. R-001 is a real PAngV violation — your reference price is verifiably above the 30-day low. Overriding it would ship a non-compliant deal regardless of any declaration.
What happens if a price webhook changes the reference after the sale starts?
Heartly re-runs the deal gate on every product-update webhook. If the new price breaks the verdict, the sale is blocked, the platform discount is deleted, and you receive an email explaining which rule fired.
Is the override visible to my customers?
No. The override only affects whether the deal can be created. The customer-facing storefront renders the deal with the same struck-through price and badge as any approved sale. The audit row is internal.
Where can I see my override history?
Every override is stored in the pangv_merchant_overrides table with full RLS — only your tenant can read its own rows. We'll surface this in the dashboard once override usage justifies the UI work.
Is this legal advice?
No. This page documents Heartly's enforcement mechanics. PAngV interpretation in your specific case belongs in a conversation with a lawyer.
06 · More
Related documents
- Merchant Terms — your contract with Heartly, including the liability allocation that the override relies on.
- Privacy Policy — what we store when you submit an override declaration.
- PAngV (official text, gesetze-im-internet.de)