Grocery store inventory management is mostly the management of food that won't keep. The center store's cans and boxes are ordered to par from a wholesaler and keep for months; produce, meat, dairy and the deli have days, so they're ordered from what sells each day, rotated by date, and their losses recorded by department and reason. The order for a head of lettuce is: sold a day × days until the next delivery + a cushion − what's on hand, in whole cases. In the example below, a small Nebraska grocery orders $336 of produce for Tuesday's truck, sees which items the case size will turn into waste, and loses $592 a week at cost, 2.3% of sales, most of it in produce and the deli. Below is each step, the week, and a free workbook.
The short version
- Order perishables from what sells a day, for the days until the next delivery, plus a cushion.
- Round to whole cases, and watch what's left over: a case bigger than the need is the next loss.
- Order the center store to par from the wholesaler; it keeps, so a full shelf costs only the cash.
- Check every delivery against its invoice, the wholesaler's truck and each route vendor's.
- Rotate meat, dairy and deli food by date; mark down before the date, not after.
- Record every loss with its department and reason, and compare each department's losses with its sales.
- TaroStack keeps dates, records losses by reason and site, and makes the deli's food from stock. More below.
What's different about a grocery
| Department | Ordered | How often | What goes wrong |
|---|---|---|---|
| Grocery: center store | From the wholesaler, to par | Weekly or twice weekly | Overstock, dented cans, slow items |
| Produce | From what sells a day | Two or three times a week | Wilting, bruising, case sizes |
| Meat | From what sells, plus what's cut | Two or three times a week | Dates, trim, grinding |
| Dairy and frozen | From the route or wholesaler | Two or three times a week | Dates, a freezer door left open |
| Deli and bakery | From what sold yesterday | Daily | Food made that didn't sell |
Ordering produce
Loup River Grocery, a made-up grocery store in Ord, Nebraska, I use in these examples, orders produce on Saturday for Tuesday's truck, and the order has to last until Friday's, three days:
| Item | Units a case | Sold a day | Cushion | On hand | Need | Cases | Left over after 3 days | Order cost |
|---|---|---|---|---|---|---|---|---|
| Bananas | 40 lb | 30 lb | 20 | 35 | 75 | 2 | 25 lb | $48 |
| Iceberg lettuce | 24 heads | 6 | 4 | 10 | 12 | 1 | 16 heads | $28 |
| Tomatoes | 25 lb | 10 lb | 5 | 12 | 23 | 1 | 7 lb | $32 |
| Gala apples | 40 lb | 12 lb | 8 | 50 | −6 | 0 | 14 lb | $0 |
| Russet potatoes | 50 lb | 15 lb | 10 | 40 | 15 | 1 | 45 lb | $22 |
| Yellow onions | 50 lb | 8 lb | 5 | 30 | −1 | 0 | 6 lb | $0 |
| Strawberries, 1 lb | 8 packs | 10 | 4 | 6 | 28 | 4 | 8 packs | $104 |
| Avocados | 48 | 8 | 6 | 20 | 10 | 1 | 44 | $48 |
| Bagged salad | 6 bags | 5 | 3 | 4 | 14 | 3 | 7 bags | $54 |
| This order | $336 |
Need = sold a day × 3 + cushion − on hand. The case size decides the rest. Potatoes and onions keep for weeks, so 45 pounds left over is fine. Lettuce needs 12 heads and comes 24 to a case, so 16 heads are left when Friday's truck arrives, and some will be wilted; avocados need 10 and come 48 to a case, which is five more days of avocados ripening on the shelf. Those two are where next week's losses are, unless the deli uses them or the wholesaler sells a half case. How a par level differs from a reorder point is in par level vs reorder point.
Receiving and rotating
Each delivery is checked against its invoice before it's signed: the wholesaler's truck by the pallet, each route vendor's cases at the door. Meat, dairy and deli food go onto the shelf behind what's already there, oldest in front, and anything a day or two from its date is marked down. How first-expired-first-out works is in FEFO vs FIFO, and what to do with stock past its date in what is expired stock.
A week's shrink by department
| Department | Week's sales | Lost, at cost | Share of sales | Where it went |
|---|---|---|---|---|
| Grocery: center store | $10,150 | $102 | 1.0% | Dented cans, broken jars |
| Produce | $3,050 | $153 | 5.0% | Lettuce, berries, bananas |
| Meat | $3,810 | $114 | 3.0% | Ground beef past its date, trim |
| Dairy and frozen | $3,810 | $76 | 2.0% | Milk and yogurt past their dates |
| Deli and bakery | $2,030 | $122 | 6.0% | Unsold sandwiches, salads, bread |
| Household and health | $1,520 | $15 | 1.0% | Small items stolen |
| Local products | $1,020 | $10 | 1.0% | Damaged jars |
| The store | $25,390 | $592 | 2.3% |
Produce and the deli lose $275 of the $592 on a fifth of the sales. A day's sales figure and a case size explain most of produce's loss; the deli's is food made for a busier day than came.
Counting
Perishables are counted weekly, section by section, to catch losses nobody recorded. The whole store is counted once or twice a year for the books, often by a counting service working overnight, and valued at cost. How to run a count is in how to count inventory, and a year-end count in year end inventory count.
Get the workbook
Download the grocery store inventory management workbook. Three sheets: a produce order, where you type each item's case size, what sells a day, the days to cover, a cushion and what's on hand, and what's needed, the whole cases, what's left over and the order cost fill in, with a leftover more than twice the cushion in red; losses, one line for each with its department and reason, where the cost fills in; and losses by department against each department's sales. It's an ordinary Excel file with no macros, and it works in Google Sheets, LibreOffice and Numbers.
Where this stops working
Eight thousand items, a wholesaler and a dozen route vendors, produce ordered three times a week from a guess at what sells a day, meat cut and ground in the back, and a deli that makes food from what's on the shelves. A workbook holds what someone typed; it can't say what sold yesterday, which milk expires tomorrow, or which lot of beef went into Tuesday's grind.
How TaroStack does it
TaroStack keeps dates, records losses by reason and site, and makes the deli's food from stock.
Dates, oldest first. Meat, dairy and deli food are received with their dates, the oldest goes first, and an alert comes before a date runs out, so it's marked down instead of thrown away.
Losses with a reason. Every adjustment carries its reason, expired, spoiled, damaged or lost, so the week's $592 is reported by reason, item and site. Counting on a phone by barcode suggests what to count first, by what it would cost to be wrong.
The deli and the meat counter. The deli's chicken salad and the counter's ground beef are recipes: a batch takes its ingredients off stock, costs what it used and gets a lot with a date, so leftover lettuce and avocados can go into the deli's food on the record, and a supplier's beef recall shows which grinds it went into.
Orders by supplier. Suppliers keep their lead times and minimums, and a reorder list in days of cover says what to order from each.
| The job | Workbook | In TaroStack |
|---|---|---|
| Milk about to expire | Found on the shelf | An alert before the date |
| Shrink by department | Typed in after | By reason, item and site |
| Lettuce left over | Thrown away | Used in a deli batch, recorded |
| A beef recall | Search the invoices | One report: batches and what's left |
| What to order | A typed guess | Reorder list in days of cover |
Recipes, batches, lots, expiry, losses by reason and reorder lists are on every plan, from $49 a month, with no limit on items; TaroStack connects to Square. The first 30 days are free, with no credit card. If you'd like a hand setting up, ask, and we'll do it with you.
