Ask a station owner what they make per litre and most will subtract today's purchase price from today's selling price. It's quick, but it's often wrong, because the fuel you're selling today was bought at different prices over the past days or weeks. Here's how to work out the number that actually lands in your bank account.
Why "selling price minus purchase price" misleads
Your tank holds a mix of fuel from several deliveries, each bought at its own price. When you sell a litre, it comes from that mix, not from the latest delivery alone. If purchase prices are rising, the quick method understates your margin. If they're falling, it overstates it, sometimes by enough to turn a real loss into an apparent profit.
Weighted average cost
The standard fix is weighted average cost (WAC). Each time fuel is delivered, you blend the cost of what's already in the tank with the cost of the new delivery:
For example:
| Item | Litres | Cost per litre | Total cost |
|---|---|---|---|
| Fuel already in tank | 10,000 | 250.00 | 2,500,000 |
| New delivery | 20,000 | 260.00 | 5,200,000 |
| Blended stock | 30,000 | 256.67 | 7,700,000 |
If you sell at 275 per litre, the quick method says your margin is 275 − 260 = 15.00. Using weighted average cost, it's actually 275 − 256.67 = 18.33 per litre. Across 300,000 litres a month, that's a difference of about a million in how profitable you think you are.
What a price change does to fuel already in the tank
Where selling prices are set or changed suddenly, a price change also changes the value of the stock you're holding. Say you have 12,000 litres in the tank and the selling price drops by 5 per litre overnight. You paid the same for that fuel, but you'll now earn 5 less on every litre of it:
A price rise works the other way and gives you a one-off gain. Neither is "real" trading profit, so it's worth tracking the price impact separately. Otherwise a good month can just be the result of a price rise, and a bad one the result of a cut.
Keep tanks lean before expected price cuts and fuller before expected rises, as far as supply and safety allow. Knowing your price impact tells you how much this matters at your site.
From gross margin to net margin per litre
Gross margin ignores the cost of running the station. To see what each litre really earns, spread your operating costs across the litres you sold:
| Item | Per litre |
|---|---|
| Gross margin (weighted average cost) | 18.33 |
| Operating costs: 1,200,000 a month ÷ 300,000 litres | −4.00 |
| Stock loss: 0.3% of cost (about 0.77) | −0.77 |
| Net margin per litre | 13.56 |
Notice the stock loss line. Fuel that goes missing directly eats into margin, which is why tracking stock loss daily matters as much as negotiating a better purchase price.
A monthly margin routine
- Update weighted average cost for each product after every delivery.
- Record every selling price change with the date and the stock in the tank at the time.
- At month end, calculate gross margin per litre by product, separate from price impact.
- Subtract operating costs and stock loss to get net margin per litre.
- Compare month to month and across stations to see which ones are really performing.
Let the system keep the averages
Keeping a running weighted average by hand is fiddly and easy to get wrong after a few deliveries. FuelBotics calculates margin per litre at weighted average cost automatically, shows what each price change did to the fuel already in your tanks, and gives you daily detail by product that you can export for your accountant.
