VWTVWT
← All insights

Fuel Surcharges in Thailand: How to Tell a Fair One

Published August 8, 2026 Β· 11 min read

A line appears on the invoice: fuel surcharge, 6%. Nobody in the room can say whether 6% is right, so it gets paid, and it gets paid again next month.

The reason it is hard to check is not that the carrier is hiding something. It is that the number the surcharge points at is not a market price. In Thailand the pump price of diesel is assembled from a refinery price, several taxes, a fund that can push in either direction, and a discount line, and on any given week the policy parts of it can be worth more than the movement in the world market.

That changes what a fair surcharge looks like here. This article takes the published price apart, shows what Thai diesel actually did over the last eighteen months, and gives you an arithmetic test you can run on your own invoice.

What you are really indexing to

Take the structure published for 7 August 2026, in baht per litre, for ordinary high-speed diesel.

Component Baht per litre
Ex-refinery price 30.7242
Discount -2.4000
Excise tax 6.9200
Municipal tax 0.6920
Oil Fuel Fund -3.7000
Conservation fund 0.0500
Wholesale 32.2862
VAT on wholesale 2.2600
Marketing margin 2.0036
VAT on margin 0.1402
Retail 36.69

Read the middle block on its own. Between the refinery gate and the wholesale price sit five administered lines. In absolute terms they move 13.76 baht a litre. Netted off against each other, they add 1.56.

So on a 36.69 baht pump price, roughly 10.01 baht is tax once VAT is counted, about 27% of what you pay. And 3.70 baht is not a price at all. It is the fund paying part of your diesel bill for you, before VAT, which means the pump price would be about 3.96 baht higher without it.

Add back the 2.40 discount as well and the same litre would be about 43.22 rather than 36.69, without a single barrel of crude moving. That is 18% of your diesel cost sitting on decisions rather than on the market.

None of that makes the price wrong. It makes it a policy number, and a surcharge indexed to a policy number inherits the policy.

Thai diesel does not drift, it steps

This is the part that breaks most fuel clauses, and you can see it in the published Bangkok retail series for high-speed diesel B7.

Month Retail diesel, baht per litre
May to September 2025 31.94 every month
October 2025 31.31
December 2025 30.81
January 2026 30.07
February 2026 29.94
March 2026 32.12
April 2026 44.13
May 2026 41.13
June 2026 39.25
7 August 2026 36.69

Five consecutive months at exactly 31.94, and then a 47% rise in two months.

Two consequences follow, and they are the opposite of what a template clause assumes.

A percentage trigger sleeps and then fires late. A clause that says "the surcharge is reviewed if diesel moves more than 5%, assessed quarterly" produced nothing at all through 2025. In 2026 it produced a single adjustment, a quarter after the event, based on a month that had already passed.

Symmetry matters more here than elsewhere. A price that steps up 47% and then falls back 17% over four months will overpay you or underpay you badly depending on which direction your clause is written to notice. Plenty of clauses only describe what happens when diesel rises.

The rise you did not see, because the fund absorbed it

The reason April looks violent and March does not is visible in the fund's own weekly rate on diesel.

Date Fund rate on diesel B7, baht per litre
1 January 2026 +2.10 collected
23 February 2026 -0.67 paid out
16 March 2026 -21.25 paid out
29 June 2026 +0.46 collected
7 August 2026 -3.70 paid out

At the peak the fund was paying 21.25 baht on every litre of diesel sold, and the pump price still rose 47%. The mechanism limited the pass-through. It did not prevent it.

What it cost is in the fund's own weekly accounts. The oil account stood at a positive 21,407 million baht on 1 March 2026. Five weeks later, on 5 April, it was negative 15,800 million. By 2 August it was negative 30,329 million, with the fund as a whole 69,782 million baht in deficit and 52,963 million baht owed to fuel traders as compensation still to be paid.

For scale, the Act that created the fund sized it at forty thousand million baht including borrowing, with borrowing capped at twenty thousand million and both figures changeable only by Royal Decree. And Section 5 sets the purpose narrowly: keeping domestic fuel prices at an appropriate level in the event of a fuel crisis. It is a shock absorber with a legal size, not a standing discount.

Why this matters to a rate you sign this year

A subsidy is a loan against your own future pump price. Through most of 2025 the fund was collecting on diesel rather than paying, peaking at 3.30 baht a litre before VAT in April 2025, roughly a tenth of the pump price at the time. That is what repayment looks like from the driver's seat.

So expect a stretch where Thai diesel sits above what world prices alone would justify, and expect your surcharge to fire during it. A buyer who believes the clause tracks the oil market will read that second rise as opportunism. It is not. It is the first one being paid for.

And this is why a written fuel mechanism usually beats a flat twelve-month price. A carrier asked to hold a fixed rate across a swing like March to April 2026 either prices a buffer in from the start or comes back to renegotiate. Neither is cheaper for you than an honest formula.

The B20 gap, and the grade your clause names

On that same day, 7 August 2026, the published structure shows two diesels.

High-speed diesel B7 B20
Excise tax 6.9200 5.9530
Oil Fuel Fund -3.7000 -8.7000
Retail 36.69 31.69

Five baht a litre apart, 13.6%, and almost all of the gap is the fund rate rather than anything about the fuel. The two grades carry different fund rates, set weekly and independently, so they do not move together and the gap between them is not stable.

The practical point: a surcharge indexed to B7 while the fleet runs B20 is measuring the wrong thing in both directions. Ask which fuel the vehicles on your lane actually take, and name that grade in the clause.

Turn the percentage into litres, and it becomes checkable

Here is the test. A percentage is unarguable because it is unfalsifiable. Litres are neither.

Measured Thai data gives you a starting point. A study fitting on-board devices to 400 fuel tanker trucks, across 8,794 trips and 2.7 million kilometres, found a national average of 3.11 km per litre loaded and 4.31 km per litre running empty, 3.54 overall. Those are heavy articulated vehicles, so treat them as an anchor for that class rather than a figure for a six-wheeler.

Take a 400 km round trip, loaded out and empty back:

  • 200 km at 3.11 km per litre = 64.3 litres
  • 200 km at 4.31 km per litre = 46.4 litres
  • 110.7 litres for the round trip

Now price it at the two ends of this year's swing:

  • At February 2026 diesel, 29.94 baht: 3,315 baht of fuel
  • At April 2026 diesel, 44.13 baht: 4,886 baht of fuel
  • The real increase on that trip: 1,571 baht

The reverse test, which is the one to actually use

You will rarely know the carrier's litres. You do not need to. Run it backwards:

  1. Take the extra baht being asked for on the job
  2. Divide by the change in diesel price per litre since the base date
  3. That gives the implied litres the surcharge is claiming
  4. Divide the trip distance by the implied litres
  5. That gives the implied kilometres per litre

Then look at the answer. On the 400 km trip above, with diesel up 14.19 baht a litre:

Extra asked Implied litres Implied km per litre Reading
1,200 baht 85 4.7 Better than an empty truck manages. The carrier is under-recovering
1,600 baht 113 3.5 Matches the measured average for a loaded-out, empty-back run
2,400 baht 169 2.4 Either the vehicle is far thirstier than the measured Thai fleet, or the number is padded

A surcharge stops being a matter of opinion the moment it makes a physical claim about a truck. Ask the question once and the conversation changes: what fuel consumption is this surcharge assuming?

The five things the clause has to name

Most fuel disputes are not about the rate. They are about a clause that left one of these out.

1. The index, the grade and the source. "Diesel price" is not an index. Name the published retail series, name B7 or B20, and name where the figure is read from. Two people reading different pumps on different days will never agree.

2. The base price and the base date. The surcharge is zero at the base. Without a stated base, the carrier is quoting a change from a number only they can see. Write both down when the rate is agreed, not afterwards.

3. The trigger, and whether it is a step or continuous. A step trigger, where nothing happens until diesel moves by a set amount, is easier to administer and it is exactly what misbehaves in a market that sits flat for five months and then jumps. If you use one, keep the step small.

4. The frequency and the lag. Monthly against the previous month's published average is a reasonable default here. Quarterly review against a quarterly average is too slow for a price that can move 47% inside two months, in either party's favour.

5. The share of the rate that is fuel-exposed. This is the one that is almost always missing, and it is where surcharges quietly overshoot.

Fuel and lubricants are about 49% of a Thai road freight operator's variable costs, with labour at 32% and everything else at 19%. That is 49% of the variable half, not 49% of your rate. The standing costs of a truck β€” the vehicle written down over its life, tax, insurance, the driver's basic wage β€” do not move when diesel moves.

So a clause that applies the full percentage change in diesel to the full rate is wrong by construction. If diesel rises 20% and fuel is 30% of the rate, the justified increase is 6%, not 20%. Make the carrier state the fuel-exposed share. One who will not is asking you to index their depreciation to the oil market.

What to change on Monday

  • Find the base price and base date in your current contract. If they are not written down, the surcharge cannot be checked and there is nothing to argue about yet. Fix that before the next movement, not during it.
  • Run the reverse test on the last fuel surcharge you paid. Extra baht, divided by the diesel move per litre, divided into the distance. If the implied kilometres per litre is not plausible for the vehicle that did the job, you have a specific question rather than a general suspicion.
  • Ask which grade the fleet burns, and index the clause to that one. B7 and B20 were five baht apart on 7 August 2026 and their fund rates are set separately every week.
  • Ask for the fuel-exposed share of the rate as a number. It is well under 49%, because half the rate does not care about diesel at all.
  • Check the clause works downwards. Read your own wording and ask what it says happened between April and August 2026, when diesel fell from 44.13 to 36.69. If the answer is "nothing", the clause is a ratchet.
  • Shorten the review cycle before you argue about the rate. Monthly against a published average removes more disagreement than any change in the percentage will.
  • Price the surcharge into the comparison when you tender. A quote with no fuel clause has priced the risk in somewhere, the same way any other exclusion has to be priced at the frequency you actually trigger it before two numbers can be compared.

A fuel surcharge is the one line on a freight invoice that both sides can verify from public data, on the same day, in about five minutes. Almost nobody does. Being the customer who does changes what gets put in front of you next time.