Sales & Costs

The Honest Coffee Shop Food Cost Percentage

Mark, founder of Parly·July 24, 2026·7 min read

There is no single food cost percentage

You run your food cost two ways in one afternoon and get two answers. Divide last month's supplier invoices by last month's sales and you land at 29 percent. Then someone who ran a kitchen tells you that is not how it is done, you need your counts. You redo it with the counts on either end of the month and get 34. Same shop, same weeks, five points apart.

Neither of you did the math wrong. Food cost percentage is not one number with a single right way to find it. It is a family of numbers, computed at least three incompatible ways, and each one answers a slightly different question. Before you can decide whether your food cost is good, you have to know which of the three you are holding. Most cafes quote the loosest one without knowing it.

At its plainest, food cost percentage is the cost of what you sold divided by what you sold it for, over a stretch of time. Recipe costing gives you the cost of one drink. This is that idea run across a whole period. The denominator, sales, is the easy half. The numerator, cost of goods sold, is where the three methods split.

The number most cafes quote is a purchase number

The quickest food cost number is the one you can get from a bank statement and a Square report: add up what you paid suppliers last month, divide by net sales. Call it the purchase method. It is fast, it needs no counting, and it is what most owners mean when they say "we run about 30."

The trouble is that it measures your ordering, not your bar. Purchases are lumpy. The week you stock up on six cases of oat milk before a price increase, or buy a full case of matcha that will last five weeks, your purchase number spikes even though your bar poured the same drinks it always does. The month you happen to draw down what was already on the shelf, it dips. A stock-up month looks like a bad month and a coast-on-inventory month looks like a great one, and neither had anything to do with how much milk actually went into lattes.

For a cafe that orders on tight cutoffs several times a week, this is not a rounding error. It is the difference between a number that tracks your operation and a number that tracks your calendar. If you are going to quote one figure to a business partner or make a pricing call off it, the purchase number is the wrong one. It moves for reasons that have nothing to do with what you are trying to measure.

The honest period number needs two counts

The way to isolate what your bar actually used is to bracket the period with two counts. You already count; the fix is to use the counts you take on the first and last day of the window and do one subtraction.

The formula is old and it is exact:

Cost of goods sold = starting count value + purchases during the period - ending count value.

Starting count is what was on the shelf the morning the period began, valued at cost. Add everything you bought from suppliers in between. Subtract what is still on the shelf at the end. What is left is what genuinely left the fridge and the dry storage and went into cups. Divide that by net sales over the same window and you have a food cost percentage that means what people think food cost percentage means.

Now the stock-up month behaves. Buy six cases of oat milk you do not use and they land in the ending count, subtracted back out, so they never inflate the number. The two-count method does not care when you ordered. It cares what the shelf was worth before and after, which is the only thing food cost was ever supposed to measure.

The catch is that your two counts have to bracket the same window your sales cover. If you count Monday morning and again three Mondays later, your sales figure has to be the sales between those two Mondays, not the calendar month printed on the invoice. In my own shop a full count runs 58 items in about 8.5 minutes from a phone, so the counting is not the hard part. Lining the count window up with the sales window is.

The denominator your register can't see

Everyone treats the denominator as the easy half, and mostly it is, but the register hands you a gross number that quietly overstates it in two ways.

The first is comps and discounts. When you comp a drink for a regular or remake one that came out wrong, the shelf still lost milk and a cup, but the sale was zero. That product is real cost sitting on top of zero revenue, which pushes your true food cost percentage up. Gross sales bury it. The number you want is net sales, after comps and discounts and voids, because that is the money the product actually earned.

The second is the window, again. Your daily sales are easy to total by calendar day. Matching them to a count-to-count period that starts on a Monday and ends on a Wednesday three weeks later takes a little care, because the honest cost of goods and the sales underneath it have to describe the same stretch of time, or the percentage is comparing two different periods stacked on top of each other.

Neither is hard. Both are invisible if you only read the gross-sales line, which is exactly where the purchase-method number gets its denominator too, compounding one loose figure with another.

The cross-check your Square already enables

There is a third number, and it is the one a cafe on Square is uniquely able to produce. Take every sale, apply its recipe and its modifiers, and add up the ingredients that should have left the shelf. This is the gap between what sold and what you used turned into dollars: 47 iced matcha lattes become 94 g of matcha, 564 oz of oat milk, and 47 cups, priced at your costs. Divide by net sales and you get a theoretical food cost percentage, what your menu says you should have run.

This one is not a replacement for the two-count number. It is a check on it. When the recipe number and the two-count number agree, your recipes are dialed in and your counts are clean, and you can trust the figure. When they diverge, the distance between them is variance, and that is its own investigation: why the honest number comes out high is a different question from how to compute it honestly, and the answer is almost always a pour or a modifier, not a mystery.

What counts as a good number once it's honest

Only now does a benchmark do you any good. The limited-service median for food and non-alcohol beverage cost was 32.4 percent of sales in 2024 (National Restaurant Association, 2025 Operations Data Abstract, accessed July 2026). Crimson Cup, writing for coffee shops specifically, calls 25 to 35 percent the healthy band (accessed July 2026). Useful ranges, both. But they only mean something against a two-count number, because that is the kind of number they were built from. Holding your purchase-method 30 next to a benchmark 32 is comparing two different measurements that happen to share a unit.

And once the number is honest, it is worth being precise about, because the points are worth money. On a hypothetical cafe doing $500,000 a year, one point of food cost is one percent of revenue, which works out to $5,000 a year, about $417 a month. The three or four points between the loose purchase number and the honest count number are not a rounding argument. They are real dollars you are either finding or hiding, depending on which method you decided to trust.

Compute yours this month

Do it once, properly, this month. Take a count on the first of the month and value it at cost. Add up every supplier invoice in between. Take a count on the last day. Starting count plus purchases minus ending count is your cost of goods sold. Divide it by net sales, after comps, over the same dates. That is your honest food cost percentage, and it is probably not the number you have been quoting.

Then, if your Square sales are mapped to recipes, run the theoretical number beside it and see how far apart they sit. If they are close, you are tight, and you can stop second-guessing the benchmark. If they are not, you have found where next month's work is. Either way you now hold a number that came off your own shelves instead of somebody else's average.