🏬 Viewing All Shops — Read-only mode (switch to a specific shop to make changes)
--:--
AD
Admin
Administrator
🔒
Unauthorized Device
This device has not been registered to access the POS system.
Please use an authorized store terminal.
🔑 Administrator Device Activation
Loading users…

Current Order

0
🛍️

No items yet

Tap a product to add it

Show
Product SKU Category Price Cost Stock Status Actions
🔧 Repair Jobs
🔧 Repair Jobs
No repair jobs yet.
Click + New Job to start.
🔧
Select or create a repair job
Click a job on the left, or press
+ New Job to get started.
Date & Time ↕ Receipt # ↕ Customer ↕ Items Total ↕ Payment ↕ Status Actions
📊 Reports & Analytics
Last 7 days
→
Sales Over Time
Revenue by Payment Method
Top 5 Products by Revenue
Top 5 Categories
Hourly Sales Heatmap (Avg by Hour of Day)
↩ Refunds & Returns
💰 Net Revenue (After Refunds)
Daily Sales — Gross Revenue
Sales by Day of Week
Discount Usage
Refunds & Returns
Product Sales Performance
#ProductCategoryUnits SoldRevenueAvg Price% of Sales
Sales by Category
Slow Movers (Least Sold)
New vs Returning Customers
Top Customers by Spend
Customer Order History
CustomerOrdersTotal SpendAvg OrderLast PurchaseType
Revenue by Payment Method
Payment Method Breakdown
Payment Transactions Detail
ReceiptDateCustomerMethodItemsTotal
Stock Status Overview
Low Stock & Out of Stock Alert
Inventory Value by Category
Full Stock Report
ProductSKUCategoryStockLow Stock AtStatusStock Value
Jobs by Status
Jobs by Device Type
Repair Revenue Over Time
All Repair Jobs
Job #DateCustomerDeviceStatusQuotePriority
Receipt # Date & Time Customer Cashier Items Subtotal Tax Discount Total Payment Actions
👤 Staff Member:
🏆 Performance by Staff
⏰ Hourly Sales Heatmap (orders per hour of day)
📅 Day-of-Week Performance
🏆 Top Products Sold
⭐ HPM Product Performance
💳 Payment Methods Used
🏷️ Discount Activity
🧾 Transaction Ledger
Receipt #Date & TimeCustomerItemsSubtotalDiscountTotalPaymentHPM?Actions
💰 Sales Bonuses
📅 Today
🗓 Pay fortnight
🧭 Advisor — where the upsell bonuses are being missed, for the range above
👥 Staff Bonus Summary
StaffStandaloneComboDaily TargetAdjustmentsTotalBonus hoursAwards
📊 Demand Analytics — Staffing & Scheduling Intelligence
Use this data to plan staff rosters, predict busy periods, and optimise coverage across hours, days, and months.
🕐 Sales by Hour of Day
Peak hours = more staff needed
📅 Sales by Day of Week
Busiest days need full coverage
📆 Sales by Week of Month
🗓 Sales by Month
👥 Staffing Recommendations
PeriodOrdersRevenueAvg OrderDemand LevelSuggested Staff
🏆 Top Sellers & Demand Forecasting
See your best-selling products ranked by units sold, with projected demand for the next week, month, and quarter to help you plan your stock orders from overseas.
#ProductCategory Units SoldRevenue Avg/WeekProj. WeekProj. MonthProj. Quarter Current StockWeeks Left
📦 Reorder Alerts (Stock < 1 Month Demand)
📊 Top 10 by Units Sold
💰 Register Open/Close History
Cash reconciliation records from register close sessions. Shows expected vs actual amounts and discrepancies.
Filter:
Product Variant Sold Stock Now Request Qty Restock Status Supplier SKU Date Added
⏳
Loading today's sales...
--:--
📋 Today's Log
⏰
🏪 Shop · every till
Shop
Selling
Catalogue
Buying
Staff & screens
💻 This device
👤 Me
🗄️ Data

Shop Preview

How your shop appears across the app

Mr. Phone Taigum
Mobile Accessories Shop

Shop Details

Basic information about your business

Shop NameDisplayed in the header and on receipts
Tagline / DescriptionShort description shown under the name
Shop MarkShown top-left in the header, on the sign-in screen and in the browser tab when no logo is uploaded (Shop Logo below). MP by default; two or three letters, or an emoji
MP
Letters (MP)
or an emoji
Shop Logo & Browser IconYour logo: shown top-left in the header, in the shop preview and in browser tabs. Upload a square image; leave it blank to use the shop emoji.
MP
Phone NumberShown on receipts
Email AddressShown on receipts
AddressPrinted on receipts
🏬 Manage Shops
Add, rename or remove shops. Each shop has its own products, sales, repairs and settings.
Note: New shops are automatically set up with all products, images and POS tabs from the current store (stock starts at 0). Set this shop's prices in its products (Inventory) after switching to the new shop.
📋 Copy Products to Another Shop
Copy your full product catalogue — including variants, SKUs and prices — from one shop to another. Useful for setting up a new branch.
→
Options:

Tax Settings

Configure how tax is calculated at checkout

Tax Rate (%)Applied to all sales at checkout
Tax LabelHow tax is labelled on receipts
Tax Inclusive PricingIf on, prices already include tax
Off
Cash roundingCash sales and refunds are rounded to the nearest 5c (no 1c or 2c coins). The sale and its GST are not changed; the difference shows on the receipt.

Currency

Set the currency symbol used throughout the app

Currency SymbolDisplayed before prices

💳 Payment Methods

Customise which payment options appear on the POS checkout screen

Add New Payment Method
💡 Drag to reorder · Toggle to show/hide · The first enabled method will be pre-selected at checkout
Set up your receipt step by step — the receipt on the right changes as you type. When it looks right, press 💾 Save.

1 Your shop

The name and details printed at the top

Name on the receiptLeave blank to use the shop's name
ABNYour Australian Business Number
Phone
Email
Address

2 What's printed

Tap to show or hide each part

3 Logo optional

A black-and-white logo prints best on receipt paper

4 Messages

A line at the top and your thank-you at the bottom. Tap a suggestion to add it.

Top messageUnder the shop's details
Bottom messageThe last lines of the receipt

5 Look

Pick a style, or fine-tune it below

Paper80 mm is the usual receipt roll (the Epson TM-m30III takes it)
Fine-tune the text
Font
Text size
12px
DarknessDarker text reads better on receipt paper

6 Receipt printer (this device)

How this till reaches the printer: the Epson on the shop's Wi-Fi, a Bluetooth printer, or the print window

Manage Discount Codes

Add, edit or remove discount codes used at checkout


Add New Discount Code

🚚 Manage Suppliers

Add, edit or remove suppliers — set one as the default supplier on a product or repair part so Restock knows who to order it from


Add New Supplier

🔁 Restock defaults

For items without their own numbers: reorder when stock is at or below the reorder point, then order up to reorder point + order qty (js/inventory/restock-rules.js)

📂 Product Categories

The categories your products use, grouped by department — they appear here by themselves (an import, a new product). Add one ahead of time, rename (renames it on its products; an existing name moves them into it), drag to reorder, delete unused ones. Tick "🔧 Repair-triggering" on a department or a category a technician should be able to deduct against a Parked Sale ticket — everything else behaves as plain retail stock.

💡 Drag rows to reorder · Changes apply immediately to the product form · Renaming a category updates all existing products automatically · A category in use can't be deleted — rename it into another one to move its products

🏷️ Variant Group Presets

Reusable option lists (e.g. Phone Model, Colour) — build them once here, then apply them to any product's variant groups instead of retyping.

🎨 Colours and their dots

Every colour a variant can have, with the dot the matrices and the checkout draw for it: one colour, two tones, a pattern (glitter, glass, marble, carbon) or an emoji. Tap a dot to change it. A colour on a product with no dot yet is listed under "Needs a dot" and shows as a dashed "?"; two colours of one product that draw the same are listed under "Look the same". On a matrix, an admin's long-press (or right-click) on a dot opens the same editor. Archiving keeps past stock/sales records readable.

🧭 Sidebar Navigation

Choose which sub-tabs show in the left sidebar's Products, Repairs, and Restock sections. Hidden ones are still reachable from their group's main screen — this only controls the shortcut list.

💡 Changes apply immediately and sync to every device signed into this shop.

Accent Colour

The primary colour used for buttons and highlights

Choose ColourPick a preset or enter a custom hex value

Display Options

Show Stock Badges on ProductsDisplay In Stock / Low / Out labels
On

🧪 Beta Features

Early looks at upcoming changes — safe to try, off by default, switch back anytime

New navigation (beta)Sidebar nav for backend pages (Inventory, Reports, Settings…) instead of the top tab row. Point of Sale is unaffected.
Off

📋 Model Lists

The shop's own model names — case models (groups like "A36/56/37" allowed), protector models, repair models (one phone each). A product on a list shows them exactly as written: its matrix rows are the list, in this order.

🎛 Defaults for Everyone

How the POS behaves on every till, for everyone — unless a device or a person picks their own (This Device / My Preferences).

💻 This Device

Only this till / iPad — kept on this device, never synced. A person's own preference still wins.

📲 The app on this device

Add the till to the home screen: it opens from its own icon, in its own window, like an installed app.

🔤 This till's letter

In every new job number (RJ-A-0001) and parked ticket (#A1), so two tills never give the same number. Set once per till.

🖼 Product images

Where this till keeps its copies of the product images, so each picture is downloaded once. On Chrome / Edge they can go in a folder on this computer — and the folder can be copied to another till.

Also set per device

These already belong to this device only

🔒 Device Binding · ☁️ Cloud Sync connection · 🔐 Device Security · sidebar folded or open · checkout category folds · "follow the shop layout" opt-out

🎛 My Preferences

Only you, on every till you sign in to (saved with your staff record). Staff open this from their name → My preferences.

Users

People who can log in to this POS

Role Access

Tick the pages, tabs and actions each role can use — untick to hide them

🔒 Admin always has full access and cannot be restricted.
🔍 Duplicate Detection
Find and manage duplicate products by name, SKU, or similarity
Click Scan Now to detect duplicates.
💾 Device storage
What this till keeps on the device. A full till stops saving changes locally.
☁️ Cloud Sync (Firebase)
Connect this shop to Google Firebase. Data syncs in real-time across devices with built-in offline support.
Firebase Architecture:
⚡ Real-time sync — Firestore listeners push changes instantly across devices
📴 Offline-first — Firestore persistence caches data locally, auto-syncs on reconnect
🔒 Firebase Auth — email/password authentication with secure token management
⚖️ Last-write-wins — timestamp-based conflict resolution per record
🌐 Firebase Hosting — deploy with firebase deploy
Last synced: Never  ·  User: —  ·  Cloud project: —

🖼️ Product Image Optimization

Compress all existing product images to reduce sync size. Images are stored separately from product data for cloud sync.

📷 Repair photos

Repair photos and signatures are kept on this device. When signed in to Cloud Sync they are also backed up to the cloud, so the other tills can see them and they survive this device. Pictures over 1.5 MB always stay on this device.

🖼️ Product-image cache headers

Lets every till keep product images instead of asking the cloud each time one is shown. New images are uploaded this way; this sets it once on the images already in the cloud (admin, signed in). Safe to run again — images already set are skipped, and a stopped run carries on.

🛡️ Cloud security

Only accounts that are members of the shop can read or write its cloud data (Firestore security rules). The first till to connect becomes the owner; the owner adds any other accounts here.

Connect to cloud sync to see this till's access.

📌 Shop Layout (default for every device)

Set up the layout on this device — checkout tabs and pinned products, renamed/hidden tabs, tab & row order across the app, classic or new look — then save it as the shop default. Every device following the shop layout switches to it automatically, including new devices and new sessions.

Turn off on a counter that needs its own tabs. Changes made on a following device are replaced the next time the default is saved — or at the next page load / staff sign-in when "every new session starts from the shop default" is on. Sidebar collapsed/expanded and the open cart are never changed.
💳 Square Integration
Connect Square terminals to take card payments from the POS. Each till charges only on its own terminal (pick it under 2.), so two staff on two devices never send a payment to each other's terminal. The server URL can be this POS's own address (it serves /api/square) or your Cloud Function.
1. Cloud Function URL
The URL of your deployed Firebase Cloud Function proxy.
POS Key (optional)
Must match the pos_key configured in your Cloud Function.
2. Location & Terminal Pairing
No terminal paired for this store.
Manual Pairing (if auto-pair doesn't work)
Find the serial number on the back of your terminal, or in Square Dashboard → Devices.
Terminal Tools
How It Works
When Square is paired, a green 💳 Square button appears alongside your other payment methods at checkout. Selecting it and pressing Charge will push the amount to your physical terminal. The customer taps or inserts their card, and the POS waits for confirmation before completing the sale. Cash and other payment methods continue to work normally.

🔐 Trusted Device Management

Control which devices can access the POS system. Untrusted devices are blocked at the lock screen.

Device Verification When ON, untrusted devices are blocked. Turn OFF temporarily to set up new devices without the lock screen.
On
This Device Status Checking...
Master Activation Password Used to register new devices. Share only with trusted managers.

👤 Staff sign-in in the cloud

Where it is set up, the cloud knows which person is at the till, not only which shop.

📱 Active Trusted Devices

All devices registered to access this POS. Revoke access to deactivate a device remotely.

Click "Refresh" to load devices

⚠️ Security Notes

• The device guard uses a cryptographic token stored in the browser's localStorage.

• Clearing browser data will deactivate the device and require re-activation.

• Revoking a device takes effect the next time that device connects to the internet.

• The master password is hashed (SHA-256) — the plaintext is never stored.

• Staff cannot bypass the guard by typing a URL — the guard blocks all content.

🔍 Debug Info

Technical details for troubleshooting sync issues

Click Refresh to load
🔒
Admin Verification Required
Enter your admin PIN to access Data Management. This area contains permanent, irreversible actions.
📦 New product from a supplier line
Proposed from the supplier's wording — check every field. Stock starts at 0; the order adds to it.
Device photo