SKIP TO CONTENT
A/L
SYS_004LIVE

GasMitra

Gas Agency Operations System

Cylinder logistics, empty returns, billing and outstanding for a gas distribution agency.

TYPE
GAS AGENCY ERP
STATUS
LIVE
YEAR
2026
ROLE
System design, full-stack implementation
PLATFORM
Flutter (Android + Web), Node.js API
STACK
Flutter · Node.js · MySQL · REST
01

PROBLEM

A gas agency does not sell a product, it circulates an asset. Every full cylinder that goes out is expected to come back empty, and the gap between what went out, what came back and what was paid for is the entire business.

Run on registers this fails in a specific way: deliveries get recorded but empties are never reconciled, customer deposits drift out of sync, and outstanding balances are believed rather than known.

02

SYSTEM

GasMitra tracks cylinders as a two-way movement. An order produces a delivery, the delivery expects an empty return, and the return, the bill and the payment together settle the customer position.

Each stage posts its own consequence — stock movement, customer outstanding, deposit liability and the accounting entry — so the register, the ledger and the physical yard agree with each other.

03

CORE FLOW

How the operation moves through the system.

ARCH_01 / BUSINESS FLOW — SELECT A STAGE FOR DETAIL
  1. Domestic or commercial connection with deposit, quota and rate class
  2. Booked by phone, counter or route plan, then queued to a delivery round
  3. Full cylinder issued against the order; stock and route load updated
  4. Empty received back and reconciled; a shortfall becomes a tracked liability
  5. Rate class applied, taxes computed, document numbered and printed
  6. Cash, transfer or credit; partial receipts allocated against bills
  7. Sale, tax, stock and receipt posted as one balanced transaction
  8. Cylinder position, route performance, ageing outstanding, tax summary
SELECT OR HOVER A NODE FOR DETAIL

Business flow running from customer to order, cylinder delivery, empty return, bill, payment, accounting and finally reporting.

04

KEY MODULES

M01Customer master
Connection details, deposit held, rate class and delivery address.
M02Order booking
Counter, phone and route-based booking with duplicate detection.
M03Delivery & route
Round-wise load out, delivery confirmation and returns against the round.
M04Cylinder ledger
Full, empty, defective and with-customer positions reconciled daily.
M05Billing
Rate class, tax and document series, with reprintable historical bills.
M06Receipts
Partial and bulk receipts allocated against outstanding invoices.
M07Reports
Cylinder position, ageing outstanding, route summary and tax register.
05

ARCHITECTURE

Client
Flutter app for counter and delivery staff; web for office and reporting.
API
Node.js REST; each posting is one transaction across stock, ledger and accounts.
Data
MySQL with a movement table as the single source of cylinder truth.
Accounting
Posts into the shared accounting engine rather than a private ledger.
06

ENGINEERING

The parts that were not obvious, and what the system does about them.

  1. 01 / 03

    Cylinders are a balance, not a stock figure

    A single quantity column cannot express full in godown, empty in godown, full with customer and defective. Modelling every movement as a typed transfer between positions is what makes the daily cylinder reconciliation actually close.

  2. 02 / 03

    Deposits are a liability, not income

    Connection deposits look like received cash and are frequently accounted as revenue. They are posted as a liability against the customer, so a refund on surrender is a settlement rather than a loss.

  3. 03 / 03

    Partial payment allocation

    Customers pay round numbers against several bills. Receipts allocate oldest-first by default but stay manually re-allocatable, and the ageing report reads the allocation rather than a running balance.

07

SCREENS

  1. SCREEN_01Delivery round — load out and returns
  2. SCREEN_02Billing — rate class and tax
  3. SCREEN_03Cylinder position report
08

RESULT

The agency closes its cylinder position daily and knows its real outstanding, per customer and per route.

Deposits, empties and credit stop being three separate sources of disagreement.