Docs
On your phone
POS at the counter

POS at the counter

The POS is the most polished surface on thola mobile, and the one most users open first. The design goal is brutal: a bill should take 9 seconds from "next customer" to "printed receipt", on a busy counter, in any language.

This page walks through the actual flow, plus the special features (voice, barcode, Udhar) that make those 9 seconds possible.

The 9-second bill

The fastest path:

  1. Tap a product tile (or scan a barcode, or speak the name) → added to the bill
  2. Repeat for each item — taps are highly tolerant of fat fingers
  3. Tap a customer from the recent-customers strip (or skip)
  4. Tap "Cash" or "UPI" → bill is finalised
  5. Tap "Print" → thermal printer prints in ~2 seconds

Total time on a practised counter: ~9 seconds for a 3-item bill.

Speed wins here:

  • Product tiles are pre-sorted by frequency-per-time-of-day — your morning chai tile is bigger between 7–10 AM
  • Customer auto-suggestion based on the time-of-day and recent visits
  • Single-tap payment buttons — no payment-method picker; thola pre-picks the most-used method per branch
  • No confirm dialog between tap-and-print

Nothing about that flow needs the network. It works at the counter even during a full ISP outage.

Adding products to a bill

Four ways:

MethodWhen to use
Tile tapDefault; for high-frequency items
SearchFor items not on the tile grid
Barcode scanFor inventory with barcodes; opens the camera
VoiceHands full; press-and-hold the mic

Voice quick-order

Tap the mic icon, say the name (single item or list), release. thola transcribes locally where possible and adds matching items. Voice recognises both the system product name and common nicknames you've set:

  • "Chai" → maps to Tea (regular)
  • "Bread, eggs, milk" → adds three items in sequence
  • "Two coffee, one biscuit" → quantities included

The voice flow defaults to your UI language. If your customer speaks something else, you can hold the mic and switch on the fly.

Barcode scan

The barcode scanner is built on a permission-managed camera flow. First time you scan, you'll grant camera permission. Subsequent scans are instant.

If the barcode isn't in your product catalog, thola shows a "Unknown SKU" card with a suggested action: add it now (fast form), or skip and tag the bill for later.

Customers & Udhar (credit)

A bill can be assigned to a customer or anonymous. Assigning has two upsides:

  • Repeat-purchase suggestions next visit
  • Udhar (credit ledger) — sell now, collect later

Udhar is a simple ledger: every credit sale adds to the customer's balance; every payment reduces it. The customer card shows current balance and credit history.

To take an Udhar sale: complete the bill normally, then tap Udhar instead of Cash/UPI. The customer's balance updates immediately. No bank fees, no settlement delay.

Returns

A return creates a negative bill linked to the original. To return:

  1. From a customer's history (or by bill ID), open the original bill
  2. Tap Return at the bottom
  3. Choose Full return or Partial return (pick lines and quantities)
  4. Pick the refund method (Cash, UPI, Adjustment to Udhar)
  5. Confirm

The return:

  • Adds the items back to stock
  • Reduces revenue for the period
  • Tags the customer's history with the return
  • Triggers a pos.return event the backend reconciles

If the original bill was sync-pending when the return is made (rare, but happens on shaky networks), both bills sync together as an atomic pair.

Stock-aware billing

The POS knows your stock levels. When you add an item:

  • If stock ≥ 10, no indicator (default)
  • If stock 1–9, a small yellow chip on the tile
  • If stock = 0, the tile turns grey but you can still bill (it auto-creates a backorder)

Backorders are listed under POS → Backorders. When stock arrives via a PO receipt, the agent prompts you to fulfil pending backorders in order.

Promotions

Promotions (defined under POS → Promotions in the web app) automatically apply at checkout. The bill view shows:

  • Original line price
  • Discounted line price (in green)
  • Promotion name applied (small tag)

The cashier never has to remember the promo. The agent matches eligibility, computes, and applies.

For more on promotions, see the POS Promotion Engine spec (opens in a new tab) (link forthcoming once we publish the partner spec).

Reconciliation at end of shift

At the end of every shift, the Counter Reconciliation screen lets you close out. It compares:

  • POS billed amount (system total)
  • Cash drawer total (you enter)
  • UPI / card totals (auto-pulled from the gateway)

Any discrepancy is flagged. You can:

  • Confirm the discrepancy (with a reason)
  • Adjust the cash drawer count
  • Defer to tomorrow (rare; flagged on the dashboard)

A clean reconciliation each shift keeps the Process score healthy.

Tax (India: GST)

For Indian workspaces, GST is applied per-product based on the product's HSN code + tax slab. The bill shows:

  • Subtotal
  • CGST + SGST (or IGST for inter-state)
  • Total

Place of supply is set per-customer. Invoices generated are GSTR-1 compliant.

Common questions

Can I have multiple till stations on one Wi-Fi? Yes. Each device runs independently; sync-v2 reconciles. The only thing that needs coordination is stock — and that's handled by event-sourced movements that always preserve order.

Can a cashier do partial-pay (half cash, half UPI)? Yes. Tap Split payment, allocate to two methods. The bill records both.

What if the printer fails? Bills are saved regardless. Hit Reprint any time from the bill detail. You can also email/WhatsApp the bill to the customer as a fallback — tap Share bill.


→ Next: Projects on the road