Skip to content

Commerce Systems · Sep 25, 2026 · 3 min read

One Stock Count, Two Storefronts: Selling B2B and B2C Without Overselling

The same unit, offered to shoppers and to dealers on different domains. How to make the last one sell once.

Best Computers sells the same 6,000+ SKUs twice over: to shoppers on buildmypc.in, and to 300+ dealers on bestcomputers.co.in, at trade prices. Two domains, two kinds of buyer, one shelf. The question that decides whether that works is simple: when there’s one unit left and both sites have a buyer, what happens?

If the answer is “both orders go through”, someone gets a refund and an apology. Here’s how to make the last unit sell once.

Why two inventories that sync will oversell

The common setup is two systems — a store and a dealer portal, or a store and a marketplace — each with its own stock figure, synced every few minutes. Between syncs, both believe they have the last unit. The busier you get, the more often two buyers land in that gap. Faster syncing narrows the window; it never closes it.

One number, in one place

The fix isn’t better syncing. It’s having nothing to sync. Best Computers runs its PC builder, its retail store and its B2B platform from one backend and one database, so there is exactly one stock count per product, and both domains read and write that same number.

The sale and the stock change are one event

One number still oversells if you check stock, then take the order, then reduce stock as three separate steps — two buyers can pass the check at the same moment. So the reduction has to happen inside the act of recording the order, and the database itself has to refuse to let stock go below zero.

That’s how the store we built for DEWDROPZ works: stock is reduced by the database as the order is written, and a rule stops it going negative. The second buyer for the last unit gets a clear “sold out” — not an order nobody can fill.

Unpaid orders shouldn’t hold stock forever

Online payments add a wrinkle: an order can be placed and never paid. If it holds its units indefinitely, stock quietly disappears. At DEWDROPZ, stock held by unpaid online orders is released on a schedule, so an abandoned payment gives its units back.

Returns move stock when the parcel arrives

The same discipline applies on the way back. A return request isn’t a returned item: at DEWDROPZ, money and stock move only once the parcel is received. Otherwise you can sell a unit that’s still in a courier van.

Different channels, same shelf

One stock count doesn’t mean one experience. Everything that makes the channels different sits on top of the shared inventory:

  • Prices — retail on one domain, tiered trade prices on the other, each buyer seeing their own.
  • Who gets in — dealers and distributors apply, and the team approves each one and sets their tier.
  • Who sees what — roles for admins, staff and salespeople, enforced in the database rather than hidden on screen.
  • Reports — every sale recorded once, with the channel it came from.

When you need this

If you sell through one store, you don’t. The moment the same stock is offered in two places — retail and trade, your site and a marketplace, a shop counter and an app — you do, and it is far cheaper to design in than to retrofit.

It’s one of the first things we settle when we design a commerce system, before anything is built.

Next read · ConfiguratorsPrint on Demand: From Design Canvas to 300 DPI Print File

All writing

Got an idea? Describe it badly.

No brief needed. A paragraph is enough.