Dashboard
🏢
—
Active machines
💵
—
Revenue this week
⚠️
—
Machines need attention
🚫
—
Products sold out
🩺 Fleet health
not checked yet
Checks every machine for: no dial in 24 hours, card reader faults, and telemetry dialling in with no machine attached. Press Run check.
Quick stats
Customers —
Locations —
Active routes —
Active drivers —
Pending pog changes —
Machines critical —
Machines needing attention
Loading...
Recent alerts
MachineAlertTimeStatus
No recent alerts
Today's routes
RouteDriverStopsStatus
— customers
— locations
— machines
— locations
— machines
— need attention
— customers
IDLocationCustomerTypeMake / modelFirmwareRouteCR #CashFirst dialLast restockLast dialStatus
—
Products
—
Drinks
—
Snacks
—
Food
—
GST Free
Product Code Barcode Brand Family Mushiny RRP Cost Margin GST Flags
Routes
Select a route
Select a route to see its machines
0 machines selected
Run builder
Driver
Date
🗺
Build a run to see the route map
Stop order (drag to reorder)
Select machines and click Build run →
—
Stops
—
Est. time
—
~km
Planogram Choose a machine on the left
Last dial —
Dynamic par
loading…
Tab through:
Slot A1
🥤
Current
— SOH: —
Type to search — price and par auto-fill from product record
Dynamic par
Auto-adjust par for this lane
Stock level—
Markets
Select a market
🏪
No market selected
Select a market from the list or create a new one
—
Active lanes
—
DEX mismatches
—
Pending changes
—
Machines
Machine Customer Location Slot Product VMS price RRP DEX price Status
$0.20
—
Gross revenue
—
Total commission
—
Net revenue
—
Commission rate
Commission by customer
Loading...
P&L summary
By machine
Loading machine data...
—
Needs action
—
Refunded (30d)
—
Auto-reversed (30d)
—
$ refunded (30d)
Loading…
📋
Loading reconciliation records...
Purchase orders
Order in cartons · export or print per supplier · Mushiny inbound comes in Phase 2
Loading…
🤖 Active Mushiny orders
—
Generate pick list
Route / Run
Pick date
Pick summary
Select a route to preview
📦 Inventory Report
Excel
📄 Lane Report
CSV
One row per lane with sales and prekit picks for the period. Column names and order match the external report format.
From
To
🗑 Waste Report
On screen + CSV
Spoilt and damaged stock recorded by drivers at fill, in units and cost. Summarised by product; click a product to see which machines and lanes it came from.
From
To
💳 Cashless migration tracker
On screen only
Per-machine cash-ratio trend against your handling cost and margin defaults. Sorted Remove first, then steepest decline within each tier.
🪙 Coin mech float
On screen + CSV
Coin sitting in the tubes across the fleet, straight from each machine's last CA17 tube report. This is float, not takings — it is company money held in the machines.
🧾 Sales Report
Excel
📊 Machine Sales Summary
Live · filterable
🚛 Run Reconciliation Report
Excel
🔧 Firmware / Version Report
CSV
Current machine versions captured from DEX, grouped by customer — for planning firmware updates. Includes machines with no version reported so they can be checked manually.
💰
—
Gross revenue
🤝
—
Commission paid
📦
—
Units sold
🏧
—
Avg per machine
Revenue by machine
Top 10
Loading...
Revenue by customer
Loading...
Top products by DCR
Daily consumption rate
Loading...
Machine performance
MachineRevenueUrgencyLast fill
Reconciliation summary
Loading...
Loading...
📥 Bulk machine import
Create machines, link them to locations, and build their planograms from a spreadsheet (CSV). One row per lane. Always previews before writing.
💰 Cash bag mode
How drivers bag cash from machine collections
Each machine gets its own bag labelled with the machine ID
📱 Driver app versions
Reported at every app start. A driver missing after a deploy hasn't fully closed and reopened the app.
—
🪙 Coin mech float alert
Alert driver when float drops below threshold
Alert at 20%
5%25%50%
Override per machine in machine settings
💳 Payment types
Default for new machines
Override per machine in machine settings
📋 Reconciliation
Variance alert threshold
$ flag as investigate
Cash variances above this amount are flagged for investigation
💳 Commission
Card cost per unit
$ per sale
Embedded card-processing cost baked into the sale price (post-surcharge-ban). Deducted from the commission base only — sales and reporting figures are unaffected.
Deductions from the commission base
Applies to every customer unless switched off on their record. Refunds are deducted ex GST and only once paid. Write-offs are priced from planogram cost and accrue from the next fill — earlier wastage isn't backdated. Check your site agreements permit these before switching them on.
⚡ Server summaries
Small copies the server keeps so these pages download far less. They give the same figures; each is only used while the server keeps it up to date, otherwise the page reads the full records as before. Switch one off if its figures ever look wrong, and tell Keith.
📊 Margin thresholds
Controls how margin % is colour coded across products, planograms and reports
🟢 Green — healthy margin
Margin at or above this % shows green
%
🟡 Amber — watch margin
Margin at or above this % (but below green) shows amber
%
🔴 Red — low margin
Margin below amber threshold shows red
< 50%
Preview:
📱 Driver app controls
These settings are pushed to all driver devices. Drivers cannot change them.
📷 Machine photo frequency
Require a machine photo every N fills. Also triggers when prices change.
📋 SOH audit frequency
Require a full SOH stocktake every N fills. DEX data pre-fills counts where available.
🗺 Routing intelligence
Rules used to auto-flag machines and calculate route urgency
⏱ Avg fill time
10m 15 min 30m
Used to estimate route duration
📅 Max restock interval
42 days
Flag machine when approaching limit
📊 DCR window
30 days
Rolling window for daily consumption rate
🔮 Forward planning
5 days
Flag machines predicted to sell out within this window
📉 Empty threshold
25 %
Flag when this % of slots are at zero
🚫 Sold-out definition
Flag when ALL lanes of a product are empty
📊 Dynamic par levels
How it works
📅
Only counts days the machine was actually selling. Each day is checked — if at least 1 unit sold, it's a trading day. Days with zero sales (weekends, public holidays, Christmas shutdowns, school holidays, or if the machine was broken) are completely ignored. This keeps par levels relevant to when the site is actually open.
📈
Calculates how much each product sells per trading day. It looks at the last 6 weeks of DEX data, counts total units sold, divides by the number of trading days, and arrives at a daily sales rate for each product in each lane.
🔄
Sets par to cover the gap between restocks. Daily sales rate × days between services × safety buffer = suggested par. If a product sells 5 units per trading day and the machine is serviced every 7 days, par is set to 5 × 7 × 1.2 = 42. The service interval is automatically calculated from actual restock history — visible on each machine's planogram page.
🛡
Safety rules before any change is made. A machine needs at least 4 weeks of DEX history and 14 actual trading days before the engine will touch it. Newly introduced products are also protected — par won't be adjusted until the product has been in that lane long enough to have meaningful data. Par never drops below the floor setting regardless of what the data says.
🕑
Runs automatically at 2am every night. You can also trigger a manual run anytime using the button below. Every change is logged in the machine's audit trail with the full working — daily rate, trading days counted, and what par was set to.
💡
Par advice on the planogram page. Whether or not the engine is switched on, every night it works out a suggested par for each lane — units sold per calendar week × service interval × safety buffer, never below the floor or above capacity — and shows it on the planogram. It changes nothing. A machine with a long closure (Christmas, a breakdown) or a sharp change in sales is flagged and its advice is held back, so holidays do not distort it.
🎛
Opt out per machine or per lane. On any machine's planogram page, use the Dynamic Par toggle in the toolbar to exclude that machine entirely. Inside the slot panel, uncheck Dynamic Par to lock that specific lane's par and prevent the engine from touching it.
🔄 Service interval
7 d
Days between services — the key driver of par level. Par = daily sales × this × buffer.
⏱ Min data days
28
Days of history before first adjustment
📈 Min readings
20
DEX readings required
📅 Data window
42 d
History window (4–6 weeks)
🛡 Safety buffer
20 %
Added above DCR × interval
⬇ Min par floor
3
Par never drops below this
📅 Closure flag
5 d
This many days in a row with no sales = closed; advice held
📉 Sales shift flag
35 %
Last 2 weeks vs before: a bigger change holds advice (0 = off)
Last run: never
M-001
Machine
Overview
Service history
Fault log
Events & alerts
Sales feed
Cash & cashless
Stock snapshot
Raw DEX
Audit log
📷 Photos
🔌 Test & Tag
Settings
Machine info
Performance (last 30d)
Notes
Loading…
Loading…
Loading…
Recent sales · derived from dial-to-dial vend deltas
Times are dial times — sales are the change between consecutive dials, not individual transaction timestamps.
Payment breakdown — since last fill
—
Revenue (DEX vends)
—
Units filled
—
Last fill date
ℹ DEX cumulative totals (since machine reset) available in the full reconciliation records
Current stock levels from last fill. DEX vend data shown where available.
The machine's most recent dial, exactly as the board sent it.
Loading…
All changes to this machine, logged automatically
Select a machine to view its audit log
Fill photos
Photos taken by drivers at each service visit
Loading photos…
🔌 Test & Tag
Tested date
Expiry date
A fault job is raised automatically when this date passes.
Appliance tag number
Tested by
Your name & tester tag come from your user profile (Settings).
Tester tag number
Machine ID
Linked location (site)
The site name is inherited from this location. Changing it moves the machine to a new site.
Position within site
Route
Allergen restrictions — block slotting products flagged with these allergens
When any are on, the planogram refuses to save a product flagged with that allergen into any slot on this machine.
Storage
Commission — overrides the account rate for this machine only
Monthly sales threshold ($) — overrides the account's threshold for this machine only. Empty = use the account's.
Machine type
Make / model
Customer (from location)
Inherited from the linked location — change the location to change the customer.
Cash type
Windcave CR Number
The active CR that routes incoming DEX/card data to this machine. Changing it here re-routes the data in one step — the old kit is retired and the new one linked together, so the machine never goes dark in between. All DEX history stays with the machine.
Service interval (days)
GPS Latitude
GPS Longitude
Install date
Warranty expiry
Dynamic par
Auto-adjust par levels for this machine
When off, excluded from nightly dynamic par run.
Service interval
days between services
Overrides the global setting for this machine only.
📋 Copy planogram from another machine
Copies the layout, products, prices, pars and capacities from a source machine onto this one — but only if every lane the source uses physically exists here. Stock on hand is NOT copied (it's this machine's real stock, set by the next fill). This machine's current setup is archived first, same as Clear, so it can be restored.
🧹 Clear planogram — machine returned to the warehouse
Strips the machine's setup so it can be rebuilt for a new site. Sales, cash and reconciliation history are never touched. A copy is archived first, so this can be undone.
Type the machine number to confirm: