{{ pageTitle }}
{{ pageSub }}
180 vehicles · 9 depots · {{ todayStr }}
{{ st.num }}
{{ st.label }}
Scope this planning run
Pick the date and time window to plan, and which stations to include. The optimiser builds routes for every order due in that window.
1 · Plan date
{{ planDateStr }}
2 · Time window
3 · Stations in this run
Orders awaiting routing
{{ poolTotal }}
across {{ selectedDepotCount }} selected depots
{{ b.label }}{{ b.count }}
Optimising routes for {{ poolTotal }} orders
Packing loads into {{ vehicleCountStr }} vehicles across {{ selectedDepotCount }} depots
{{ o.title }}
{{ o.sub }}
Routes
{{ kpiRoutes }}
Vehicles used
{{ kpiVehicles }}
Total distance
{{ kpiMiles }}
Avg fill
{{ kpiFill }}
Deadline flags
{{ kpiFlags }}
Showing {{ kpiRoutes }} routes from your selected depots · full UK plan covers {{ poolTotal }} orders across ~47 routes.
{{ poolLeftCount }} orders unrouted - open a route to add them.
{{ r.vehicleReg }}
{{ r.depot }}
{{ r.stopCount }} stops · {{ r.milesStr }}{{ r.litresStr }} / {{ r.capStr }}
● {{ r.lateCount }} stop(s) past deliver-by
All stations across the UK. Click a pin or a station below to edit its vehicles and service area.
New station
{{ st.name }}
{{ st.vehCount }} vehicles · {{ st.areaCount }} areas
Linked vehicles · {{ selStationVehCount }}
Bulk storage · {{ selStationTankCount }} tanks
{{ t.id }} · {{ t.fuelName }}{{ t.levelStr }} / {{ t.capStr }}Low
{{ selStationStockStr }} in storage across this depot.
No bulk storage recorded at this station.
Service area · {{ selStationAreaCount }} districts
Add a district not shown on the map:
Bulk fuel held in storage across every depot, plus what is loaded on tankers right now.
Total fuel in storage
{{ stockKpis.totalStr }}
of {{ stockKpis.capStr }} capacity · {{ stockKpis.pctStr }} full
Change since yesterday
{{ stockKpis.deltaStr }}
net movement across all depots
Depots
{{ stockKpis.depotCount }}
reporting bulk storage
Variances flagged
{{ stockKpis.flaggedToday }}
recent readings over threshold
Supply by fuel type
{{ f.name }}▲ ▼ {{ f.deltaStr }}
{{ f.curStr }}
of {{ f.capStr }} · {{ f.tanks }} tanks · {{ f.pctFull }} full
Storage by depot
{{ d.name }}
{{ d.tankCount }} tanks · {{ d.curStr }} / {{ d.capStr }} · {{ d.pctStr }} full
{{ t.id }} · {{ t.fuelName }}{{ t.avgStr }}{{ t.levelStr }} / {{ t.capStr }}Low
No depots match that search.
Stock on tankers
{{ tankerKpis.totalStr }}
{{ tankerKpis.vehStr }}
{{ fz.name }}
{{ fz.litresStr }}
Tankers by depot
{{ g.depot }}
{{ g.countStr }} · {{ g.totalStr }} on board
{{ v.reg }}{{ v.plannedLabel }}
{{ v.body }} · {{ v.driver }} · {{ v.stopsStr }}
{{ v.totalStr }}
of {{ v.capStr }} · {{ v.pctStr }}
{{ l.fuelName }}{{ l.litresStr }}
Empty - no fuel currently on board.
No tankers match that search.
Daily reconciliation
{{ reconTable.kpis.countStr }}
Every tank is dipped daily and agreed to the ledger
Flagged
{{ reconTable.kpis.flaggedStr }}
Net variance
{{ reconTable.kpis.netLStr }}
Value at cost
{{ reconTable.kpis.netVStr }}
Reading
Depot
Tank / product
Book
Physical
Variance
Tolerance
Value
Recorded by
Status
{{ r.at }}
{{ r.bookedStr }}
{{ r.actualStr }}
{{ r.varStr }}
{{ r.thrStr }}
{{ r.valStr }}
{{ r.badgeLabel }}
No readings match those filters.
Click a reading to open the tank and reconcile its movements. Tolerance comes from the variance threshold in Options.
This month
{{ adjTotals.countStr }}
Net {{ adjTotals.litresStr }} across all tanks
Value to post
{{ adjTotals.valueStr }}
At buy price
Monthly report by tank
Post a stock adjustment
Use a negative figure for stock lost, positive for stock found. Recorded against you with a timestamp.
Adjustment log
Depot
{{ stockDepotView.name }}
{{ stockDepotView.tankCountStr }}
In storage
{{ stockDepotView.curStr }}
Capacity
{{ stockDepotView.capStr }}
Ullage
{{ stockDepotView.ullageStr }}
Tankers at this depot
{{ stockDepotView.tankerCountStr }}
{{ v.reg }}
{{ v.driver }} · {{ v.stopsStr }}
{{ v.totalStr }}
of {{ v.capStr }}
{{ l.fuelName }}{{ l.litresStr }}
No tankers loaded from this depot right now.
Tanks · click through for movements
{{ t.id }}
{{ t.fuelName }}
Low
{{ t.moveCountStr }} →
Level {{ t.levelStr }} ({{ t.pctStr }})
Avg cost {{ t.avgStr }}
Value {{ t.stockValStr }}
In {{ t.inStr }}
Out {{ t.outStr }}
{{ stockTankerView.reg }}
{{ stockTankerView.driver }} · {{ stockTankerView.body }} · {{ stockTankerView.depot }}
On board now
{{ stockTankerView.onBoardStr }}
of {{ stockTankerView.capStr }} capacity
Per ledger
{{ stockTankerView.expectedStr }}
Loaded {{ stockTankerView.loadedStr }} − delivered {{ stockTankerView.deliveredStr }}
Difference to reconcile
{{ stockTankerView.discStr }}
Against the last meter reading
Blended cost on board
{{ stockTankerView.avgCostStr }}/L
Stock value {{ stockTankerView.valueStr }}
Movements to reconcile
{{ stockTankerView.unmatchedCountStr }}
All movements verified
{{ stockTankerView.matchedCountStr }}
{{ stockTankView.id }}
{{ stockTankView.fuelName }} · {{ stockTankView.depot }}
Latest reading
{{ stockTankView.levelStr }}
{{ stockTankView.readingAt }} · of {{ stockTankView.capStr }} ({{ stockTankView.pctStr }})
System balance (per ledger)
{{ stockTankView.expectedStr }}
Opening + received − loaded out ± adjustments
Difference to reconcile
{{ stockTankView.discStr }}
≈ {{ stockTankView.discValueStr }} at average cost
Average cost in tank
{{ stockTankView.avgCostStr }}/L
Stock value {{ stockTankView.stockValueStr }} · {{ stockTankView.avgLotsStr }}
Opening {{ stockTankView.openStr }}
Received in {{ stockTankView.inStr }}
Loaded out {{ stockTankView.outStr }}
Ullage {{ stockTankView.ullageStr }}
If the variance is real (loss, temperature, metering), post an adjustment so the ledger agrees with the physical reading. Every adjustment is attributed and audited.
{{ stockTankView.adjCountStr }}
Recorded against you, with a timestamp, and written to the audit log.
{{ a.litresStr }}
{{ a.reason }}
{{ a.note }}
{{ a.by }}
{{ a.at }}
{{ a.at }}
Movements to reconcile
{{ stockTankView.unmatchedCountStr }}
All movements verified
{{ stockTankView.matchedCountStr }}
Placed
to
{{ orderResultCount }} shown
{{ failedCountStr }}
Contact each customer, then reschedule the delivery.
{{ fo.customer }}
{{ fo.place }} · {{ fo.phone }}
{{ fo.fuelName }} · {{ fo.litresStr }}
{{ fo.reason }}
{{ selOrder.id }}
{{ selOrder.customer }}
{{ selOrder.statusLabel }}
Previous order
{{ selOrder.custOrderCount }} on file →
{{ selOrder.prevOrder.date }} · {{ selOrder.prevOrder.summary }} · {{ selOrder.prevOrder.totalStr }}
Delivery
Address{{ selOrder.address }}
Station{{ selOrder.depot }}
Contact{{ selOrder.contact }}
Phone{{ selOrder.phone }}
Site hours{{ selOrder.siteHoursStr }}
{{ selOrder.siteWeekendStr }}
{{ selOrder.siteWeekendStr }}
Assigned vehicle{{ selOrder.routeReg }}
Tanker size{{ selOrder.tankerSizeStr }}
Payment{{ selOrder.paymentMethod }}
Delivery instructions
{{ selOrder.deliveryInstructions }}
Site opening times
{{ selOrder.siteOpening }}
Product & price
{{ selOrder.fuelName }}
Quantity{{ selOrder.litresStr }}
Price / litre{{ selOrder.pplStr }}
Subtotal{{ selOrder.subStr }}
VAT{{ selOrder.vatStr }}
Total{{ selOrder.totStr }}
Margin{{ selOrder.orderMarginStr }} ({{ selOrder.marginPplStr }})
Delivery window{{ selOrder.windowStr }}
Booking date{{ selOrder.bookingDateStr }}
Placed{{ selOrder.placedStr }}
SLA window{{ selOrder.slaStr }}
Delivered by (auto){{ selOrder.deliveredByStr }}
History
{{ t.label }}
{{ t.time }}
Requested delivery tank
Delivering into 1 of {{ selOrder.reqTank.siteTankCount }} tanks on site
{{ selOrder.reqTank.label }} · {{ selOrder.reqTank.id }}
Holds {{ selOrder.reqTank.fuelName }} · {{ selOrder.reqTank.capStr }} capacity
Currently in tank {{ selOrder.reqTank.beforeStr }}
This delivery {{ selOrder.reqTank.deliverStr }}
Ullage after {{ selOrder.reqTank.afterUllageStr }}
Fill after delivery {{ selOrder.reqTank.afterPctStr }}
Notes & call log
{{ n.text }}
{{ n.by }} · {{ n.time }}
No notes yet. Add a note or log a call about this order.
Vehicles
180
Depots
9
Fleet capacity
≈ 2.9M L
Fuels carried
{{ fuelCount }}
{{ d.name }}
{{ d.vehicles }} vehicles
Vehicle tank configuration · showing {{ vehShownCount }} of 180
Tanks are fixed-capacity vessels. Swap a tank for a different size, change the fuel it carries, or add/remove tanks on a vehicle.
Create a new truck
Tanks · {{ ntCapStr }} total
{{ c.label }}
{{ c.capStr }}
{{ t.reg }} · {{ t.depot }}
{{ t.body }} · {{ t.tankCount }} tanks · {{ t.capStr }} total
{{ t.address }}
{{ c.label }}
{{ c.capStr }}
Add a fuel type
New types appear in the tank fuel selectors.
{{ k.label }}
{{ k.value }}
{{ k.sub }}
My sales · {{ sales.meName }}
Rank #{{ sales.myRank }} of {{ sales.teamSize }} · {{ sales.myValueStr }} this month
{{ sales.myDay }}
Today
{{ sales.myWeek }}
This week
{{ sales.myMonth }}
This month
{{ openInqCount }} open · assign an agent and reply - responses go to the customer by SMS & email and appear in their order history.
{{ q.id }}
{{ q.customer }}
· order {{ q.orderId }} · {{ q.date }}
{{ q.statusLabel }}
{{ q.agent }}
{{ q.message }}
Assigned to
{{ q.reply }}
Replied by {{ q.by }} · sent by SMS & email
No inquiries match these filters.
Every change made in the portal - who, what and when. {{ auditCount }} entries.
Price changes, order edits, customer updates, fleet changes and rewards toggles are logged automatically as you work.
Partner hauliers who deliver on our behalf. Allocate orders by service area, monitor the day, and compare quotes on margin.
{{ selProv.name }}
{{ selProv.base }} · {{ selProv.pplStr }} · {{ selProv.onTimeStr }} on time · {{ selProv.jobsStr }} jobs
Postcode areas served
Specific postcodes ({{ selProv.postcodeCount }})
{{ c2.initials }}
{{ c2.name }}Primary
{{ c2.role }} · {{ c2.phone }}
{{ c2.email }}
{{ j.orderId }}{{ j.statusLabel }}
{{ j.customer }} · {{ j.place }}
{{ j.litresStr }} {{ j.fuelName }} · delivered {{ j.deliveredStr }}
No orders allocated to this provider yet.
Allocated today
{{ allocKpis.total }}
{{ allocKpis.litresStr }} in total
Awaiting acceptance
{{ allocKpis.sent }}
link sent, not accepted
Accepted
{{ allocKpis.accepted }}
on their way
Completed
{{ allocKpis.completed }}
litres confirmed
Providers used
{{ provCount }}
on the panel
Orders per provider
Today's split across the panel
{{ b.count }}
{{ b.sent }} sent · {{ b.accepted }} accepted · {{ b.completed }} completed · {{ b.litresStr }}
Text a quote request to several providers at once. They submit a price via their link; we compare margin and accept one.
No quote requests out yet.
Every quote given to a customer, which rep gave it, and whether it turned into an order.
Quote conversion
{{ quoteKpis.convPctStr }}
{{ quoteKpis.converted }} of {{ quoteKpis.total }} quotes won
Open quotes
{{ quoteKpis.open }}
{{ quoteKpis.openValStr }} in play
Value won
{{ quoteKpis.wonValStr }}
from converted quotes
Average quote
{{ quoteKpis.avgQuoteStr }}
across all quotes
Contracted volumes are set month by month. Underlift penalties are assessed monthly.
Add a supplier
The monthly figure seeds all twelve months - adjust individual months afterwards from the supplier's Edit panel.
Today's buying position
What we need to buy for tomorrow
Stock in tank, less tomorrow's routed liftings, against the cover you want to hold.
In tank now
{{ planTotals.stockStr }}
Out tomorrow
{{ planTotals.demandStr }}
Cover held
{{ planTotals.coverStr }}
Market direction
To order
{{ planTotals.totalStr }}
{{ planTotals.loadsStr }}
{{ marketNote }}
Contract month
{{ x.name }}
{{ x.contractLabel }}
{{ x.riskLabel }}
API feed
No kerosene
{{ x.mode }} · {{ x.terminalCount }} terminals
{{ x.terminals }}
Pricing mechanism
{{ x.mechanism }}
Differential {{ x.diffStr }}
Contracted
{{ x.contractPctStr }} of volume
Tolerance {{ x.toleranceStr }}
Underlift penalty
{{ x.penaltyStr }}
Terms
{{ x.termsStr }}
Renews {{ x.renewal }}
{{ supMonthName }} contracted vs lifted
{{ x.liftedStr }} of {{ x.nominatedStr }} · {{ x.liftedPctStr }}
Underlift {{ x.underStr }} this month - projected penalty {{ x.penExposureStr }} if {{ supMonthName }} closes here.
Contacts
{{ x.contactCountStr }}
{{ c.initials }}
{{ c.name }}
{{ c.role }}
{{ c.email }}
{{ c.phone }}
No contacts saved - add one so orders can be emailed or texted through.
Sites & purchase orders
{{ x.poCountStr }}
{{ st.terminal }}
{{ st.countStr }} · {{ st.litresStr }}
Contracted litres by month
{{ x.annualStr }} across the year
{{ mc.label }}
{{ mc.valStr }}
Edit {{ supEditDraft.name }}
{{ supEditDraft.contractLabel }}
Contracted litres by month
{{ supEditDraft.totalStr }} total
Fuel bought in from suppliers. Each order is raised against a supplier site and lands at one of your depots.
Delivery date
to
On order
{{ m.name }} {{ m.litresStr }}
Total {{ poFuelTotals.totalStr }}
Create a purchase order
Buy
{{ poCostPreview.buyStr }}
Haulage
{{ poCostPreview.haulStr }}
Landed
{{ poCostPreview.landedStr }}
{{ poCostPreview.litresStr }} total
{{ poCostPreview.totalStr }}
{{ poCostPreview.msg }}
Send to supplier by
Goes to the supplier's first saved contact when the order is raised.
Orders
{{ poSummary.countStr }}
Volume
{{ poSummary.litresStr }}
Value
{{ poSummary.valueStr }}
Inbound
{{ poSummary.openStr }}
{{ p.id }}
{{ p.supplierName }}
· {{ p.terminal }} → {{ p.depot }}
{{ p.status }}
{{ p.date }}
{{ p.fuelName }}
{{ p.litresStr }} at {{ p.pplStr }}
Value
{{ p.valueStr }}
Haulier
{{ p.haulier }}
On site by
{{ p.arrive }}
BOL
Loading instruction: {{ p.loadWindow }}
Haulier link
{{ p.acceptedLabel }}
Sent {{ p.linkSent }}
Not sent yet
· Supplier: {{ p.supNotified }}
Collection receipt
{{ p.receipt.ref }}
{{ p.receiptLitresStr }} · captured {{ p.receipt.at }}
Photographed by {{ p.receipt.by }}
{{ poEmptyMsg }}
Every load our hauliers are moving, grouped by company. Each trip has a unique link the driver uses to accept, photograph the BOL at collection, and complete the delivery.
Trips
{{ haulTrips.kpis.tripsStr }}
Delivered
{{ haulTrips.kpis.doneStr }}
Fuel moving
{{ haulTrips.kpis.movingStr }}
Outstanding
{{ haulTrips.kpis.outstandingStr }}
No haulage trips for this day.
Click a trip's link to see exactly what the driver sees — accept the load, photograph the bill of lading at the terminal, and mark it delivered.
The hauliers who move fuel from supplier terminals into your depots. Click through for contacts, loads and invoices.
Add a haulage company
{{ h.name }}
{{ h.onTimeStr }} on time
{{ h.contact }}
{{ h.phone }}
{{ h.email }}
Rate
{{ h.rateStr }}
Lanes
{{ h.lanesStr }}
Loads
{{ h.jobsStr }}
Live
{{ h.liveStr }}
No haulage companies match that search.
Haulage company
{{ haulDetail.name }}
{{ haulDetail.rateStr }} · {{ haulDetail.onTimeStr }} on time
Loads
{{ haulDetail.loadCountStr }}
{{ haulDetail.deliveredStr }}
Volume
{{ haulDetail.litresStr }}
Receipts
{{ haulDetail.receiptStr }}
{{ haulDetail.invoicedStr }}
Contacts
{{ haulDetail.contactCountStr }}
{{ c.initials }}
{{ c.name }}
{{ c.role }}
{{ c.email }}
{{ c.phone }}
Loads
to
{{ r.id }}
{{ r.lane }}
{{ r.fuelName }} · {{ r.litresStr }}
{{ r.status }}
{{ r.date }}
No loads for this haulier in that period.
Haulage invoices
{{ paySummary.countStr }}
Recorded against purchase orders
Outstanding
{{ paySummary.outstandingStr }}
{{ paySummary.unpaidCount }} awaiting payment
Selected
{{ paySummary.selTotalStr }}
{{ paySummary.selCount }} invoices
Today's notified buy price per litre by supplier and terminal. These feed the landed cost and every depot's exit price. Edits are written to the audit log.
Price change history
Price a postcode
{{ quoteResult.zone }} zone · served by {{ quoteResult.depot }} · lifting {{ quoteResult.fuelName }} from {{ quoteResult.supplierName }} at {{ quoteResult.terminal }}
Buy
{{ quoteResult.buyStr }}
+
Haulage
{{ quoteResult.haulStr }}
=
Landed
{{ quoteResult.landedStr }}
+
Margin
{{ quoteResult.marginStr }}
Exit price
{{ quoteResult.exitStr }}
{{ quoteResult.per1000Str }} per 1,000 L
{{ quoteResult.msg }}
Exit price by depot
Completed today
{{ finQueueKpis.countStr }}
Value
{{ finQueueKpis.totalStr }}
Invoiced
{{ finQueueKpis.invoicedStr }}
{{ finQueueKpis.invoicedCountStr }}
Still to invoice
{{ finQueueKpis.outstandingStr }}
{{ finBulk.countStr }} selected
{{ finBulk.valueStr }} · {{ finBulk.emailedStr }} · {{ finBulk.postedStr }}
Fuel
Litres
p/L
Action
{{ r.id }}
{{ r.litresStr }}
{{ r.pplStr }}
{{ r.valueStr }}
{{ r.marginPplStr }}
{{ r.stageLabel }}
{{ r.invRef }}
{{ r.methodLabel }} · {{ r.invAt }}
No email on file
Tick the orders (or select all), then Run invoicing. Click a column heading to sort. Manager approves, finance signs off, invoice goes out — all from the row.
Orders today
{{ finDash.todayOrders }}
Expected to invoice
{{ finDash.todayExpected }}
Actually invoiced
{{ finDash.todayInvoiced }}
{{ finDash.todayPct }} of expected
Month vs last month
{{ finDash.deltaStr }}
{{ finDash.monthInvoiced }} vs {{ finDash.prevMonth }}
Invoiced this month by week
{{ w.label }}
{{ w.val }}
{{ finDash.monthOrders }} orders invoiced this month. Use the depot filter on the Invoicing tab for a date-range view by depot.
{{ tripDayLabel }} · {{ tripDateStr }}
{{ tripKpis.driverStr }}
{{ tripKpis.dropStr }} · {{ tripKpis.doneStr }}
Spare capacity
{{ tripKpis.spareStr }}
Find them extra work
{{ tripDayLabel }}
{{ tripDateStr }}
{{ t.initials }}
{{ t.driver }}{{ t.statusLabel }}{{ t.spareStr }}
{{ t.reg }} · {{ t.depot }} · {{ t.shiftStr }}
{{ t.dropStr }}
{{ t.doneStr }}
Est. finish {{ t.etaStr }}
On board {{ t.onBoardStr }}
Fuel left {{ t.remainingStr }}
{{ tripDetail.initials }}
{{ tripDetail.driver }}{{ tripDetail.statusLabel }}
{{ tripDetail.reg }} · {{ tripDetail.body }} · {{ tripDetail.depot }} · shift {{ tripDetail.shiftStr }}
Est. finish
{{ tripDetail.etaStr }}
{{ tripDetail.doneStr }}
Tanker capacity {{ tripDetail.capStr }}
Loaded {{ tripDetail.onBoardStr }}
Committed {{ tripDetail.requiredStr }}
Fuel left over {{ tripDetail.remainingStr }}
Spare capacity {{ tripDetail.ullageStr }}
{{ tripDetail.spareStr }} left on shift and {{ tripDetail.remainingStr }} still on board - there is room for another drop before {{ tripDetail.shiftStr }} ends.
{{ tripDetail.dropStr }} on this trip
Each zone maps a set of postcode areas to the depot that serves them and the supplier and terminal that depot lifts from. A customer's price follows the zone their postcode falls in.
{{ z.name }}
{{ z.depot }}
{{ z.areaCount }} areas
Haulage on this lane {{ z.haulStr }}/L
Customers who've found fuel cheaper elsewhere. Agree a match and we email them a price locked to their account for 48 hours, ready to activate on their next order.
Product
{{ p.fuelName }}
{{ p.litresStr }}
Our price
{{ p.ourPplStr }}
{{ p.rival }}
{{ p.theirPplStr }}
Gap
{{ p.gapStr }}
Margin at that price
{{ p.marginStr }}/L
Email & text sent automatically
{{ p.status }} by {{ p.by }} · agreed price {{ p.agreedPplStr }}/L
No price match requests here.
Chats coming in from the customer portal - who picked them up, how quickly, and how the customer rated it.
{{ outstandingStr }}
{{ selChat.customer }}
{{ selChat.id }} · {{ selChat.topic }}
{{ selChat.message }}
Came in{{ selChat.openedAt }}
Actioned by{{ selChat.agentLabel }}
First replied{{ selChat.answeredAt }}
Response time{{ selChat.respStr }}
Customer rating
{{ selChat.ratingStr }}
“{{ selChat.comment }}”
Rate this chat (as the customer would)
Average response time
{{ chatKpis.avgRespStr }}
across {{ chatKpis.total }} chats today
Answered under 5 min
{{ chatKpis.under5Str }}
of answered chats
Average rating
{{ chatKpis.avgRatingStr }}
from {{ chatKpis.ratedCount }} ratings
Waiting now
{{ chatKpis.waiting }}
slowest today {{ chatKpis.slowest }}
How quickly we replied
Distribution of first-response times
{{ b.label }}{{ b.count }}
New credit-account applications from the website. Accounts run the checks, set a credit limit and approve or decline.
{{ appResultStr }}
{{ selApp.company }}
{{ selApp.id }} · {{ selApp.submittedStr }}
Contact{{ selApp.contact }}
Phone{{ selApp.phone }}
Email{{ selApp.email }}
Business{{ selApp.nature }}
Expected volume{{ selApp.litresStr }}
Sales rep{{ selApp.rep }}
{{ selApp.viaLabel }}
Trade references
{{ selApp.refsVerifiedStr }}
{{ r.n }}
{{ r.company }}
{{ r.statusLabel }}
Contact{{ r.contact }}
Phone{{ r.phone }}
Email{{ r.email }}
Postcode{{ r.postcode }}
Trading history{{ r.years }} · {{ r.terms }}
Verify all three references before approving credit.
Approved by {{ selApp.ownerLabel }} · limit {{ selApp.limitStr }}
Declined by {{ selApp.ownerLabel }}
{{ selApp.note }}
Call reminders and follow-ups against customers. Assign to a sales agent, set a due time, and track completion.
Agent
My open tasks
{{ taskKpis.open }}
assigned to {{ taskAgent }}
Due today
{{ taskKpis.today }}
calls to make
Overdue
{{ taskKpis.overdue }}
past their due time
Completed today
{{ taskKpis.doneToday }}
logged as done
New reminder
Set a call-back against a customer
{{ taskAgent }} vs the team
Team rank
{{ perfKpis.rank }}
by tasks completed
Completed
{{ perfKpis.done }}
{{ perfKpis.vsTeam }}
Completion rate
{{ perfKpis.rateStr }}
of tasks in period
Calls → orders
{{ perfKpis.conv }}
orders placed on a call
Set the national card for a given day. Each depot sells at the card plus its local adjustment — pick a depot or type a postcode to see the price a customer would actually pay.
Price date
{{ priceDateStr }}
or
{{ pricingSel.pcMsg }}
No zone covers that postcode
Showing {{ pricingSel.depotName }} · card {{ pricingSel.adjStr }}
Edit a price then press Save to commit it - every change is logged with the user and timestamp, so multiple updates a day are all recorded. Sell prices flow into the quote & order builder.
{{ customerCount }} customers · showing up to 30 at a time - search or filter to narrow.
Edit customer details
{{ custDetail.initials }}
{{ custDetail.name }}
{{ custDetail.levelName }}{{ custDetail.contact }} · {{ custDetail.phone }}
{{ custDetail.address }} · {{ custDetail.townPostcode }}
Served by {{ custDetail.station }} · {{ custDetail.tankCount }} tanks on site
Contact & address details
Contact name
{{ custDetail.contact }}
Phone
{{ custDetail.phone }}
Email
{{ custDetail.email }}
Served by station
{{ custDetail.station }}
Sales rep
{{ custDetail.salesRep }}
Delivery address
{{ custDetail.address }}
{{ custDetail.townPostcode }}
Points history{{ custDetail.pointsBalanceStr }} pts
{{ ph.label }}
{{ ph.date }}
Earned at their tier rate - boosts from live promotions apply automatically.
Account
Type{{ custDetail.segment }}
Total orders{{ custDetail.orderCount }}
Lifetime spend{{ custDetail.totalSpentStr }}
Balance{{ custDetail.balanceStr }}
Credit control
Only Finance can change a credit limit.
Credit limit{{ custDetail.creditLimitStr }}
Currently used{{ custDetail.creditUsedStr }}
Available{{ custDetail.creditAvailStr }}
{{ custDetail.creditPctStr }} of limit used
Over their credit limit - new orders need approval.
On credit hold - no new orders.
Take an order by phone
Quote live, save it, or place the order - the customer gets an instant SMS confirmation.
{{ t.label }}
{{ t.loc }}
{{ t.fuelName }}
Current {{ t.levelStr }} ({{ t.pctStr }})
Ullage {{ t.ullageStr }}
Capacity {{ t.capStr }}
Delivery site
{{ custDetail.address }}
{{ custDetail.townPostcode }}
///{{ custDetail.w3w }}
{{ custDetail.accessNote }}
Served by {{ custDetail.station }}
Delivery sites
{{ custDetail.siteCountStr }} · each site has its own postcode, contact and linked tank
New site
Every change made to this customer's account - who made it, what changed and when. Credit limit changes can only be made by Finance.
Contacts
{{ custDetail.contactCountStr }} · each can be assigned to one or more sites
New contact
Notes against this customer
{{ n.text }}
{{ n.by }} · {{ n.time }}
No notes yet for this customer.