Limited offer 20% off the license + free setup — until 15 October See the offer →
← Blog

Expiry dates: stop throwing stock away — sell it first

A carton of yoghurt at the back of the fridge, a strip of tablets behind the new batch, a juice pack nobody rotated. Each one was paid for at cost and each one goes in the bin at full price. This is the one loss a shop can almost fully prevent — with a date on every product, a list that shows what is close, and a rule about which box leaves the shelf first.

The expiring-soon list in PosMasr

What the bin really costs

Take one expired box that cost you 40 EGP and sold for 50. Throwing it away does not lose 10 EGP of profit — it loses the 40 you paid, and the 10 you would have made, and the shelf space it occupied for two months. To earn that 40 back you have to sell four more boxes at full margin. That is why a small pile of expired stock every week matters more than it looks.

For a pharmacy the numbers are bigger (a single cold-chain item can be several hundred pounds) and the rules are stricter: an expired medicine cannot be sold at any price, and inspectors look for it. For a grocery the boxes are cheap but there are hundreds of them — dairy, juice, bread, sweets, canned goods — and the bin fills every week.

Never sell expired goods, even discounted. Beyond the law and the inspector, a customer who finds an expired date on something they bought from you does not come back, and tells ten people. The discount idea below is for stock with days left, never for stock that is over.

FEFO in two lines

First Expired, First Out: the box that expires soonest leaves the shelf first — regardless of when it arrived. Not FIFO (first in, first out), because a new delivery can carry a shorter date than the one already on the shelf. Two habits make it happen without thinking:

  • On receiving: read the date on the new carton before shelving it. Shorter than what is on the shelf? It goes in front. Longer? It goes behind. Thirty seconds per carton.
  • On selling: the cashier takes from the front, always. If the customer reaches to the back for 'the fresh one', that is fine — the front one still sells to the next customer.

Rotation handles the shelf. It does not tell you that a product is not selling fast enough to clear before its date. That needs a date per product and a list — which is where the till comes in.

Tracking expiry in PosMasr

Every product in PosMasr can carry an expiry date. You set it in three places, whichever is closest to hand:

  1. In the product editor when adding or editing a product — type the date or tap the 📅 calendar, which has +1 / +3 / +6 / +12-month shortcuts for the usual shelf lives.
  2. In Inventory: select the product and press Expiry date. Handy during a stock-take when you are already holding the box.
  3. When receiving from a supplier: the deliveries log keeps the expiry of each delivery next to the quantity, cost and who received it — so you can look back and see which batch carried the short date.

Products with variants (the same cream in three sizes, the same milk in two packs) show the expiry per variant in the lists, because each variant has its own stock. In Current stock a column shows the date: expired in red, close to expiry in orange, so the problem is visible every time you open the screen.

One date per product — is that enough? For most shops, yes: set the date of the oldest batch on the shelf. When that batch sells out, update it to the next one (Inventory → Expiry date, ten seconds). A pharmacy with many batches of one item keeps the shortest date on the product and relies on the deliveries log for the rest.

The list, the badge and the phone

Timeline: 60, 30, 14, 7 and 3 days before expiry
The Expiring-soon list looks 3, 7, 14, 30 or 60 days ahead. Sixty days is for ordering less; seven days is for discounting; three days is for pulling it off the shelf.
  • The Expiring-soon tab (Inventory → Expiring soon) lists everything expired or expiring within 3 / 7 / 14 / 30 / 60 days, with the stock, its value at cost and the days left. The value column tells you where the money is.
  • The red badge: the manager sees a ⚠ N expiring button in the top bar all day; it opens that list. There is also a once-a-day reminder with the product names when the manager logs in.
  • At the till: adding an expired product to a receipt shows a warning under the cart. The sale is not blocked — the till is not the inspector — but the cashier cannot say they did not see it.
  • On the phone: the owner dashboard has an expiring-items card next to sales and low stock, refreshing by itself. You see the short dates from home before the supplier's rep calls.
  • How far ahead to warn: Settings → General → 'Warn this many days before expiry' (default 7). A pharmacy usually sets 30; a bakery sets 1.
The expiring-soon tab: expiry, stock, value and days left

Discount it before it expires

A product with ten days left and twenty units in stock will not sell twenty units at full price by itself. Sold at a small discount today it returns most of its cost; in the bin next week it returns nothing. Supermarkets have done this for decades with the yellow sticker; PosMasr gives you the same tool without a sticker:

  1. Switch on Discounts & sale prices once (Settings → Features).
  2. Open the product and set a sale price. The button on the sales screen now reads '4.00 (was 5.00)', the receipt shows the lower price, and the cashier does not have to remember anything.
  3. Move the product to the counter or an end-of-aisle basket, and clear the sale price once the batch is gone.

For a one-off, the Discount button under the cart takes an amount or a percentage off the line — with a ceiling per cashier above which a manager must approve, so 'expiry discount' does not quietly become 'friend discount'.

Days leftGrocery / supermarketPharmacy
60 – 30Order less of it; do not receive a new batch until it clearsTalk to the supplier's rep about exchange before it is too late (many distributors accept returns only with 3+ months left)
30 – 14Front of shelf, eye level, maybe a bundle (2 for the price of 1.5)Return or exchange with the distributor if their policy allows; otherwise front of shelf
14 – 7Sale price 10–20% off, basket at the counterSale price on non-prescription items (vitamins, cosmetics, baby food); prescription items stay full price and are offered first
7 – 330–50% off, or staff purchase at costLast call; anything not sold by day 3 is pulled and recorded
3 – 0Pull it, write it off in the stock-take, throw it awayPull it, record it, dispose of it the way the regulations require

The weekly routine (pin it by the till)

WhenWhoWhatWhere in PosMasr
Every deliveryWhoever receivesRead the date on the carton; shelve it FEFO; enter the expiry with the receiveInventory → Receive quantity (supplier chosen)
Saturday morningManagerOpen the 30-day list; decide discounts and returns to suppliersInventory → Expiring soon → 30 days
Every morningOpening cashierGlance at the red badge; pull anything at 0 days⚠ button in the top bar
WednesdayManagerSet sale prices on the 7-day list; move them to the counter basketProducts → sale price
Month endManagerCount what was pulled; write off in the stock-take; note the value on the differences sheetInventory → Stock-take (guide)
Anywhere, anytimeOwnerCheck the expiring card on the phone dashboardOwner dashboard (setup)

Which rules for your shop

Your shopWarn days (Settings)What to dateThe one habit
Pharmacy30 – 60Everything, at receivingSaturday 30-day review with the distributor's return policy in mind
Grocery / mini-market7Dairy, juice, bread, sweets, biscuits; skip long-life dry goodsFront-of-fridge FEFO at every delivery
Supermarket14All chilled and fresh categoriesWednesday sale prices + a counter basket
Café / bakery1 – 3Packaged drinks, milk, syrups; prepared food stays outMorning badge check by the opening barista
Cosmetics / baby shop60Creams, formula, sunscreenOrder less of slow lines; sale price at 30 days

How PosMasr handles it — in one list

  • An expiry date on any product, set in the product editor, in Inventory, or logged per delivery with the supplier.
  • Current stock colours it: expired red, close orange.
  • Expiring soon list for 3 / 7 / 14 / 30 / 60 days with stock, value at cost and days left.
  • Red badge in the top bar, a daily reminder for the manager, a warning under the cart when an expired item is rung up.
  • Expiring card on the owner's phone dashboard.
  • Sale price per product and a discount button with a cashier ceiling, for clearing short-dated stock.
  • Excel import to load hundreds of dates at once, and the stock-take to write off what was pulled.

Quick answers

Does PosMasr block the sale of an expired item?
No — it warns under the cart and lets the cashier decide, because dates on the product are sometimes stale (the old batch sold out and nobody updated it). Pull expired stock from the shelf; the warning is your safety net, not your process.

I have 800 products. Do I type 800 dates?
No. Date only what actually expires within a year or so (chilled, fresh, medicines, cosmetics); long-life dry goods can stay blank. And you can fill an expiry column in the Excel export and import it back in one go.

Can the pharmacist see the list from home?
Yes — the owner dashboard on the phone has an expiring-items card and refreshes on its own. It needs the built-in web server switched on (Settings → Remote monitoring) and, from outside the shop, port forwarding on the router.

What about batch numbers?
PosMasr keeps one expiry per product (per variant) plus the expiry of each delivery in the suppliers' deliveries log. It does not track sales per batch number; pharmacies that need that for recalls keep the distributor invoices, which carry the batch.

See your expiring list in 7 free days

Import your products, add the dates that matter, and let the badge do the nagging. No subscription; the phone dashboard is included.

Start the free trial

Try PosMasr free for 7 days

Download, set your products and printer, and start selling today — no internet, no subscription.