BLOGS

Diesel Price in India Isn't One Number. Neither Should Your FAF Clause Be.

Written By:
Vikas Singh
September 16, 2026
A look at state-wise diesel price data, and what it means for the fuel clause in your freight contracts.

Take a truck running Pune to Chennai. It fuels up in Maharashtra, crosses Karnataka, finishes in Tamil Nadu. Three states, three different diesel prices, one trip.

Now ask a plain question: which of those three prices does your FAF clause actually assume?

Most procurement teams can't answer it. Not because the answer is hard, but because the clause was written to a single number years ago and nobody has re-opened it since. And here is the part that catches people out. On that one lane there are three different "diesel prices" in play, and they rarely point to the same state.

The price your contract benchmarks to. Most FAF clauses reference one price point, usually origin, frozen at the last renewal. That is the number in your paperwork right now.

The price your route plan implies. Depending on tank size and where the truck can practically stop, it might fuel once at origin, or split fills across two or three states.

The price the transporter actually pays at the pump. This is the one that most often differs from both of the above, because transporters make fueling decisions based on where diesel is cheapest along the route, and they usually know the state gaps better than you do.

If your FAF is built on the first of those and never checked against the other two, one of two things is happening on every trip and you can't tell which without looking. Either your carrier is quietly under-recovering on fuel and pricing that back to you at the next renewal, or you are paying a fuel bill your truck never actually incurred. This piece is about how to tell which one you're in, how big it is, and how to fix the clause so it stops guessing.

We've written separately about why a flat FAF also breaks down on distance: fuel is roughly 30% of trip cost on a 100 km lane and closer to 44–51% on a 1,500 km one, so a single percentage can't be right for both. That is the time-and-distance axis. This piece is the geography axis. Two lanes of identical length can carry very different fuel costs purely because of where in India they run. Both problems trace to the same root, which we'll get to: a clause built on one assumption applied everywhere.

First, what a FAF clause actually is

Before the state gap makes sense, it helps to be precise about what you're adjusting. A fuel adjustment clause has five separate moving parts, not just one number. The "which state" question only touches one of them. Getting the other four wrong is how a geographically-correct clause still leaks.

  • Base price (P₀). The diesel rate baked into the contracted freight rate on day one. Every adjustment is measured from this. If P₀ was ₹97 and diesel is ₹104 today, the clause is meant to pass through the ₹7.
  • The reference index. Which published diesel price you measure "today" against. This is the state problem. Is it origin-city retail? A national average? PPAC? One OMC's board rate? Most contracts don't even name the source precisely, which is its own liability.
  • The pass-through weight (α). The share of the freight rate that is fuel. You don't repay 100% of a diesel move, you repay the fuel portion of the rate, typically 30-50% depending on lane length. Get α wrong and you over- or under-compensate every cycle regardless of the price.
  • The deadband (trigger). Many clauses only adjust once diesel moves past ±₹X or ±3-5% from base. Inside the band, nobody's compensated. Diesel can move ₹4-5 inside a single quarter and never trip a wide band.
  • The reset cadence. Monthly, quarterly, or "on renewal." Diesel reprices daily in India. A quarterly reset is running a daily variable off a 90-day-old number for 89 days out of 90.

Hold that structure in mind, because it tells you exactly where each failure lives. Distance corrupts α. Time corrupts P₀ and the cadence. Geography corrupts the index. This piece is the index problem. It is the one almost nobody has priced, and on a cross-state network it is often the biggest of the three.

The Gap Between States Is Real, and It's Structural

The gap in diesel price across India is large, and it follows a clear pattern.

As of early September 2026, diesel is about ₹95.20 a litre in Delhi and ₹97.83 in Maharashtra. In Telangana it's ₹103.82. Kerala runs ₹100 to ₹105 depending on the district, Ernakulam at the low end, Kannur at the high. That is ₹8 to ₹10 a litre between the cheapest and priciest of those, for the identical fuel.

The reason sits entirely on the tax side, and it's worth understanding rather than memorising, because it tells you what the gap will do next. A litre of pump diesel is: refinery/base price, plus freight, plus OMC margin, plus dealer commission, plus central excise, plus state VAT (sometimes a cess on top). The first block is broadly common across the country. Central excise is a fixed rupee amount per litre, uniform nationwide. The one piece that varies state to state is VAT, and because diesel sits outside GST, every state sets its own, most as a straight percentage of the price.

That percentage is the whole story. Telangana's diesel VAT runs around 27%, Delhi's around 16.75%. Push the same pre-VAT price through both and the rupee gap lands within about a rupee of the actual ₹8.62 difference between the two cities above. That is about as clean as a tax explanation gets.

Two consequences a procurement team should take from that, both missed by the usual "diesel is dearer down south" shrug:

The ranking is permanent. VAT rates don't move with crude. A high-VAT state stays a high-VAT state through every price cycle. This won't average out over a quarter. It's a fixed feature of the map, not a spike. It deserves to be priced in once, deliberately, not treated as noise.

The gap grows when diesel is expensive. VAT is a percentage, so the rupee gap between a 27% state and a 17% state is wider on a ₹55 base than on a ₹40 base. The state penalty on your southern lanes is largest in exactly the months a crude spike already has your fuel bill under pressure. The geography error and the price-spike error stack, they don't offset.

If you want to see the build-up for yourself, PPAC (the government's Petroleum Planning & Analysis Cell) tracks daily retail prices, though for the state-by-state tax split you end up on the individual OMC pages it links to rather than one clean table. We rebuilt that as a live tool instead: the PPAC Diesel Price Model lets you model the state-wise build-up, run crude and forex scenarios, and read it straight through to your own fleet's cost.

Does Geography Even Bite This Lane? Check the Tank First

Here is the operational filter almost no FAF discussion applies: the state gap only matters to the extent your truck actually buys fuel in more than one state. And that comes down to tank range, not the number of state lines the route crosses.

A heavy truck carries roughly 300 to 400 litres. At 3.5-4 km a litre, that works out to 1,000 to 1,600 km on a fill. So lanes split into two regimes, and the fix differs:

Short and medium lanes (roughly under 900 km): one fill, usually at origin. The truck tanks up before it leaves and runs the whole lane on it. Here the origin state price is genuinely the right reference, and the error is simply that your clause froze the wrong origin number, or that the transporter topped up in a cheaper adjacent state just before departure and pocketed the difference.

Long lanes (roughly 1,000 km and up): two or three fills across states. No single state price is correct. The truck burns some litres in each state it fills in, and the honest benchmark is a blend of those, weighted by how much it actually buys where.

So before you argue about which state, check whether the truck even refuels twice. On a 625 km lane it doesn't, and origin is the answer. On a 1,400 km lane it does, and you need the blend. Getting this regime wrong is how people either over-engineer a short lane or under-price a long one.

The Single-Fill Lane, and Who's Actually Losing

Take Hyderabad to Chennai, about 625 km via the NH16 coastal route through Nellore (the inland NH44 via Kurnool runs closer to 700). A 25 MT truck at 4 km/litre burns about 156 litres one-way. One fill, at origin, in Telangana.

Say the FAF was set to a flat ₹97, locked at the last renewal and never touched. Hyderabad diesel today is ₹103.82. That is ₹6.82 on every litre the truck actually burns.

The Trip
LaneHyderabad → Chennai
Distance~625 km
Mileage assumption4 km/litre
Fuel required~156 litres

The gap
FAF reference (frozen)₹97/litre
Actual origin-state diesel₹103.82/litre
Difference₹6.82/litre
Fuel gap per trip₹1,064

Now the part the usual version of this gets backwards. In this case the benchmark sits below reality, so the clause is under-compensating. Here, you're not the one overpaying. Your carrier is under-recovering. They eat it now, and they get it back the only way they can: a higher base rate at renewal, a quiet drop in priority when capacity is tight, or handing the lane back. Your "cheap" FAF is a deferred invoice.

Flip one input and the loser flips too. Suppose instead your clause benchmarks to a destination state that's pricier than where the truck fills, or the renewal number is stale on the high side, and the transporter tanks up in a low-VAT state before the run. Now the clause over-compensates, and the ₹1,064 leaks straight out of your budget into their margin. Same clause, opposite victim, same size either way. This is why "our FAF looks conservative" is not reassurance. Conservative in which direction, on which lane, against where the truck actually fuels? You can't know without checking.

Per trip it's ignorable. Run the lane 100 times a month, ordinary for a distribution route, and it isn't:

100 trips × ₹1,064 = ₹1,06,400 a month ≈ ₹12.8 lakh a year, on one lane, in one direction, from a parameter nobody re-opened.

The lever behind that number is worth writing down, because it lets you rank your own lanes in your head:

Annual leak per lane ≈ trips/year × (distance ÷ mileage) × benchmark error (₹/litre)

Three dials: volume, lane length, and how wrong the reference is. A short high-volume lane and a long low-volume lane can leak the same amount. The litres and the trips do the damage. A ₹6-8 state gap is the structural spread shown above, not a rounding error.

The Multi-Fill Lane, and the Benchmark That's Actually Correct

Back to the opening truck, Pune to Chennai, about 1,270 km via Bengaluru. At 4 km/litre that is roughly 318 litres, well past one tank, so it fills two or three times and buys diesel in more than one state. No single state price is honest here. The correct reference is a consumption-weighted blend: for each state segment, work out the litres burned there, price them at that state's rate, total it, and divide back by total litres.

Worked through, with the state splits the route implies (illustrative pump prices, plug your live numbers from the model):

State segment Distance Litres (÷4) Assumed ₹/l Segment fuel ₹
Maharashtra~300 km7597.837,337
Karnataka~700 km17591.0015,925
Tamil Nadu~270 km68100.806,854
Blend~1,270 km318₹94.7030,116

The effective diesel price on that lane is about ₹94.70, and notice what it is not: not the ₹97.83 origin number a Maharashtra-origin clause would use, and not the ~₹100.80 a Tamil-Nadu-destination clause would use. Benchmark to origin and you over-pay by about ₹3/l across 318 litres, near ₹1,000 a trip.
Benchmark to destination and you under-pay by about ₹6/l, near ₹1,900 a trip for the carrier to swallow. The blend is the only accurate number, and it sits below both endpoints because the long Karnataka stretch, a lower-VAT state, dominates the litres. That is the thing a single-state clause structurally cannot see: on a long lane the middle often owns most of the fuel, and the middle is exactly the state nobody writes into the contract.

(The prices above are illustrative, to show the method. Karnataka in particular you should pull live, its diesel VAT has moved more than once. Run your real state numbers through the model and the blend falls out.)

The Transporter Already Knows All of This

None of this is a secret to your carriers. An experienced fleet operator knows the state VAT map cold and routes fuel stops around it, topping up a 300-litre tank in a low-VAT state before crossing into a high one. On the right corridor that is ₹8-10 a litre on a near-full tank, ₹2,400 to ₹3,000 saved per fill, and under a benchmark that assumes a single high-price state, that saving is invisible and it is entirely theirs.

That is not a reason to be adversarial about it. It is a reason to decide, on purpose, whether your clause shares that arbitrage (benchmark to actual fueling, so both sides see the real number) or neutralises it (benchmark to route consumption, so the clause pays the honest lane cost and the operator keeps whatever their fuelling skill earns on top). Both are defensible. Defaulting to a frozen origin number is choosing neither, and losing the argument in whichever direction the map happens to run.

Two More Traps, Because the Index Isn't the Only Leak

Fixing geography without touching the rest of the clause leaves money on the table:

  • Retail vs bulk. Fleets often assume a "bulk" diesel rate applies. On large-consumer/bulk purchase, the price is frequently higher than the retail pump rate, which is why many fleets deliberately fuel at retail pumps on fuel cards. If your P₀ or your index quietly references the wrong one of these, you have mis-set the base before geography even enters.
  • The deadband and the calendar. A geographically-correct benchmark on a quarterly reset with a ±5% deadband still under-tracks a daily variable. Diesel can drift ₹4-5 within a quarter without tripping a wide band. The space fix and the time fix are separate jobs. Do both.

How to Check Your Own Network (A Real Hour, Not a Project)

  1. Pull your top 5 lanes by annual spend that cross a state price line. Spend, not trip count, so you catch the long low-volume ones the leak formula flags.
  2. For each, write down four things: the reference price the FAF actually names (and whether it names a source at all), the base P₀ and when it was set, the lane distance ÷ mileage for litres, and whether tank range means one fill or several.
  3. For single-fill lanes, compare the frozen reference to today's origin-state pump price. For multi-fill lanes, run the consumption-weighted blend.
  4. Multiply the per-litre error by litres by annual trips. That is the lane's yearly exposure, and its direction tells you whether it's your carrier's problem walking toward you or your budget's problem already gone.
  5. Instrument the "where do they fuel" question instead of asking it. A transporter has every reason to be vague on a phone call. FASTag movement, telematics, and fuel-card data answer it with evidence. Re-check whenever a lane's fuelling pattern shifts, rather than on a fixed calendar. That shift is what quietly breaks a clause that was accurate last quarter.

Five lanes, an hour, and most networks have never run it once.

Fixing the Clause, Specifically

You don't rebuild the contract. You amend the one parameter that's wrong, and the amendment depends on the regime:

  • Single-fill lanes: a state-linked index. Replace the frozen number with the daily OMC retail price of the origin-state city, named to a specific source. Cheapest fix, closes the biggest short-lane gap.
  • Multi-fill long lanes: a route-consumption blend. Reference the weighted-blend method above, recomputed on the reset cadence. More work to agree once, then it runs itself.
  • A network of similar lanes: a corridor surcharge matrix. Pre-agree a fuel adjustment per corridor rather than per contract, so the whole book moves together off one maintained source.

In every case, name the source, tighten the deadband, and move the reset toward monthly. Agreeing which reference to use is almost always the hard part of the negotiation, not the mechanics, so walk in with the blend already computed.

This is the same idea as the distance piece: a contract should reflect how the network actually runs, lane by lane, not one number carried forward because it was easy to write. Geography and distance are two axes of the same flat-assumption failure. Running the state-wise build-up live, per lane, off the real daily prices is what the PPAC Diesel Price Model is for, and it's the difference between a fuel clause that tracks reality and one that quietly bleeds a lakh a month you never see on any single invoice.

So What Should You Actually Do

Back to the Pune-to-Chennai truck. There genuinely isn't one right state for its FAF. That's the actual point. What separates a clause that works from one that leaks is whether someone chose the reference on purpose, from where the trucks actually fuel, or defaulted to whatever was easiest to type into a renewal.

Pull your five biggest cross-state lanes, run the check above, and you'll know within an hour whether your fuel clause is tracking reality or handing money to one side of the table every trip. Pair it with the distance piece and you've covered both axes the flat FAF gets wrong.

Frequently Asked Questions

It depends on whether the truck refuels once or several times, which is a tank-range question, not a how-many-borders question. Short and medium lanes run on one fill, so origin-state retail is the honest reference. Long lanes (roughly 1,000 km-plus) refuel across states, and no single state is right. You want a consumption-weighted blend of the states where the truck actually buys fuel, weighted by litres burned in each. PPAC's daily state data is public at ppac.gov.in, or run your real numbers through our PPAC Diesel Price Model.
Both are possible, and they're the same size. If your benchmark sits below where the truck really fuels, the clause under-compensates and your carrier absorbs it, then prices it back at renewal as a higher base rate or worse capacity. If your benchmark sits above where they fuel, you overpay and the spread becomes their margin. You can only tell by checking where the truck actually buys diesel. The clause alone won't tell you.
Diesel reprices daily, but the state-to-state gap comes from VAT rates that rarely move, so daily price movement isn't the real risk. The real risk is a transporter quietly changing where they fuel on a lane, which breaks the assumption silently. Monthly is a reasonable cadence for most networks, tighter on high-volume lanes with a wide price gap. Trigger a re-check on a fuelling-pattern change, not just on the calendar.
Bigger. State VAT is charged as a percentage, so the rupee gap between a high-VAT and a low-VAT state widens as the underlying price climbs. Your southern lanes carry their largest penalty in exactly the months a crude spike already has your fuel costs up, which is why treating the gap as noise that averages out is the wrong call.
It's an amendment. You're not rebuilding the clause from scratch. A state-linked reference (single-fill lanes) or a route-consumption blend (long lanes) drops onto an existing FAF structure. The effort is agreeing which reference price to use and naming its source precisely, not restructuring the clause, so bring the blend already calculated.