Skip to content
Get a quote Call +66 93 004 4098

E-commerce

How to run WooCommerce cash on delivery in Thailand without losing money on returns

Switching on COD in WooCommerce takes a minute. Running it profitably in Thailand depends on courier remittance, order checks and refused-parcel rules.

Cover image for this guide: WooCommerce

Should you offer cash on delivery on WooCommerce in Thailand?

Offer WooCommerce cash on delivery in Thailand if your buyers expect it, but put limits around it: enable it only for the shipping methods and areas where your courier collects cash, consider an order value ceiling, confirm orders before shipping, and give buyers a reason to choose PromptPay instead.

Plenty of Thai shoppers, especially first-time buyers from a store they have never heard of, want to see the parcel before they pay. Cash on delivery removes that doubt, so offering it can win orders that would otherwise go to a marketplace. The trade-off is that you carry the risk: you pay to ship, the courier holds your money for a while, and some buyers simply refuse the parcel at the door.

The sections below show how to do each of those in WooCommerce and in your daily routine.

We have not quoted a share of Thai orders paid by COD here, because published figures vary by study and year. Your own order data is the number that matters: check what share of your orders are COD and how many of those are refused.

How do you switch on COD in WooCommerce?

Cash on delivery ships with WooCommerce itself, so no extra plugin is needed to switch it on. The settings live under WooCommerce, then Settings, then Payments. The steps below follow the WooCommerce documentation linked in the sources.

  1. Step 1

    Open the payment settings

    Go to WooCommerce, Settings, Payments and find Cash on delivery.

  2. Step 2

    Switch it on and name it

    Use a clear title such as "Cash on delivery (pay the courier)" and a short description.

  3. Step 3

    Write the instructions

    Tell buyers to have the exact amount ready and that you may call to confirm the order.

  4. Step 4

    Choose shipping methods

    Under Enable for shipping methods, select only the methods where your courier collects COD.

  5. Step 5

    Leave virtual orders off

    Keep Accept for virtual orders unticked unless you have a real reason.

  6. Step 6

    Place a test order

    Check the checkout, the order email and the order status from start to finish.

Two settings matter more than they look. "Enable for shipping methods" lets you offer COD only with the methods whose courier actually collects cash, for example your Flash Express rate but not a self-pickup or international option. "Accept for virtual orders" should normally stay off, since there is no parcel to pay for. Write the instructions text in both Thai and English if your store is bilingual, because it appears on the thank-you page and in the order email.

Limiting COD by value, zone or product

Out of the box, WooCommerce only restricts COD by shipping method. Most stores want finer rules, which usually come from a conditional payments plugin or a small piece of custom code. Rules worth considering:

  • A maximum order value. A refused parcel worth a few hundred baht is a nuisance; a refused parcel of electronics worth tens of thousands ties up stock and cash. Many stores offer COD only below a ceiling they set from their own margins.
  • Shipping zones. If refusals cluster in certain provinces or your courier charges more for remote areas, set up shipping zones and offer COD only in the zones where it works for you.
  • Products. Made-to-order, personalised or perishable items cannot be resold if refused. Exclude them from COD, or ask for a PromptPay deposit instead.
  • New versus returning customers. Some stores offer COD only to buyers with a completed previous order. It needs custom logic and careful wording so it does not feel like an accusation.

Charging a COD fee

Couriers charge you for collecting cash, and a store can pass some or all of that on. WooCommerce does not add a payment fee by itself; a fee plugin can add a line at checkout when COD is selected. Show it clearly before the order is placed, call it what it is, for example "COD service fee", and keep it close to your real cost. A surprise fee on the order summary is a good way to lose the sale.

Courier COD services and remittance

The WooCommerce side only records that the buyer will pay cash. The courier collects the money and transfers it to you later, minus its COD fee. That gap between delivery and payout is working capital you do not have, and for a growing store it can add up quickly.

CourierOffers COD for sellersWhere to check fees and payout timing
Thailand PostYes, through its COD serviceThailand Post website or your local post office business counter
KEX Express (formerly Kerry Express)Yes, for business accountsKEX Express website or your account representative
Flash ExpressYes, for business accountsFlash Express website or seller app
J&T ExpressYes, for business accountsJ&T Express Thailand website or your account representative

The main Thai couriers all offer COD for business accounts, but fees, payout schedules and minimums change and often depend on your volume and contract. We do not quote them here. Check each courier's current business or COD page, listed in the sources, and ask your account representative for the terms in writing. Questions worth asking each one:

  • What percentage or flat fee applies to COD collection?
  • How many days after delivery is the money transferred, and to which bank accounts?
  • What does a returned or refused parcel cost?
  • Is there a report or file you can download to match payouts to orders?

Connecting courier accounts to WooCommerce for labels and tracking is a separate job, covered in our guide to shipping integrations for Thai stores.

Confirm orders before you ship

A quick confirmation before packing catches most of the problems that lead to refusals: a fake order, a wrong phone number, a buyer who changed their mind an hour later, or someone who ordered twice by mistake.

How to confirm

  • A short call to the number on the order, checking the item, total and address. It is the most reliable check, and it also confirms the phone number the courier will use.
  • A chat message, if the buyer contacted you through chat first. Many Thai buyers prefer LINE, so a brief confirmation there can work well; keep the wording consistent and record the reply on the order.
  • An SMS or email with a link to confirm, for stores with higher volume.

Make it part of the order status

Add a custom order status such as "Awaiting confirmation" so COD orders do not go to packing until someone has confirmed them. Set a rule for unanswered orders, for example cancel after two attempts over two days, and say so in the COD instructions so buyers know to expect contact.

What do refused parcels cost, and how do you prevent them?

When a buyer refuses a COD parcel, you usually pay twice: the outbound shipping and a return charge, depending on your courier's terms. The stock is out of circulation for days, packaging is often damaged, and fragile or perishable items may not be sellable. Work out your real cost per refusal from your own courier invoices; it tells you where to set your COD order ceiling.

Ways to reduce refusals

  • Confirm every COD order before shipping, as above.
  • Show the full total, including shipping and any COD fee, clearly at checkout.
  • Ship quickly. The longer the wait, the more likely a buyer has bought elsewhere.
  • Send the tracking number so the buyer knows when the courier will arrive and has cash ready.
  • Describe products accurately, with honest photos and sizes, so the parcel matches expectations.

Keeping a list of repeat refusers

Many stores want to block buyers who refuse repeatedly. A name and phone number are personal data under the PDPA, so handle such a list with care: keep only what you need, restrict who can see it, mention in your privacy notice that order history may affect payment options, and do not share the list with other businesses. Take advice if you are unsure about the lawful basis for keeping it. In WooCommerce this is usually handled by disabling COD for flagged customers rather than blocking them entirely.

Receipts and records for COD orders

COD makes bookkeeping slightly harder, because the sale, the delivery and the money arrive on different days and the payout arrives as one lump sum minus fees.

Reconcile payouts to orders

Download the courier's COD report for each payout and match every line to a WooCommerce order number. Mark orders as completed only once the cash is confirmed, not when the parcel leaves. Anything delivered but not paid out after the courier's stated period needs chasing. A simple spreadsheet works for a small store; busier stores may connect the courier report to their accounting software, as our guide to accounting software integration in Thailand explains.

Receipts and tax invoices

If your business is VAT-registered, buyers may ask for a full tax invoice with their company details, which is common for B2B orders. Add optional fields at checkout for company name, address and tax ID, so you have the details before shipping. Stores that issue e-Tax invoices can generate them from the order data once payment is confirmed. When exactly an invoice must be issued for a COD sale is a question for your accountant, since it depends on your setup.

Keep the courier's fee deductions as separate expense records rather than netting them against sales, so your revenue figures stay accurate.

Moving buyers toward PromptPay

Every order paid upfront removes the refusal risk and the wait for courier payouts. PromptPay QR is the natural alternative for Thai buyers, because paying by scanning a code in a banking app is an everyday habit for many of them. How to set it up is covered in our guide to PromptPay on WooCommerce; here is how to encourage it without forcing it.

  • Show PromptPay first in the payment list and COD last.
  • Offer a small benefit for prepaying, such as free shipping above a lower threshold or a small discount, costed against what refusals actually cost you.
  • Keep the COD fee visible, so buyers can compare.
  • For returning customers who paid by COD, mention PromptPay in the order confirmation for next time.

Card payments help too, particularly for tourists and expat buyers. Local gateways are covered in our guide with Omise, 2C2P and SCB compared, and our guide to whether Stripe is available in Thailand covers that option. If you sell products shipped by a supplier, refusals work differently; see Shopify dropshipping from Thailand.

We build stores with PromptPay, cards, COD and Thai couriers configured from the start. Our WooCommerce development service covers the setup, and the page on how much an e-commerce website costs explains our E-commerce package, from THB 50,000 as an indicative one-time price, with the final figure set in a written quote. A typical project takes about 15 days, and large catalogues can take longer.

More on payments and shipping

Sources

Litesh Dhir, co-founder of Website Development Bangkok
Reviewed by Litesh DhirCo-founder, SEO and web development

Builds and ranks the websites: the systems behind the 17 client sites whose Search Console numbers we publish. This guide was written by the Website Development Bangkok team. More about us

Common questions

How do I turn on cash on delivery in WooCommerce?

Go to WooCommerce, Settings, Payments, and enable Cash on delivery. Give it a clear title, a description and instructions for the buyer. Then use Enable for shipping methods to offer COD only with the methods where your courier collects cash, and leave Accept for virtual orders off. Place a test order to check the checkout, the confirmation email and the order status.

Can I charge customers a COD fee?

Yes, but WooCommerce does not add payment fees on its own, so you need a fee plugin or custom code that adds a line at checkout when COD is chosen. Label it plainly, for example "COD service fee", show it before the buyer places the order, and keep it close to what your courier actually charges you for collecting the cash.

When do Thai couriers pay out COD money?

It varies by courier, account type and contract, and the terms change, so we do not quote a fixed number of days. Thailand Post, KEX Express, Flash Express and J&T Express each publish COD information for business customers. Ask your account representative for the payout schedule, fees and minimums in writing, and reconcile every payout against your WooCommerce orders.

How can I reduce refused COD parcels?

Confirm each COD order by phone or chat before packing, show the full total including any COD fee at checkout, ship quickly and send the tracking number. Set a maximum order value for COD, exclude made-to-order items, and give buyers a reason to prepay with PromptPay. Track your own refusal rate so you know whether these changes are working.

Can I offer COD only in some provinces?

Yes. Create WooCommerce shipping zones for the areas where COD works for you, give them their own shipping methods, and enable COD only for those methods. For finer control, such as by postcode, order value or customer history, a conditional payments plugin or custom code can show or hide COD based on the buyer's address and cart.

Tell us about your website

Send a few lines on WhatsApp or through the quote form. You get a written quote with the scope, timeline and price for your project.

Or WhatsApp or call +66 93 004 4098, every day, 10:00 to 19:00 ICT. service@websitedevelopmentbangkok.com

WhatsApp Call