For Liquefied Petroleum Gas (LPG) marketers, bulk import terminals, and cylinder bottling plants in Kenya and East Africa, the steel cylinder shell (6kg, 13kg, and 50kg) often costs more to manufacture and brand than the gas inside it. When an LPG marketer deploys 150,000 branded cylinders across depot route trucks, wholesale stockists, and petrol-station retail cages without a serialized Cylinder Asset & Mass-Balance ERP, three operational leaks rapidly erode capital: pirate refillers siphoning branded cylinders out of the exchange pool, filling-plant vapour/liquid shrinkage between bulk storage spheres and carousel scales, and route drivers selling "outright" cylinder deposits as cheaper gas-only refills.
At devManue, we engineer specialized LPG Cylinder Bottling, Refill Plant & Cage-Exchange Distribution ERP platforms that unify bulk tank radar telemetry, PLC carousel tare/gross filling verification, QR/RFID cylinder shell serialization, route-truck full-for-empty swap ledgers, and instant M-Pesa Till + KRA eTIMS retail point-of-sale.
1. Closing the Bulk Sphere-to-Carousel Mass-Balance Gap
An LPG bottling plant receives bulk gas in 20-metric-ton road bridgers from Mombasa (Kipevu/AGOL) or Nairobi terminals and stores it in pressurized horizontal bullet tanks or spheres before pumping it to a 12-head or 24-head rotary filling carousel. Without hardware-level reconciliation, two plant-floor losses go undetected:
- Over-Filling & Tare-Weight Drift on the Carousel: A
13.0 kgrefill requires weighing the empty steel shell's exact stamped Tare Weight (which varies from11.8 kgto15.4 kgdepending on valve and collar age) and cutting off the pneumatic filling nozzle at exactlyTare + 13.00 kg. Over-filling by just180 gramsper cylinder across 5,000 cylinders a day gives away900 kgof free LPG daily. - Hydrostatic Re-Test & Defective Valve Quarantine: Under KEBS and EPRA safety standards, every LPG cylinder must undergo periodic hydrostatic pressure testing and valve inspection. Scanning a cylinder's QR/RFID collar tag at the conveyor entry automatically diverts expired or dented shells to the maintenance bay before filling.
2. Enforcing Dual "Gas Inventory + Steel Shell" Ledger Accounting
Standard inventory software treats a 13kg LPG Refill as a single stock item—failing completely when a customer brings a battered competitor shell, buys an outright new cylinder with a grill and burner, or owes 14 empty shells on a wholesale credit account. Our ERP maintains a strict Dual-Balance Ledger (Liquid Gas kg vs. Physical Steel Shells by Size & Condition) for every truck, depot, and retail cage:
# Python / Django: LPG Route Truck & Retail Cage Full-for-Empty Swap Validator
from decimal import Decimal
from django.core.exceptions import ValidationError
class LpgCylinderExchangeGate:
@classmethod
def validate_cage_transaction(
cls,
cage_id: int,
cylinder_size_kg: int,
full_dispatched_qty: int,
empty_returned_qty: int,
outright_deposit_paid_qty: int,
gas_unit_price_kes: Decimal,
shell_deposit_price_kes: Decimal,
) -> dict[str, Decimal]:
'''
Enforces strict physical conservation of steel cylinder shells:
Every full cylinder leaving a retail cage must be matched by either
(a) a verified empty return shell of the same size, or
(b) a paid New Cylinder Outright Deposit.
'''
unmatched_shells = full_dispatched_qty - (empty_returned_qty + outright_deposit_paid_qty)
if unmatched_shells != 0:
raise ValidationError(
f"Cylinder Shell Imbalance: Dispatched {full_dispatched_qty}x {cylinder_size_kg}kg full "
f"cylinders, but only accounted for {empty_returned_qty} empty returns and "
f"{outright_deposit_paid_qty} outright deposits (Variance: {unmatched_shells} shells)."
)
gas_revenue = Decimal(full_dispatched_qty) * gas_unit_price_kes
deposit_liability = Decimal(outright_deposit_paid_qty) * shell_deposit_price_kes
return {
"gas_refill_revenue_kes": gas_revenue,
"cylinder_deposit_collected_kes": deposit_liability,
"total_mpesa_payable_kes": gas_revenue + deposit_liability,
}
| LPG Operations Control | Manual Waybills & Unserialized Cylinders | Custom LPG Bottling & Cage-Exchange ERP |
|---|---|---|
| Bulk Tank vs. Filled Cylinder Shrinkage | 2.5% – 4.8% unaccounted gas loss | < 0.35% (Coriolis meter + PLC carousel scale lock) |
| Route Truck & Retail Cage Shell Loss | Hundreds of missing steel shells per quarter | Zero unbilled variance (hard 1-for-1 swap + deposit lock) |
| Counterfeit / Illegal Refill Detection | Pirate refills sold under brand name | Consumer SMS/QR neck-seal verification on delivery |
| Cage Cash & M-Pesa Reconciliation | End-of-week manual attendant cashups | Real-time M-Pesa STK Push releases cage lock |
Explore related production architectures, live Kenyan legal tools, and enterprise guides:
- Long-Haul Trucking, Bulk Tanker & Fleet Telematics ERP — Fuel monitoring, border per-diems, and hazardous cargo transit tracking.
- FMCG Wholesale & Returnable Container Distribution ERP — Managing dual liquid-and-empties deposit ledgers across distribution networks.
- Automated KRA eTIMS Integration & Real-Time Tax Invoicing — Seamless OSCU/VSCU eTIMS fiscalization for high-volume retail transactions.