Remaining Shelf Life Clauses: Avoid Rejected Deliveries
How hotel, hospital and caterer remaining shelf life clauses get deliveries rejected, and a picking method distributors use to ship cartons that pass.
ShelfLifePro Editorial Team
Inventory management insights for retail and pharmacy
The carton that comes back from the hotel dock
Your van reaches the hotel's receiving bay at 7 am. The storekeeper flips a carton of sauce, reads the best-before date, checks a sheet taped to the wall and shakes her head. That carton goes back on the van. So does the rest of that line on the invoice.
Nothing was expired. The stock was fine to sell in any kirana on your route. It just didn't have enough life left for this buyer, because the purchase order carried a remaining shelf life clause, and nobody in your godown read it before picking.
That's a rejected delivery, a return trip, a credit note, and a hotel purchase manager who now trusts you a little less.
Why the clause catches distributors out
Hotels, hospitals, canteens and caterers don't buy the way a retail counter buys. They stock up for a menu cycle or a month of patient meals, and they don't want stock going off in their own stores. So they push the risk back up the chain: the PO says, in effect, "don't send us anything with less than X days or X share of its life remaining."
The trouble is structural. Your godown picks the way it always has — oldest stock first, or whatever's nearest the loading door. That logic is right for retail beats. For an institutional customer with a remaining-life rule, the oldest batch is exactly the one most likely to bounce.
And the rule lives in the wrong place. It's in a PO PDF, or in the salesperson's head, or in an email from the hotel's purchase team months ago. The picker holding the scanner never sees it.
Reading the clause in a purchase order
Before you build any process, pull out every active institutional PO and contract and find the actual wording. Clauses come in a few shapes, and the shape matters for how you check them:
- Days remaining — the product must have at least a stated number of days left on arrival.
- Share of total life remaining — the product must have a stated fraction of its total shelf life still ahead of it, so the cut-off differs by SKU.
- Manufacturing date window — stock must have been made within a stated period before delivery.
- Category-specific rules — one threshold for dairy, another for dry goods, another for frozen.
Note whether the rule is measured on the day of delivery or the day of invoice, and what the contract says happens on a miss: full-line rejection, carton rejection, or a penalty. Every threshold you use comes from that buyer's own contract. There's no single industry figure to fall back on, so don't guess one — if the PO is silent, ask the buyer and get the answer in writing.
Tagging each customer with their rule
Once you've read the clauses, make the rule a property of the customer, not a memory. Every institutional account in your customer master gets a tag: rule type, threshold, which categories it applies to, and whether it's measured at delivery or invoice.
Retail accounts get tagged too — usually "no rule", meaning anything within date ships. That sounds trivial, but it's what lets the next step work: the system or the sheet can now tell a picker which batches are allowed for which order.
If you serve a hospital and its staff canteen under separate POs, they're separate tags. Same for a hotel group whose properties have signed different contracts.
Get the day-old & markdown rotation log
For product that lives hours: markdown steps with times, day-old transfers at close, and an honest waste column. Printable PDF + Excel. See what's inside.
Instant download. No spam, unsubscribe in one click.
Picking by expiry against the rule
Now change the picking question. Instead of "which batch is oldest?", the picker asks "which is the oldest batch that still passes this customer's rule on the delivery date?"
That's still expiry-first picking — you're not giving away your freshest stock for no reason. You're just filtering out the batches that would fail before you choose. For the mechanics of batch-wise dates in the godown, the batch-level expiry tracking guide covers how to capture them at inward so this filter has data to work with.
Two details make or break this:
- Count from the delivery date, not the pick date. If the order is picked tonight and delivered in two days, those two days come off the remaining life.
- Flag the shortfall before loading. If no batch passes, the salesperson calls the buyer before the van leaves — offer a partial, a substitute SKU, or a later date. A phone call beats a return trip.
Routing shorter-dated stock to retail beats
The batches that fail institutional rules aren't bad stock. They're perfectly sellable — just not to those buyers. The fix is to send them deliberately to customers with no rule: kiranas, small supermarkets, general trade outlets.
This is where institutional supply and beat planning meet. When you plan the week's routes, the shorter-dated batches should be earmarked for retail beats first, so the longer-dated batches stay reserved for the hotel and hospital orders. The beat planning by expiry post walks through sequencing routes this way.
If you skip this step, you get the worst of both: long-dated stock burned on kiranas that would have taken older batches, and nothing left that passes the hospital's rule when its order lands.
A worked example for one SKU
Worked example. Say you stock a ketchup SKU with a total shelf life of 360 days, and you hold three batches today: Batch A with 90 days left, Batch B with 200 days left, Batch C with 320 days left. Delivery to all customers is two days out.
For example, your customers' rules (taken from their own contracts, illustrative here) look like this:
- Hotel: at least half of total life remaining on delivery — that's 180 days.
- Hospital kitchen: at least 150 days remaining on delivery.
- Caterer: at least 120 days remaining on delivery.
- Kiranas on the Tuesday beat: no rule.
On delivery day, A has 88 days, B has 198, C has 318. Batch A fails every institutional rule, so it goes to the Tuesday kirana beat. Batch B passes all three institutional rules and is the oldest that does, so the hotel, hospital and caterer orders are picked from B. Batch C stays untouched until B runs out.
Notice what plain oldest-first would have done: pick A for the hotel, get the line rejected at the dock, and haul it back.
Running this on paper versus in software
You can run this with a register and a spreadsheet. A sheet with SKU, batch, expiry date and quantity, plus a second tab listing each customer's rule, lets an office person mark which batches are eligible for each institutional order before picking. The expiry-tracking spreadsheet template is a reasonable starting layout.
What paper can't do well is keep up. Every inward changes the batch list, every dispatch changes quantities, and the eligibility check has to be redone against the delivery date each time. With a handful of institutional accounts it's manageable; as the account list and SKU count grow, the check gets skipped on busy days — and busy days are exactly when the hotel orders big.
Software earns its place when it does the filter automatically: customer rule in, eligible batches out, shortfall flagged before the van is loaded. For the wider picture of shelf-life control across a distribution business, see tracking shelf life across the supply chain.
Getting started this week
- Pull every institutional PO and contract and write down each remaining-life clause verbatim.
- Tag each customer in your master with rule type, threshold and measurement point.
- Add a delivery-date column to your picking sheet and check eligibility against it.
- Earmark batches that fail institutional rules for the next retail beats.
- Agree a rule with sales: no van leaves with a known shortfall unless the buyer has confirmed.
If you supply caterers or central kitchens, it's also worth knowing how they manage stock once it lands — the central kitchen expiry control post explains why they write these clauses in the first place.
ShelfLifePro serves FMCG distribution, and its batch-wise expiry tracking is built for this kind of customer-by-customer picking. If you want to see how it fits your godown, have a look at the FMCG distribution page — every plan comes with a 14-day free trial, no credit card required.
ShelfLifePro Editorial Team
The ShelfLifePro editorial team covers inventory management, expiry tracking, and waste reduction for pharmacies, supermarkets, and retail businesses worldwide.
See what batch-level tracking actually looks like
ShelfLifePro tracks expiry by batch, automates FEFO rotation, and sends markdown alerts before stock expires. 14-day free trial, no credit card required.
Get the monthly expiry brief
One short email a month, only when there is something worth reading. FEFO tactics, markdown math, and stories from Indian retailers. No spam.
No spam. Unsubscribe in one click. Email only, no WhatsApp spam.
Get expiry tips on WhatsApp
Leave your number and we say hello on WhatsApp, then share expiry-tracking tips for Indian retail now and then — FEFO, markdowns, monsoon stock. No broadcast lists; reply STOP any time.