Turkey's "Lowest Price in the Last 10 Days" Discount Rule: What Changes in Software

A discount advertising rule that took effect on 1 August 2026 directly affects e-commerce systems that keep no price history. What does it mean technically?

2026-08-11

A regulation published in Turkey’s Official Gazette on 1 July 2026 took effect on 1 August 2026: in discount advertising, the “price before the discount” must now be the lowest price applied during the ten days before the discount start date. The real weight of this rule sits in software, not in legal paperwork — a system that keeps no price history physically cannot comply.

Illustration showing a discounted product price compared against its price history from the last ten days

What the Regulation Actually Says

The change was made by a regulation published in Official Gazette no. 33297 dated 1 July 2026, amending Article 14 of the 2015 Regulation on Commercial Advertising and Unfair Commercial Practices. The new third paragraph reads:

“When determining the price before the discount, advertisements concerning the sale of goods shall be based on the lowest price applied within the ten days preceding the start date of the discount; advertisements concerning perishable goods such as fruit and vegetables, and services, shall be based on the price immediately preceding the discounted price.”

Four points deserve attention:

  • Scope: Under Article 2, the regulation covers “every kind of commercial advertising directed at consumers.” So not just a campaign page: the struck-through price on a product card, an email newsletter, a social media graphic, ad copy.
  • Exception: Perishable goods such as fruit and vegetables, and services, fall outside the ten-day calculation; for them the basis is “the price immediately preceding the discounted price.” Services were brought into this exception by this amendment.
  • The window is fixed: The reference looks at the ten days preceding the discount start date. It is not a window that rolls during the campaign; it freezes the moment the campaign begins.
  • Channel separation: The new fifth paragraph states that if a product is sold through multiple channels, the reference price is determined “taking into account only the price in the channel where the discount is made,” and adds: “A price applied in one sales channel cannot be used as the basis for a discounted sale in other channels.”

The period used to be longer: the text introduced by the amendment dated 1 February 2022 said “thirty days.” The new seventh paragraph also brings conditional sale advertisements — things like “buy 3, pay for 2” — within the scope of this article. The Ministry of Trade confirmed the same framework in its announcement of 29 July 2026.

The Price Tag Side Already Changed in October 2025

This is not new logic; it is an alignment. Price tags and price lists are governed by a separate regulation: the Price Tag Regulation. The “lowest price” period in its Article 11 had already been reduced to ten days by an amendment dated 11 October 2025. As of August 2026, the advertising side now matches.

The technically most important sentence sits in that same article: “The burden of proof on these matters rests with the seller or the provider.” A comparable general rule exists on the advertising side too; Article 9 of the Commercial Advertising Regulation states that advertisers are obliged to prove the accuracy of the claims in their advertisements.

That single sentence turns the subject from a “rule” into a data retention requirement. In an audit it is not enough to say “it was 149 TL with us”; you have to be able to show when, in which channel, and at what price.

A Single “Price” Column Cannot Satisfy This Rule

In most e-commerce databases the product table has one price column, and when the price is updated the old value is overwritten. With that design, calculating the lowest price over ten days is impossible — the data does not exist.

What you need is a separate table that produces a dated row on every price change. Roughly:

CREATE TABLE product_price_history (
  id           BIGSERIAL PRIMARY KEY,
  product_id   BIGINT      NOT NULL,
  variant_id   BIGINT,               -- if size/colour are priced separately
  channel      TEXT        NOT NULL, -- 'web', 'trendyol', 'store-01'
  price        NUMERIC(12,2) NOT NULL, -- sale price including taxes
  currency     CHAR(3)     NOT NULL,
  valid_from   TIMESTAMPTZ NOT NULL,
  valid_to     TIMESTAMPTZ,          -- NULL for the current record
  source       TEXT                  -- system or user that created the row
);

Three design decisions matter:

Records must be immutable. This table is not a working area; it is a ledger of evidence. Rows are only appended, never corrected retroactively. This approach follows audit log logic and, in a more thorough setup, can be built with event sourcing.

Every path that changes a price must write a record. Manual edits in the admin panel matter, but so do bulk updates from the ERP, the marketplace panel, a pricing rule that runs overnight, and the campaign engine. Rather than scattering this across the application layer, it is safer to enforce it with a database trigger or route everything through a single service.

Plan the query cost up front. When preparing a campaign, queries run for thousands of products at once. A composite index on (product_id, channel, valid_from) is not negotiable on this table.

Calculating the Ten-Day Window

The value you want is the minimum of the prices that were in effect during the interval [campaign start − 10 days, campaign start). A price record counts if its validity interval overlaps that window:

SELECT MIN(price)
FROM product_price_history
WHERE product_id = :product
  AND channel    = :channel
  AND valid_from < :start
  AND (valid_to IS NULL OR valid_to > :start - INTERVAL '10 days');

Where teams get stuck in practice:

  • Time zones. Store records in UTC and run the calculation in Turkish local time. For a campaign starting near a day boundary, a two-hour shift can change which price record enters the calculation.
  • Freeze the reference. Calculate once at campaign start and write the result to the campaign record. If you recalculate on every page load, the “old price” shown can change while the campaign is still running.
  • Decide what counts as the price. A product’s list price and a coupon applied in the basket are different things. Which one gets written to history must be settled up front.
  • Build the exception separately. For services and perishable goods the calculation is not the ten-day minimum but “the previous price.” You cannot use the same query; you need a different path by product type. History is still required, because “the previous price” can only be read from a record.

Product Page, Marketplaces and Multi-Channel Sales

The display side is relatively simple: the reference price must appear legibly next to the discounted price. The first paragraph of Article 14 also requires that, alongside the pre-discount price, the start and end dates of the discount be clearly stated, as well as the quantity if it is limited. These are fields most themes do not have; if your campaign data model has no place for them, they need to be added.

The real difficulty is multi-channel selling. Because of the fifth paragraph, keeping a separate price history per channel becomes mandatory: the reference for a discount you start on Trendyol is only the lowest price of the last ten days on Trendyol. You cannot use your own site’s price as the reference there — and the reverse holds too. The practical consequences:

  • The channel field in the price history table is not decoration; it is where the calculation splits.
  • If you manage marketplace prices through your own system, record when each price update actually took effect on the other side. The moment you send it and the moment the price changes on the marketplace may not be the same.
  • Manual changes made in the marketplace panel must also land in history. That calls for a reconciliation job that regularly reads the current price from the marketplace API and compares it against your own record.

How liability is shared between the seller and the marketplace is a separate legal question, and the regulation does not allocate it by channel. The regulation defines the “advertiser” as the party that publishes advertisements featuring its own company or brand. Holding the data behind a price claim on your own product is, in any case, on you.

A Short Checklist

As of August 2026, the minimum list for an e-commerce system:

  1. Is there a table storing price changes with a timestamp and channel?
  2. Do all paths that change a price write to it?
  3. Is the ten-day lowest price calculated at campaign start and stored?
  4. Does the product page show the reference price and the campaign start and end dates?
  5. Is there a separate calculation path for services and perishable goods?
  6. Can you export the history if an audit asks for it?

In most businesses the missing piece is item one, and it usually cannot be filled in retroactively: if no record was kept, past prices cannot be reconstructed. That is why this is work to do ahead of the campaign season, not during it.

This post is for information only and is not legal advice. Consult the official text and a lawyer for your own situation. Note also that the regulation contains no penalty amounts — it is based on Law no. 6502 on Consumer Protection, and sanctions are set out there.

If you need price history infrastructure added to an existing system, marketplace prices kept in sync, or your campaign model rebuilt around these rules, take a look at our e-commerce development service, or get in touch to talk through your situation.