You are offline — showing cached data. Changes are disabled until you reconnect.

Retail & outlets

How should a food outlet bill with live prices and batch expiry at the counter?

Updated 8 min readNaffo product team

How should a food outlet bill at the counter when prices change and stock expires?

Give every outlet its own counter login with staff PINs, and bill from the shared product catalogue so each sale reduces that outlet's stock. For batch-tracked items, switch on oldest-batch-first so the bill shows which batch to hand over, oldest best-before first. If you use live prices, fix the lowest and highest price per item, never above MRP, and run a test period first. Close each shift with a blind cash count, and review voids, discounts and short deliveries in a leakage report.

Key takeaways

  • One central catalogue and stock, with billing and stock kept per outlet, avoids a separate shop system that never matches the factory.
  • With oldest-batch-first switched on, a counter that names the batch to hand over turns FEFO from a warehouse rule into something the cashier can follow.
  • Live prices are only safe with per-item limits, a test mode where customers still pay normal prices, and a report of what was gained or lost.
  • Blind shift close, manager approval for voids and big discounts, and a leakage report make counter losses visible without watching every bill.
  • Khata dues, WhatsApp bills and offline billing are everyday counter needs, not extras.

Why the counter needs to share the factory's records

A bakery, sweet shop, dairy parlour or cafe often sells products that its own kitchen or plant made the same morning. When the shop runs a separate billing app, the factory cannot see what was sold, what is about to expire or what each outlet needs tomorrow. Stock is counted twice and reconciled late. The simplest fix is a single product catalogue and stock ledger, with each outlet billing and holding stock at its own location.

In Naffo, every outlet gets its own counter login link. Staff unlock the counter with a personal PIN, and repeated wrong PINs are limited. The counter searches the whole catalogue by name, code or barcode, and a purchase or a delivery adds stock while each bill takes it away. The counter screens can be shown in English, Hindi or Gujarati, so the staff at the till can work in the language they read best.

Hand over the oldest batch first, from the bill itself

First-expiry-first-out (FEFO) usually lives in the warehouse. At a counter, the person who needs to know is the cashier picking a packet from the shelf. When the company switches on oldest-batch-first and an item is batch-tracked, Naffo's checkout looks up the outlet's batches and shows a line such as "Hand over batch B-1021 first · best before tomorrow" before the bill is charged. In Enforce mode the batch number also prints on the receipt. The setting is off until you turn it on.

Counter batch policy options. The company chooses the mode; the counter follows it.
ModeWhat the cashier seesWhen to use it
Off (the default)No batch hintItems that are not batch-tracked, or a shop still setting up lots
PreviewThe batch to hand over first and its best-before dateMost food shops: guidance without blocking a sale
EnforceThe bill will not charge until the batch-tracked lines are fully allocated, and the batch prints on the receiptHigh-value or short-life items where the wrong batch is costly

Two rules keep the hint honest. The counter only sells batches that have arrived on the shelf; with two-step transfers switched on, goods still in transit from the factory are not offered. And a batch that came in through an outlet delivery can be sold at that outlet straight away. If a line is short, the counter says so instead of quietly selling stock it does not have.

Use live prices only inside limits you set

Live (dynamic) pricing lets prices move with demand, a little like a market board. It is useful for a cafe at rush hour or a bakery near closing time, and risky without guardrails. In Naffo it is off by default, switched on per outlet by an owner or admin, and every item has a lowest and a highest price. The setup suggests the lowest as your cost plus a minimum margin and the highest as a step above the normal price, never above MRP. You can change both.

  1. 01Pick the outlet and items

    Choose which items may move. Everything else keeps its normal price.

  2. 02Set the limits

    Confirm the lowest and highest price for each item. Prices never leave that range.

  3. 03Run Test mode

    The TV price board and the report move, but every customer still pays the normal price. Use it for a day to see what live prices would have earned.

  4. 04Go live, and plan the week

    Turn on live prices, add happy hour or rush periods, and save a weekly plan. One button turns live prices off at every outlet; history is kept.

At the till, a live price is a quote that holds for a short time. If it changes before the bill is charged, the cashier must accept the new price first, so the customer is never charged a price nobody saw. The gain-and-loss report then compares live prices with your normal prices, losses included, and shows which items moved most and who started each happy hour.

Take payment the way customers pay

  • UPI QR for the exact bill amount, and split payment across cash, UPI, card and credit.
  • Price cuts and discounts need a reason. Above the limit you set, a manager approves; voids also need the manager.
  • Offline billing keeps the counter running without internet. Bills sync later, and a bill the server refuses at sync is listed once for the manager to review.
  • A bill link on WhatsApp or SMS opens a public bill page with your shop's branding, so the customer has a copy without paper.
  • Thermal receipt printers can print through a print-station queue on the shop PC.

Keep khata dues and orders at the counter

Many shops sell on credit to regular customers. Naffo's khata screen shows who owes what, takes part payments and sends a polite WhatsApp reminder. Payments clear the oldest credit bills first, so the counter can see how long the oldest unpaid bill has waited. After a payment, the customer can be sent a receipt.

Cake, catering and outside-party orders can be taken at the counter with a photo and an advance, at their own rate. They appear on a kitchen to-make list for the right day. Outlets with a live kitchen can issue raw material to it, so its consumption shows up against that outlet. When stock runs low, the outlet orders from the factory; the outlet order to receiving workflow covers that side.

Close the shift and look for leakage

A shift starts with a counted opening float and records cash taken in or paid out during the day. At close, the cashier counts the drawer without seeing the expected figure, a blind close, and the Z-report shows the difference. The owner sees every outlet's shifts in one list.

The leakage report gathers the events that usually explain missing money or stock: voids, short deliveries, cash differences, reprints and discounts, including offline bills that were billed again. Wastage is logged at the outlet with a photo, and an expiring-soon card nudges staff to sell or move stock before its date. Retail reports then show outlet sales, stock and restock needs.

What to test before you roll out

  1. Switch on oldest-batch-first, bill a batch-tracked item with two batches on the shelf and confirm the counter names the older one.
  2. With two-step transfers switched on, try to sell an item that is still in transit from the factory and confirm it is not offered.
  3. Run live prices in Test mode for a day and read the gain-and-loss report before charging customers.
  4. Disconnect the internet, make three bills, reconnect and check that each one synced once.
  5. Close a shift blind with a deliberate cash difference and find it in the Z-report and the leakage report.

Use your own products, prices and staff roles in a demo. If you also run a dairy plant, see the dairy ERP page for the procurement side, and the food manufacturing page for kitchens and batches.

Frequently asked questions

Does live pricing change the price a customer has already been shown?

No. A live price at the till is a short quote. If it moves before the bill is charged, the cashier has to accept the new price first, so nobody is charged a price that was not shown. In Test mode customers always pay the normal price.

Can the counter force staff to sell the oldest batch?

Yes, if the company chooses Enforce mode. The bill then waits until every batch-tracked line is fully allocated from batches on the shelf, and the batch prints on the receipt. Most shops start with Preview mode, which names the batch to hand over first without blocking a sale.

What happens to bills made while the internet is down?

The counter keeps billing offline and syncs the bills when the connection returns. If the server refuses a bill during sync, it is recorded once for the manager to review, and the counter only says the manager was notified after the server confirms it.

Can different outlets have different prices?

Yes, with the price lists and server pricing setting switched on, prices can be set per outlet. Live pricing is also switched on outlet by outlet. One central catalogue and stock ledger is shared, while billing, stock and shift cash stay with each outlet.

This page also answers

  • How does a POS decide which batch to hand over first?
  • Is dynamic pricing safe for a food counter?
  • Can a shop keep billing when the internet goes down?
  • How should a shop track udhaar or khata dues?

Run this inside one system

naffo.tech is an all-in-one business management and manufacturing platform for Indian SMEs: versioned recipes and BOMs, batch-wise material issue under FEFO, yield, by-product and reason-coded wastage capture, in-process and finished-goods QC, batch traceability to dispatch, GST invoicing with e-invoice and e-way bill, and double-entry accounting that closes live.