One customer bought half your stock: resellers, restock math, and the wholesale question
A bulk buyer wrecks your velocity and restock math: worked numbers to isolate the distortion, a cap-or-wholesale decision table, clean reordering.
InventoryX is in development and not available today. ClearStock is the live Shopify app.
A 180-unit order looks like the best day your phone-stand store ever had. It is real revenue — and it is also the most dangerous data point in your sales history, because if you let it flow into your averages, your next reorder list will tell you to buy roughly three times what the market actually wants. Merchants discover this two months later, standing in a back room full of phone stands they bought for customers who never came. This piece works the math to isolate the distortion, then handles the two decisions that follow it: cap the buyer, or formalize the relationship as wholesale — with a decision table for both.
The mechanics of capping — Shopify's native per-customer quantity limits and exactly how to configure them — are covered in the limit quantity per customer guide. Here we deal with what a bulk buyer does to your inventory decisions after the order lands.
What one order actually breaks
Three things, in escalating order of expense:
- Your velocity. One order of 180 units can outweigh months of organic demand in any averaging window, inflating the sell rate every downstream metric uses. It's the same family of distortion a promo week causes — separating spikes from baseline demand covers the promo version; this one needs a manual exclusion.
- Your days of cover. Cover divides stock by that inflated rate, so a healthy position reads as an emergency.
- Your reorder list. Reorder points multiply the inflated rate by lead time, so the over-buy arrives automatically, calculated to two decimal places, feeling rigorous the whole way down.
There's also the shelf itself. Those 180 units came out of stock other customers expected to find. When they hit an empty shelf instead, they didn't just wait: some bought the item at another store, some bought the same brand somewhere else entirely — meaning a reseller's windfall can cost you both the sale and the customer.
The restock math, worked
Here's the incident in full, with illustrative numbers. Phone stand STAND-PH-11 has a clean 60-day organic history: 72 units sold, a steady 1.2/day. On day 34, a reseller places one order for 180 units. After the order clears, 96 units remain.
What the naive math says — total sales divided by window:
(72 + 180) ÷ 60 days = 252 ÷ 60 = 4.2/day Days of cover: 96 ÷ 4.2 ≈ 23 days → "order immediately"
What the organic math says:
72 ÷ 60 = 1.2/day Days of cover: 96 ÷ 1.2 = 80 days → comfortable
The gap between 23 days and 80 days is the entire story. Reorder-point arithmetic makes the cost concrete. With a 30-day supplier lead time and 24 units of safety stock:
Organic reorder point: 1.2 × 30 + 24 = 36 + 24 = 60 units — you're at 96, a healthy 36 above the trigger, no order needed. Naive reorder point: 4.2 × 30 + 24 = 126 + 24 = 150 units — you're "below" it, triggering an urgent 200-unit buy.
Acting on the naive number commits roughly 200 × $4.60 = $920 (estimated) in unit cost about two months before demand justifies it — cash that sits as slow stock through your next rent cycle, and that the days-of-cover method would have shown as 80 days of breathing room rather than an emergency.
The one-line rule: before any reorder decision, recompute the window without the bulk order. If the SKU still looks urgent on organic numbers alone, the urgency is real; if it evaporates, the only thing that was urgent was the arithmetic.
Cap, absorb, or formalize
Once the numbers are clean, there are exactly three responses to a bulk buyer, and the right one depends on whether the behavior repeats:
| Response | Fits when | Upside | Watch for |
|---|---|---|---|
| Let it ride | One-off event, healthy cash, deep stock on that SKU | Real revenue, zero channel work | Exclude the order from velocity before reordering — the step above is not optional |
| Cap per customer | Pattern repeats, stock depth is thin, retail availability matters | Keeps the shelf open for full-price customers; native limits are quick to configure | Determined resellers open multiple accounts or place sequential orders; a cap protects inventory, it never cleans your data |
| Formalize wholesale | The buyer keeps returning and the margin math holds | Predictable volume, separated data, a real channel | Thinner margin per unit, MOQ and payment terms, a support burden you didn't have |
Caps are the right tool when the buyer's volume threatens availability — the limits themselves are native and configurable per product and per collection (Shopify Help Center, quantity limits, accessed November 2026) — and the wrong tool when the buyer is simply your best customer at retail. And they're a perimeter, not a policy: a capped reseller who wants 180 units will place four orders of 45, and your velocity distortion returns in installments.
The wholesale question
The third response deserves its own arithmetic, because the discount has to be earned by volume. Illustrative numbers for the phone stand: retail $12.90, unit cost $4.60, retail margin $8.30. Offer wholesale at $7.40 — about 43% off retail — and the margin drops to $2.80 per unit.
Same gross profit comparison: 180 wholesale units × $2.80 = $504. At retail margin, $504 ÷ $8.30 ≈ 61 units. So a 180-unit wholesale order matches the gross profit of about 61 retail units — roughly 3× the volume just to break even on the discount.
That's the test: wholesale makes sense when the buyer reliably delivers multiples of organic volume, not when they're buying two months' worth once. If the pattern holds, Shopify's B2B features let you run a separate wholesale price list and channel rather than pretending the reseller is a retail customer (Shopify Help Center, B2B, accessed November 2026). The data separation matters as much as the pricing: once reseller volume lives in its own channel, your retail velocity stays clean without manual exclusions.
If the pattern doesn't hold — a buyer who wants wholesale prices at retail frequency — the plain answer is that they're a retail customer, and the cap from the quantity-limits guide is the tool that fits.
Keeping your history clean afterward
However you respond commercially, the data hygiene is the same:
- Exclude the order from every velocity calculation it touches. Annotate the order in your records so the next person analyzing the export doesn't rediscover the distortion from scratch. It's also a physical-count moment: a scheduled stock count on your fastest sellers means the one-customer dent in the shelf gets counted on a calendar date instead of at the next annual stock take.
- Rebuild affected reorder points on organic rates. The worked math above shows the over-buy a contaminated rate produces; the correction is to re-run the reorder-point arithmetic with the cleaned window.
- Watch the window, not just the SKU. If you export data for analysis — say, through the AI CSV workflow — the bulk order is in the file the assistant sees, and no assistant will flag it unless you tell it to. Garbage in, confident garbage out.
- Distinguish the two distortions. A bulk order inflates velocity while stock exists. A different problem — days where a SKU sat at zero and recorded fake "no demand" — deflates it. Both corrupt the same metrics from opposite directions.
That second distortion is half the reason we are building InventoryX: velocity is computed over in-stock days only, so dark days stop masquerading as zero demand. What V1 does not do is detect that one customer placed the spike — there's no order-level anomaly detection yet — so when a bulk buyer lands, excluding the order by hand is still on you. We'd rather say that than imply the dashboard notices for you.
Common questions
Should I stop a customer from buying all my stock? Not if it's a one-off and your stock depth absorbs it — the revenue is real and the customer may become a wholesale account (the mechanics of opening one are documented in Shopify's wholesale-channel help docs, accessed November 2026). Cap them when the behavior repeats and full-price customers face empty shelves. The configuration mechanics live in the per-customer quantity limits guide.
How do I fix my velocity after a bulk order? Recompute the analysis window with the order excluded — in the worked example, 252 ÷ 60 = 4.2/day becomes 72 ÷ 60 = 1.2/day — then rebuild any reorder points or cover numbers the contaminated rate fed. Annotate the excluded order so the next analysis doesn't repeat the mistake.
Is selling to a reseller bad for my store? Not inherently; unpriced wholesale is the problem. A reseller buying at retail prices is getting volume discounts by accident. Price the relationship deliberately: the worked math shows wholesale at 43% off needs roughly triple the volume to match retail gross profit.
Does Shopify have native quantity limits? Yes — as of November 2026, Shopify supports per-customer quantity limits on products and collections, configurable in the admin. They cap how much one customer can buy per order but don't exclude bulk orders from your sales reports, so data cleanup remains separate.
How much discount is "wholesale" pricing? Enough that the volume compensates for the margin drop — compute it, don't guess. In the illustrative example, dropping margin from $8.30 to $2.80 per unit means every wholesale order needs about 3× the retail volume to produce the same gross profit. If the buyer won't reach that multiple, they're a retail customer.
Next step
Open your orders for the last 90 days today and find the single largest line item per SKU. Recompute that SKU's velocity without it, rebuild the reorder point on the organic number, and decide which column of the decision table the buyer belongs in — with the restock math above as your template.