VWTVWT
← All insights

Charging Customers for Delivery in Thailand

Published September 1, 2026 · 15 min read

Most delivery charges in Thailand were not decided. They were inherited, or copied from whoever the sales director worked for last, and then defended for years by people who never saw the arithmetic behind them.

That matters more than it sounds, because the delivery charge is the only price you set that changes your own transport cost. Every other number on the invoice moves money between you and the customer. This one moves the customer, and the customer moves the truck.

So it is worth being clear about what you are actually buying with it.

The charge does two different jobs, and one number cannot do both

A delivery charge is asked to do two things that pull in opposite directions.

  • Recover the cost of the delivery. That is an accounting job. Done properly it means pricing the things that actually move the cost, and it produces a tariff that looks like a tariff.
  • Change what the customer orders. That is a commercial job. Done properly it means deliberately mispricing the delivery, in one direction or the other, to buy a behaviour you want.

Almost every policy that fails is one number trying to do both. A single flat fee that is also meant to push order sizes up will be too low to recover a long trip and too small to move anybody. A free-delivery threshold that is also meant to pay for the vehicle will do neither.

The fix is not complicated. Decide which job each part of the charge is doing, size each part for its own job, and keep them visible as separate parts.

This is a different question from the minimum order, which is the order you refuse. That one is a drop size wearing a disguise. This is the price on the order you accept.

Job one: price the three things that move the cost

Delivery cost does not move with the value of the order. It moves with three things, and a tariff that recovers cost has a term for each.

  • The stop itself. Somebody drives to a place, waits, unloads, gets a signature and leaves. That cost is roughly the same whether the order is worth 2,000 baht or 200,000. It is a fixed charge per delivery.
  • The distance. How far the stop is from wherever the vehicle starts. This is a rate per kilometre, or a band.
  • The handling and the space. What the goods do to the vehicle and to the two people unloading it. Cement is not the same job as light packaging at the same invoice value.

Three drivers, three terms. If your delivery charge is a single number, it is recovering an average, and an average recovers too much from the near, light, easy customer and too little from the far, heavy, awkward one. You will lose the first customer and keep the second, which is the wrong way round.

What a properly built Thai tariff looks like

It helps to look at one that is public. HomePro publishes its delivery policy in full, and the structure is instructive whatever you sell.

The published tariff has all three terms and keeps them apart.

  • A fixed charge per order. Delivery starts at 50 baht per order.
  • A distance term. Deliveries in Bangkok, the surrounding provinces and upcountry within 40 km of the stocking branch are free from 500 baht of goods. From 41 to 60 km the charge is 400 baht. Beyond 60 km it is 900 baht. A separate published table prices weight against kilometres: 300 baht flat to 10 km and then 15 baht a kilometre up to 2,000 kg, 400 then 30 from 2,000 to 6,000 kg, 800 then 35 from 6,000 to 12,000 kg, and a flat 3,800 baht above 12,000 kg.
  • A handling term. Named product groups carry a surcharge for the first ten units and a further per-unit rate after that: cement is 300 baht then 15 baht a unit, boards over 40 kg the same, asphalt and lighter boards 150 then 10, plywood a flat 150 an order. An extra person to help carry is 300 baht a head, and tiles or large items that have to go upstairs are 300 baht a unit, both paid at the door.

Now look at what the threshold is doing in that policy, because this is the part worth copying.

The free-delivery threshold is 500 baht of goods, and clearing it is worth exactly 50 baht in every band. At the far end that means an order beyond 60 km goes from 950 baht of delivery to 900. The threshold is a marketing instrument and it has been deliberately capped so that it can never eat the trip. The distance term does the cost recovery. The handling surcharges are excluded from the discount altogether, so the awkward job is never given away.

That is the separation, made concrete. One instrument per job, and the commercial one is small enough that it cannot break the accounting one.

Two other things in that tariff are worth stealing.

The weight bands are really vehicle classes. The per-kilometre rate steps from 15 to 30 to 35 baht as the load crosses 2,000 and 6,000 kg, because it is stepping up a vehicle. Above 12,000 kg the table stops charging for distance at all and goes flat at 3,800 baht. Run the arithmetic on the published numbers and something odd falls out: a 6,000 to 12,000 kg load costs 800 plus 35 a kilometre, which reaches 3,800 baht at about 96 km, so beyond that distance the heaviest band on the table is the cheapest. Against the 2,000 to 6,000 kg band the crossover is about 123 km. That is not a mistake, it is what happens when a full vehicle stops being priced by the kilometre and starts being priced as a vehicle. But it is exactly the check to run on your own tariff, because a band structure will always have crossovers and the ones you did not intend are the ones customers find first.

Bands create cliffs and cliffs create arguments. Forty kilometres from the branch is free. Forty-one is 400 baht. That single kilometre is worth 400 baht, and the customer sitting on it will call about it every time. A rate per kilometre has no cliffs but is harder to quote; a band structure is easy to quote and buys you an argument at every boundary. Choose knowingly, and put the boundary somewhere the map is thin rather than somewhere your customers are dense.

Job two: the give-away you can calculate before you decide

Free delivery above a threshold is the most popular delivery policy in Thailand and the least examined. It is worth being blunt: it is a discount. It should be argued for the way a discount is argued for, and the first number to put on the table is what it costs you before anybody changes their behaviour.

That number takes ten minutes and last month's order file.

Step one: count the orders that already clear the line. Say you deliver 100 orders a month in one region, you currently charge a flat 450 baht, and you are considering free delivery above 3,000 baht of goods. Sort last month's orders and count how many were already over 3,000. Suppose 62 were.

Step two: that is the give-away, and it is certain. Sixty-two orders times 450 baht is 27,900 baht a month, or 334,800 a year. Those customers were already ordering above the line. Nothing about their behaviour changes. You have simply stopped charging them.

Step three: work out what has to happen to pay for it. The threshold has to earn 27,900 baht of gross margin a month out of orders that get bigger. At an 18% gross margin, that is 155,000 baht of extra order value every month, and it can only come from the 38 orders that were below the line. If those 38 averaged 1,700 baht, they were 64,600 baht of business in total. You are asking them to more than triple.

They will not. So at 3,000 baht the threshold is a price cut with a marketing story attached, and it should go to whoever approves price cuts.

Step four: move the line until the arithmetic is possible. The whole thing turns on how many orders already clear the threshold, which is why a threshold set below your current average order value is money handed over for nothing. Put it at 6,000 instead. If only 14 orders clear that, the give-away is 6,300 baht a month, needing 35,000 baht of extra order value from the 86 orders underneath. That is a number a real promotion can produce.

The rule that falls out of this is short. A free-delivery threshold has to sit above the order value your customers already reach, or you are paying for behaviour you already had. Most thresholds in the market are below it, because they were set to look generous rather than to be tested.

And measure the right thing afterwards. Extra baht on an order changes almost nothing about your cost. Fewer, larger deliveries do, because a stop that disappears is vehicle time you get back. If the threshold makes a customer order once a month instead of twice, that is the win, and it shows up in the vehicle's day rather than in the invoice.

The structure to avoid: a percentage of the order

A delivery charge set as a percentage of order value is common and is the worst of the options, because it is the only one with no relationship at all to the cost it is meant to recover.

Two orders, both 100,000 baht. One is a pallet of electronics going 15 km. The other is nine tonnes of tiles going 180 km. At 3% they both pay 3,000 baht. One of them is paying four times what the job costs and the other a fraction of it, and the customer who is being overcharged is the easy one you want more of.

It also moves for reasons that have nothing to do with transport. Put your prices up 8% and your delivery charge goes up 8% on the same truck doing the same trip. Discount a line and the delivery charge falls. The charge ends up tracking your pricing policy instead of your cost.

If you need one number for simplicity, make it a fixed amount per delivery, not a percentage. Per drop at least tracks the one cost that genuinely does not move with order value.

The Thai tax rule that decides who should hire the truck

This is the part that changes decisions and is almost never in the discussion, because it sits between the sales department and the accounts department and neither reads the other's rules.

Under Section 79 of the Revenue Code, the VAT base for a sale of goods is the whole value the seller receives or is entitled to receive, and the section defines that value as money, property, consideration, service charges or any benefit that can be calculated in money. A delivery charge is consideration you receive on a sale of goods. It is in the base.

The Revenue Department has ruled on exactly this. A manufacturer of shelving and steel parts delivered to its customers and billed the transport separately from the goods, then asked how it should be treated. The Department's answer was that the value of the goods including the transport charge goes into the VAT base for the sale of goods under Section 79, and that because the transaction is a sale of goods, no withholding applies to it.

So, for a company whose business is selling goods:

  • Splitting the delivery onto its own line does not change anything. Nor does putting it on its own document, nor using a hired truck rather than your own. It is part of the price of the goods and it carries 7%.
  • There is no 1% withholding on it, because it is not a transport service you are supplying. The buyer withholds nothing on a purchase of goods.

Now put that next to what a transportation company's own invoice does. Section 81(1)(ณ) exempts the provision of transport services within the Kingdom from VAT. A carrier billing a domestic road movement charges no VAT, and the payer withholds 1%. We have set out what each line on that invoice does and why the rates differ separately.

The practical consequence is a gap that only appears with one kind of customer.

  • If your customer is VAT registered, none of this matters. Your 7% is their input tax and it washes out. Argue the delivery charge on its merits.
  • If your customer cannot reclaim input VAT, and plenty cannot, your 1,000 baht delivery charge costs them 1,070. The same truck hired directly by them costs 1,000, with 990 paid across and 10 withheld. That is a real 7% difference on the freight, and it is a reason for that customer to collect or to arrange their own carrier, whatever your policy says.

Two things follow. First, if you are going to let customers collect, price it honestly: take the delivery out of the price rather than leaving the same price and calling collection a favour. Second, if you give a discount for collection, give it as a discount deducted at the time of sale and shown clearly on the tax invoice, because Section 79 keeps a discount shown that way out of the VAT base. An informal rebate settled later does not get that treatment.

Expect the question to come to you eventually in any case. Buyers increasingly ask for the price at the factory gate, without transport in it, precisely because a bundled delivery hides what the transport actually costs and leaves them nothing to manage. A seller who already has a defensible delivery charge answers that question in a meeting. A seller whose delivery is buried in the product price has to go and find out what it costs first, in front of the customer.

Price the exceptions instead of arguing them

A published policy plus unlimited sales discretion is not a policy. It is a policy-shaped document and a set of private deals, and the deals are always granted to the customers who complain rather than the ones who cost least.

The answer is not to refuse exceptions. It is to have a price for each of the ones that keep happening, so that granting one is a decision with a number on it rather than a favour.

The same published tariff shows how. A missed delivery where nobody is there to receive the goods, and no postponement was given by 15:00 the previous day, is charged 300 baht. That is a re-delivery priced rather than argued, and note the notice deadline attached to it, which is what makes it enforceable. Without a stated cut-off, every failed delivery becomes a discussion about whether somebody phoned.

Build the same for your two or three real exceptions. An urgent delivery outside the normal schedule has a named rate. A delivery split across two dates because the customer's site is not ready has a named rate. A second attempt has a named rate. None of them need to be large; they need to exist, so that the sales manager giving one away knows what they gave.

Make the charge move when your cost moves

The last failure is a policy that was right when it was written and is never touched again. Fuel moves, driver cost moves, and a delivery charge fixed in 2023 is quietly a discount by 2026.

Write the review into the policy itself: what the charge is reviewed against, how often, and how much notice customers get. A charge that steps once a year on a stated basis is easier to defend than one that jumps when somebody finally notices. The same discipline that makes a fuel clause fair rather than arbitrary applies here, and for the same reason: customers accept a rule far more readily than they accept a number.

What to do on Monday

  • Write down what your delivery charge is actually made of. If you cannot separate it into a per-delivery part, a distance part and a handling part, it is recovering an average and mispricing both ends of your customer base
  • Run the give-away calculation on your threshold. Count last month's orders above it, multiply by the delivery charge you are waiving, and compare that with the extra gross margin the threshold would have to produce. Do it before the next promotion, not after
  • Check whether your threshold sits above or below your average order value. Below it, you are paying for behaviour you already had
  • If your charge is a percentage of order value, change it to a fixed amount per delivery. That single change stops your delivery charge tracking your pricing
  • Find out how many of your customers cannot reclaim input VAT. For them your delivery charge is 7% more expensive than hiring the truck themselves, and that is a live reason for them to unbundle you
  • List the exceptions your sales team grants every month and put a price on each. A named rate turns a favour back into a decision
  • Put a review date and a review basis in the policy. A delivery charge with no review clause becomes a discount by doing nothing

The delivery charge is a small line on the invoice and one of the few levers that reaches all the way back into the vehicle. Priced to the cost, it stops you funding your most expensive customers. Priced to change behaviour, it can take stops out of the week. Priced to do both at once, it does neither, and that is where most of them are today.