The textbook distinction takes one sentence. Cost of goods sold is what you spent to produce what you actually sold. Operating expenses are what it costs to run the business regardless of how much you sold.
Then a Baldor invoice arrives with produce, to-go containers, and cleaning chemicals on it, and the sentence stops helping.
The hard cases are not edge cases in hospitality. They are most of the invoice. Whether a cost lands in cost of sales or operating expenses changes gross margin, changes prime cost, and changes whether your numbers can be compared against anyone else's. This piece works through the calls that actually come up, and the reasoning behind each one.
None of this is tax or accounting advice. Inventory and tax treatment are a separate question from management reporting, and where a judgment call is genuinely yours, it belongs with your accountant.
The test that works better than the definition
"Varies with sales" is the usual shorthand, and it misclassifies things constantly. Hourly labor varies with sales. Credit card fees vary with sales. Neither is cost of goods sold in restaurant reporting.
A better test, and the one the templates are built on:
That test resolves most of the invoice on its own. Where it gets contested, the tiebreaker is whether separating the cost tells you something you would act on. Accounting has a fair amount of legitimate discretion here, and the goal is a P&L that answers questions, not a doctrinally perfect one.
Labor is the question everyone asks first
In manufacturing, direct labor is a component of cost of goods sold. The people on the line are part of what the unit cost.
Restaurant reporting does not work that way, and this is the single biggest source of confusion. Under USAR, the Uniform System of Accounts for Restaurants, labor is its own major grouping reported separately from cost of sales. Our restaurant chart of accounts follows that structure exactly: cost of sales occupies the 5000 series, labor occupies the 6000 series, and management salaries, back-of-house wages, front-of-house wages, payroll taxes, and benefits all sit in the second block.
So the answer to "is kitchen labor COGS" is: not in restaurant reporting, no. It is a separate line above operating expenses.
This is not a technicality, because it is why prime cost exists as a concept at all. Prime cost is cost of sales plus total labor. If labor were already inside cost of sales, nobody would need a second term for the combination. The two are kept apart so an operator can see food and beverage cost moving independently of labor cost, and then look at the combined figure that most of the controllable P&L actually lives in.
Prime cost is a two-part number precisely because the two parts are tracked separately. Folding labor into cost of sales does not simplify the chart, it deletes the comparison.
Hotels split it differently again. Under USALI, labor follows the department that incurred it, so rooms labor sits inside rooms department expenses and food and beverage labor sits inside food and beverage expenses. There is no single company-wide labor line, because the departmental profit figure is the point. Different standard, different structure, same underlying discipline of keeping the number readable.
The calls that come up on real invoices
Here is how the templates treat the costs that get argued about, and why.
Two of those are worth more than a table row.
Third-party delivery commission
This is the one with the most money attached and the most common mistake.
A delivery platform remits net. You sold $100 of food, the platform kept $30, and $70 arrived in the bank. The tempting entry is to book $70 of revenue and move on, because it matches the deposit.
Do that and two things disappear at once. Your delivery revenue is understated by 30%, so you cannot compare the channel's volume against dine-in on equal footing. And the $30 never appears as a cost anywhere, so the most expensive channel in the business has no cost line.
The templates record delivery and off-premise revenue gross of commission, and the commission goes to its own account in the marketing block. That treatment means you can read the commission as a percentage of the revenue it generated, which is the number that tells you whether the channel is worth running.
It also explains why the commission is not cost of sales. The food cost of a delivered burger is identical to the food cost of a dine-in burger. What differs is the cost of acquiring and fulfilling that order through a channel. That is a distribution and marketing cost, and putting it in cost of sales would inflate food cost for reasons that have nothing to do with food.
Comps and discounts
Neither cost of sales nor operating expense. A comped meal is revenue you chose not to collect, so it reduces revenue. In the restaurant template it is a contra-revenue account inside the revenue block.
Booking comps as a marketing expense is common and it distorts two lines at once: sales are inflated by money that never arrived, and expenses are inflated by a cost that was never paid. It also makes the discount rate impossible to read off the P&L, which is the one thing you actually wanted to know.
The food that went into the comped meal is still a real cost, and it stays in cost of sales where it already was. Only the uncollected revenue moves.
Why the split changes your numbers
The classification is not bookkeeping housekeeping. Three things move.
Gross margin becomes meaningful or meaningless. Gross margin is revenue minus cost of sales. Push packaging out of cost of sales and margin overstates. Pull delivery commission into it and margin understates while food cost looks like it spiked. Either way the trend line stops tracking anything real.
Prime cost only computes if the pieces are separable. Prime cost is cost of sales plus labor. That requires both to be identifiable and neither to contain the other. A chart with one blended "operating costs" bucket cannot produce it at all.
Benchmarks require that everyone classify alike. This is the underrated one. Published food cost and prime cost figures assume the standard treatment. If you put delivery commission in cost of sales and the benchmark does not, your food cost percentage is not high, it is measuring something else. That is the practical argument for following USAR or USALI rather than inventing a structure: not that the standards are sacred, but that comparability is the entire point of a ratio.
Hospitality cost ratios vary enormously by segment, service model, and market, so treat any single published benchmark with suspicion. What you can trust is your own trend, and only if the classification stayed still.
When the answer is genuinely ambiguous, pick one and write it down
Some costs have no clean answer. Employee meals, certain supply categories, and anything that serves production and operations at once are all defensible in more than one place.
For those, consistency beats correctness. A cost classified the same way for three years produces a usable trend. The same cost moved between categories twice produces two artificial jumps and no trend at all, and the jumps will get investigated as if they were operational.
Two practices make consistency survive staff turnover:
- Write the boundary into the account description. Every account in our templates carries a note on what belongs in it, because the person coding invoices next year will not have been in this conversation. "Mixers, garnish, bitters, syrups and ice consumed in drink production" is a rule someone can follow.
- Change classifications only at a fiscal year boundary, and restate the comparative or annotate it, so the discontinuity is documented rather than discovered.
Where the treatment affects tax or inventory accounting rather than just management reporting, that decision belongs with your accountant, not with a template.
Where this actually gets decided
Almost none of this is decided when the chart is designed. It is decided every week, by whoever codes the invoices.
A single distributor delivery can carry produce, dry goods, to-go containers, and cleaning chemicals on one document. Coded as a lump sum to food cost, three of those four are in the wrong place and the classification you carefully reasoned about never happens. That is why the split has to survive line by line, on hundreds of line items a week, which is the part that quietly stops being true when a bookkeeper is in a hurry.
The chart of accounts templates encode these boundaries with a description on every account, and download as CSV or Excel with no email required. The numbering principles that keep those boundaries stable as the chart grows are in chart of accounts numbering. The case for line-item coding, with sources, is in why your restaurant P&L is lying to you.


