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, മലയാളം, தமிழ், ಕನ್ನಡ, हिन्दी.
Fuel & Sales
Collections
Final Reconciliation
Total Revenue − (Net Collection + Total Credit Given Rs. 8,500.00 + Expenses Rs. 1,000.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.
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.
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 · DashboardTotal 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.
Litres = closing − opening. Amount = litres × that date's Petrol rate, Rs. 102.40.
Save blocked
Sample data · dateThree 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| S.No | Customer | Opening Bal. | New Credit | Payments | Outstanding | Last Activity |
|---|---|---|---|---|---|---|
| 1 | Sunrise Transports KL-05-CX-1234 (Lorry) KL-07-AB-9090 (Tanker) | Rs. 12,400.00 | Rs. 18,650.00 | Rs. 20,000.00 | Rs. 11,050.00 Outstanding | 18-07-2026 |
Sunrise Transports
KL-05-CX-1234 (Lorry)
KL-07-AB-9090 (Tanker)
Two vehicles, one balance. The real list also carries a Contact column and per-row Actions, left out here.
Activity Log
Sample data| Date | Invoice No | Customer ID | Customer Name | Vehicle No | Fuel Type | Amount | Payment Received | Payment Type | Net Credit |
|---|---|---|---|---|---|---|---|---|---|
| 18-07-2026 | Sale | SUN-01 | Sunrise Transports | KL-05-CX-1234 (Lorry) | Diesel | 5,887.50 | 0.00 | - | 5,887.50 |
| 17-07-2026 | Payment | SUN-01 | Sunrise Transports | - | - | 0.00 | 20,000.00 | UPI | -20,000.00 |
| 17-07-2026 | Sale | SUN-01 | Sunrise Transports | KL-05-CX-1234 (Lorry) | Diesel | 7,065.00 | 0.00 | - | 7,065.00 |
| 16-07-2026 | Sale | SUN-01 | Sunrise Transports | KL-07-AB-9090 (Tanker) | Diesel | 5,697.50 | 0.00 | - | 5,697.50 |
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 dataType 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.
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.
===================================================================================
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.
===================================================================================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.
| Date | Opening Stock | Receipts | Total | Actual Sales | Closing Stock | Variation | T1 | Total Dip Stock | N1 | Total Meter Sales | Pump Testing | Water Dip | Remarks | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Dip | Stock | Op. Meter | Sales | ||||||||||||
| 16 | 6,845.25 | 8,000 | 14,845.25 | 1,790 | 13,055.25 | 0 | 13,015.25 | 13,055.25 | 13,055.25 | 41,177 | 1,790 | 1,790 | 0 | 0 | — |
| 17 | 13,015.25 | 0 | 13,015.25 | 1,395.25 | 11,620 | 0 | 11,620 | 11,620 | 11,620 | 42,967 | 1,395.25 | 1,395.25 | 0 | 0 | — |
| 18 | 11,620 | 6,000 | 17,620 | 1,480.5 | 16,139.5 | 0 | 16,067.5 | 16,139.5 | 16,139.5 | 44,362 | 1,480.5 | 1,480.5 | 0 | 0 | — |
| Total | 31,480.5 | 14,000 | 45,480.5 | 4,665.75 | 40,814.75 | 40,814.75 | 4,665.75 | 4,665.75 | 0 | ||||||
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
Product, capacity in litres, reorder minimum and maximum, minimum dip. Active or inactive.
Nozzles
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
You define your own shifts — Morning, Evening, Night, or whatever your station runs. Nothing is hardcoded.
Employees
Name, 10-digit mobile, optional 12-digit Aadhaar. This master becomes the attendant dropdown in Shift Sales.
Rates
Sample dataOne 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.
| Date | Petrol (Rs./L) | Diesel (Rs./L) |
|---|---|---|
| 18/07/2026 | 102.40 | 94.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.
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.
| Capability | Owner | Staff |
|---|---|---|
| Enter shift sales, add expenses, edit creditors | ||
| Manage tanks, nozzles, shifts, employees | ||
| Manage stations and staff | ||
| Delete creditors | ||
| Generate and save the daily summary | ||
| Delete expenses | yes, inside a shift | |
| View Daily Summary and Monthly Register | only if you enable it |
Enter shift sales, add expenses, edit creditors
Manage tanks, nozzles, shifts, employees
Manage stations and staff
Delete creditors
Generate and save the daily summary
Delete expenses
View Daily Summary and Monthly Register
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.
N1 · Petrol
N2 · Diesel
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
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.
- Create your stationname, location, licence number
- Add tanks and nozzles
- Set today's rate
- 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.