← All resources

Spoilage, Waste, and Slow Movers: Keeping a Perishable Count Honest at a Self-Serve Stand

A wooden self-serve farm stand in morning light with crates of greens, tomatoes and eggs, and a tablet acting as an unattended checkout on the counter

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.

Restocking without wrecking your countNew stock arrives — A pick from your field, or a delivery from someone else.; Tap Add stock — It ADDS to what's already there, and asks Harvested or Received so the ledger knows which.; Counting the shelf instead? — Tap Count and type the total you see. A count SETS the number — it never adds to it.; Something spoiled or walked? — Record an adjustment with a note: 'dumped', 'damaged', 'shrink'. A negative, dated line.; Read it back any time — Every sale, pick, delivery, count, write-off and transfer is one line in an append-only history.Restocking without wrecking your count1New stock arrivesA pick from your field, or a delivery from someone else.2Tap Add stockIt ADDS to what's already there, and asks Harvested or Received sothe ledger knows which.3Counting the shelf instead?Tap Count and type the total you see. A count SETS the number — itnever adds to it.4Something spoiled or walked?Record an adjustment with a note: 'dumped', 'damaged', 'shrink'. Anegative, dated line.5Read it back any timeEvery sale, pick, delivery, count, write-off and transfer is oneline in an append-only history.
The till records sales on its own. Everything else is a deliberate act you record — and each one becomes a dated line you can read back.

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.

What supermarkets lose to shrink before it sellsFresh fruit: 12.6%; Fresh vegetables: 11.6%What supermarkets lose to shrink before it sellsFresh fruit12.6%Fresh vegetables11.6%
Average supermarket shrink, USDA Economic Research Service fresh-produce loss estimates. Directional, not a benchmark — your real number depends on your crops, your turnover and your weather.

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:

  1. It keeps the count true. The shelf now reads what is actually sellable, so a shopper is never offered something you already threw out.
  2. 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.

Reconnecting…
One moment — we're restoring your session.