Counter · capture a sale

Selling at the counter.

From walk-in to printed invoice in under two minutes. This is the workflow every branch staff member runs dozens of times a day, so it's built to be fast — but every safety check is still there underneath.

1 · Open the form

From any page in the app, click + New sale in the sidebar, or visit /sales/new directly. The form is single-page — you fill it top-to-bottom and submit once.

2 · Pick the branch

Defaults to your assigned branch. Branch managers and above can switch — useful if you're covering for another outlet. Changing the branch resets the cart (because stock is branch-specific).

3 · Find or create the customer

Type a phone number or name into the customer search. Matches appear instantly with phone, last visit, and total spend. Click to attach.

If they're new, click + Create new customer at the bottom of the search results. A drawer opens — name is the only required field, though it's worth grabbing the phone too so recall and WhatsApp can reach them. Add date of birth + tags later if you want them in marketing cohorts.

Walk-ins without contact details are fine — leave the customer blank. The sale records as “Walk-in” and you can attach a customer later via the order page.

4 · Add items to the cart

One search box, four product types — frames, contact lenses, accessories, and services (eye-tests, fittings). Type to search, or click Scan to use the camera and read a barcode.

Each line shows the unit price (defaults to the SKU's selling price, editable), discount, GST rate (auto-filled from the SKU), and the line total. Tax math is automatic — CGST + SGST for intrastate sales, IGST for interstate (the form looks at the customer's state to decide).

Adding a lens package

Click Add prescription lenses below the cart. Pick from your active lens packages — CR-39, polycarbonate, progressive, blue-cut, photochromic, whichever you stock. The package's base price flows in; you can adjust per-line.

5 · Capture the prescription

If the cart has a lens package, the form shows an amber Heads-up reminder above the Rx panel. Open it, type SPH / CYL / AXIS for each eye, plus ADD for bifocal / progressive, plus PD.

Skipping the Rx when there's a lens package means the lab will print a job card with a missing-prescription warning — they'll have to call you back to confirm before cutting. Easier to capture it now.

For sunglasses, reading glasses, or contact-lens refills the Rx is optional. The form won't nag if there's no lens package in the cart.

6 · Quote or final order?

Tick Save as estimate / quote if the customer is comparing prices — they'll walk out with a printable quote, valid 14 days. No payment is collected, no inventory is decremented, no revenue recognised.

When the customer comes back to confirm, open the quote and click Convert to sale → next to the amber QUOTE badge. Inventory decrements now, royalty / management-fee accruals post if applicable, the badge disappears, and the standard payment + production flow takes over. The confirmed_at timestamp gets stamped to the conversion moment so DSR + sales reports pivot the revenue into today, not into the quote-creation date.

7 · Source & delivery

Two small fields with big reporting payoff:

FieldWhat it does
Customer sourceWalk-in, referral, social media, Google search, repeat, corporate, or other. Powers the customer-attribution report. Add a free-text note for referral/corporate/social so you can attribute to the specific person or campaign.
Delivery modeDefault: branch pickup. Switch to courier or home delivery to surface address fields (line1, city, state, pincode, optional landmark). Required when not pickup. Surfaces on the order detail page for the team handling dispatch.

8 · Salesperson attribution

Defaults to the logged-in user. If you're ringing up a sale on behalf of someone else (covering during a tea break, walking a customer through the system), switch the dropdown to the person who actually closed the deal. The dropdown shows everyone active at this branch.

Per-staff revenue rolls up in the Sales report — useful for commissions and incentives.

9 · Discounts

Three levels, applied in this order:

  1. Line discount — per-item, before tax.
  2. Order discount — flat ₹ off the total, after tax. Festive 10%, employee discount, etc.
  3. Social-share discount — flat ₹ off, after tax, recorded separately so you can measure how much your “post a story for ₹100 off” campaign actually costs.
  4. Coupon — type the campaign code the customer presented + the discount. Reports later show what each code brought in.
  5. Trade-in — customer hands over their old frame, you give them credit. Type a description (“Black Ray-Ban acetate, ~1 yr”) and a value. Doesn't enter inventory — handle the old frame separately.

Trade-in and coupon live in a collapsed + Trade-in or coupon disclosure below the salesperson row — uncommon enough that we keep them out of the way until you click. All four post-tax deductions stack in the order shown above; each caps at the remaining total so you can't accidentally drive the customer-payable negative.

10 · Promised pickup date

For orders with lens packages, type when the customer can come back to collect. This surfaces on the customer-facing email, the lab job card, and the order detail page. The lab uses it to prioritise cuts.

11 · Payment

Three modes:

ModeWhen to use
Pay fullStandard — customer settles the entire total now.
PartialCustomer pays a deposit, balance collected at delivery via the + Add payment button on the order page.
Pay laterNo payment recorded. The order is in the system, the lab can start cutting, you collect on pickup.

Pick a method (cash, UPI, card, bank transfer, cheque) and add a reference if you have one (UPI ref ID, card last-4, receipt number). Reference is optional but speeds up reconciliation.

Quotes auto-hide this section — no payment is collected for an estimate.

12 · Confirm

Hit Confirm sale →. You land on the order detail page with the order number (ORD-2026-NNNNN), status pill, and links to the invoice and job card. The inventory has decremented, the customer's “last visit” is updated, and an analytics event fires for the dashboard.

After the sale

Print the invoice

Click View invoice →. Full GST-compliant invoice with the customer's details, line-items, tax split, and payment summary. Browser print works — no PDF library required.

Print the job card

For orders with lens packages, the Job card → link gives the lab everything they need: customer first name (for the case label), full Rx, frame model + measurements, lens spec, coatings, tint, urgency notes. Zero financial info — the lab tech never sees prices.

Move production forward

Each lens line has its own production status — Pending → Sent to lab → At lab → Back from lab → Fitted. Click to advance. When every line is at “fitted” the order auto-promotes to Ready. When you mark Delivered, the timeline closes.

Add a note

Click + Add note on the order page to drop a free-text comment for the team. Shows up in the activity log with your name and timestamp. Useful for handoffs (“Customer called, prefers black case”) and discount approvals.

Process a return

On a confirmed, ready, or delivered order, click Process return. Pick line items, qty per line, per-unit refund, reason, and refund method; tick whether each unit restocks. The return gets its own number (RET-2026-NNNNNN), posts a refund against the order, and surfaces back on the original order page. Full walkthrough in the Returns & refunds doc.

Next up

Customers

Once you have a few sales recorded, the customer page becomes the centre of your recall + WhatsApp workflow.