Coffee Shop KPIs for a Single Location Café
By Mark Fulton · 2026-10-28 · 13 min read
Last verified

A single-location coffee shop needs six numbers: cost per drink (built from supplier invoices and a recipe card), sales by hour band (the morning curve, not the day total), labour by daypart (wage hours set against that curve), waste (milk and pastries written down before they hit the bin), average ticket (sales divided by transactions), and weekly takings against the same week last year. All six come from three things you already have: the invoices in the drawer, the till total, and the roster. None of them needs a POS report, an inventory platform, or a dashboard subscription. The cost-percentage targets that circulate online are mostly unsourced, so the honest benchmark is your own number from eight weeks ago, measured on your own shop.
A café is not a small restaurant, and the maths shows it. A restaurant's cost sits in a plate that varies every night. A café's cost sits in a cup you make three hundred times a day, with the same four ingredients, and it is cheap enough that nobody checks it. Sales are not spread across a service; they arrive in a steep wave between opening and about ten. Labour has to be in the shop before the wave, not after it. And the things you throw away are mostly milk and pastry, which go off on a clock.
So the numbers are different too. If you want the restaurant version, it lives in small restaurant KPIs you can actually collect, and the street-food version is in food truck daily numbers. This one is for a counter, an espresso machine, and a morning queue.
Which café numbers can you collect without a POS report?
Start with the question of where each raw figure physically lives. A number you cannot collect is a number you will stop tracking by the third week.
| Number | What you need | Where it lives |
|---|---|---|
| Cost per drink | Price per kilo of beans, per litre of milk, per cup, lid and sleeve | Supplier invoices and a recipe card |
| Sales by hour band | Till total at set times of day | The till's end-of-shift or hourly reading, or a tally |
| Labour by daypart | Hours worked per daypart, at a loaded hourly cost | The roster and payroll |
| Waste | Items and quantities thrown out | A notebook or sheet next to the bin |
| Average ticket | Sales divided by transaction count | The till |
| Takings, same week last year | Last year's weekly totals | Last year's bank deposits or sales log |
Two notes. First, "the till" here means whatever you ring sales on, including a basic card reader. If it prints a daily total and a transaction count, that is enough. Second, if you have been open less than a year, the last row waits; use your own previous four weeks instead and say so to yourself.
Numbers that need a timestamp per order, such as speed of service to the second or revenue per available seat hour, are fine for a drive-thru chain with the hardware to capture them. For one counter, a glance at the queue at 8:15 tells you most of what a stopwatch would.
How do you cost a drink from supplier invoices?
This is the number café owners most often guess at, and the guess is usually generous. The method is three steps: price each ingredient per unit from the invoice, set the quantity per drink from a recipe card, and add them up. Here it is on a latte.
An illustrative example, with round numbers chosen for easy arithmetic. These are not market prices. Replace every input with your own invoice lines.
| Input | Invoice basis (example) | Per drink |
|---|---|---|
| Espresso | 1 kg bag at $30.00; a double shot uses 20 g, so 50 shots per bag | $0.60 |
| Milk | $1.60 per litre; 250 ml in the cup | $0.40 |
| Cup, lid, sleeve | $0.18 + $0.07 + $0.05 | $0.30 |
| Yield loss | 5% of the liquid inputs (shots pulled to dial in, milk left in the jug) | $0.05 |
| Cost of one latte | $1.35 |
If that latte sells for $5.00 in this example, the cost is 27 percent of the price and $3.65 stays in the till before labour, rent and everything else. The formula is simply:
Drink cost % = cost of the drink ÷ selling price × 100.
Now apply the same card to the three best sellers. Same example assumptions: $30 per kilo beans, $1.60 per litre dairy milk, $3.00 per litre oat milk. Again, all illustrative.
| Drink | Beans | Milk | Cup, lid, sleeve | Other | Cost | Example price | Cost % | Left per drink |
|---|---|---|---|---|---|---|---|---|
| Latte, hot | $0.60 | $0.40 | $0.30 | $0.05 yield loss | $1.35 | $5.00 | 27.0% | $3.65 |
| Filter coffee, 12 oz | $0.45 (15 g) | $0.05 splash | $0.30 | none | $0.80 | $3.00 | 26.7% | $2.20 |
| Cappuccino, 6 oz | $0.60 | $0.24 (150 ml) | $0.25 | none | $1.09 | $4.50 | 24.2% | $3.41 |
| Iced oat latte | $0.60 | $0.75 (250 ml) | $0.35 | $0.03 ice | $1.73 | $5.50 | 31.5% | $3.77 |
Three things fall out of a table like this, and none of them shows up if you only watch the shop-wide percentage.
The percentage and the dollars disagree. The iced oat latte has the worst cost percentage and the most dollars left per cup. If someone asks which drink is "most profitable," the answer depends on whether you are short of margin or short of cups. At the morning peak you are short of cups, because the machine and the barista are the limit, so dollars per drink are the better guide.
The cheapest cup is not the one to hide. The filter coffee leaves $2.20 a cup, and it takes the least time to serve, which matters in a queue. Keep it on the board even though the latte looks better on paper.
A milk swap is a price decision. The difference between dairy and oat in this example is $0.35 a cup. Whether you charge for it is your call; the point is to know the number, because it is often absorbed without anyone noticing.
Do this once for the top five drinks, then redo it whenever a supplier invoice changes a price. It takes an evening. A drink that sells forty times a day and is mispriced by fifty cents is $20 a day, and that is the kind of leak you can only find on paper.
For the records themselves, the IRS says in its small business recordkeeping guidance that any system that clearly shows income and expenses will do, and Publication 583 lists invoices and cash register tape as supporting documents for inventory you buy and resell. The invoices you use for this costing are the same ones you should be keeping anyway.
Why does sales by hour matter more than sales by day?
Because a café is not busy all day the way a restaurant is busy all service. It opens at 7:00, and it is busy at 7:30. The day total hides that, and every staffing and ordering decision you make is a decision about a specific part of the day.
Pick bands that match your shop. A typical set for a morning-led café is opening to 9:00, 9:00 to 11:00, 11:00 to 2:00, and 2:00 to close. Note the till total at each boundary (or read the hourly report if your reader gives one) and subtract. Write it as a grid: bands across, days down, one row per day.
After four weeks the shape is usually plain. One band carries a large share of the day, and the afternoon band is often thinner than it feels while you are standing in it. Three decisions get easier:
- Prep and stock. Pastries, batch brew and milk are set out for the first band. If that band sells out of something by 8:30, you lost sales you cannot see in a day total.
- Opening time. If the first thirty minutes is a fraction of the next thirty, that is information about whether the early start pays. Weigh it against the regulars who come at that time before you change anything.
- The afternoon. A thin band is a question, not a verdict: is it a staffing issue, a product issue, or just where your neighbourhood is at that hour?
Keep the grid by day of week as well. Monday and Saturday are different shops.
How do you match staff hours to the morning peak?
Labour is where most café margin goes, and the weekly average is the wrong lens, for the same reason as the day total. Two baristas across a quiet afternoon and one across the rush is the right roster drawn backwards.
Work in dayparts, the same bands as your sales grid:
Labour % by daypart = wages for the hours worked in that band ÷ sales in that band × 100.
Use a loaded hourly figure: the wage plus employer costs, and put your own hours in at a fair rate, because an unpaid owner behind the machine makes every number look better than the business really is. Say a band has two people for three hours at an example loaded $20 an hour. That is $120 of labour. If that band took $600, labour is 20 percent of it. If the afternoon band has the same two people for four hours, takes $400, and costs $160, that is 40 percent. Same two people, a very different picture, and the day average hides it. (Round example figures again, not benchmarks.)
The question this answers is not "am I spending too much on labour?" but "is the labour in the right place?" Moving one person's hour from the afternoon to the front of the morning wave often costs nothing and fixes a queue.
A caution on scheduling: shift patterns in food service are constrained by who you can hire. The U.S. Bureau of Labor Statistics notes in its profile of food and beverage serving workers that shifts often include early mornings, late evenings, weekends and holidays, and that part-time work is common. Planning around a thin pool of early-morning staff is a real constraint, so treat the roster as a trade-off between the curve and the people you have.
Labour percentages come with benchmarks attached in many articles, usually stated flat. Where they are attributed at all, they are one consultant's range for one type of shop. Use your own prior weeks as the comparison.
How do you measure pastry and milk waste?
Waste is the number most owners know is a problem and almost none of them measure, because it is unglamorous and it is your own mistake in the bin.
Keep a sheet by the bin or in the back. Three columns: item, quantity, reason. The reasons worth separating are:
- Expired or unsold. Pastries at close, sandwiches past their date, milk past its use-by.
- Made wrong. Remade drinks, dropped cups, a latte for the wrong order.
- Prep loss. Milk left in the jug, shots pulled while dialling in the grinder.
At the end of the week, value it at cost using the same recipe card as above. Ten croissants binned at an example $1.10 cost each is $11. Two litres of milk at $1.60 is $3.20. The total divided by the week's purchases of food and drink is your waste percentage, and the reason column tells you which one to attack.
The pattern to look for is repetition. If the same item expires every Tuesday, you are over-baking Tuesday. If remakes cluster on one shift, it is a training or workflow problem. If prep loss climbs, check the grinder setting and the jug size before blaming the staff.
You will be tempted to skip the sheet on busy days. Do not. Busy days are when the wrong drinks happen.
What do average ticket and last year's takings add?
Average ticket is sales divided by transactions for the same period. It separates two causes of a sales change that call for opposite action. If takings rise because more people came, look at the queue and the roster. If they rise because each person spent more, the menu board, the add-on prompt or the new pastry is working. Raw takings cannot tell you which.
Weekly takings against the same week last year corrects for the thing a four-week trend cannot: the season. A café's year has a shape, and comparing March to February without knowing last March tells you little. If you have last year's deposits or sales log, line the weeks up by week number. If a holiday moved, note it. If you have no history yet, this row is blank, and that is fine; start the log now so next year's you has it.
Neither number needs a benchmark. Direction against your own history is the whole purpose.
What does a five-minute weekly café check cover?
Do it at the same time each week, after close on Sunday or early Monday before opening. Five minutes is realistic once the grids exist.
- Takings: this week against last week, and against the same week last year if you have it.
- Hour bands: which band moved, and in which direction.
- Labour by daypart: any band where the percentage jumped, and which roster slot it was.
- Waste sheet: the total, and the one repeating item.
- Average ticket: up, down or flat, alongside transaction count.
- Invoices: did any supplier price change this week? If so, redo that drink's card.
Write one line of what you will change. One line, because a list becomes a task nobody does.
If you would rather not keep five grids by hand, the money module in the dashboard holds daily takings and supplier invoices as entries, and the weekly report prints them as a one-page summary you can read on Monday. Open the dashboard free: it runs in your browser with no account, and your data stays in your browser unless you turn on Pro sync. Log daily takings and supplier invoices in the money module, and print the weekly report every Monday. The general routine behind it is in the numbers to look at every Monday.
A note on boundaries: this is bookkeeping mechanics, not tax or pricing advice. What you charge is your decision, and how costs are treated on a return is a question for an accountant or the IRS publications above.
FAQ
What is a good cost of goods percentage for a coffee shop?
There is no single figure worth quoting. Ranges that circulate are usually one consultant's view of one type of shop, and a shop that sells mostly espresso drinks has a different cost shape from one that sells sandwiches and pastry. The reliable benchmark is your own: work out the percentage for your top drinks as in the example above, then your whole-shop figure from invoices over four weeks, and compare it with itself next month.
How do I calculate the cost of a cup of coffee?
Price each input from your invoices per unit (beans per gram, milk per millilitre, each packaging item), multiply by the quantity in one drink, add them, and add a small allowance for yield loss. Divide by the selling price to get the percentage. The latte table above shows the whole method with example numbers; swap in yours.
How do I track waste in a café?
Keep a sheet by the bin with item, quantity and reason, and value it at cost each week. Separate expired stock, mistakes and prep loss, because each has a different fix. Look for the item that repeats on the same day.
Which KPIs matter most for a small coffee shop?
Cost per drink and sales by hour band, because they drive pricing and staffing, the two largest levers. Waste and labour by daypart come next. Average ticket and the year-on-year comparison are the cheapest to collect and worth keeping in the weekly check.
Do I need software to track these?
No. A notebook, a spreadsheet or the dashboard all work. The method matters more than the tool, and the best tool is the one you will still be filling in after a month.