Skip to content

Case study 03

Billing Platform + App

Multi-site billing and reconciliation where every shift closes with an attributed variance instead of a next-day paper argument.

FrappePythonMariaDBJinja printQuery reports
At a glance
Sector
Fuel & retail
Year
2024
Service
Full Platform
Spine

Shift reconciliation · 30+ reports · 3 sites

See this service
3
Sites live
30+
Custom reports
Per shift
Variance attribution
At point of sale
Credit control

The problem

Fuel retail reconciles in a way no standard billing module expects: dip readings against nozzle totalisers against cash collected against credit issued, per shift, per attendant. Across three sites this happened on paper the following morning, by which point nobody could say which shift a shortfall belonged to.

What we built

Nozzle-level entry capturing opening and closing totaliser readings, tank dips and density, reconciled against cash, card and credit at shift close — so a variance is attributed while the attendant is still on site. Credit customers carry limits enforced at the point of sale rather than reviewed monthly. Thirty-plus reports built from what the operators actually asked for each morning.

Under the hood

DocTypes
  • Shift
  • Nozzle Reading
  • Tank Dip
  • Fuel Invoice
  • Credit Customer
  • Variance Entry
Reports
  • daily_summary
  • credit_ageing
  • attendant_wise_sales
  • nozzle_throughput
  • shift_variance
Controls
  • credit_limit_at_sale
  • role_split_cashier_manager
  • reading_immutable_after_close