—
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
| Machine | Alert | Time | Status |
|---|---|---|---|
| No recent alerts | |||
Today's routes
| Route | Driver | Stops | Status |
|---|
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
| ID | Location | Customer | Type | Make / model | Firmware | Route | CR # | Cash | First dial | Last restock | Last dial | Status |
|---|
—
Products
—
Drinks
—
Snacks
—
Food
—
GST Free
| Product | Code | Barcode | Brand | Family | Mushiny | RRP | Cost | Margin | GST | Flags |
|---|
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—
—
Active lanes
—
DEX mismatches
—
Pending changes
—
Machines
| Machine | Customer | Location | Slot | Product | VMS price | RRP | DEX price | Status |
|---|
—
Gross revenue
—
Total commission
—
Net revenue
—
Commission rate
—
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
| Machine | Revenue | Urgency | Last 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