What is ecommerce shipping integration in Thailand?
Shipping integration means your store sends each paid order to a courier without anyone retyping it. The order's name, phone, address, weight and COD amount go to the courier's system, a label comes back ready to print, and the tracking number returns to the order and to the customer.
In Thailand you can do this three ways: a direct courier API, a shipping aggregator that covers several couriers at once, or a CSV export you upload to the courier's portal, with ready-made plugins and apps for your platform as the packaged form of the first two.
For most small Bangkok stores an aggregator or a platform app is the sensible start, because one connection covers several couriers and you avoid maintaining custom code. Direct APIs make sense once volume is steady and you have settled on one or two carriers. If you are still at the planning stage, our overview of how to start an e-commerce business in Thailand puts shipping in context with payments, legal setup and launch. This guide stays on domestic delivery; parcels leaving the country follow a different set of rules.
The couriers Thai shoppers know
Thai customers usually have a favourite courier, or at least one they distrust after a lost parcel. Offering two options at checkout is often enough. The main names are below. Service areas, pickup rules and business account terms change, so confirm the current details on each courier's own business page before you commit.
Kerry Express Thailand now trades as KEX Express, so older plugins and tutorials may still use the Kerry name. When a developer or app lists "Kerry", ask whether the connection has been updated to the current KEX systems.
| Courier | Where it tends to fit | Typical integration route | Check first |
|---|---|---|---|
| Thailand Post | Nationwide reach, including provinces private couriers serve less often; EMS and registered parcels | Business account tools, aggregators, CSV | Business services and API access on the official site |
| KEX Express (formerly Kerry Express) | Well known to online shoppers, wide drop-off network | Aggregators, platform apps, business API | Account type and whether your plugin uses the current KEX name |
| Flash Express | Popular with online sellers, pickup from home or shop | Aggregators, business portal, API for larger shippers | Pickup terms and COD settlement schedule |
| J&T Express | Wide network, common with marketplace sellers | Aggregators, business portal | COD handling and remote-area rules |
Three ways to connect your store
1. Direct courier API
Your store talks to one courier's system directly. You get the most control: exact rates, label formats, pickup requests and status updates as the courier defines them. The cost is maintenance. Every courier has its own API, its own account approval and its own changes over time, so each one you add is another integration to look after. This route suits stores shipping steady volume with one main carrier.
2. Shipping aggregator
An aggregator is a Thai logistics platform that holds contracts or connections with several couriers. Your store connects once, and you choose the courier per order, sometimes with rates compared side by side. You pay through the aggregator's pricing rather than a courier contract, and you depend on their uptime and support. For a store that wants Flash for Bangkok and Thailand Post for the provinces, this is usually the least work.
3. Manual CSV upload
You export the day's orders as a spreadsheet and upload it to the courier's business portal, then copy tracking numbers back. It costs nothing to set up and works on day one, but it breaks down around the point where one person spends an hour a day on it. We treat it as the fallback for a new store, not the plan.
Platform plugins and apps sit on top of routes one and two: they are the packaged form of an API or aggregator connection for WooCommerce or Shopify.
WooCommerce options
WooCommerce ships with shipping zones, flat rates and free shipping thresholds built in. Courier connections come from plugins, usually published by an aggregator or a courier itself, or from a small custom plugin that calls a courier API. Before installing anything, check four things:
- Who maintains it. A plugin from the courier or aggregator tends to track their API changes. An abandoned third-party plugin can stop creating labels overnight.
- What it syncs back. The useful ones write the tracking number and delivery status onto the order, not just print a label.
- COD support. Cash on delivery must pass the collection amount to the courier, otherwise the rider collects nothing.
- Thai address handling. The plugin must read subdistrict and district fields, not only a free-text address line.
Because WooCommerce runs on your own hosting, a custom integration is also possible when no plugin fits. That flexibility is one reason stores choose it, and it pairs well with the payment side: our guide to choosing payment gateways in Thailand covers how PromptPay, cards and COD reach the same order record.
Shopify options
On Shopify, courier connections arrive as apps from the Shopify App Store, which we install and test as part of our Shopify store builds. Search the store for the courier or aggregator name and filter for apps that list Thailand as a supported country, because many shipping apps are built for other markets and only print labels for their home carriers. Read the recent reviews for mentions of Thai addresses and COD before installing.
Two Shopify specifics matter here. First, calculated rates at checkout depend on your plan and on whether the app provides carrier-calculated shipping, so confirm this on Shopify's current plan page rather than assuming. Second, Shopify's own checkout controls which address fields appear, so Thai address structure has to be handled through checkout settings and the app, not by editing templates freely. If you are weighing platforms with this in mind, the same trade-offs appear when you pay with Stripe in Thailand or other gateways: Shopify decides more for you, WooCommerce lets you decide more.
Shipping rates at checkout
Customers abandon carts when the shipping cost only appears at the last step, or when it looks arbitrary. You have three honest options:
- Flat rate. One price for all of Thailand, perhaps with free shipping over a threshold. Easy to explain, and it works when your products are similar in size. You absorb the difference on heavy or remote orders.
- Weight or size based. Rates by weight band, set by you from your courier's rate card. It needs accurate product weights, which is a data job worth doing during product import.
- Live calculated rates. The store asks the courier or aggregator for a price per order. Most accurate, but checkout now depends on an outside service responding quickly.
Whichever you pick, plan for remote-area surcharges. Couriers publish lists of postcodes, islands and border districts that cost more to reach. A flat-rate store can add a surcharge zone for those postcodes; a live-rate store usually gets it in the quoted price. Bangkok and the provinces can also be split into separate zones if your courier prices them differently.
Peak seasons such as 11.11, 12.12 and the run-up to Songkran strain courier capacity. Rates rarely change overnight, but pickup times can slip, so show realistic delivery estimates rather than promising next-day everywhere.
Labels, pickup and tracking
A connected store changes the daily routine more than any other part of the build. A typical afternoon looks like this:
- Filter the orders that are paid, or confirmed as COD, and ready to pack.
- Select them and create shipments in one action. The courier returns labels as a PDF sized for a thermal label printer or A4 sheets.
- Book a pickup from the same screen, or drop parcels at a branch if you prefer.
- The tracking number is written to each order and the order status moves to shipped.
The customer then gets a shipping email with the courier name and a tracking link, in Thai if they ordered in Thai. SMS is a useful addition for COD orders, because the rider will call a number that the customer should recognise and expect. Some sellers also send tracking by chat apps; that is possible through third-party tools, but it is a separate setup from the store and not something we build.
Write the notification text yourself. A plain line such as "Your parcel is on its way with Flash Express, tracking number below" in Thai and English cuts the "where is my order" messages that eat a small team's day.
Thai addresses couriers can read
A Thai delivery address has a clear structure: house number and building, moo or soi and road, subdistrict (tambon or khwaeng), district (amphoe or khet), province, and a five-digit postcode. Default checkout forms built for other countries collapse most of this into "address line 2" and "city", and couriers then misroute or delay parcels.
We set up checkout with separate fields for subdistrict, district and province, and add postcode autocomplete: the customer types the postcode and picks the right subdistrict from a short list, which fills the rest. It cuts typos and makes the data clean enough for a courier API to accept. Phone number is required, because riders call before delivery.
Addresses are personal data under Thailand's PDPA. Sending them to a courier is part of fulfilling the order, but your privacy notice should say which couriers or logistics partners receive customer details and why. Keep exports off shared drives and delete old CSV files once they are uploaded. The same care applies to invoice data; our piece on e-Tax invoices and receipts for Thai online stores covers that side, and DBD registration for an online store covers the registration your business name and address sit on.
COD, returns and refused parcels
Cash on delivery is still expected by many Thai shoppers (our guide to cash on delivery in WooCommerce covers the store settings), and it adds three fields to every shipment: the amount to collect, the courier's COD fee, and the date the courier transfers the collected cash to you. Your integration should record all three against the order so you can reconcile payouts instead of guessing.
The weak spot is the refused parcel. The customer orders, the rider arrives, nobody pays, and the parcel returns at your cost. Decide in advance how the store marks these orders, whether stock goes back automatically, and whether repeat refusers need a prepaid option next time. Returns for change of mind follow the same path in reverse and deserve a written policy on the site.
COD rates are also a useful signal: the trends shaping Thai e-commerce show buyers moving towards PromptPay and wallets, and your own order data will tell you how fast that is happening for your customers.
Shipping setup is part of every store we build. Our e-commerce website development covers Shopify or WooCommerce with PromptPay, cards, COD and Thai couriers, product import, e-Tax invoice setup and staff training. The E-commerce package starts from THB 50,000 as an indicative one-time price; see what a WooCommerce or Shopify store costs, or send us your courier list on WhatsApp at +66 93 004 4098 so we can scope it in a written quote.
More e-commerce guides
Sources
- Thailand Post
- KEX Express Thailand
- Flash Express
- J&T Express Thailand
- WooCommerce documentation: shipping zones
- Shopify Help Center: carrier-calculated shipping
- Personal Data Protection Act B.E. 2562 (2019), English translation

