Account codes for cafés: the invoice coding that makes your P&L mean something

Open your P&L and look at the biggest cost line. If it says "Purchases" and it's one number, you're looking at a wall, not a window.
Behind that number this month sat your coffee, your flour, 1,000 takeaway cups, four rolls of blue paper, a bottle of descaler, an engineer's callout for the espresso machine and, if it was a bad month, an under-counter fridge. All of it in one bucket. And now you're trying to work out why margin feels tight.
You can't. Not from that. Your gross profit is only as honest as the account code you put on each invoice line, and most cafés put on about four codes when they need about eight.
The one split that decides everything
Before you worry about which of eight codes a line belongs to, get the first fork right, because everything downstream depends on it.
Cost of goods sold (COGS) is what you sold. Everything else is what it cost you to be open.
The test is one question: did this leave the building in a customer's hand? The oat milk did. The cup and the lid did. The paper bag with the sausage roll in it did. The sanitiser spray did not. The blue roll did not. The engineer did not.
That's the line. It sounds obvious written down, and it goes wrong constantly in practice, because the cups and the blue roll turn up on the same docket from the same supplier on the same Tuesday.
It matters because gross profit is the number you use to judge whether your pricing and your recipes work. Put running costs inside COGS and your gross profit understates itself, permanently, by an amount that changes every month depending on what you happened to buy. Leave real COGS outside it and you get a flattering number you'll believe.
A working account code list for a café
You don't need forty codes. You need enough to answer the questions you actually ask. Here's a list that works for a single site or a small group, and more importantly, why each boundary earns its place.
Above the line (COGS)
Food. Everything that becomes a dish. Flour, dairy, meat, veg, the cash-and-carry ambient stuff. Keeping this separate is what makes calculating food cost percentage possible at all. If food is tangled up with coffee, you can't tell whether your kitchen or your bar is the problem.
Drink and coffee. Beans, tea, syrups, milk if you want to be strict about it, soft drinks, cans. Your drink margin and your food margin behave completely differently. Coffee usually runs at 15 to 20% cost, food at 28 to 35%. Averaged together, a bean price rise disappears into the noise. Separated, you see it the month it happens.
Packaging and disposables. Cups, lids, sleeves, boxes, paper bags, napkins on the counter. This one gets argued about, so here's the case: packaging scales with sales exactly like an ingredient does. Sell 200 more takeaway coffees and you buy 200 more cups. It belongs in COGS because it belongs in the cost of the thing you sold. It also happens to be the line that quietly moved the most over the last few years, and you'll only spot that if it has its own home.
Below the line (operating costs)
Cleaning and consumables. Blue roll, sanitiser, bin liners, tea towels, gloves, dishwasher tablets, descaler. Used up running the place, never sold. This is small and boring and it's the single most common thing wrongly buried in Purchases.
Repairs and maintenance. The engineer's callout, the boiler service, the fridge seal, the plumber. Lumpy by nature. Worth its own code because when it starts climbing three months running, that's a piece of kit telling you it's about to die, and that's a decision you'd want to make before it dies at 7am on a Saturday.
Staff costs. Wages, employer's NI, pension, agency cover, training. Alongside COGS this is one of your two big controllables, and you want to see it as a clean percentage of turnover.
Overheads. Rent, rates, utilities, insurance, software, accountancy, card fees, marketing. Mostly fixed, mostly not something you change this week.
Not on your P&L at all
Equipment. The new espresso machine, the second fridge, the dough mixer, the outdoor furniture. These are assets. They go on the balance sheet and come through the P&L slowly as depreciation. A £6,400 machine is not a £6,400 cost in September.
Where it actually goes wrong
The mixed docket
This is the big one. A single cash-and-carry receipt for £212.40 ex-VAT that looks like this:
- Mozzarella, catering flour, tinned tomatoes: £96.20 to Food
- 1,000 takeaway cups and lids: £58.40 to Packaging
- Blue roll, sanitiser, bin liners: £24.60 to Cleaning and consumables
- A kettle for the staff room: £33.20 to Overheads
Four codes on one docket. Code the whole £212.40 to Food, as almost everyone does, and you've just told yourself food cost was 40% higher on that docket than it was. Do that twice a week and your food cost percentage is meaningless.
Mixed invoices need splitting, not coding. Any decent accounting setup lets you split a bill across multiple codes, and this is exactly where the differences between platforms show up in daily life, which we went into when comparing Xero, Sage and QuickBooks integration.
Capex sitting in this month's costs
You buy a £6,400 espresso machine in September. Coded to Purchases, September's gross profit collapses and the following eleven months look artificially healthy by comparison. You've created a fake crisis and then a fake recovery, and neither one happened.
The rule of thumb: does the spend restore something to working order, or extend what you can do? A £180 callout to replace a group head seal restores. A new machine extends. Restoring is repairs, this month, in full. Extending is capital, on the balance sheet, spread over its useful life.
Your accountant will have a capitalisation threshold, often somewhere around £500. Ask them what yours is, then apply it without agonising. Below it, expense. Above it, capitalise.
Staff meals and free drinks
Your team's lunches and their flat whites came in on a food invoice and are sitting in COGS right now, having produced exactly £0 of turnover. On a small site with five staff that can be a point or more of apparent food cost.
Two honest options. Leave it in COGS and know it's there, so you don't spend a fortnight hunting a phantom overspend. Or journal a fixed monthly amount out of COGS into staff costs, which is more accurate and more work. Either is fine. Quietly doing neither, and then wondering why your food cost never matches your recipe cards, is not.
The Sundries bucket
Sundries is where numbers go to die. It starts as a home for the genuinely odd £4.20, and within a year it's your fourth largest expense and nobody can say what's in it.
Set a rule: if a line shows up more than twice, or breaks about £150 in a month, it earns its own code. Sundries should be a rounding error at the bottom of the page, not something you have to click into.
Why one badly coded month ruins a whole trend line
Here's the part that stings. Coding errors don't just make one month wrong, they make comparison impossible, and comparison is the entire point of a P&L. A single month's numbers tell you almost nothing on their own, which is the case we made in the guide to reading your P&L.
Gross profit percentage is only meaningful against last month, the same month last year, or a benchmark. If June's costs were sorted one way and July's another, the movement between them is measuring your bookkeeping, not your business. You'll spend a Sunday evening explaining a three-point swing that was a fridge.
The same month, coded two ways
Take a café doing £42,000 ex-VAT in June. Here's what actually got spent.
Coded sloppily, with packaging and cleaning swept into Sundries, and a £1,180 fridge plus a £180 engineer's callout dropped into Purchases:
- Purchases: £13,010
- Gross profit: £28,990, or 69.0%
Coded properly:
- Food: £8,240
- Drink and coffee: £3,410
- Packaging and disposables: £1,320
- COGS: £12,970
- Gross profit: £29,030, or 69.1%
Nearly identical headline. Which is precisely the problem, because the errors cancelled out. The missing packaging pulled COGS down, the fridge pushed it back up, and the top-line number sat there looking fine.
The tidy version tells you something the sloppy version physically cannot: food ran at 19.6% of turnover in June, against about 18% in April and May. That's a real 1.5 point drift, worth roughly £650 that month, and it's the only thing on the page worth your attention.
Now run it forward. July: turnover £44,000, no fridge that month, no callout.
- Sloppily coded: Purchases £12,360, gross profit 71.9%
- Properly coded: COGS £13,750, gross profit 68.8%, food at 20.0%
The sloppy P&L says margin jumped nearly three points and whatever you did in July worked. The honest one says margin slipped again and food cost is still climbing. One of those makes you feel good. The other one makes you go and look at your dairy prices.
Consistency beats perfection
Here's the reassuring bit. You can get some of this technically wrong and still get almost all the value.
Say you decide milk goes to Food rather than Drink. An accountant might raise an eyebrow. But if milk goes to Food every single month, your trend line is still perfectly readable. You'll see food cost move, you'll know what's in it, and you'll spot the change when it happens. A wrong-but-consistent code is enormously more useful than a code that's right in March, right-ish in April and anyone's guess in May.
So don't wait until you've designed the perfect chart of accounts. Do this instead:
- Write the list down. One side of A4. Your codes, and one example of what goes in each. Stick it wherever you do the invoices.
- Decide the three arguments in advance. Milk. Staff meals. Cleaning products from the food supplier. Write down your ruling next to the code, so future-you doesn't relitigate it at 10pm.
- Split the mixed dockets. Cash and carry, the big wholesalers, anywhere you buy more than one category. These are where the damage is concentrated.
- Empty Sundries. Look at what's in there for the last three months and give the repeat offenders proper codes.
- Leave the past alone. Start clean from this month. Recoding a year of history is a heroic waste of a weekend, and you only need a few consistent months before the trend line becomes useful.
Where Brikly fits
Splitting a mixed docket across four codes is not difficult. It's just tedious, and it lands on the person least likely to have a spare twenty minutes, which is why it's the first thing to go in a busy week.
CostingBrik reads your supplier invoices and carries an account code per line, not per invoice. So the cash-and-carry docket with mozzarella, cups, blue roll and a staff room kettle on it arrives at your accounting software already split across Food, Packaging, Cleaning and Overheads, instead of landing as one lump in Purchases for you to unpick later.
It also learns. Code a supplier's lines once and the next invoice from them comes through already coded, which means the discipline holds up in August when you haven't got the time to be disciplined. That's really the whole trick here: not doing it perfectly, just doing it the same way every month.
Your P&L is a summary of decisions you already made. Code it properly and it starts telling you which ones to make next.
Ed O'Brien has run Hunters Cake Company for 17 years across cafés in Witney, Burford, and a bakery in Carterton, Oxfordshire. He's building Brikly - modular tools that give independent café owners the same data the big chains have, without the big chain price tag.