Dashboard
No driver data
🏢
Active machines
💵
Revenue this week
⚠️
Machines need attention
🚫
Products sold out
Revenue — last 8 weeks
Weekly
Quick stats
Customers
Locations
Active routes
Active drivers
Open reconciliations
Pending pog changes
Machines critical
Machines needing attention
Loading...
Recent alerts
MachineAlertTimeStatus
No recent alerts
Today's routes
RouteDriverStopsStatus
Driver sync
No data from drivers
Waiting for driver app to push data
Completed stops received
No completed stops yet
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
Unplanned machines
3
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
M-001 Westfield L3 Breakroom
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…
Generate pick list
Route / Run
Pick date
Pick summary
Select a route to preview
📦 Inventory Report
Excel
🧾 Sales Report
Excel
🚛 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
🪙 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.
📊 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.
🎛
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
Last run: never
M-001
Machine
Overview
Service history
Fault log
Events & alerts
Sales feed
Cash & cashless
Stock snapshot
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.
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
Machine type
Make / model
Customer (from location)
Inherited from the linked location — change the location to change the customer.
Cash type
Windcave CR Number (view only)
The active CR that routes incoming DEX/card data to this machine. To assign or swap a kit, use the Windcave tab (or re-link on site from the driver app) — editing it here would not re-route the data.
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.