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:
- Tap a product tile (or scan a barcode, or speak the name) → added to the bill
- Repeat for each item — taps are highly tolerant of fat fingers
- Tap a customer from the recent-customers strip (or skip)
- Tap "Cash" or "UPI" → bill is finalised
- 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:
| Method | When to use |
|---|---|
| Tile tap | Default; for high-frequency items |
| Search | For items not on the tile grid |
| Barcode scan | For inventory with barcodes; opens the camera |
| Voice | Hands 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:
- From a customer's history (or by bill ID), open the original bill
- Tap Return at the bottom
- Choose Full return or Partial return (pick lines and quantities)
- Pick the refund method (Cash, UPI, Adjustment to Udhar)
- 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.returnevent 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