MilkGo
/User Guide
User Guide

08. Counter Sales — Walk-in Customers

The Counter screen is for walk-in sales: a customer comes to your shop / mandali / tabela and buys milk on the spot. This is different from the daily delivery flow.

Before you start

  1. 03-products.md — at least one product
  2. 05-customers.md — customers (set type = Counter or Both)
  3. Optional: 11-whatsapp.md to enable counter-sale WhatsApp updates
  4. Optional: NFC tags bound to customers — see 05-customers.md

Where to find it

Bottom navigation → Counter (shopping-cart icon).

The Counter screen at a glance

Three areas:

  1. Top — today's summary cards — Sales (₹), Customers (#), Items (#)
  2. Middle — search / NFC scan / customer pick — find who's at the counter
  3. Bottom — product grid + cart — tap products, build sale, confirm

Recording a sale

  1. Find the customer.
    • Type their name, code, or phone in the search box, OR
    • Tap the customer's NFC tag against the back of your phone, OR
    • Pick from "recent sales" if they bought minutes ago
  2. Add products to the cart.
    • Tap a product tile → it adds 1 unit to the cart.
    • Tap again to add another unit.
    • Or tap the qty buttons in the cart to fine-tune (1, 2, 3 …).
    • For products with variants, tap the parent → variant picker opens → pick size.
  3. Review the cart.
    • Each line shows product, quantity, unit, price.
    • Total at the bottom.
  4. Tap Confirm Sale.
    • The sale is recorded. Today's summary updates immediately.
    • If WhatsApp is enabled, the customer gets a counter-sale update.

That's the full flow. Most sales finish in under 30 seconds.

Per-sale WhatsApp toggle

Above the cart you'll see a Send WhatsApp update to customer switch.

  • On (default if your owner-level WhatsApp is on) — customer gets a WhatsApp confirmation
  • Off — silent sale, no message

This is per-sale. Useful when a regular customer asked you to stop pinging them, but you still want the sale recorded.

The owner-level toggle (Settings → WhatsApp Notifications → Counter / pickup update) controls whether this row even appears. If WhatsApp isn't enabled in your plan, no toggle, no message.

Today's recent sales list

Below the search box (when no customer is selected), you'll see today's sales — most recent first. Each card shows:

  • Time
  • Customer name + code
  • Products bought
  • Total amount

Tap a sale card to open the Sale Detail drawer with two actions:

Edit a sale

Tap Edit. The customer is auto-selected and the cart is pre-filled with the original items. Change quantities, add or remove items, then tap Save Changes. The sale (and the bill) recompute automatically.

Cancel a sale

Tap Cancel Sale → confirm. All items go to "skipped", the bill amount drops accordingly, and the row disappears from the recent list.

Edits/cancels work on any bill state — generated, sent, partial, paid. If the bill was partly paid before cancel, the leftover credit moves automatically to the customer's advance_balance (you'll see it on their khata).

Search shortcuts

The customer search box matches:

  • Name (partial) — "ram" finds Ramesh, Ramila, Rambhai
  • Customer codeC103
  • Phone — last 4 digits

Plus the customer card shows their pending balance in red — useful for nudging them to pay before they walk out.

NFC fast checkout

If you've stuck NFC tags on customer milk-cans / boxes:

  1. Tap their tag against the back of your phone.
  2. The customer is auto-selected.
  3. Add products → Confirm.

Total time: ~5 seconds. Works on the MilkGo Android app and Chrome on Android (HTTPS). Doesn't work on desktop browsers (no hardware).

→ Bind a tag from the customer profile — see 05-customers.md.

Today's summary cards

The 3 cards at the top update live:

CardWhat it counts
SalesTotal ₹ collected today (across all counter sales)
CustomersUnique customers who bought today
ItemsTotal product lines sold (Buffalo Milk × 1 + Curd × 1 = 2 items)

Useful at end-of-day to know what came in. The numbers reset at midnight.

What gets billed

Each counter sale becomes part of the customer's monthly bill for the month it occurred:

  • Counter line item appears on the bill alongside any home deliveries.
  • Bill amount = sum of all delivered subscriptions + all counter sales − any adjustments.
  • Customer can pay the whole bill at once, or pay each counter sale on the spot.

If you want a counter customer to pay immediately at the counter (cash, no monthly bill), you can record a payment right after the sale — see 10-payments.md.

Tips

  • Build a small product grid. 4–8 most-sold products is enough. Variants hide behind their parents.
  • Use NFC for regulars. ₹10/sticker pays for itself in saved time.
  • Train your staff on the per-sale toggle. They might mistake "WhatsApp off" as "sale didn't go through" otherwise.
  • Edit/cancel right away. If a customer changes their mind, edit before they leave — recompute is instant. Catching errors a week later still works, but causes more confusion.

Common mistakes

MistakeFix
Wrong customer selected — confirmed by accidentTap the sale in Recent Sales → Edit → Cancel → start fresh with the right customer.
Didn't add a product to the cartTap Edit on the sale → add the missing product → Save.
Customer paid right then but no payment recordedOpen their bill / khata → Record Payment with method = Cash.
WhatsApp toggle was off — customer didn't get the messageSales without WA aren't recoverable later — but you can manually re-send the bill from the Billing screen any time.

What's next?

Once your counter is running, layer on the rest:

Related upstream