Skip to content

SaaS vs Custom

Optometrist & Eyewear Store Software — Prescription Validity Tracking, Multi-Location Frame Inventory, Lens Lab Order Automation, Contact Lens Subscription Auto-Ship, Medicare EasyClaim Integration, AHPRA Optometrist Tracking, Generic Optical Software vs Custom Platform

All articles
👁️ 💾 💊

Optometry blends eye science (prescriptions, validity, clinical notes) + retail (frame stock, lens orders, contact lens subscriptions) + Medicare claims. Generic optical software handles checkout. Custom platform handles the blend. AU compliance (AHPRA, Medicare optical items) + stock syncing across 3+ locations + auto-ship contact lens subscriptions + prescription expiry tracking = $280k year-1 ROI.

Why Generic Optical Software Misses the Mark

Optometry is a weird retail beast. You're not selling frames like a fashion boutique (one-off transaction). You're managing: clinical eye tests (refractive error, ocular health, prescription issue), prescription data (sphere, cylinder, axis, pupillary distance, validity window), frame inventory (across 1–5 locations, SKU tracking per store, restocking), lens laboratory orders (progressive, tinted, photochromic, coating orders, turnaround), contact lens subscriptions (auto-ship monthly, supplier management, backup stock), and Medicare optical items (EasyClaim integration, item-number claims, AHPRA optometrist tracking). A standard point-of-sale (EPOS) sees "frame + lenses = $599 sale." It doesn't know: prescription valid for 24 months (expires 2027), customer due for contact lens reorder (already 3 days late), frame inventory at Chatswood location (down to 1 unit, need restock), optometrist Dr Sarah (AHPRA reg 12345, 8am–5pm Tuesday–Friday) not rostered (system can't create slot).

Three independent optometries (Brisbane, Sydney, Perth; 3 locations each, 45 staff, $280k monthly revenue, 60% frame + lens sales, 25% contact lens subscriptions, 15% clinical eye tests) run generic optical EPOS systems (Lightspeed, Shopify Plus, custom PHP-era software). Monthly breakdown: 800 frame+lens transactions × $599 = $479k gross revenue. Behind the scenes: prescription validity checking (manual; staff asks "when did you last visit?" [guessing, 40% recall accuracy]). Frame inventory: each location tracks spreadsheet (no sync [stock phantom orders, overages, stockouts [1–2 stockouts/week, $150 revenue loss/event = $600/week = $31k/year lost]).). Lens lab orders: phone call to supplier (turnaround 5–7 days, no automation [capacity lost: customer returns Tuesday, "custom lens order, ready Friday [actually not ready until Monday, customer upset, no workaround]).). Contact lens subscriptions: auto-ship logic in Shopify (crude [ships same SKU every month, doesn't check customer power changed [script change, customer gets wrong RX lenses, returns shipment [lost margin + churn])].). Medicare EasyClaim: manual form-fill (optometrist does eye test, hands spreadsheet to administrator, admin manually types item numbers into Medicare portal [15 min/claim, 40 claims/month = 10 hours/month = $800/month labor, 2% data-entry errors = 0.8 claims/month rejected [rework]]). AHPRA tracking: nonexistent (no mechanism to verify optometrist license [only intuition "Sarah should be allowed to create test slot"]). Result: revenue leakage $31k/year (stockouts) + $9,600/year (EasyClaim labor + rework) + contact lens churn $40k/year (wrong subscriptions) = **$81k annual friction.**

Six Features That Custom Beats Off-Shelf

1. Prescription Validity Tracking + Expiry Alerts

Generic EPOS: no prescription database (frame transaction logged [customer, frame SKU, price], prescription lives nowhere [stored in test printout, filed by patient [no digital link]). Customer returns 18 months later: "I'd like contact lenses." Staff checks file (finds prescription [maybe], unsure if valid [optometrist away], decides to re-test [extra 45-min slot = lost afternoon [revenue impact], customer annoyed [could've used existing RX]).

Custom system: prescription registry. Patient Sarah: tested 2024-03-15 (RX: −2.50 sphere, −1.25 cylinder, 180 axis, PD 63mm). System logs: validity window 24 months (expires 2026-03-15). Sarah returns 2025-12-20 (contacts request). System checks: RX valid [expires in 3 months, threshold green]. Issue contact lenses (no re-test needed, 15-min transaction vs 60-min, patient saves time, clinic saves slot). Sarah returns 2026-04-10: RX expired (system flags [staff alerted "Sarah's RX expired 2026-03-15, recommend eye test before issuing lenses" [protocol compliance, liability protected])). Re-test booked (revenue: $60 test fee + $400 lens sale vs $0 if staff forgot [assumption default])). Three locations × 50 patients/week validity checks × 0.9 avoided re-tests = 45 avoided unnecessary tests/week = 2,340/year. Cost per test: $40 (staff time). Savings: $93,600/year. Plus: liability protection (audit trail proves RX validity was checked [AHPRA complaint defense]).

2. Multi-Location Frame Inventory Sync

Generic EPOS: inventory per location (Chatswood store: 240 frame SKUs, 1,200 units inventory on Lightspeed [shows 8 units of "Oliver Peoples 6005" available]). Reality: 3 units at Chatswood, 2 units at Parramatta, 3 units at Manly (no sync [staff doesn't know, customer asks "do you have this frame?" [staff checks local system only [yes, 8 available], checks shelf [nope, can't find it, customer left sad])]). Customer comes back (never knows Manly had 3 units [no notification]).)). Supplier reorder: manager looks at Lightspeed (shows 240 low-stock items [global view impossible, no ranking])). Bulk reorder arrives (Chatswood location floods with 40 SKUs × 10 units [kills stockroom, some units eventually expire [seasonal frames]])). Quarterly inventory write-off: 5% of stock [seasonal, shelf-life, theft] = $15k lost at three locations.

Custom system: live frame inventory across 3 locations. Sarah (Chatswood) searches "Oliver Peoples 6005." System shows: Chatswood 3 units (on shelf now), Parramatta 2 units (5 min drive), Manly 3 units (20 min drive). Sarah offers: "Want it now [3 here] or I can grab Parramatta's in 20?" Customer chooses Parramatta unit [Sarah triggers transfer [system logs], Parramatta reserved]). Stock accurate. Seasonal SKU low-stock alert: system flags "Oliver Peoples Autumn 2024" stock < 2 units (March → April, trend shows: 0 units ordered this quarter [recommend restock])). Manager orders: 5 units per location (data-driven, zero overstock). Inventory write-off: 2% of stock (vs 5%). Savings: 3% stock loss reduction × $280k revenue × 0.35 COGS margin = $29,400/year.

3. Lens Lab Order Automation + Turnaround Tracking

Generic EPOS: lens order phone call (optometrist tests [writes prescription], receptionist calls lens supplier [Progressive Vision]: "One pair, −2.50 sphere, −1.25 cylinder, 180 axis, PD 63mm, blue-light coating, ready Friday?"). Supplier says: "Ready Friday 5 pm." Receptionist writes note (Friday 5 pm delivery). Supplier delivers Thursday 4 pm (early, store closed, package sits until Friday 10 am [delivery delay logged, customer waits])). Or: supplier delays (Friday 5 pm promised, Monday 10 am actual [customer called Tuesday, upset, promised "delivery Friday," now says "Monday [lost trust])).). Multi-coating orders (anti-reflective + tint + blue-light) [add 2–3 days, no system tracking [customer assumes Friday, actually Wednesday of next week]). Stock backup: custom lens inventory (progressive blanks, base curves, coatings) held locally (takes $8k capital, inventory spoils if trends change).

Custom system: digital lab integration. Optometrist Sarah tests, writes RX into system (sphere, cylinder, axis, PD, coating: anti-reflective + blue-light, tint: none). System auto-creates lab order (sends via API to Progressive Vision supplier portal). Supplier reads order immediately (no phone call, no manual lag). Supplier confirms: ready 2026-06-20 4 pm (expected). System notifies receptionist: "Lab order #L-9847, ready June 20 4 pm." Receptionist calls customer (with actual date, certainty). June 20 arrives: lenses delivered 4 pm, receptionist texts customer ("Your lenses are in, ready for pickup Friday 4 pm onwards"). Customer collects (happy, no miscommunication). Multi-coating order (anti-reflective + tint): system bundles, lab sees order complexity upfront (builds in 1-day buffer, promises 3 days vs 2 [realistic, reduces delays]). Restock: system tracks lab turnaround times (75% ready in 2 days, 20% in 3 days, 5% 4+ days). Ordering optimized (don't over-stock slow-moving coatings, stock fast-moving blanks higher). Capacity planning: "Which supplier is fastest for progressive + tint? [system shows: SupplierA 3 days avg, SupplierB 2.5 days avg [negotiate volume with SupplierB])). Three locations × 80 lens orders/month × 1 day faster turnaround = 240 days acceleration/year = 40% faster customer delivery. Customer satisfaction +22%. Repeat purchase (lenses next season): +18%.

4. Contact Lens Subscription Auto-Ship (With RX Validation)

Generic EPOS: contact lens sales logged (customer Sarah buys monthly contact lens order, −2.50 power, 30 units). Shopify auto-ship: same SKU every month (ships −2.50 lenses [standard feature])). Reality: Sarah's RX changes (eye test 2025-06-01, new RX −2.75 power). Old order still pending (June 15 ship: −2.50 lenses [outdated RX [wrong power received [customer doesn't notice for 1 week [tries on, uncomfortable, complaints]))]). Refund issued (margin lost), customer switches to competitor (no re-engagement attempt). Second scenario: supplier stockout (supplier running low on −2.50 lenses [ships delay/substitution], customer receives wrong base curve [power correct, base curve 8.6 vs 8.4 [comfort issue]))). Auto-ship attrition: 8% churn/month (vs baseline 2% [subscription volatility [margins destroyed])).

Custom system: RX-aware auto-ship. Sarah buys contact lenses −2.50 power (auto-ship enabled). System links: auto-ship order → Sarah's active RX (−2.50, valid until 2026-06-01). June 1 auto-ship order generated (system checks: Sarah's RX valid? [yes]). Ships −2.50 lenses. June 15: Sarah has eye test, new RX −2.75. System updates: RX −2.75, validity until 2027-06-01. June 15 auto-ship next-month order triggered: system checks RX (now −2.75, valid). Edits order (changes SKU −2.50 → −2.75). June 30: ships updated power (customer receives correct lenses, no confusion, no refund)). Supplier stockout (mid-month): system alerts (low stock on −2.50, uses supplier API to check alternatives [sister power −2.25, −2.75], recommends: "−2.50 low stock, substitute −2.75 [contact customer for approval]" [proactive, prevents surprise])). Auto-ship churn: 2.5% (vs 8% generic [customer trust + RX accuracy]). Three locations × 180 contact lens subscriptions × 5.5% churn reduction = 49 retained subscriptions/year. Revenue per subscription: $360/year. Value: $17,640/year. Plus: customer lifetime value +$8,800 (retained subscriber pays longer).

5. Medicare EasyClaim + AHPRA Integration

Generic EPOS: eye test recorded (optometrist Dr Sarah notes "RX −2.50 sphere, −1.25 cylinder, patient Medicare eligible, item 11601 general optical benefit"). Receptionist manually logs Medicare claim (opens Medicare portal, selects item 11601, enters patient name/date, amount $138, submits [5 min task])). Medicare system processes (±2 days). Patient refund (sent to patient bank account [usually 5–10 days])). Errors: receptionist fat-fingers patient DOB (claim rejected, 3 days to rework [cash refund given [customer wait, admin chaos])).) AHPRA tracking absent: no mechanism to verify Dr Sarah is registered (assume she is, no audit trail [risk if Sarah license lapses [claim submitted with unlicensed provider [Medicare clawback + reputational risk]])).

Custom system: integrated EasyClaim + AHPRA. Dr Sarah (AHPRA registration 12345, validated on-boarding) creates eye test slot (system confirms Sarah active [license checked against AHPRA API [monthly sync])). Test completed: system auto-fills Medicare claim form (patient name, DOB, RX, item 11601). Claim submitted to Medicare API (instant, zero manual data-entry [zero typos]). Medicare returns: claim processed, refund issued. Patient bank account: within 24 hours (Medicare turnaround). Audit trail: claim #L-9847, optometrist Dr Sarah (AHPRA 12345), patient Sarah Jones (DOB 1985-04-20), item 11601, amount $138, submitted 2026-06-15, approved 2026-06-17). For compliance: prove claim legally valid (license verified, claim timestamped [Medicare audit-proof])). Three locations × 40 Medicare claims/month × 5 min saved per claim (no manual data-entry) = 200 min/month = 3.3 hrs/month = 40 hrs/year = $2,000/year labor savings. Plus: zero rejected claims (vs 2% generic [rework]). Rejected-claim recovery: $2,760/year (40 claims/year × 2% rejection × $138 claim value × rework labor)). Total: $4,760/year Medicare efficiency gain.

6. AHPRA Optometrist Roster + Slot Availability

Generic EPOS: scheduling board (Dr Sarah, Dr James calendar [Google Calendar [no system link]). Staff creates booking for Sarah: "Eye test, 9 am Tuesday" (Sarah's calendar: empty [free]). Reality: Sarah's license expired (nobody checked [system can't validate AHPRA]). Appointment confirmed (patient arrives Tuesday 9 am, Sarah can't legally perform test [reschedule chaos])). Second scenario: Sarah works Tuesday–Friday, 8 am–5 pm. Staff books test Monday 10 am (Sarah unavailable [booking conflict [staff manually checks calendar [friction])).

Custom system: AHPRA-gated roster. Optometrist on-boarding: system validates AHPRA registration (Dr Sarah, registration 12345, verified OK). System displays: Sarah licensed, expiry date 2027-03-15. Roster template: Sarah available Tuesday–Friday, 8 am–5 pm (set once). Availability calendar auto-populates. Booking: staff searches "Monday 10 am" (system shows: Sarah unavailable [grayed out] [staff defaults to Tuesday 9 am [instant]))). AHPRA license expiry approaching (2027-03-15, alert 60 days before [admin notified "Sarah's license expires in 60 days, request renewal"])). Renewal docs submitted (system updates: new expiry 2029-03-15). Booking compliance: every appointment verified (optometrist licensed on appointment date, audit trail immaculate [legal liability minimized])). Three locations × 3 optometrists × 10 weekly appointments × 5 min prevented rescheduling = 150 min/week = 1.3 hours/week = 65 hours/year labor saved = $3,250/year. Plus: zero unlicensed-provider bookings (liability prevented [$50k+ claim risk averted]).

Australian Regulatory + Medicare Compliance: The Stakes

**AHPRA Optometrist Registration:** All eye tests must be performed by registered optometrist (Board of Optometry, AHPRA). Booking an unlicensed person violates professional conduct (fine: $50k+, reputational damage). Custom system stores AHPRA registration, validates monthly, flags expirations 60 days ahead. Compliance: 100% slots staffed by registered optometrists (audit-proof).

**Medicare Optical Items:** Medicare covers: general eye test (item 11601, $138), optometry services (items 11600–11606). Claim requires: registered optometrist name, patient eligibility, correct item number. Manual claims: 2% error rate (wrong item, patient ineligible, DOB typo), rejected claims take 7–10 days to rework. EasyClaim API integration: zero data-entry, instant Medicare response, refund within 24 hours. Three locations × 40 claims/month × 12 months × 2% error rate = 96 errors/year × $138 claim value = $13.2k annual lost revenue (generic system)). Custom system: $0 lost (100% accuracy).

**State Health Department Regulations (NSW/QLD/WA):** Eye test records must be retained 5 years (digital storage + backup required, privacy/security compliance). Off-shelf EPOS: no automatic compliance (backup strategy manual, audit trail weak). Custom system: automatic 5-year archive (encrypted, audit-logged, HIPAA-adjacent data handling)). Compliance cost: avoided (no manual backup labor, zero audit risk).

Three-Location Optometry ROI: Off-Shelf vs Custom

**Current state (generic EPOS + manual processes):** $280k/month revenue. Inventory write-off (5% stock loss): $31,465/year. Lens lab delays (slower turnaround, customer churn): $8,400/year. Contact lens auto-ship churn (8% monthly): $17,640/year lost subscriptions. Medicare manual claims (labor + rework): $4,760/year. AHPRA compliance gaps (unlicensed booking liability): $50k risk (unquantified [assume zero here, but real]). Prescription validity gaps (unnecessary re-tests, patient friction): $6,000/year opportunity cost. **Total annual friction: $67,865 + $50k latent liability = $117,865.**

**Custom platform build:** $85k (3-location deployment, shared AHPRA API, Medicare EasyClaim, lab supplier integration). Year 1 ops: $3,600. **Year 1 cost: $88,600.** Year 1 value: inventory savings $31,465, lens lab optimization $8,400, contact lens retention $17,640, Medicare efficiency $4,760, RX validity savings $6,000 = **$68,265 direct value.** Plus: liability elimination ($50k prevented = $50k [soft value] + compliance peace-of-mind [priceless]). Total Year 1 value: **$118,265.** Net Year 1 ROI: $118,265 – $88,600 = **$29,665 profit.** Payback: **18 weeks.** Year 2+ (ops only): $118,265 – $3,600 = $114,665 annual profit. 5-year cumulative: $509,395 profit on $85k build.

Six FAQs

Why can't we just use Shopify for contacts + Lightspeed for frames?

Shopify + Lightspeed creates two systems (frames booked in Lightspeed, contact subscriptions in Shopify, zero linkage). RX changes (eye test updates prescription [Lightspeed [frames don't know]], contact auto-ship [still on Shopify, old RX [ships wrong power]])). Patient inventory query ("Do you have frame X locally?") [staff checks Lightspeed [says yes], checks shelf [says no, stock mismatch [manual lookup per location [friction])]). Medicare claim ("EasyClaim needs AHPRA-verified optometrist [neither system tracks [manual validation]))). Custom system = single source of truth (RX + frame stock + contacts + Medicare + AHPRA, all linked, one database).

Can we really save $31k/year on inventory?

Yes. Three locations × $280k revenue × 35% COGS (frame + lens cost) = $294k annual COGS. Inventory write-off (unsold, expired, theft): 5% generic = $14.7k/year. Custom system (synced stock, data-driven reorder) reduces write-off to 2% = $5,880/year. Savings: $8,820 + better inventory turn (less capital tied up in slow-moving frames, reinvest in fast-moving SKUs = $22,645 freed capital, working capital savings). Total: $31,465/year.

Do contact lens subscriptions really churn at 8% monthly?

Yes. Three locations × 180 contact subscriptions × 8% monthly churn = 43 churned subscriptions/month = 516/year. Cost per subscription: $360/year. Lost revenue: $185,760/year. Main churn drivers: (1) wrong power shipped (RX changed, system didn't notice, customer got uncomfortable lenses [returned, churn], (2) supplier stockout (substituted base curve, customer uncomfortable, canceled), (3) customer friction (needed to manually track reorder date, forgot, ran out, switched brand). Custom system (RX-linked, supplier integration, auto-notify): reduces churn to 2.5% monthly = $17,640 annual recovery (net new retention value + reduced refunds).

What's the actual cost of Medicare EasyClaim API integration?

Build: $12k (integrate Medicare portal API, AHPRA API sync, claim validation engine). Year 1 ops: $1,200. Year 1 value: 40 claims/month × 12 months × 5 min labor saved per claim = 2,400 min/year = 40 hrs/year = $2,000 labor savings. Plus: rejected-claim rework (2% rejection rate = 9.6 claims/year rework, 1 hr per rework = 9.6 hrs = $480 rework labor saved). Plus: compliance (zero unlicensed claims = $0 fine risk [vs generic 2% chance unlicensed optometrist slot booked = $50k penalty × 2% = $1k risk allocation per year [soft value]])). Total: $2,000 + $480 + $1,000 (risk mitigation) = $3,480 Year 1 value. Payback on EasyClaim: $12k ÷ $3,480 = 3.4 years (standalone ROI weak, but bundled with custom platform = free add-on).

How much does AHPRA compliance really matter for a small optometry?

Critical. Single compliance breach (unlicensed optometrist booked test, patient complains [AHPRA investigation], fine: $50k–$100k, reputational damage [local reviews + news = $200k+ lost business [small optometry can't absorb]). One breach = company destroyed. Custom system (AHPRA license validation, automatic expiry alerts, appointment gating) = zero breach risk. Cost-benefit: $85k build prevents $250k+ liability damage (5-year protection, 1 in 3 shot of breach without system [small optometry oversight risk, high]). ROI on AHPRA feature alone: prevent one breach ($250k value) ÷ $85k build = 2.9x ROI (single-feature break-even).

What's the real payback if we're only 1 location today?

Build: $85k (shared infrastructure, scales to 3 locations). Year 1 ops: $3,600. For 1-location optometry, value is proportional (vs 3-location: $68,265 value). 1-location: $22,755 annual value. Net Year 1: $22,755 – $88,600 = −$65,845 (negative). Payback: 47 weeks (break-even into month 12, profitability hits month 13). Start custom if: (1) planning to scale to 2–3 locations in 12–18 months (payback improves to 27 weeks at 2 locations), (2) revenue $100k+/month (friction meaningful), (3) contact lens subscription volume 100+ (auto-ship churn $10k+ addressable). Single-location optometry: consider platform pricing for 1-location discount, or start at 2 locations (payback 32 weeks). Book time to discuss location count, current EPOS pain points (inventory sync, Medicare claim labor, contact lens churn), AHPRA compliance gaps, lens lab turnaround targets, and 3-location optometry custom platform ROI.

The Bottom Line

Optometry is clinical (prescription, AHPRA, 24-month validity) + retail (frames, contact lenses, Medicare claims) + logistics (3 locations, lens lab orders, supplier management). Generic EPOS (Lightspeed, Shopify, older PHP systems) sees "frame = $599 transaction." It doesn't see: prescription validity expiry (80% of re-tests are unnecessary [reuse valid RX]), frame inventory phantom stockouts (3% weekly lost sales), lens lab delays (8-day turnaround vs 3-day possible), contact lens subscription churn (8% monthly, wrong power shipped), Medicare claim rework (2% error, $4.7k labor/year), AHPRA license gaps (liability unquantified, high-risk). Custom platform ($85k build + $3.6k ops/year): prescription registry (expiry tracking, re-test prevention), multi-location inventory sync (real-time stock across 3 stores, stockout elimination), lens lab automation (API to supplier, 3-day turnaround, no phone calls), RX-validated contact lens auto-ship (wrong-power churn eliminated), Medicare EasyClaim + AHPRA integration (zero manual claims, license verified). Year 1 value: $118.3k (inventory + subscriptions + efficiency + compliance). Payback: **18 weeks at 3 locations.** 5-year cumulative: $509k profit. Start custom if: (1) 2–3 locations with $100k+/month revenue, (2) contact lens subscriptions 80+ (churn addressable), (3) Medicare claims 30+ monthly (labor pain real), (4) frame stockouts happening regularly (inventory sync ROI clear). Chat with us about your optometry's location count, current EPOS friction, lens lab supplier, contact subscription volume, Medicare claim workflow, and custom platform fit, or check build pricing for multi-location optometry estimates.

Let us make some quick suggestions?
Please provide your full name.
Please provide your phone number.
Please provide a valid phone number.
Please provide your email address.
Please provide a valid email address.
Please provide your brand name or website.
Please provide your brand name or website.