A barcode scanner is honest about one thing only: what sold. At a staffed register that is enough, because a person standing there sees the wilted chard, the cracked eggs, the flat of strawberries that nobody touched for four days. They pull it, they note it, they discount it.
At a self-serve stand there is no such person. The shopper scans a barcode, or snaps a photo the AI identifies, taps to pay, and walks off with their tomatoes. The till records that sale and nothing else. Everything that didn't sell — the loss that actually eats a perishable business — is invisible unless you record it yourself.
This is the gap that makes inventory feel impossible on an unattended stand. It is not impossible. It just needs a short, deliberate routine and an understanding of one choice that trips up almost everyone.
The one move that quietly wrecks your count
Here is the mistake, and it is so common it is worth stating plainly: you come back from the field with two flats of blueberries, you open the product, you see "On hand: 6," and you type "12."
You meant "I added twelve." What the box heard was "there are now twelve total" — and it silently threw away the six that were already there. Your count is now wrong by six, you don't know it, and you won't find out until something doesn't add up weeks later.
TallyTill keeps these two acts separate on purpose, because they are genuinely different things:
- Add stock adds to what is already on the shelf. Use it when a pick comes in from the field or a delivery arrives. It even asks whether the stock was Harvested (you grew it) or Received (someone delivered it), so your history reads like a real record instead of a pile of mystery increments — and you can backdate a pick to the morning it actually happened.
- Count sets the total. Use it when you have physically counted what is on the shelf and want the number to match reality. A count never adds; it lands the on-hand exactly where you say and absorbs the difference.
Get these two straight and most inventory pain disappears.
Writing off what spoiled — on the record, not in your head
Perishable loss is not a rounding error. USDA Economic Research Service loss estimates put average supermarket shrink — the share lost before it ever sells — at well over a tenth of fresh produce. Supermarkets have cold chains, trained staff and rotation schedules. A roadside stand in August has the sun.
The number matters less than the habit. When you pull a case of soft peaches or dump a carton of cracked eggs, record it as a stock adjustment with a note — "dumped," "damaged," "frost." It is a negative, dated entry, and it does two useful things at once:
- It keeps the count true. The shelf now reads what is actually sellable, so a shopper is never offered something you already threw out.
- It separates waste from theft. This is the quiet payoff. When your count comes up short and you have not recorded any spoilage, that gap is a different problem — and worth reading where the honest leak in a self-serve stand actually is. A write-off you logged is explained loss. An unexplained shortfall is a question. Keeping the two apart is the whole point.
The retail world has a rule of thumb that applies straight to a farm stand: keep planned markdowns separate from true waste. Discounting end-of-day greens is a pricing decision. Composting slimy ones is a quality or a volume decision. If you record both the same way, you can never tell which problem you actually have.
Catch the slow mover before it becomes the write-off
The best spoilage entry is the one you never have to make — because you moved the stock while it was still good. The hard part is noticing a slow mover on an unattended shelf, where nothing nudges you.
TallyTill's inventory report carries a Dead stock view for exactly this: it flags anything that is on hand and has not sold within a window you choose. The window defaults to 30 days, which is right for jam and wrong for lettuce — so for perishables, set it short. Three or four days surfaces the flat of strawberries that stopped moving while you can still bundle it, discount it, or turn it into the week's featured item.
The same report shows retail value — what your on-hand would bring at list price. Be clear-eyed about what that is and isn't: it is a sell-through number, not a cost valuation (there is no purchase-cost data behind it, so it is deliberately never called one). It answers "how much sellable stock is sitting out there," not "what did this cost me." For a stand owner deciding whether a cooler is overloaded going into a hot weekend, the first question is the useful one.
Why the ledger, not just the number
Most of this rests on one design choice: the stock count is not a single editable number. It is the running total of an append-only ledger, where every movement is its own permanent line — a sale, a refund on a voided sale, a harvest, a delivery, a count, an adjustment, a transfer between locations. Nothing overwrites; everything accumulates.
That is why you can always answer "why is the count what it is" instead of guessing. If a number looks wrong, you read the history and see the exact entries that produced it — which is the entire subject of reading the ledger when a count looks off. An editable number can only ever tell you what it is now. A ledger tells you how it got there.
A weekly rhythm that fits a stand
You do not need a warehouse process. You need about ten minutes, on a schedule:
| When | Do this | Which action |
|---|---|---|
| Each restock | Log the pick or delivery | Add stock (Harvested / Received) |
| Daily, fast | Pull and record anything spoiled | Adjustment with a note |
| Weekly | Physically count the perishables | Count (sets the total) |
| Weekly | Read the Dead stock badge; move slow stock | — (then markdown or bundle) |
Pair it with a daily low-stock email so you restock before a shelf goes empty, and the stand largely tells you what it needs instead of the other way around. When you do sit down to count, here is how to do a clean stock count on a stand that never closes.
Three honest limits worth knowing up front
Because the most useful page is the one that doesn't oversell:
- Lots are labels, not batches. You can write a lot or a pack date on stock as it comes in, and filter your history by it — but sales don't draw down a specific lot in order, so "how much of lot 0907-A is left" is not a number the system tracks. What it answers is "what came in under that lot, and when."
- There are no automatic expiry alerts. The Dead stock window catches didn't sell (a strong proxy for about to spoil), but nothing reads a printed sell-by date and pings you. Pulling the oldest stock stays your eyes and your judgment.
- Retail value is not cost. Said twice because it matters. It is what the shelf would ring up at, not what you paid.
None of that changes the core, which is the part competitors built for staffed stores miss entirely: at a self-serve stand, the count stays honest only if adding, counting, and writing off are three distinct, recorded acts — and the system is built so they are.
Start keeping an honest count
The inventory report, the Dead stock view, the add-vs-count split and the append-only ledger come with the stand — you set up your products once and the routine above does the rest. You can create a free account and ring your first self-serve sale without a card on file; see what's included and where the plans differ.
Figures: USDA Economic Research Service fresh-produce loss estimates (supermarket shrink), cited as directional context, not a benchmark for a small stand.