VWTVWT
← All insights

When a Delivery Fails: Recovery and the Real Cost

Published September 17, 2026 Β· 11 min read

A failed delivery looks like one lost trip. It is usually three costs: the drop you paid for and did not get, the handling to bring the goods back and put them away, and the second attempt, which takes a place on somebody else's route.

Most operations only see the third one, and only when a carrier bills it. This article is about seeing all three, finding where the failures actually start, and handling the fifteen minutes at the gate so that the cost lands with whoever caused it.

What counts as a failed delivery

Define it before you count it. A useful definition: the goods left on a vehicle for the customer, and some or all of them did not pass to the customer as planned.

That covers five different events, and they have different owners:

Event Typical cause Usually decided
Refused Wrong goods, wrong quantity, damage, papers do not match the order At your desk or dock, before the truck left
Not received Site closed, nobody authorised to sign, no booking at the customer's warehouse At the customer, often the day before
Could not enter Vehicle not registered at the factory gate, road or site access Between you and the customer, before dispatch
Partly accepted Some lines rejected, the rest taken Mixed
Cancelled en route The order was withdrawn after loading At the customer or your sales desk

A late delivery that was still accepted is not on this list. It belongs in measuring on-time delivery honestly, where a refusal already counts against the perfect order.

Where Thai failures actually start

One of the few Thai studies that counted this properly followed a road courier delivering parts and documents to factories, for customers on annual contracts. Over nine months in 2024 it handled 24,780 orders. 3.21% failed, about 87 a month.

The split is the useful part:

Cause Share of all orders
Documents and data not matching (order, tax invoice, delivery papers) 2.45%
Order cancelled 0.33%
Late 0.31%

About three failures in every four were paperwork, not driving. When the researchers asked drivers and receiving staff why, the answers were all things that happen before the truck moves:

  • the receiving person or department was not clear on the job
  • the tax invoice or purchase order was not attached
  • nobody checked that the documents agreed with each other before dispatch
  • the vehicle had not been registered in advance to enter some factories

The company then put the job details into an online form and gave drivers a checklist. Over the next five months the paperwork failure rate averaged 1.33% of orders, roughly half the earlier level. But one of those months, December, ran at 3.22%, worse than most months before the change. A document check works while someone enforces it, and it slips the moment they stop.

The cause mix depends on the business, which is why you have to measure your own. A Thai online seller of electrical goods found the opposite shape: of 2,587 items that came back over three months, 85% were damage, to the product or the box, and only 3% were wrong addresses. New packing and checking procedures brought the return rate from 10.57% to 7.93%. Same problem, completely different fix.

What one failure really costs

Here is a worked example. The numbers are for illustration only; replace them with your own.

A six-wheeler costs 6,000 baht a day to run with its driver and does six drops. One drop slot is worth 1,000 baht. One drop is refused.

Cost Cheap case Expensive case
The failed drop's slot, already spent 1,000 1,000
Bringing the goods back: re-receiving, checking, putting away, reversing the paperwork 250 250
Second attempt 1,000: a spare slot on tomorrow's route 3,500: the customer needs it today, so a vehicle is hired for half a day
Total 2,250 4,750

So one failure costs between 2.25 and 4.75 normal drops.

Now apply the Thai failure rate to 2,000 drops a month. At 3.21%, that is 64.2 failures:

  • cheap case: 64.2 Γ— 2,250 = 144,450 baht a month
  • expensive case: 64.2 Γ— 4,750 = 304,950 baht a month

The drops themselves cost 2,000 Γ— 1,000 = 2,000,000 baht. A failure rate of about 3% adds 7.2% to 15.2% to the delivery cost, because every failure is paid for more than twice.

Two costs are not in the table, and they can be larger:

  • The drop you push out. "A spare slot tomorrow" is only free if tomorrow has one. If it does not, the re-delivery takes another customer's place, and that customer now becomes late.
  • The stock. The goods are sold but not delivered. The customer may buy from someone else in the meantime.

The fifteen minutes at the gate

What the driver does in the first quarter of an hour decides who pays. Agree it in advance, in writing, and put it on the driver's checklist:

  1. Record the arrival. Time, a photo of the truck at the gate, and the tracking position. If the truck carries a journey data recorder, it is already logging the position.
  2. Get the reason from a named person. Name, position, and the reason in their words.
  3. Get it on the delivery document. If the customer refuses, ask them to write "refused" and the reason on the delivery note and sign it. If they take part of the load, write down exactly which lines they refused.
  4. Photograph the goods that are coming back, before they are moved.
  5. Call the controller before leaving. Do not drive away and report later.

The controller then has a short list of options, and each one stops working at a different time:

  • Wait, if the problem is a signature or a gate queue. That time should be priced in advance, see what a waiting time charge is and how much waiting is reasonable.
  • Find another receiver at the same site, such as a different department or shift.
  • Take a partial delivery and bring back only the rejected lines.
  • Carry on with the route and return later today, if the rest of the day and the driver's legal hours allow it.
  • Bring the goods back and book the second attempt.

Who chooses between these is a commercial decision, not a transport one. The person who owns the customer should have decided it before the day started. How to run that decision during the day, and how to check each re-plan against driving hours, is in running the day when the plan meets the road.

What Thai law says about a refused load

This section is about you as the seller and your customer as the buyer. What a hired carrier may do when the consignee refuses is a separate set of rules, covered in the waiting time article linked above.

The Civil and Commercial Code, read in Thai, gives the seller more ground than most people assume. It is also strict about what counts as a proper attempt.

A proper attempt, refused without a lawful reason, puts the buyer in default. That is Section 207. Section 486 separately requires a buyer to take delivery of what it bought and pay according to the contract.

The attempt must match what was owed. Section 208 requires the debtor, here the seller, to offer performance exactly as it is owed. A short load, the wrong item, or a delivery outside the agreed time is not that. A buyer who refuses it may well have a lawful reason. This is why the paperwork failures above matter legally as well as in cost: they hand the customer a reason to refuse.

If the customer has already said no, do not send the truck. Section 208 also says that where the buyer has declared it will not accept, or has to do something first (such as issue a booking number), a notice that you are ready counts as the attempt. A written notice then does the job of a truck.

A closed site is not automatically the customer's fault. Under Section 212, if no delivery date was fixed, or you deliver early, a customer temporarily unable to receive is not in default unless you gave notice a reasonable time in advance. Where a date was agreed, this exception should not apply. Where it was not, the notice is what moves the failure to the customer's side.

Liability for not delivering stops at a proper attempt. Section 330 says that once performance is properly tendered, liability arising from non-performance ends from that moment. That is what your arrival record and the signed refusal protect.

Extra cost caused by the customer may be theirs. Section 325 puts the costs of performance on the debtor unless agreed otherwise, but says that any increase caused by the creditor moving, or by "any other act" of the creditor, is paid by the creditor. Whether a refusal is such an act is a reasonable reading, but no court decision confirming it was found. Do not rely on it. Write a re-delivery charge into your sale terms, with the notice deadline that triggers it.

If a customer keeps refusing, Section 331 lets a seller discharge the obligation by depositing the goods for the creditor. In practice that is a last resort.

The tax invoice that went out with the truck

Many Thai operations print the tax invoice at dispatch and send it with the goods. That is convenient until a load is refused.

Section 78(1) of the Revenue Code sets the VAT point for goods at delivery. But if a tax invoice is issued before delivery, the liability arises when it is issued. A refused load can therefore leave you with output tax on a sale that never happened.

The way out is less clear than people expect. A credit note under Section 82/10 is for listed events: price reductions for goods that did not match, were damaged or short, and goods returned as defective or not as described. A Director-General announcement adds a return or exchange under a trade agreement between VAT-registered businesses. None of these texts names a buyer simply refusing a delivery, and no Revenue Department ruling on it was found. Cancelling and reissuing an invoice is allowed for wrong or incomplete details, not for a sale that did not happen.

This is a question for your accountant, not for this article. The operational answer is simpler: if your refusal rate is material, check with your accountant when your tax invoice counts as issued, and consider whether it should go out only once the goods have been accepted.

Measure it so it can be fixed

Count failures per attempted drop, every week, with a reason code. Split the codes by who controls the cause, because that tells you where the fix sits:

  • Our desk: papers do not match, missing invoice or order number, receiver not named, gate registration not done
  • Our dock: wrong item, short, damaged, loaded in the wrong order
  • Customer: closed, no booking, no one authorised, cancelled
  • Road and vehicle: access, breakdown, driving hours ran out

The handbook treats refusals as one of the service measures a transport contract should report. If you buy transport, ask for them by reason, not as one number.

What to set up this week

  1. Write the definition down. Goods dispatched, and some or all did not pass to the customer as planned.
  2. Pull the last three months and count failures by the reason codes above. If you cannot, start counting on Monday.
  3. Price one failure using your own vehicle-day cost, drops per day, return handling and second-attempt cost. Multiply by your monthly failures.
  4. Add a document check before dispatch: order number, quantities, tax invoice and delivery note all agree, receiver named, gate registration done where a site needs it.
  5. Give drivers the five-step gate routine, with a delivery note that has space for "refused", the reason and a signature.
  6. Confirm the day before for sites that have closed or had no booking in the past.
  7. Write a re-delivery charge and its notice deadline into your sale terms. Do not rely on the Code alone.
  8. Ask your accountant how an invoice issued at dispatch is handled when the load is refused.

The one line worth keeping

Most failed deliveries are decided at a desk before the truck leaves, and each one is paid for two or three times, so the cheapest re-delivery is the one a document check prevents.