⏱ Clock in / out
Enter your PIN — the till knows if you're starting or finishing. Your boss sees your hours in NiagaKit for payroll.
On shift now
Today's clock-ins
Custom / off-menu item
Current order
Tap ✎ on a cart line to note which item it's for (e.g. "less sweet" on the matcha, not the chocolate). Payment opens on its own screen with change calculation.
Dine-in tables
Manage tables
Tap a free table to start its order. Tap a busy table to add items, take payment, or print its ticket. A table frees automatically when its bill is paid.
Open orders & pre-orders
| # | When | Type | Customer | Items | Total | Paid | Actions |
|---|
📅 Team calendar: click GCal on a pre-order, switch the calendar dropdown to your shared team calendar and save — the whole team sees what to prepare and when. Or export the .ics and import it into the team calendar (Google Calendar → Settings → Import & export); re-importing updates events instead of duplicating.
Completed today
| # | Time | Type | Items | Total | Paid via |
|---|
Receipt history
| Receipt / Order | Date & time | Type | Customer | Items | Total | Paid via |
|---|
Every completed transaction lives here — search it, reopen it, reprint or email the receipt.
Start a shift
Open a shift at the start of the day, then close it at EOD to settle the drawer against the card terminal, cash, and online transfers.
Past shifts
| Closed | By | Sales | Over/Short |
|---|
📦 Products
Import menu from CSV
Works with a StoreHub-style product export — it reads Product Name, Category, Tax-Exclusive Price and Price Type columns. Variable-price items (e.g. delivery fee) will ask for the price at the till. "Service Charge" rows are skipped — KedaiPOS computes that itself.
Add product manually
Sizes with their own price (Pandan Yam 6"=145 / 8"=170) go above. Modifier options for this product appear once you create modifier groups below — tick only the options this product offers (e.g. an iced-only drink: tick just "Ice"). Leave all unticked to use the category default. Cost feeds the profit report.
Modifier groups (variants)
| Group | Type | Options | Categories |
|---|
Single choice = pick exactly one (Sweetness: Standard / Less / Extra). Multi choice = pick any (Add-ons). Tapping a product in a linked category opens the options sheet; the first option of a single-choice group is the default (usually "Standard"). ✎ edits a group. To make a drink ice-only or hot-only, edit the product and tick just the options it offers.
Product list
| Product | Category | Price |
|---|
🎁 Combos / bundles
| Combo | Items | Price | Saves |
|---|
Combos appear as 🎁 tiles on the sell screen. Tapping one adds its items to the cart at the combo price — the discount is split across the items so per-item COGS, stock counts and reports stay accurate.
📊 Reports
Sales summary
By payment method
By order type
By category
Top items
The CSV export is line-level (one row per item with the order's charges) — it opens in Excel/Google Sheets and can be keyed or imported into your accounting flow, including NiagaKit's records.
Profit & basket analysis (selected date range)
☕🍰 Sales mix & margin by category
📋 Menu engineering — what to push vs fix
Most/least profitable items
Popular mix & match (item pairs)
Insights — how to lift sales & basket size
COGS comes from each product's Cost field (set it in Products, or pull from NiagaKit recipes when both apps share a browser). This is the profit lens — high revenue with thin margins is the trap; the insights look for attach-rate and bundle opportunities to raise sales per bill.
⚙️ Settings
Business / receipt details
Charges
SST applies on (subtotal − discount + service charge), per Malaysian F&B receipt convention — service charge is itself taxable. Service tax registration is mandatory once F&B turnover passes RM1.5m/year; below that it's optional. All data stays in this browser (localStorage) — nothing is uploaded.
Manager access
When set, the Products, Reports and Settings tabs ask for this PIN — staff can take orders, run tables and close the shift, but can't change the menu, prices, or see full reports. Tap 🔒 Manager in the top bar to re-lock. Honest limit: this is a convenience gate to stop casual changes, not bank-grade security — anyone technical could bypass it in a browser. True per-user accounts need the hosted version (see note below).
Data safety / backup
All data lives in this browser — a cleared cache wipes it. Keep backups.
Daily summary to owner
At shift close, a formatted day summary (sales, orders, by payment, over/short) is sent via your webhook (kind=daily_summary) — or copied for you to paste if no webhook. Route it to WhatsApp/email in your Make scenario. The team stock-count message lists each cake's remaining slices with a prep hint for the kitchen — copy it or send to WhatsApp.
Integrations — auto-calendar & email receipts
One-time Make setup (~15 min): create a scenario starting with Webhooks → Custom webhook (paste its URL above) → add a Router → branch 1: filter kind = preorder_event → Google Calendar → Create an Event (map title, startLocal, endLocal, details, your shared team calendar) → branch 2: filter kind = email_receipt → Gmail → Send an email (map to, subject, text). Failed sends queue here and retry automatically.