Why multichannel stock overselling happens (and how to stop it)
Sell the same item on four channels and you will oversell it. Not because your numbers are wrong, but because of when they travel.
You sold the last one on eBay at 9:04. Amazon sold it again at 9:06. Both orders are real, you have one item, and somebody is getting an apology.
Overselling across channels is almost never a maths problem. Every marketplace knows how many it has, your shop knows how many it has, and all of them are correct at the moment they answer. The failure is in the gap between those moments.
Why “just sync the stock” doesn’t work
The obvious fix is to push your stock figure to every channel whenever it changes. Most tools do exactly that, and it introduces two new problems that are worse than the one it solves.
The first is that channels disagree about who is right. If your shop platform holds the real figure and a marketplace also thinks it does, a two-way sync becomes a loop: the marketplace lowers a number, your platform raises it back, the marketplace lowers it again. Stock oscillates and nobody can say which system caused it.
The second is that a sync will overwrite things that were never yours to change. A merchant who has sold on eBay for six years arrives with listings carrying feedback, search ranking and sales history. Those listings earned their position with titles written for eBay’s search, not for your shop. A well-meaning “sync everything” pushes your shop’s title over the top and the listing stops ranking. There is no undo.
One channel holds the stock record
Qwikr asks a question most tools don’t: which system is telling the truth about stock?
For a lot of merchants that is their main shop — Shopify or WooCommerce — because that is where staff adjust figures, where returns land, and where the shop floor reconciles. For others it is Qwikr itself. Either way, exactly one system is nominated as the stock record, and that changes what everything else is allowed to do.
A channel that holds the stock record only ever hears about sales. It does not hear about imports, supplier feeds, bulk edits, or a barcode being corrected. Those are all cases where the platform would be overwriting the very figures it reconciles against — and if it does that, there is nothing left to be right.
This is not a setting we recommend leaving on. It is enforced at the point every stock push has to pass through, so a code path that forgets about it cannot get around it.
Nothing is written to a marketplace until it can be undone
Marketplace APIs have no undo. One bad sync can rewrite price and stock across every listing an account has, and a merchant who has just connected is the most exposed: their catalogue is live, earning, and completely unfamiliar to us.
So Qwikr takes a snapshot of the account as it finds it, before it is allowed to write anything. If the snapshot has not been taken, the push does not happen — it fails closed rather than destructively. The refusal also queues the snapshot that unblocks it, so the fix is automatic rather than a support ticket.
Some products must never reach some channels
Every merchant has restrictions, and none of them are about individual products. They are “we’re not allowed to sell this brand on Amazon”, “no bladed items on eBay”, “nothing tagged clearance”.
Qwikr expresses exclusions in exactly those terms — brand, product type, tag — read from your own catalogue rather than typed by hand. A product list would go stale the moment you add stock. A rule about a brand does not.
Matching is case-insensitive and trimmed, because these values are typed by people on both sides. An exclusion that silently fails to match is worse than no exclusion at all, since you believe you are protected.
The bit nobody mentions: marketplaces ration API calls
eBay’s Trading API allows a fixed number of calls a day. Send one call per product and a three thousand product catalogue costs three thousand calls — most of a day’s allowance before anything else happens. Run out and every stock update fails, silently, until midnight.
eBay accepts four products per stock call. Qwikr uses all four, so the same catalogue costs around seven hundred and fifty calls instead of three thousand. And when an allowance does run out, the run stops immediately rather than spending what is left being refused — because a thousand refused calls also means a thousand errors to work through tomorrow.
When stock is wrong, you are told what it means
Sooner or later a sale arrives for an item you thought you had none of. The order is real; refusing to record it does not un-sell the item. So Qwikr records the sale, floors the stock at zero, and logs the discrepancy with the SKU, the channel, how many sold, by how much it exceeded — and what that most likely means.
That last part matters. “Stock mismatch” is a shrug. “The stock level was already wrong before this sale, most likely sold somewhere Qwikr cannot see” tells you where to look.
What this adds up to
- One system holds the stock record, and only sales may change it there
- Every other channel receives that figure, without being able to argue with it
- No marketplace is written to before its prior state is captured
- Restrictions are expressed in your language, not as a list that decays
- API allowances are spent four times more efficiently than one-at-a-time
- When a figure is wrong, the log says what kind of wrong
None of it makes overselling impossible — nothing can, while a marketplace can take an order in the same second as your shop. It makes overselling rare, visible and explainable, which is the difference between a system you can run a business on and one you have to babysit.
Stop reconciling stock by hand
One catalogue, six channels, one stock figure that stays right.