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

E-commerce

Ecommerce shipping integration in Thailand: connecting your store to couriers

How to connect a Thai online store to couriers so rates, labels, tracking and addresses flow automatically instead of being retyped every afternoon.

Cover image for this guide: Shipping

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.

CourierWhere it tends to fitTypical integration routeCheck first
Thailand PostNationwide reach, including provinces private couriers serve less often; EMS and registered parcelsBusiness account tools, aggregators, CSVBusiness services and API access on the official site
KEX Express (formerly Kerry Express)Well known to online shoppers, wide drop-off networkAggregators, platform apps, business APIAccount type and whether your plugin uses the current KEX name
Flash ExpressPopular with online sellers, pickup from home or shopAggregators, business portal, API for larger shippersPickup terms and COD settlement schedule
J&T ExpressWide network, common with marketplace sellersAggregators, business portalCOD 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:

  1. Filter the orders that are paid, or confirmed as COD, and ready to pack.
  2. Select them and create shipments in one action. The courier returns labels as a PDF sized for a thermal label printer or A4 sheets.
  3. Book a pickup from the same screen, or drop parcels at a branch if you prefer.
  4. 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

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

Which courier suits a small online store in Thailand?

There is no single best one. Flash Express and J&T are popular with online sellers for convenient pickup, KEX Express is widely recognised by shoppers, and Thailand Post reaches remote provinces well. Many small stores start with one private courier for Bangkok and nearby areas plus Thailand Post as a second option, then adjust once they see where their orders actually go and which courier handles COD and refused parcels to their liking.

Can my store show live shipping rates at checkout?

Yes, if your courier or aggregator offers a rates connection and your platform supports it. On WooCommerce this comes through a plugin or custom code. On Shopify it depends on the app and on your plan, so check Shopify's current plan details. Many small stores find a well-set flat or weight-based rate with a remote-area surcharge works just as well and keeps checkout independent of an outside service.

Do I need a shipping aggregator, or can I connect couriers directly?

You can do either. An aggregator gives you several couriers through one connection and one dashboard, which suits stores that want choice without extra development. A direct API gives more control and avoids the middle layer, but each courier becomes its own integration to maintain. If you ship mainly with one courier at steady volume, direct can pay off; otherwise an aggregator is usually simpler.

How do customers get their tracking number?

When the label is created, the integration writes the tracking number to the order and the store sends a shipping email with the courier name and a tracking link. SMS can be added, which helps with COD orders. The customer can also see the number in their account page if your store has customer accounts. Write the message in Thai and English so it reads naturally for both audiences.

Can Thai addresses be auto-filled at checkout?

Yes. With postcode autocomplete, the customer enters the five-digit postcode and chooses their subdistrict from a short list, and the district and province fill in automatically. The house number, soi and road are still typed by hand. This reduces spelling mistakes in Thai place names and gives couriers clean, structured fields, which matters when orders are sent through an API rather than read by a person.

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