Everything an optical store actually needs.
No six-vendor toolchain. No zapier glue. Every capability below is shipped, tested, and multi-tenant-safe — already running in production stores.
Retail floor
Barcode scan, splits, EMI/BNPL, Rx attachment, draft & recall.
One-tap silent printing to WebUSB, LAN (TCP) or Bluetooth thermal printers, with cash-drawer kick. PDF + email fallback via Resend.
Open/close shifts, cashier PIN switch, X/Z audits, float reconciliation.
Partial returns, restocking fees, store credit issuance.
Inline patient registration at the till — capture name, phone, Rx in 5 seconds without leaving the sale.
Patient Storefront (customer-facing website)
Public pages at opticpos.com/s/<your-chain> and /s/<your-chain>/<branch>. Each branch inherits the chain look-and-feel but can override hero, hours, address, and photos — one chain, many locations, zero duplication.
A GUI at /admin/storefront to edit everything on the public site: hero slides, services, FAQs, theme accent, hours, photos. No code, no CSS. Separate tabs for chain-wide defaults vs. per-branch overrides.
Every change saves to a DRAFT first. Preview the exact DRAFT page via a tokenised link, see a side-by-side DIFF of what you're about to publish, and only promote when you're ready. Tabs with unsaved changes stay highlighted so you never lose a tweak.
Up to 5 rotating hero slides per storefront, each with optional starts_at / ends_at dates. Launch a Diwali hero on Oct 29 and auto-retire it on Nov 5 — the site switches itself.
Pin up to 10 Q&A pairs and a top-of-page promo strip (e.g. "20% off all frames this weekend"). FAQs double as Google-indexable FAQPage structured data.
Mon–Sun open/close pickers that render on the landing AND feed Google's OpeningHoursSpecification JSON-LD, so your store hours show up directly in search snippets.
Interactive map pin for every branch. 20+ pins auto-cluster so dense cities stay readable. Visitors can type a postcode or neighbourhood — Nominatim geocodes it and the map ranks the 3 nearest stores by great-circle distance.
Visitors sign in via email + 6-digit OTP (zero passwords). Each tenant owns its own patient-visitor list — fully isolated from your staff user table.
Logged-in visitors can bookmark frames they like and come back to them later — a tiny loyalty hook that bumps repeat visit rates.
Once staff links an online account to a patient record, that patient sees every past Rx, order and visit from their phone — reducing phone calls to the store.
Visitors book an eye exam from the website. Staff see a live badge in the sidebar, filter the pending queue, and convert the booking into a real patient chart with ONE click — email, phone and consent flow through automatically.
Per-tenant sitemap.xml, robots.txt, canonical URLs, OpenGraph tags, and schema.org JSON-LD (Optician + BreadcrumbList + FAQPage + OpeningHours + GeoCoordinates). Your storefront is Google-ready from day one — capped at 45,000 URLs with priority-ordered emission so even a 500-store chain fits comfortably.
Per-tenant logo, accent colour, tagline and one-tap WhatsApp button rendered on every page — feels like your storefront, not a SaaS template.
Customers tap "Enquire" → captured in your CRM inbox with the product, customer phone, and any notes. Hand off to WhatsApp follow-up.
Clinical Rx
History, Rx, preferences, consent ledger (DPDP-ready).
Sphere · Cyl · Axis · Add · PD, multi-Rx timeline per patient.
Slot picker, reminders, no-show flagging.
Booked → ordered → fitting → QC → ready → delivered, with 10-item QC checklist and auto-remake routing.
A dedicated clinical view at /doctor — today's appointments, draft exams, recent patients, "Start new exam" CTA. Zero POS / inventory noise. Owner-optometrists can toggle between clinical and store workspace in one click.
Every patient gets a permanent QR code (P-XXXX-YYYYMM-NNNN) and a wallet-sized printable card. Scan at the till for instant lookup; hand to the customer as a loyalty memento.
Paid eye-tests automatically mint a 45-day wallet credit (tenant-configurable expiry). Cashier can redeem against the customer’s next spectacle purchase — a built-in retention loop, no marketing add-on needed.
Contact lens store
Every SKU tracked with brand, modality (daily / bi-weekly / monthly / yearly), material, base curve, diameter and power. Multi-variant support — one brand can hold hundreds of powers, all stocked and priced per store.
Purpose-built OD/OS form for sphere, cylinder, axis, ADD, base curve and diameter. Auto-copies from the last spectacle Rx where clinical values match — no double entry.
One-tap add-to-cart from a patient's active CL Rx. Stock drops automatically at the variant level, so a "-1.50 blue tone" order never eats into your "-2.00 clear" pile.
Give free trial pairs from a dedicated bucket, log fit assessment, and when the customer pays for their first order, the trial is auto-converted so nothing gets double-counted.
The system tracks how long each patient's current supply should last and nudges them via WhatsApp / email a week before it runs out. Built-in retention loop for a supply-driven category.
Low-stock variants, top movers by modality, trial-to-paid conversion rate — a single tile on the owner dashboard, no separate reports app.
Inventory & catalog
Barcodes, variants, tax rates, HSN codes, vendor links.
Per-store levels, transfers, reserved quantities on drafts.
Live feeds from regional and global vendor catalogs — automatic currency conversion (USD → INR), wholesale prices, stock, images. New vendor adapters added in days. Large vendor feeds refresh automatically overnight so your morning starts with today's prices.
Refreshing prices, cost and stock for thousands of vendor-linked frames used to freeze the screen. Now it runs in the background with a live "N/M" progress counter — keep working while it catches up.
Every vendor image served through a tokenised proxy — your customers never see the upstream supplier CDN in DevTools.
Raw supplier codes auto-rewritten with your own store prefix so customers can't reverse-engineer your supply chain.
Cashier snaps a frame, keeps ringing sales. Between 11 PM and 5 AM the platform runs the shot through a professional background remover, grades the result for quality, and drops the winners into a morning review inbox for one-tap approval. Failures come back with a reason so staff know exactly what to reshoot.
Upload a supplier PDF or slide deck — the platform scans every page overnight, isolates each frame photo, reads the SKU / brand / price, and hands you a preview grid the next morning. No manual data entry, no page-by-page slogging.
Queue every un-tagged frame in your catalog for AI tagging (shape, material, color family, style, gender, face-shape fit). High-confidence tags apply automatically; borderline ones land in a review inbox where staff approve, tweak, or reject in seconds. Zero blocking waits.
Built-in label sheet designer — print SKU barcodes or shelf-edge QR codes on standard A4 sheets.
Snap inventory frames on iPad, iPhone or Android — pinch to zoom, drag to crop, white-background auto-validation. Photo Cleanup admin tool spots legacy frames that need a reshoot.
Owner dashboard surfaces frames sitting on the shelf > 90 days (configurable). Ranks by tied-up capital so you mark down the worst offenders first.
Analytics
Customizable widgets, per-user layouts, goal tracking.
Top frames, slowest movers, hour-of-day revenue heat.
First-purchase cost, repeat-visit curves, cohort drill-down.
Per-vendor revenue, cost, margin and margin-percent over any window. Decide which vendors deserve your reorder budget.
Daily / weekly P&L summaries emailed via Resend on server-side cron.
Billing & multi-tenant ops
Starter and Pro plans billed monthly via Razorpay. Plan limits (stores, users, AI credits) enforced server-side across every API.
Manage every tenant from one screen — change plans, suspend, audit, impersonate, view payment history.
Hard tenant boundary on every collection. Cross-tenant reads return 404 by design, never 403.
Security & compliance
TOTP authenticator (Google Authenticator / Authy), auto-lock on inactivity, cashier PIN switch.
Installable PWA with 30-day Remember-Me sessions and 12-hour inactivity auto-logout for safe in-store use.
JSON tenant dump, point-in-time restore.
Every action signed & replayable. Customer-export CSV ready.
Integrations & AI
Receipts, review requests, digests, password resets.
Reads a single customer photo and returns face shape, PD measurement, and frame-fit scoring — surface best-fit frames to your floor staff in seconds.
A floating chat coach inside POS / Build-a-Pair. Cashier asks "what add-on for an office worker?" and the AI returns short, grounded recommendations based on the active cart and patient lifestyle tag. Claude Sonnet 4.5 by default.
Bulk background removal, product copy drafting, auto-tagging, and the AI Blog editor for SEO articles your store ranks for.
Push order / appointment events to any of your systems.
One-click sending of order confirmations, ready-for-pickup alerts, appointment reminders, birthday wishes, and bill copies — from your own WhatsApp Business number. Zero BSP fee, zero per-message cost, zero ban risk. Customisable templates per event.
Still curious? Walk through every feature yourself — no sign-up, no friction.
Start your free 14-day trial. No credit card required.
Join optical retailers across India who are modernizing their business with OpticPOS.