Grocery Store: Category Margins and Shrinkage, Not Turnover
«About ₴45,000–50,000 goes through the till every day. We close the month at roughly ₴1.3 million in turnover. Yet I’m left with forty thousand net, sometimes thirty. For a whole year I thought I was simply running the place badly — until I counted how much the expired stock and the shortages were eating». That’s how Ihor, who owns a neighborhood mini-market in a residential district, opened our conversation.
Sound like familiar arithmetic? The turnover is solid, the shelves are full, the evening queue at the till never really thins out. Then at month-end you look at the account and can’t work out where the money went. The first thought is always the same: «I need more stock, a wider range, one more fridge unit». Yet the problem is almost never the turnover.
The problem is that a grocery is counted as a single till. You ring up ₴48,000 in a day and it feels like a good day. But behind those ₴48,000 hide five completely different businesses: dairy, dry goods, alcohol, cigarettes and household chemicals. Each lives by its own rules. One brings pennies off a huge turnover, another quietly feeds the whole shop, and a third flies into the bin every evening along with the expired stock.
This article is about breaking a mini-market’s revenue down by category and seeing what actually earns and what merely moves money back and forth. And why «big turnover» and «thin profit» live so peacefully together under one roof.
How Ihor Ended Up Behind the Counter
Ihor never dreamed of retail. He worked as a repair technician, and when the premises of a former pharmacy next to his building came free, he decided to try — the district is dense, the nearest supermarket is two blocks away, and late in the evening there’s nowhere to buy bread and milk. He took a loan, put in the display cases, arranged deals with a few local suppliers. He worked the first month himself, then hired two salespeople on shifts.
Revenue came fast: people really did drop in every day, for bread, cigarettes, beer, a carton of milk before bed. Within six months the turnover was big enough that Ihor was proud of the number on the till report. But money for growth somehow never appeared. Every free hryvnia was swallowed by the next purchase, and the shop seemed to run on the spot — fast, loud and going nowhere.
How a Grocery’s Money Actually Works
To understand where the profit leaks, you have to accept three things that shop owners rarely think about separately.
First — the markup differs by category, and by a lot. On fresh dairy and produce you put 30–35%, because the goods are «alive» and must be turned over. On dry goods — 20–25%. On alcohol — roughly the same, though in hryvnias it comes out noticeably higher. And on cigarettes the markup is tiny, 8–12%, because the price is rigidly known to the buyer and you simply can’t inflate it. A pack at ₴90 leaves you ₴7–9, and not a kopeck more.
Second — write-offs and shortages. These aren’t «trifles», they’re a cost line of their own. Expired dairy, wilted vegetables, a smashed jar, theft off the shelf, a cashier’s mistake at the register. In a grocery this isn’t force majeure, it’s daily reality. And the worst part: write-offs hit hardest exactly the categories where the markup looked juiciest — the fresh ones.
Third — money lives in the stock, not in the account. Full shelves aren’t wealth, they’re frozen cash. You paid the supplier for a case of coffee, it sits on the shelf for three weeks, and for all three weeks your money lies inside it instead of working. The turnover is large, but a big chunk of your capital is always «stuck» in inventory.
The till roars every evening. But it shows turnover, not what stayed with you. Those are different numbers, and you live off the second one.
That’s why a grocery is a thin-margin business. Net, the owner more often keeps 3–5% of turnover, not «a third, like the milk price tag says». A million in turnover and forty thousand in profit isn’t Ihor working badly. It’s the normal physics of the trade — if you don’t see it by category. We’ve covered separately why the report shows a profit while there’s no money in the account — for retail it’s headache number one.
Why Turnover Speed Beats Markup
There’s a number grocery owners underrate — the speed of turnover. It’s how often the goods on the shelf manage to sell and turn back into money. And it’s that, not a pretty markup on the price tag, that decides how much the shop earns in a year.
Compare two shelves. A pack of premium coffee has a 30% markup but sits for three weeks before someone buys it. Milk has a smaller markup but turns over every day. In a month the same hryvnia put into milk turns about ten times and brings ten little markups. A hryvnia in the coffee turns just once. So a «high markup» on a slow product often loses to a «modest markup» on a fast one. It’s the same unit economics, only at shelf level.
Hence a simple but uncomfortable thought: full shelves of rare goods aren’t a rainy-day reserve, they’re frozen cash. Ihor used to be proud of his wide range: «I’ve got everything». When he counted how much money was lying in items that sell once every two weeks, it got less fun. That money could have been working, or at least not borrowed on credit.
Life Before Finmap: Where the Money Hid
Before he put things in order, Ihor worked the way most small-shop owners do: the till on its own, a purchase notebook on its own, and in his head a rough sense of «going okay or not». Here’s what he lived with every day:
- One till for everything. The report showed the day’s total sum. How much of it was dairy, how much cigarettes, how much alcohol — unknown. And so it was unclear what actually earned.
- Write-offs «by eye». Expired and spoiled goods were simply thrown out. Nobody counted how much the shop poured into the bin over a month. The guess was «well, about five thousand». Reality turned out different.
- Purchasing with no plan. A supplier showed up and Ihor took stock «to have it». Part of it then sat around and got written off, while the money for it was already gone.
- Debts to suppliers in his head. One gave two weeks’ deferral, another a month. When and whom to pay lived in his memory and in stacks of invoices under the till.
- He paid himself «whatever was left». At month-end he looked at the account and took the remainder. In a bad month there was no remainder at all.
What grated most wasn’t even being short of cash, but the fog. Ihor couldn’t answer a simple question: «Which goods feed the shop, and which do I keep just for the range while quietly spoiling my own result?»
How They Got Things in Order
They started with the dull but decisive step — splitting the shop into categories. Not into hundreds of items, but into five clear groups: dairy and fresh, dry goods, alcohol, tobacco, household chemicals and sundries. Every till takings and every purchase was now assigned to its group.
The second step — they began recording write-offs honestly. Every discarded carton of milk, every spoiled tray of strawberries. Not «to punish the salespeople», but to finally see the sum. In the very first month it turned out to be twice that «guess of five thousand».
The third step — they connected the bank and the till to Finmap, so incomings and payments pulled in on their own without being copied by hand into a notebook. Where the money goes each day became visible not at month-end but that same evening.
In Finmap Ihor set it up like this:
- Income and expense categories — the same five groups. Now revenue and cost of goods are counted not «for the shop as a whole» but per category, and the margin comes out on its own.
- A separate «Write-offs and shortages» category. Expiry, spoilage, theft — all on their own line. It immediately exposed the priciest «invisible» cost.
- Bank integration and auto-import. Payments to suppliers and takings from the till land in the system automatically — Ihor no longer burns evenings on reconciliation.
- Cash Flow and P&L. One report shows the movement of money, the other whether the shop truly earned over the month or just «spun» other people’s money.
- Payment calendar and supplier debts. Who, when and how much — now on the calendar, not in his memory. Cash gaps are visible in advance.
Suppliers and Deferred Payment: Other People’s Money, Easily Mistaken for Yours
A separate trap in a grocery is deferred payment. A supplier delivers goods and lets you settle in two or three weeks. During those weeks the shop’s account holds money that doesn’t really exist yet: it’s already promised to the supplier. The turnover creates a pleasant illusion of wealth, and then payment day arrives for several suppliers at once — and it turns out there’s nothing to pay with.
Ihor caught himself on this more than once: he sees ₴90,000 in the account, treats it as «his», buys more stock or draws some for expenses. A week later he owes ₴70,000 to three suppliers, and the shop lands in a cash gap out of nowhere. The problem isn’t that money is scarce — it’s simply someone else’s and hasn’t been split apart in his head.
When all the deferrals and payment dates sit in the payment calendar, that confusion disappears. You see not «how much is in the account today» but «how much will be left after I’ve settled with everyone». That’s the difference between calmly planning purchases and firefighting at month-end.
Finances Now: Same Revenue, Different Decisions
Ihor’s turnover barely changed — the same ~₴1.3 million a month. What changed is what he now sees. And the very first breakdown by category was sobering. Here’s a simplified picture of his shop over a month.
| Category | Markup | Write-offs and losses | What it really earns |
|---|---|---|---|
| Dairy and produce | 34% | 7% | Thin: spoilage eats most of the markup |
| Dry goods and canned | 22% | 1% | Steady working profit |
| Alcohol | 24% | 0.5% | Quiet leader in money |
| Cigarettes | 9% | ~0% (but stolen) | Big turnover, thin margin |
| Household chemicals and sundries | 28% | 0.3% | High margin, almost no losses |
What did Ihor see once the numbers lay side by side?
Cigarettes puffed up the turnover but barely fed him. Nearly a quarter of the turnover — and pennies of profit from it. On top of that the money is permanently frozen in them (you must keep stock), and they’re the item stolen most often. It looked like «the shop’s locomotive», but it was really a carriage the shop dragged along.
Fresh turned out to be a trap. A 34% markup warmed the heart on the price tag, but 7% write-offs turned it into the thinnest real margin in the shop. Ihor didn’t drop the dairy — that’s exactly what people come in for every day. But he began ordering in smaller batches more often, watching dates and shelf rotation. Over two months write-offs fell from 7% to about 4%, and that went straight onto the profit.
Alcohol and household chemicals — the quiet earners. Not the biggest turnover, but almost no losses and a good margin in hryvnias. Ihor widened exactly those shelves and moved them to more visible spots — a decision he’d never have reached «on a hunch».
It turned out the shop is fed not by the shelves with the biggest crush around them, but by the ones the customer walks calmly past.
Over the first three months on numbers, Ihor’s net profit grew from roughly ₴40,000 to ₴70,000 a month — with no new fridge unit and no growth in turnover. They simply stopped gifting money to the bin and to shelves that only looked important. If you want to dig deeper into why the profit is there on paper but there’s no cash in the account — that’s exactly about capital frozen in stock.
Another discovery concerned his own salary. Ihor used to take «whatever was left», and in bad months he took nothing at all — which meant he was effectively lending the shop his own money and nerves. Now, with the real margin by category and the upcoming supplier payments in view, he sets himself a fixed draw as an ordinary monthly expense line and plans purchases around it, not the other way round. A trifle at first glance, but it’s exactly what separates an owner who runs the business from one who patches it with himself. The shop has finally started working for Ihor, rather than Ihor for the shop.
An Insight for Owners
Big turnover isn’t a diagnosis of «all is well». It’s just loud noise. Quietly, within that noise, two or three categories do the earning, while the rest either barely break even or drag you back. As long as it’s all blended into one till, you won’t see it — and you’ll run the shop blind, by the feel of the queue.
The most valuable thing in this approach isn’t a one-off calculation, but the trend. When you see margin and write-offs by category month after month, things surface that no hunch would catch: in summer produce spoilage climbs, a supplier quietly raised the price of coffee, and the «bestseller» actually gives the least. These aren’t guesses anymore — they’re numbers you can take to a supplier to bargain, to change the range and the purchasing. When you want a second opinion, the AI advisor helps too, pointing out where the margin slipped and what to watch this month.
Money Doesn’t Vanish — You Just Never Split It Up
A grocery’s profit doesn’t melt into thin air. It dissolves between categories while you stare at one shared till: part eaten by expiry, part carried out with the theft, part frozen in goods on the shelf. The moment you break revenue down by category and start seeing write-offs on their own line, the fog lifts — and it becomes clear what feeds the shop and what merely creates motion.
Finmap shows this every day, in simple numbers an owner will understand, not just an accountant: the bank and till pull in on their own, margin is counted by category, write-offs show on a separate line, and the payment calendar warns of gaps in advance. Try putting your shop’s finances in order — and within the first month you’ll see which shelves feed you and which quietly eat you up.
Frequently Asked Questions
Don’t overcomplicate it. Five or six groups (dairy and fresh, dry goods, alcohol, tobacco, household chemicals) already give an honest picture. There’s no need to split into hundreds of items at the start — the point is to see which big group feeds you and which drags you down.
Set up one «Write-offs and shortages» category and drop the sum into it daily or once a week. Even a rough but regular record is more accurate than «by eye» and quickly reveals the true scale of the losses.
Don’t rush. The thin margin on cigarettes is often justified by traffic: a person comes in for a pack and also grabs bread and beer. Look not only at the category’s margin but at the customer it brings in. Still, there’s no point keeping excess stock and freezing money in it.
Inventory software counts stock and items. Finmap shows the owner’s money: how much each category truly earned after write-offs, when to pay suppliers, and whether a cash gap is coming. It complements inventory software rather than replacing it.
Basically an evening: connect the bank, add income, expense and write-off categories. After that payments pull in on their own. By the very first month you’ll see margin by category and be able to decide on numbers, not on the feel of the queue.
