Launch pricing: Lock in Pro at $79/yr before prices go up View pricing →

Recover margin on short-dated stock instead of writing it off

Short-dated stock is a slow leak. A unit that’s three days from its best-before date is still perfectly sellable today, but if it sits at full price it usually doesn’t move — and then it expires and becomes a write-off. The fix isn’t a one-time clearance scramble; it’s a standing rule that quietly marks products down as they age, so the deal gets better the closer something gets to its date. That’s what automatic discounting does in WooCommerce with the Sellinor Product Expiration Dates Pro add-on.

This is a use case for the Pro add-on. The free plugin gives every product an expiration date and can hide it or set it out of stock when that date passes. Automatic discounts go a step earlier in the timeline: they help you sell the stock while it’s still good, instead of only pulling it once it’s gone.

Discount by days-until-expiry, not by guesswork

Instead of setting a sale price by hand, you define tiers keyed to how many days remain until a product expires. Each tier is just two numbers: a days-until-expiration threshold and a discount percentage. You configure them under Products → Expirations → Settings → Discounts, and the add-on ships with sensible defaults to start from:

Days until expirationDiscount
14 days10% off
7 days25% off
3 days50% off

With that setup, a product expiring in ten days gets 10% off. When it crosses into the 7-day window the discount deepens to 25%, and at 3 days it jumps to 50%. You set the tiers once; every product walks through them on its own as the calendar moves. There’s no list to revisit, no spreadsheet of markdowns, and no risk of forgetting a SKU. Full setup is in the automatic discounts docs.

It behaves like a real WooCommerce sale

Discounts are applied in real time through WooCommerce’s price filters, so they integrate cleanly with the rest of the store:

  • The sale price shows with a strikethrough on the original, exactly like a manual sale.
  • Cart calculations and order totals reflect the discounted price.
  • When a product moves into a steeper tier, the price updates automatically — no re-saving the product.

There is one honest limitation worth knowing up front. Because the discount is calculated dynamically rather than written to the product’s sale-price field, expiry-discounted products do not appear in WooCommerce’s sale-only listings — the [sale_products] shortcode or the “On Sale” block. Those read from a sale-price lookup table the dynamic discount never touches. Everything on the product itself — price, strikethrough, badge, cart and checkout totals — is correct; the items just aren’t collected into those sale-only loops.

The “Expiring soon” badge does the selling

A discount only works if customers notice it. When automatic discounts are active, near-expiry products can display an Expiring soon badge on:

  • shop and category archive pages, and
  • individual product pages.

On a product page the badge can also spell out the active deal — for example “50% off - Expiring soon” — so the markdown is explicit rather than buried in a strikethrough. The badge is enabled by default and has its own on/off toggle (Show sale badge) separate from the Badge text field, which lets you reword it to “Expiring soon”, “Clearance”, or whatever fits your store. Turn the badge off and discounts still apply; it’s purely the visual nudge.

How it pairs with FEFO batch tracking

Automatic discounts get sharper when you run them alongside batch tracking. With batches enabled, each delivery of a product carries its own quantity and expiration date, and orders are filled First Expired, First Out (FEFO) — the soonest-to-expire units sell first. See batch & lot tracking and the FEFO guide for how that deduction works.

Put the two together and they reinforce each other:

  • FEFO makes sure the oldest stock is the stock that ships.
  • Automatic discounts make that same oldest stock more attractive to buy in the first place.

The result is that your nearest-to-expiry inventory is both prioritized at the point of sale and priced to move — which is exactly the combination that clears short-dated stock before it reaches its date.

Set margins you can live with

A few practical rules keep discounting profitable rather than panic-driven:

  • Start gentle. A 10% nudge at 14 days is often enough to move stock without giving away margin. Save the steep cuts for the final days.
  • Protect your floor. Set percentages that still keep the sale profitable — or at minimum cost you less than writing off expired stock would.
  • Watch the results. The Overview tab shows what’s expiring soon, and the scheduled email digest can alert you when products enter discount tiers, so you can tune the tiers over time.

Free vs Pro

The free plugin handles the end of the lifecycle: a single expiration date per product, automatic hide / out-of-stock actions, cart and checkout protection, and frontend date display. Automatic discounts, the Expiring soon badge, batch tracking with FEFO, and the email digest are Pro features. Pro is $79/year for one site, Agency is $199/year for unlimited sites, and both include a 14-day free trial — see licensing for activation details.

If you sell anything dated — food and grocery stock, supplements, cosmetics — tiered expiry discounting is the difference between recovering some margin on short-dated stock and watching it quietly turn into waste.

Frequently asked questions

How do automatic expiry discounts work in WooCommerce?

You define discount tiers based on how many days remain until a product expires — for example 10% off at 14 days, 25% at 7 days, 50% at 3 days. The Sellinor Pro add-on checks each product's expiration date and applies the matching discount automatically through WooCommerce's price filters, so the sale price, strikethrough and cart totals all update on their own as the date approaches.

Do I have to edit prices by hand as products age?

No. That is the point of tiered discounting. You configure the tiers once under Products → Expirations → Settings → Discounts, and each product moves through them automatically based on its days-until-expiry. When a product crosses into a steeper tier, its sale price updates without any manual edit.

Will the discounted price show up everywhere a normal sale does?

The discounted price, strikethrough, sale badge and cart/checkout totals are all correct on the product itself. The one exception is WooCommerce's sale-only listings — the [sale_products] shortcode and the On Sale block — which read from a sale-price lookup table the dynamic discount does not write to, so expiry-discounted products are not collected into those sale-only loops.

What is the Expiring soon badge?

When automatic discounts are active, products approaching expiry can show an Expiring soon badge on shop and category pages and on the product page. On single product pages it can surface the active discount too, such as 50% off - Expiring soon. The badge is on by default with customizable text, and you can turn it off without affecting the discounts.

How do automatic discounts pair with batch tracking and FEFO?

Batch tracking deducts stock First Expired, First Out, so the soonest-to-expire units sell first. Automatic discounts mark those same near-expiry products down. Together, your oldest stock is both prioritized for sale and made more attractive to buy, which is what clears short-dated inventory before it has to be written off.

Is automatic discounting a free or Pro feature?

It is part of the Pro add-on. The free Sellinor plugin sets a single expiration date per product and can hide it or set it out of stock automatically when it expires. Tiered automatic discounts, the Expiring soon badge, batch tracking and the email digest are Pro features. Pro is $79/year for one site or $199/year for unlimited sites, both with a 14-day free trial.

Turn short-dated stock into sales, automatically

Set discount tiers by days-until-expiry, show an Expiring soon badge, and let WooCommerce mark down aging stock on its own — no manual price edits.

See plans & download free

Or read the documentation.