陞釔有限公司
2026.08.13Inventory7 min read

How to synchronise multi-channel inventory across your own store, Shopee and momo

How often you oversell has nothing to do with luck and everything to do with how long a stock number takes to travel between systems.

How to synchronise multi-channel inventory across your own store, Shopee and momo

Overselling is not bad luck

The same stock is listed on your own store, Shopee and momo, and all three show "in stock". In reality one unit is left, all three sell it at once, and you spend the afternoon apologising.

How often this happens has nothing to do with luck and everything to do with how long a stock number takes to travel from one place to another. This article is about where that delay comes from and how to squeeze it out.

Why listing the same stock everywhere is hard

The problem is not listing. It is deduction.

After every sale, something has to tell the other channels that one unit is gone. Done manually, the best case is every few hours — and overselling only needs a window of minutes.

Three common approaches, with very different delays:

ApproachSync delayOversell riskLabour cost
Manual periodic reconciliationHours to a dayHighHigh, grows with channel count
Fixed stock allocation per channelNone, but sacrifices sellable quantityLowLow
Single source of stock + automatic deductionSeconds to minutesLowLow

The cost of approach two: you fragment your stock

Allocating ten units per channel is intuitive and does prevent overselling. The cost is that every channel looks out of stock.

Split 30 units three ways and no channel can sell an eleventh unit, even with 20 sitting in the warehouse. Fast-moving items suffer most — exactly the items you least want unavailable.

Fine for low-volume lines. Not for anything that actually turns.

How approach three works

One idea: stock exists once, in the system. What channels display is a projection of it.

In practice:

  1. A channel sale happens; the platform sends a webhook, or the system polls for orders
  2. The system deducts from the matching warehouse and writes a movement record tied to that channel order
  3. The new sellable quantity is pushed back to every channel

The movement record in step 2 is what matters. Without it you cannot later explain why three units disappeared. With it, every deduction traces back to a source order — which is the only reliable basis for an audit.

Three things that bite in practice

Webhooks are not guaranteed. They get dropped and they get re-sent. So you need periodic polling as a backstop, and duplicate notifications must be recognised as the same event, or you deduct twice.

Returns must be added back, and they are much slower than shipments. Shipping takes minutes; a return can arrive two weeks later. In between the unit is neither in the warehouse nor sold, so stock state has to express "in transit" or the books will not reconcile.

Channel SKUs never match. The same item has three different IDs on three platforms. The mapping needs its own maintenance, including cases where one channel listing maps to several warehouse SKUs.

SynERP's Shopee integration follows this model: automatic deduction from the matching warehouse after each sale, with a traceable record for every movement.

Which step first

If you reconcile by hand today, you do not need full automation immediately:

  1. Consolidate stock into one record. Decide which system is the single source; everywhere else only displays. This is a process decision, not code.
  2. Automate the largest channel. One channel usually accounts for most of the work.
  3. Add the rest one at a time. With a single source in place, each additional channel follows the same pattern instead of adding mess.

Further reading

Topics多通路庫存蝦皮電商

This is the kind of problem we work on. If it matches what you are dealing with, we are happy to look at it before anything is quoted.