Restaurant Inventory

Restaurant Inventory Turnover: How to Calculate It and Fix Slow Movers

Calculate inventory turnover and days on hand from your counts and invoices, by category, then use the numbers to find slow movers and fix the pars and order quantities behind them.

Proteus Kitchen20 min read
Back of house corridor in a commercial kitchen with stainless steel refrigeration units and food storage racking

Inventory turnover tells you how many times you used up and replaced your inventory during a period. Days on hand tells you the same thing in a form that's easier to act on: how many days of product is sitting on your shelves. You can get both from two full counts and the invoices in between:

Cost of goods used   = beginning inventory + purchases − ending inventory
Average inventory    = (beginning inventory + ending inventory) ÷ 2
Inventory turnover   = cost of goods used ÷ average inventory
Days on hand         = days in the period ÷ inventory turnover

A single number for the whole restaurant doesn't tell you much. Run it by category, and the categories with too many days on hand point you to specific items. Those items usually trace back to a par that's too high, a case deal, or a dish that came off the menu while the ingredients stayed on the order guide.

In this guide

The inputs and where they come from

Turnover uses the same three numbers you'd use to figure out what the kitchen went through in a period.

InputWhere it comes fromWhat to watch
Beginning inventoryThe dollar value of the last full countUse the exact figure from last period, not a recount
PurchasesEvery invoice dated inside the period, less creditsKeep categories separate: food, liquor, paper, chemicals
Ending inventoryToday's full count × price per count unitCount at the same point in the delivery week every time

The first formula gives you the dollar value of what you used, including waste and spoilage. Accountants call it cost of goods sold. If you already calculate food cost percentage from your counts and invoices, you have this number. Turnover divides it by what you kept on the shelf instead of by sales.

You need a dollar value for each count, so every line on the count sheet needs a count unit and a price in that same unit. Our guide to doing a restaurant inventory count covers the count itself, and restaurant inventory units covers count units, order units, and conversions.

If you count more than twice a period

Averaging two counts is an approximation. It's two snapshots, and a month end count that lands right after a big delivery makes the shelf look fuller than it usually is. If you do a full count every week, average all of them. Five weekly counts in a month, added up and divided by five, is a better picture of what you normally carry than the first and last count alone.

Worked example: one month, five categories

This is an illustrative example. The restaurant, dollar amounts, and items are made up to show the method. They aren't benchmarks or typical figures for any concept.

A 70 seat restaurant with a full bar does a full count on the last morning of each month, before any trucks arrive. September has 30 days.

Step 1: cost of goods used, by category

CategoryBeginning (Aug 31)PurchasesEnding (Sep 30)Used
Proteins$3,200$14,600$2,800$15,000
Produce$700$5,300$500$5,500
Dairy$650$3,000$750$2,900
Dry goods$4,600$3,400$5,000$3,000
Liquor$9,800$4,200$10,400$3,600
Total$18,950$30,500$19,450$30,000

Each row uses the same formula. For proteins: $3,200 + $14,600 − $2,800 = $15,000. The total checks out the same way: $18,950 + $30,500 − $19,450 = $30,000, which matches the sum of the rows.

Step 2: average inventory, turnover, and days on hand

CategoryAverage inventoryTurnover (Sept)Days on hand
Proteins$3,0005.06.0
Produce$6009.23.3
Dairy$7004.17.2
Dry goods$4,8000.6348
Liquor$10,1000.3684
Total$19,2001.5619.2

Here's the arithmetic for two of the rows and the total:

Proteins
  Average inventory:  ($3,200 + $2,800) ÷ 2 = $3,000
  Turnover:           $15,000 ÷ $3,000     = 5.0 times in September
  Days on hand:       30 ÷ 5.0             = 6.0 days

Dry goods
  Average inventory:  ($4,600 + $5,000) ÷ 2 = $4,800
  Turnover:           $3,000 ÷ $4,800      = 0.625
  Days on hand:       30 ÷ 0.625           = 48 days

Whole restaurant
  Average inventory:  ($18,950 + $19,450) ÷ 2 = $19,200
  Turnover:           $30,000 ÷ $19,200      = 1.5625
  Days on hand:       30 ÷ 1.5625            = 19.2 days

The other rows work the same way. Produce: $5,500 ÷ $600 = 9.17, and 30 ÷ 9.17 = 3.3 days. Dairy: $2,900 ÷ $700 = 4.14, and 30 ÷ 4.14 = 7.2 days. Liquor: $3,600 ÷ $10,100 = 0.356, and 30 ÷ 0.356 = 84 days.

You can also get days on hand in one step: average inventory ÷ cost of goods used × days in the period. For proteins, $3,000 ÷ $15,000 × 30 = 6.0 days.

Why the total is misleading

The whole restaurant shows about 19 days on hand. Not one category actually looks like that. Proteins and produce turn over in under a week. Dry goods and liquor sit for one to three months.

Look at where the money is. Dry goods and liquor together average $4,800 + $10,100 = $14,900 of the $19,200 on the shelves, or 78%. But they're only $3,000 + $3,600 = $6,600 of the $30,000 the restaurant used, or 22%. Most of the cash tied up in inventory is in the categories that move the slowest. That's common, and it's why you should never judge turnover from one number.

What the numbers are telling you

I'm not going to give you a target turnover number. There's no reliable benchmark that fits every menu, and comparing your number with another restaurant's tells you less than comparing it with your own delivery schedule.

Compare days on hand with what your pars cover

If you order a category up to par, the shelf swings between a little safety stock right before the truck and a full par right after it. So a category's days on hand should usually come in below the number of days a full par is built to cover. If it comes in above that, you're carrying more than your pars say you need, or the pars aren't being followed.

Applied to September:

  • Produce, 3.3 days. The kitchen gets produce twice a week, and its pars cover 4 to 5 days. 3.3 is right where it should be. If it dropped much lower, I'd check the 86 log before celebrating, because very low days on hand often means you're running out of ingredients.
  • Proteins, 6.0 days. The meat order also comes twice a week, with pars covering 4 to 5 days. Six days is more than the pars should allow. That's worth a look at the item level: frozen backup cases, product bought for an event that didn't happen, or a par set years ago.
  • Dairy, 7.2 days. A little long for twice weekly delivery. Hard cheese and butter keep longer and pull the number up, which may be fine. Check the soft items.
  • Dry goods, 48 days. Dry goods come once a week, so pars should cover about 8 days (one day of lead time plus a week until the next order arrives). 48 days is six times that. Something on those shelves isn't moving.
  • Liquor, 84 days. Some of that is a choice. A bar with a deep whiskey list will hold bottles that sell a few pours a week. But it's still the biggest pile of cash in the building, so it deserves the same item level look as dry goods.

Watch the trend, not the month

One month of turnover is easy to misread. A delivery that lands before the count, a holiday, or a catering order can swing it. Track each category month to month, counted the same way. A category that climbs from 30 to 48 days over three months is telling you something. One that bounces between 30 and 48 usually points to count timing.

Annual turnover

If your accountant or a report talks about annual turnover, multiply a monthly turnover by 12 for a rough comparison. Dry goods at 0.625 a month is about 7.5 times a year (0.625 × 12). Days on hand doesn't need converting, which is one more reason to use it.

Days on hand for a single item

Category numbers tell you where to look. Item numbers tell you what to do. For one item you don't even need dollars. Work in count units:

Usage in the period  = beginning count + received − ending count
Daily usage          = usage ÷ days in the period
Days on hand         = on hand now ÷ daily usage

This is the same usage calculation you'd use to set a par level, so if you've done that, you already have the numbers.

Here are six lines from the dry goods section of the September 30 count (still illustrative):

ItemCount unitUnit costPar on order guideOn hand (Sep 30)Used in SeptDays on handValue on hand
00 flour50 lb bag$38.0066290$228.00
Arborio rice10 lb bag$21.6038460$172.80
San Marzano tomatoes#10 can$7.5018143611.7$105.00
Fryer oil35 lb jug$48.00992411.3$432.00
Masa harina50 lb bag$42.00230No usage$126.00
Smoked paprika1 lb tub$14.00251150$70.00

The days on hand column, line by line:

00 flour:         6 ÷ (2 ÷ 30)  = 6 ÷ 0.0667 = 90 days
Arborio rice:     8 ÷ (4 ÷ 30)  = 8 ÷ 0.1333 = 60 days
San Marzano:     14 ÷ (36 ÷ 30) = 14 ÷ 1.2   = 11.7 days
Fryer oil:        9 ÷ (24 ÷ 30) = 9 ÷ 0.8    = 11.3 days
Smoked paprika:   5 ÷ (1 ÷ 30)  = 5 ÷ 0.0333 = 150 days
Masa harina:      nothing used in September

Sort by days on hand to find the slow movers. Then look at the value column to decide which ones are worth your time. Fryer oil has the most money on the shelf, but it turns over about every 11 days. Leave it alone.

Finding slow movers and fixing them

The four slow lines in that table each have a different cause, and each one needs a different fix. Most slow movers fall into one of these three groups.

1. Over par: an ordering problem

Arborio rice has a par of 3 bags and 8 on the shelf. The rep offered 10% off for 10 bags, $21.60 instead of $24.00, and the kitchen took it.

Savings:          10 bags × ($24.00 − $21.60) = $24.00
What it bought:   10 bags ÷ 4 bags a month   = 2.5 months of rice
Over par now:     (8 − 3) × $21.60           = $108.00

That might be a fine trade if you have the room and the product keeps. It's not automatically a good one. Saving $24 to store two and a half months of rice is a decision, and it should be made on purpose, not every time a rep calls. Our guide to vendor price comparison covers how to figure out what a deal is really worth.

Over par stock also comes from rounding up to whole cases every time, ordering "the usual" without counting, and adding filler to reach a vendor minimum. If the filler is the same slow item every week, it piles up. See what to do about vendor order minimums for better ways to fill an order.

Fix: stop ordering it until on hand drops below par, and decide ahead of time when a volume deal is worth it.

2. At par, but the par is wrong

00 flour is the sneaky one. On hand is 6 bags, the par is 6 bags, and nothing looks wrong on order day. But the par was set when pizza was a weekly special that used about 2 bags a week. It now uses 2 bags a month, and the par never changed.

Recalculating it the usual way, for a weekly dry goods order that has to cover about 8 days with a 1 bag buffer:

Daily usage:    2 bags ÷ 30 days       = 0.0667 bags a day
Base par:       0.0667 × 8 days        = 0.53 bags
New par:        0.53 + 1 bag buffer    = 1.53 → 2 bags

Over the new par:   (6 − 2) × $38.00   = $152.00
Time to work down:  4 bags ÷ 0.0667    = 60 days with no flour orders

Check the date on the bags before you decide to let it burn down for two months. If it won't keep that long in your storage, use it in a special or move it some other way.

Fix: recalculate the par from current usage. Any item where days on hand is far above what the par is supposed to cover, even with on hand sitting right at par, has a par problem. The par level calculator does the math for one item at a time.

3. No usage: dead stock

Masa harina hasn't been touched since the taco special came off in August. It still has a par of 2 on the order guide, which is how a third bag showed up.

Dead stock needs a decision, not a better par:

  • Use it. Run a special, put it on staff meal, or find a spot on the menu for it.
  • Move it. If you have a sister location that uses it, transfer it and record the transfer.
  • Ask about a return. Some vendors will take back unopened product, often with a restocking fee. Many won't. Ask your rep.
  • Write it off if it's past its date, and note it on the waste log so it doesn't vanish without a trace.
  • Take it off the order guide. That's the step that keeps it from coming back.

Smoked paprika is a small dollar case of the same thing: 5 tubs, $70, 150 days. Don't spend an hour on it. Drop the par to 1, use what you have, and move on. Spices lose flavor sitting on a shelf, so buying five at a time doesn't help you even if the money is small.

Add it up

With corrected pars, here's what's sitting above what the shelf actually needs on those four lines:

00 flour:        (6 − 2) × $38.00 = $152.00
Arborio rice:    (8 − 3) × $21.60 = $108.00
Masa harina:     (3 − 0) × $42.00 = $126.00
Smoked paprika:  (5 − 1) × $14.00 =  $56.00
Total:                              $442.00

$442 isn't going to change your month on its own. But these are six lines out of a dry goods section holding $5,000. The same pattern across a few dozen items, plus the liquor room, is where cash quietly sits.

Tying it back to pars and order quantities

Turnover is a check on the rest of your ordering system. When a category's days on hand climbs, the fix is almost always one of these:

  • Recalculate pars from recent usage. Menu changes are the most common reason a par drifts. Every time a dish comes off the menu, check the order guide for ingredients only that dish used.
  • Switch slow items from a par to a reorder point. For something you use one bag of a month, a reorder point is simpler: when you open the last one, it goes on the next order. Our par level guide explains the difference.
  • Buy slow items in a smaller pack. If a case of six lasts you three months, ask whether the vendor sells a smaller pack or will break the case. Some distributors will, sometimes for an upcharge. The extra cost per unit can be worth it.
  • Count before you order, every time. Standing orders and "the usual" are how over par stock builds up on items nobody's looking at.
  • Make deals a decision. Write down who's allowed to accept a volume deal, and what has to be true first: room to store it, a use date that covers it, and savings that are worth the cash.

Also watch the other direction. If you push days on hand too low on perishables, you'll trade waste for 86s. The goal isn't the highest turnover possible. It's carrying what your pars say you need and not much more. Our complete guide to restaurant purchasing and inventory shows how counts, pars, and orders fit together in a weekly routine.

Mistakes that skew turnover

  • Using purchases instead of cost of goods used. Purchases ignore whether the shelves got fuller or emptier. In September, dry goods purchases were $3,400 but the kitchen only used $3,000. The other $400 went onto the shelf.
  • Counting after a delivery at month end. Ending inventory looks high, average inventory goes up, and turnover looks slower than it is. Count before the trucks, at the same point in the week every time.
  • Pricing counts inconsistently. If one month's count is valued at old prices and the next at new ones, the change in inventory value is partly a price change, not a change in what's on the shelf.
  • Mixing categories. If chicken base is "dry goods" one month and "proteins" the next, both categories bounce. Put each item in one category and leave it there.
  • Counting prep and line product some months but not others. Either count it every time or never. Both work. Switching doesn't.
  • Comparing with another restaurant's number. A steakhouse with a dry aging program and a taqueria shouldn't have the same days on hand. Compare with your own pars and your own trend.

What cooks and chefs can do

Turnover is a manager's number, but most slow movers are visible from the line long before anyone runs the math.

  • Rotate. First in, first out. New product goes behind old product, every delivery. Our guide to restaurant FIFO and storage organization covers labels, shelf layout, and a routine for each delivery.
  • Open one at a time. Three open bags of the same flour are harder to count, go stale faster, and make the shelf look emptier than it is.
  • Speak up about what you haven't touched. If you've walked past the same case for three weeks, tell the chef. That's a slow mover, and you found it without a spreadsheet.
  • Flag menu changes. When a dish comes off, point out the ingredients only that dish used, so they come off the order guide too.
  • Pitch specials that use slow product. A chef who knows there are three bags of masa in dry storage has a reason to run a tamale special.

FAQ

What's a good inventory turnover for a restaurant?

It depends on your menu, your vendors' delivery days, and how much you choose to stock, so I wouldn't trust a single number for every restaurant. Compare each category's days on hand with the number of days your pars are built to cover, and track the trend over several months. Perishables should turn over within a few days. Dry goods and liquor take longer, and how much longer depends on your menu and your bar.

What's the difference between inventory turnover and days on hand?

They're the same information, flipped. Turnover is how many times you used up your inventory in a period. Days on hand is how many days of product you're holding. 5 turns in a 30 day month is 6 days on hand. Days on hand is easier to compare with your delivery schedule, so most kitchens find it more useful.

How often should I calculate inventory turnover?

Whenever you do a full count. For most restaurants that's monthly, which also lines up with the books. If you count one category weekly, like proteins, you can run turnover for that category weekly too. Look for slow movers at the item level at least once a quarter, and any time the menu changes.

Should liquor be in the same calculation as food?

Keep it separate. Liquor usually has its own counts, its own purchases, and a much slower turnover than food. Mixing it in makes the food categories look slower than they are.

Is high turnover always good?

No. Very high turnover on perishables can mean you're running too close to empty, which shows up as 86s, emergency store runs, and extra deliveries. Fresh product should move fast, but not so fast that you're out before the next truck.

Do I need software to track turnover?

No. A spreadsheet with a count tab, an invoice tab, and one row per category does it. The harder part is getting the inputs right: consistent counts, correct units, and every invoice entered.

Where Proteus Kitchen fits

Proteus Kitchen doesn't calculate inventory turnover or days on hand, and it doesn't connect to your POS. What it does is keep the records those numbers depend on in one place, so finding and fixing slow movers is quicker. Each inventory item has its vendor, category, storage location, order unit, count unit and conversion, a par level, a minimum, and the last vendor price. When you build a purchase order, it shows each item's current count, its par, and a suggested quantity, so you're ordering from a count instead of from habit. Your purchasing history can be filtered by vendor, status, and date range, which helps when you're working out how often you've actually been buying something.

Next step: find your three slowest categories

  1. Take your last two full counts and the invoices in between, split by category.
  2. Calculate cost of goods used, average inventory, and days on hand for each category.
  3. For each category, write down how many days your pars are supposed to cover.
  4. In any category where days on hand is well above that, list the items with the most days on hand.
  5. Label each one: over par, par too high, or no usage. Fix the biggest dollar lines first.