Odoo ERP

TikTok Shop Odoo Integration: One Inventory, No Oversells

A practical guide to connecting TikTok Shop with Odoo so live-commerce orders, stock levels and accounting entries stay in sync without oversells.

Ravi Shanker SinghFounder & Odoo ConsultantPublished 6 min read
Share
On this page

TikTok Shop moves differently from a normal storefront. A single live stream can generate hundreds of orders in twenty minutes, then nothing for hours. If your inventory system updates on a schedule instead of in real time, you will oversell during that spike, and the next morning you are apologizing to customers and canceling orders. We have built TikTok Shop Odoo integration projects for sellers in Thailand and the US, and the pattern that works is always the same. One inventory source of truth. Order sync that reacts within minutes rather than hours. An accounting close that does not require anyone to re-key TikTok's settlement reports by hand.

This post walks through how we build a TikTok Shop Odoo integration in practice, including the parts that are genuinely hard to get right: live-stream order bursts, platform-held funds, and the commission TikTok deducts before it ever pays you.

Why TikTok Shop breaks naive inventory sync

Most marketplace connectors are built around a polling model. Check for new orders every 15 or 30 minutes, pull them into the ERP, adjust stock. That works fine for a site with a steady trickle of orders. It falls apart during a TikTok live, where a creator can sell out a SKU in the time it takes your connector to run its next cycle.

Three TikTok Shop behaviors matter more here than on other channels:

  • Order bursts are concentrated. A single stream can produce the bulk of a week's volume in an hour.
  • Stock holds happen at the platform level too. TikTok reserves inventory against the quantity you published, independent of what Odoo thinks is available, and the two numbers can drift apart quickly if sync lags.
  • Cancellations and returns arrive in waves after a live event, often 24 to 72 hours later. Your inventory needs to release holds correctly, not just add stock back in blind.

If the sync job runs on a timer, you are gambling that no live stream happens to land in the gap between runs. We instead use webhook-driven updates where TikTok's API supports them, with a short-interval polling fallback as a safety net. New orders land in Odoo within a couple of minutes under normal conditions.

Building the TikTok Shop Odoo integration

A working integration touches four parts of Odoo: Sales, Inventory, Accounting, and a mapping layer that translates TikTok's data model into Odoo's.

1. SKU and listing mapping. TikTok Shop listings do not always map one-to-one to Odoo products, especially with variants such as color or size sold as separate SKUs on the platform. We build an explicit mapping table rather than relying on SKU string matching, because a typo in a listing title should never silently create a duplicate product in Odoo.

2. Order ingestion into Sales. Each confirmed TikTok order becomes a sales order in Odoo, tagged with the TikTok order ID and store name. We keep the original TikTok timestamps and order status alongside Odoo's own order state, because support staff need to answer "what does TikTok say happened to this order" without logging into a second system.

3. Stock reservation that respects both systems. This is the part most connectors get wrong. When an order is confirmed in Odoo, it should reserve stock immediately against the delivery. The next inventory push to TikTok should reflect the remaining available-to-promise quantity, not the full on-hand quantity. Otherwise TikTok keeps selling stock that Odoo has already committed to an earlier order.

4. Fulfillment and tracking sync. Once a delivery order is validated in Odoo, the tracking number pushes back to TikTok so the order can move to shipped status on the platform. Sellers who skip this step end up with TikTok auto-flagging the shop for late fulfillment, even when the warehouse shipped on time.

For sellers running multiple channels, we typically pair this with our broader Odoo API integration services so TikTok sits alongside Shopee, Lazada or a direct storefront on the same stock and pricing logic, instead of each channel having its own disconnected rules.

Preventing oversells: the available-to-promise problem

Oversells almost always trace back to one of three causes, and each has a different fix.

CauseWhat happensFix
Sync lagStock push to TikTok runs on a 15-30 min timerMove to near-real-time push, triggered on order confirmation and stock adjustment
Shared stock, no bufferSame warehouse sells on TikTok, Shopee and a physical store simultaneouslyReserve a safety buffer per channel in Odoo, not just a single shared number
Reservation not respectedOdoo shows total on-hand instead of available-to-promisePush (on-hand minus reserved minus safety stock), not raw on-hand

The safety buffer matters more than people expect. If you sell the same SKU in a physical store and on TikTok, a customer at the counter can take the last unit at the exact moment a live stream is converting viewers into buyers. A small reserved buffer, even five or ten units for a fast-moving SKU, absorbs that race condition without blocking legitimate sales most of the time.

One honest limitation here: no sync is instant. There is always a window, typically a few seconds to a couple of minutes depending on API rate limits, where an oversell is technically possible. The goal of a good TikTok Shop Odoo integration is shrinking that window, not pretending it is zero. Catch the rare oversell early with an automatic cancellation and refund workflow.

Closing the accounting loop

TikTok Shop does not pay you the full order value. Before settlement, it deducts a commission calculated on the item price, excluding shipping, computed on a VAT-exclusive basis rather than the full order total. Shipping fees are handled separately from commission, and they are treated differently depending on your fulfillment setup, any active promotion, and your seller configuration. Add ad spend if you run in-platform promotions. TikTok settles the net amount on its own schedule, often weekly. If your accounting only records the gross sale, your books will not match what actually lands in the bank account, and month-end close becomes a reconciliation headache.

We handle this by recording each TikTok settlement as its own document in Odoo accounting, separate from the sales invoice:

  • The sales order and customer invoice record the gross amount the buyer paid.
  • A vendor bill, or a dedicated journal entry, records TikTok's commission and fees as a cost of sale.
  • The bank statement line for the settlement payout reconciles against the net of invoice minus fees, so the numbers tie out exactly.

For Thai entities, there is an additional layer: withholding tax treatment on marketplace commissions, and the requirement to issue a proper e-Tax invoice where applicable. Marketplace fees need their own tax treatment early on. It should not be bolted on during a VAT filing deadline. Getting this set up correctly is part of why we also work on Thai localisation inside Odoo accounting, rather than treating it as a one-off add-on after the sales side is live.

What a typical rollout looks like

We do not recommend connecting TikTok Shop directly to a live production database on day one. Here is the rollout we use:

  1. Map SKUs and confirm variant handling in a staging environment.
  2. Run order sync one-way, from TikTok to Odoo, for a few days, with stock push still manual, to confirm the data looks right before anything writes back to the platform.
  3. Turn on near-real-time stock push, starting with a conservative safety buffer.
  4. Connect fulfillment and tracking sync.
  5. Build the settlement reconciliation workflow and run it through one full TikTok payout cycle before calling it done.
  6. Stay through the first month-end close, since that is when missing fee entries or tax misclassifications actually surface.

That last step matters more than it sounds. Most of the "integration bugs" we get called in to fix are not API failures. They are accounting entries that were never built in the first place. Finance discovers this three weeks later, when nobody can explain why the bank balance does not match the sales ledger. For sellers already running a broader catalog across channels, our e-commerce development services team usually gets involved here too, since the storefront and the marketplace feed need to agree on the same stock numbers.

If you are evaluating a TikTok Shop Odoo integration and already run Shopee or Lazada connections, start by auditing how your current safety buffers are set per channel. That single check usually surfaces the oversell risk before it costs you a cancelled order during the next live stream.

Share

Frequently asked questions

Does the TikTok Shop Odoo integration work with Odoo Community edition?

Yes, the integration itself runs through Odoo's API layer, which is available in both Community and Enterprise. The difference shows up in which built-in accounting and reporting tools you have on top, not in whether TikTok orders can sync.

How fast does stock update on TikTok after a sale in Odoo?

With a webhook-driven setup and short-interval polling as backup, updates typically land within a couple of minutes. No connector, ours included, guarantees zero-delay sync, so a small safety buffer per SKU is still worth keeping.

Can one Odoo instance handle TikTok Shop alongside Shopee and Lazada?

Yes, this is one of the more common setups we build. Each channel gets its own mapping and safety buffer, but all three draw from the same on-hand inventory and post into the same chart of accounts.

What happens to oversold orders if the sync window is missed?

A good integration flags the second order automatically, cancels or holds it, and triggers a refund workflow rather than leaving it to a staff member to notice days later. We build this as a safeguard, not a replacement for keeping the sync window short.

Do we need to change our chart of accounts for TikTok settlements?

Usually just one or two new accounts for marketplace commission and platform fees, plus a bank sub-account if TikTok pays into a wallet before transferring to your main account. It is a small change, not a restructuring.

Is TikTok commission charged on the full order value including shipping?

No. TikTok calculates commission on the item price excluding shipping, and on a VAT-exclusive basis. Shipping is settled separately and treated differently depending on your fulfillment setup and any promotion, so your reconciliation needs to split these out rather than treating them as one fee.

Sources

About the author

Ravi Shanker Singh

Founder & Odoo Consultant

Founder of Tech After Me and Odoo consultant. Ravi implements, customises and supports Odoo ERP and builds web, mobile and data products for companies in Thailand, the USA and India, working from Bangkok, New York and Delhi NCR.

More from this author

Keep reading

Odoo VAT Thailand Setup: 7% Tax, Invoices, and ReportsOdoo ERP

Odoo VAT Thailand Setup: 7% Tax, Invoices, and Reports

A practical walkthrough of Odoo VAT Thailand setup: 7% tax configuration, input and output VAT, tax invoice versus receipt, and the reports your accountant needs at close.

Ravi Shanker Singh6 min read

Put what you read into practice

The team writing these guides is the same team that ships them. Tell us what you are working on.

Get new articles in your inbox

Get new articles in your inbox

Odoo guides and IT news that matter to your business. At most one email a week.