FuelOps

Fuel Station Manager

Know if the cash is short before anyone goes home.

FuelOps closes an Indian petrol pump's shift on one screen — meters, density tests, lube, credit, collections, expenses — and prints the difference between what was sold and what was collected.

Works on the phone in your pocket. Installs from the browser, no app store. English, മലയാളം, தமிழ், ಕನ್ನಡ, हिन्दी.

Final Reconciliation · Evening shift · 18-07-2026
Sample data

Fuel & Sales

Gross Fuel SalesRs. 1,84,596.30
(−) Fuel and Density TestRs. 1,024.00
Net Fuel SalesRs. 1,83,572.30
Lube SalesRs. 4,850.00
Credit CollectedRs. 12,000.00
Total RevenueRs. 2,00,422.30

Collections

Petrol & LubeRs. 1,28,400.00
DieselRs. 62,522.30
Net CollectionRs. 1,90,922.30

Final Reconciliation

Total Revenue − (Net Collection + Total Credit Given Rs. 8,500.00 + Expenses Rs. 1,000.00)

DifferenceRs. 0.00

Reconciliation matched.

Positive difference is a shortfall. The app prints the verdict in words, per shift and for the whole day.

Calculated stock, physical dip, and the gap between them.

You enter the morning dip, any tanker received, and the evening dip. The nozzle sales in between are pulled from the shifts your staff already entered — you never type them twice.

Tank T1 · Petrol · 18-07-2026
Sample data
Opening physical dip11,620 L
(+)Received6,000 L
(−)Nozzle sales (auto)1,480.5 L
(=)Calculated stock16,139.5 L
Closing physical dip16,067.5 L
(=)Variation72 L

One tank, one day. Nozzle sales are this tank's own nozzles across both of the day's shifts, pulled from the entries your staff already made. Variation is calculated stock minus physical dip, so a positive number is a shortfall — seventy-two litres, found the same evening instead of at month end. The app colours it green at zero, yellow up to fifty litres, red beyond.

Tank Status
Sample data · Dashboard
T1Petrol
Opening dip: 11,620LCapacity: 20,000L
Current stock16,139.5L
Received 6,000LNozzle sales 1,480.5L
T2Diesel
Opening dip: 7,105.5LCapacity: 20,000L
Current stock4,695.5L
Received 0LNozzle sales 2,410L

Reorder needed

Reorder needed appears when current stock drops to or below the reorder minimum you set on that tank. Current stock is that tank's calculated stock for the day, so the card and the chain beside it can never disagree.

Today's Summary

Sample data · Dashboard

Total Revenue

Rs. 4,04,101.2

Petrol Sold

1,480.5 L

Diesel Sold

2,410 L

Fuel Test

Rs. 1,024

Total Received

Rs. 3,87,551.2

Whole-day totals — every shift entered for that date added together, not one shift on its own. Today only: the dashboard is a today screen, not a chart wall.

Enter one shift tonight and see your own difference line.

This is what produces that number.

Everything a shift generates is entered on one screen, in order, with a section bar that follows you as you scroll. One Save writes all of it.

Pick the attendant from your Employee master, type the opening and closing meter. Litres and amount are calculated; you never type the amount.

Nozzle N1 · PetrolSample data
Attendant
Rajeev K
Opening Meter
45,120.50
Closing Meter
45,842.75
Litres
722.25
Amount
Rs. 73,958.40

Litres = closing − opening. Amount = litres × that date's Petrol rate, Rs. 102.40.

Save blocked

Sample data · date
No Petrol rate found for 2026-07-18. Add it in Rates first.
Closing meter must be greater than opening meter.
Fuel test cannot exceed total fuel sales for the shift.

Three ways the form refuses to save a shift that can't be right. A spreadsheet accepts all three.

Your work is saved to the server every 10 seconds while you type — not to the browser. Phone dies mid-shift, tab closes, battery goes: reopen the form and the draft is restored, merged with whatever was already saved, with a Discard Draft button if you'd rather start over. It protects you from a dead battery, not from a dead network.

Your credit book, with number plates in it.

Every credit sale carries a vehicle number, or a vehicle type when there is no plate to hand, and the shift and the attendant it was entered under are stored with it. A customer can hold several vehicles — the outstanding is still one figure for the customer, not a balance per truck.

Creditors

Sample data

Sunrise Transports

KL-05-CX-1234 (Lorry)

KL-07-AB-9090 (Tanker)

Opening Bal.Rs. 12,400.00New CreditRs. 18,650.00PaymentsRs. 20,000.00Last Activity18-07-2026OutstandingRs. 11,050.00StatusOutstanding

Two vehicles, one balance. The real list also carries a Contact column and per-row Actions, left out here.

Activity Log

Sample data
Sale5,887.50
Date18-07-2026Customer IDSUN-01Vehicle NoKL-05-CX-1234Vehicle TypeLorryFuel TypeDieselAmount5,887.50Payment Received0.00
Payment-20,000.00
Date17-07-2026Customer IDSUN-01Payment TypeUPIAmount0.00Payment Received20,000.00
Sale7,065.00
Date17-07-2026Customer IDSUN-01Vehicle NoKL-05-CX-1234Vehicle TypeLorryFuel TypeDieselAmount7,065.00Payment Received0.00
Sale5,697.50
Date16-07-2026Customer IDSUN-01Vehicle NoKL-07-AB-9090Vehicle TypeTankerFuel TypeDieselAmount5,697.50Payment Received0.00

Rs. 12,400.00 opening, plus a Net Credit column totalling -1,350.00, is the Rs. 11,050.00 above. The real table adds an Actions column, left out here.

Vehicle number

Sample data

Type KL05CX1234 and it formats itself to KL-05-CX-1234. The formatter inserts the hyphens; it does not guess the state code. Duplicate vehicles are refused.

  • Opening Balance carries in whatever they already owed you before FuelOps — you don't re-enter history.
  • Outstanding = Opening Balance plus every row's Net Credit, and Net Credit is that row's Amount less its Payment Received.
  • The shift and the attendant are stored on each credit row, but the creditor screens don't show those two columns.
  • A creditor with a balance or a history can't be deleted.
OutstandingAdvanceSettledon the customer's own page, plus a Status Mix tile counting Outstanding against Settled over the whole list.

The message you send every night, and the register you dread every month.

Copy the day.

One button copies the day as a fixed-width, column-aligned text block — per shift and consolidated. Paste it into WhatsApp. There's a PDF too.

Clipboard textSample data
===================================================================================
SAMPLE STATION EVENING SHIFT SUMMARY                                               
Date: [ 18-07-2026 ]                                                               
===================================================================================

Attendant | Nozzles | Fuel Types |        Fuel Amt |     Lube Amt |     Total Sales
-----------------------------------------------------------------------------------
Rajeev K  | N1      | Petrol     |   Rs. 73,958.40 | Rs. 4,850.00 |   Rs. 78,808.40
Suresh M  | N2      | Diesel     | Rs. 1,10,637.90 |     Rs. 0.00 | Rs. 1,10,637.90
-----------------------------------------------------------------------------------
TOTAL     |         |            | Rs. 1,84,596.30 | Rs. 4,850.00 | Rs. 1,89,446.30

Fuel & Sales                                                                       
Gross Fuel Sales: Rs. 1,84,596.30                                                  
(-) Fuel and Density Test: - Rs. 1,024.00                                          
Net Fuel Sales = Fuel Sales - Fuel Test: Rs. 1,83,572.30                           
Lube Sales: Rs. 4,850.00                                                           
Credit Collected: Rs. 12,000.00                                                    
Total Revenue: Rs. 2,00,422.30                                                     
                                                                                   
Collections                                                                        
Total Received: Rs. 1,90,922.30                                                    
  Petrol and Lube: Rs. 1,28,400.00                                                 
  Diesel: Rs. 62,522.30                                                            
Net Collection: Rs. 1,90,922.30                                                    
                                                                                   
Final Reconciliation                                                               
Total Revenue: Rs. 2,00,422.30                                                     
Net Collection: Rs. 1,90,922.30                                                    
Total Credit Given: Rs. 8,500.00                                                   
Expenses: Rs. 1,000.00                                                             
Difference: Rs. 0.00                                                               
                                                                                   
Status: Reconciliation matched.                                                    
===================================================================================
CopyDownload PDF

Both buttons live inside the app's Daily Summary. FuelOps doesn't send anything — it puts the text on your clipboard and the PDF in your downloads. You choose who gets them.

Monthly Sales Register.

One page per product, every date of the month as a row, rebuilt from the entries your staff already made. Downloads as an A3 landscape PDF named monthly-sales-register-{station}-2026-07.pdf.

Sales Register — PETROLSample Station · July 2026
Sample data
DateOpening StockReceiptsTotalActual SalesClosing StockVariationT1Total Dip StockN1Total Meter SalesPump TestingWater DipRemarks
DipStockOp. MeterSales
166,845.258,00014,845.251,79013,055.25013,015.2513,055.2513,055.2541,1771,7901,79000
1713,015.25013,015.251,395.2511,620011,62011,62011,62042,9671,395.251,395.2500
1811,6206,00017,6201,480.516,139.5016,067.516,139.516,139.544,3621,480.51,480.500
Total31,480.514,00045,480.54,665.7540,814.7540,814.754,665.754,665.750

Scroll the table sideways for the rest of the columns →

The register covers up to 3 tanks and 8 nozzles per product.

One thing to read carefully: Variation here is 0.00, not the 72 L shortfall the tank section above shows for this tank on this date. The register's Variation is Total Dip Stock minus Closing Stock, and Total Dip Stock adds up each tank's calculated stock rather than its dip — so on a single-tank page the two sides are the same figure. The 72 L is still on the row, as the gap between T1's Dip and Stock cells.

Four masters. Then every tank, nozzle, shift and attendant is picked from a list.

Define the station once, and the things that have to match across screens stop being retyped. Free text stays where it belongs — an expense description, a note on a creditor.

Tanks

Owner

Product, capacity in litres, reorder minimum and maximum, minimum dip. Active or inactive.

Nozzles

Owner

Each nozzle belongs to a tank and inherits its product — the product field is read-only on purpose. A meter reading can't be attributed to a nozzle that doesn't exist.

Shifts

Owner

You define your own shifts — Morning, Evening, Night, or whatever your station runs. Nothing is hardcoded.

Employees

Owner

Name, 10-digit mobile, optional 12-digit Aadhaar. This master becomes the attendant dropdown in Shift Sales.

Rates

Sample data

One rate per product per date. Every fuel row prices itself from it, and no shift can be saved without it. The Rates page keeps the history.

DatePetrol (Rs./L)Diesel (Rs./L)
18/07/2026102.4094.20

Masters are owner-only.

Things it doesn't do.

So you can decide in thirty seconds instead of after a demo call.

  • No GST or tax handling. There is no tax field anywhere in the product, including on lubricant sales. Your accountant works from the register and the daily summary.

  • No purchase or tanker-invoice module. A delivery is a litres-received number on the tank's daily stock row.

  • No offline entry. The app installs and caches, but writing a shift needs a connection.

  • No charts. Every number is a table, plus one fill bar per tank.

  • No sending. Summaries are copied to your clipboard or downloaded as PDF. FuelOps doesn't email or WhatsApp anything on your behalf.

  • Petrol and diesel only. No CNG, no EV, no premium grades.

Everything above this list is on the screen today.

Your attendants enter sales. They don’t get your masters.

Two roles. Invite by email — no shared password, no admin console.

Staff Settings
Sample data · Staff page
Allow staff to view Daily Summary

When enabled, staff can see the summary page in read-only mode.

Off by default. With it off, both Daily Summary and Monthly Register disappear from their sidebar. That hiding is in the app, not the API — treat it as tidying the menu, not as a lock. What the backend does enforce is that staff can never write a summary: DailySummary is read-only for the STAFF group, so a staff member can never generate, edit or delete the day’s figures.

Enter shift sales, add expenses, edit creditors

OwnerStaff

Manage tanks, nozzles, shifts, employees

OwnerStaff

Manage stations and staff

OwnerStaff

Delete creditors

OwnerStaff

Generate and save the daily summary

OwnerStaff

Delete expenses

OwnerStaff · yes, inside a shift

View Daily Summary and Monthly Register

OwnerStaff · only if you enable it

Be careful with that last row. Deleting a creditor is genuinely owner-only — the button is hidden from staff and the API gives the STAFF group create, read and update only, so the call would fail anyway. Deleting an expense is not restricted. The Expenses page has no delete button for anyone, but expenses are removed by taking the row out of a shift and saving, and staff are allowed to save shifts. Nothing checks the role on that path and the API permits the delete, so a staff member who removes an expense row does delete the record. If that matters to you, it is a reason to review shifts, not a setting you can turn off today.

Invite a staff member by email. They sign up with that address and the station attaches itself to their account on first load. FuelOps doesn’t send the invitation email yet — you’ll need to tell them which address to use.

Running more than one pump? Every record is scoped to a station, and owners switch stations from the header. A station can’t be deleted while it still has tanks.

In the language your staff speaks, on the phone in their hand

English, മലയാളം, தமிழ், ಕನ್ನಡ, हिन्दी.

The app itself, not a translated brochure. Around 500 of its roughly 600 strings are translated in each language today, with the right Noto font loaded per script; the newest labels still fall back to English while translation catches up. The switcher is on the login screen too, so a new attendant picks their language before they have an account.

Sample data · Meter readings
Fuel Sales

N1 · Petrol

Opening Meter45,120.50
Closing Meter45,842.75

N2 · Diesel

Opening Meter30,150.00
Closing Meter31,324.50

These labels are read from the app’s own message files and rendered by the same translate function the app uses.

Numbers use Indian digit grouping: two lakh prints as Rs. 2,00,000.00, never as Rs. 200,000.00. The language choice is stored in a cookie and read on the server, so the page loads in the right script on first paint.

It installs.

FuelOps is a progressive web app. Add it to the home screen on Android or iOS and it opens straight to your dashboard, full screen, no browser bar. The interface is built for a phone held in one hand at the pump — a bottom tab bar for Home, Sales, Stock, Finance and Profile — and works down to a 360-pixel-wide screen.

FuelOps

Fuel Station Manager

HomeSalesStockFinanceProfile

A service worker caches what it can, so a weak signal opens faster and a lost one gets a plain offline screen instead of a dead tab. Entering a shift still needs a connection — there is no offline queue.

Enter one shift tonight.

Sign up, name your station, add your tanks and nozzles, put in today's petrol and diesel rate, and enter the evening shift. You'll see your own difference line before you close.

  1. Create your stationname, location, licence number
  2. Add tanks and nozzles
  3. Set today's rate
  4. Enter a shift

Signing up takes an email, a password (8 characters, one uppercase, one lowercase, one number, one special character) and a confirmation code sent to that address. Nothing to migrate — your Excel sheet stays where it is until you trust this one, and creditor balances from before FuelOps go in as opening balances.

Already invited by your station owner? Sign up with the email address they invited, and your station will be waiting.