Your best-selling SKU just went out of stock. Again.
It's 2am. You're refreshing Seller Central and your hero SKU — the one doing 40% of your monthly revenue — shows Currently unavailable. Your BSR is tanking. Your organic rank is evaporating. And the reorder you "meant to place last Tuesday" is still sitting as a draft in your notes app.
If you're a solo FBA seller managing somewhere between 20 and 200 SKUs, you know this feeling. The store is big enough that you can't eyeball it anymore, but not big enough to justify a $200/month inventory SaaS or a virtual assistant who actually understands lead times.
Let's do the math on what one stockout actually costs you.
The real cost of a single stockout
I ran the numbers across my own store and a few seller friends. For a SKU doing $8,000/month at a 22% net margin, here's what a 14-day stockout actually costs:
| Cost bucket | Amount |
|---|---|
| Lost revenue (14 days) | $3,733 |
| Lost net profit | $821 |
| Rank recovery (est. 3 weeks of lower velocity at ~30% off) | $1,680 lost revenue |
| PPC spend to rebuild rank | ~$400 |
| Total damage from one stockout | ~$2,900 |
And that's one SKU, one time. Most solo sellers I talk to have 2-4 stockouts per quarter. That's roughly $30,000-$45,000 a year leaking out of a business doing $500k-$1M in revenue — usually because someone forgot to check a spreadsheet on a Sunday.
The problem isn't that you're lazy. The problem is that the mental model most sellers use — "I'll reorder when it looks low" — doesn't scale past about 15 SKUs. Past that, you need a system.
Here's the one I use.
Step 1: Calculate reorder points the boring, correct way
Forget "gut feel." The reorder point (ROP) is a solved math problem. You only need four inputs per SKU:
- Daily sales velocity (units/day, usually a rolling 30-day average)
- Supplier lead time (days from PO to factory-finished)
- Shipping lead time (days from factory to Amazon FC, including check-in)
- Safety stock (days of buffer for Murphy's Law)
The formula:
ROP = (daily_velocity * total_lead_time) + safety_stock_units
where:
total_lead_time = supplier_lead_time + shipping_lead_time + amazon_checkin_time
safety_stock_units = daily_velocity * safety_days
Concrete example. Say you sell a silicone kitchen gadget:
- Velocity: 18 units/day
- Supplier lead time: 25 days
- Sea freight + customs: 32 days
- Amazon check-in: 7 days
- Safety stock: 21 days (China supplier, CNY risk, so I'm conservative)
total_lead_time = 25 + 32 + 7 = 64 days
safety_stock = 18 * 21 = 378 units
ROP = (18 * 64) + 378 = 1,530 units
When your FBA inventory hits 1,530 units, you place the PO. Not before (you're tying up cash), not after (you're stocking out).
If you're using air freight instead, cut shipping lead time to ~7 days and your ROP drops to around 675 units. That's the real reason air freight exists for small sellers — it's not faster delivery, it's lower working capital tied up in inventory.
Step 2: Track velocity honestly (not optimistically)
The biggest mistake I see: sellers use last month's velocity for a product that had a Prime Day bump, or they average across a seasonal swing.
Here's the rule I use:
- Stable SKUs: 30-day rolling average, updated weekly
- Seasonal SKUs: compare same-month year-over-year, then adjust for YoY growth
- New SKUs (<90 days): 14-day rolling, and assume you'll under-forecast
- Trending SKUs (velocity up 20%+ MoM): use the 7-day trailing velocity, not 30-day
A quick JS snippet for anyone who wants to pull this from a CSV export of your Seller Central business reports:
function calculateVelocity(salesRows, sku, days = 30) {
const cutoff = Date.now() - days * 86400000;
const recent = salesRows.filter(
r => r.sku === sku && new Date(r.date).getTime() >= cutoff
);
const totalUnits = recent.reduce((sum, r) => sum + r.unitsOrdered, 0);
return totalUnits / days;
}
function reorderPoint(velocity, leadTimeDays, safetyDays) {
return Math.ceil(velocity * (leadTimeDays + safetyDays));
}
// Example
const v = calculateVelocity(rows, "KITCHEN-SILICONE-01", 30);
const rop = reorderPoint(v, 64, 21);
console.log(`Reorder at: ${rop} units`);
Drop that in a Node script, run it against your weekly export, and you'll have ROPs for every SKU in under a minute.
Step 3: Build a "days of cover" dashboard, not a stock-level dashboard
This is the single biggest mindset shift I made. Most sellers look at their Seller Central inventory page and see: KITCHEN-SILICONE-01: 1,240 units. Is that a lot? A little? You genuinely can't tell.
What you want to see is days of cover — how many days of sales that inventory represents.
days_of_cover = current_inventory / daily_velocity
1,240 units at 18/day = 69 days of cover. Now compare that to your total lead time of 64 days and you instantly know: you're 5 days from needing to have already placed a PO. Panic.
Your dashboard should have a single color-coded column:
- 🟢 Green: days of cover > lead time + safety buffer (you're fine)
- 🟡 Yellow: days of cover between lead time and lead time + buffer (place PO this week)
- 🔴 Red: days of cover < lead time (you will stock out; decide whether to air-freight or accept it)
Checklist for a weekly 15-minute inventory review:
- [ ] Export last 30 days of sales from Seller Central
- [ ] Update velocity column for every SKU
- [ ] Recalculate days of cover
- [ ] Flag all yellow SKUs → check supplier availability today
- [ ] Flag all red SKUs → decide air vs. sea vs. stockout
- [ ] Review any SKU with velocity change >20% WoW
- [ ] Update the PO tracker with any shipments that moved status
Fifteen minutes. Every Monday. That's the whole system.
Step 4: Track POs as a pipeline, not a to-do list
Here's where most solo sellers fall apart. You have 12 POs in flight at any given time, each at a different stage, each with a different supplier, each on a different vessel. A to-do list does not capture this.
You need a pipeline with explicit stages:
- Draft — SKU hit ROP, PO being prepared
- Sent — PO sent to supplier, awaiting PI
- Paid (deposit) — 30% down, production starting
- In production — supplier confirmed start date
- QC passed — inspection done, paid balance
- Shipped — on the water / in the air, tracking number
- Arrived port — customs clearing
- At Amazon — check-in in progress
- Live — sellable inventory
Each stage has a realistic "days in stage" expectation. If a PO is stuck in In production for 40 days when your supplier's normal cycle is 25, that's a signal, not a surprise.
Example dialogue that plays out every week in solo seller groups:
Miyu (Slack, Tuesday 9am): "Hey, has anyone heard from Ningbo Silicone recently? My PO placed March 3 was supposed to ship April 10, now it's April 24 and no tracking."
Daniel: "Did you confirm the production start date in writing?"
Miyu: "...no."
Daniel: "Then you don't actually know if they ever started. That's why I track deposit-paid date separately from production-confirmed date."
That distinction — deposit paid vs. production confirmed — has saved me from two missed Q4 seasons. Suppliers cash deposits instantly. They don't always start production instantly. Track both dates.
Step 5: Plan cash, not just units
Stockouts have a twin problem: overstock. If you reorder every SKU at its ROP without looking at cash, you'll find yourself with $80k tied up in inventory and no money for the ad spend that actually moves units.
Before placing any PO, run this check:
available_cash_for_inventory =
cash_on_hand
- (monthly_operating_expenses * 2) // 2-month runway
- (planned_ad_spend_next_60_days)
- (upcoming_tax_obligations)
Then rank your POs by cash efficiency:
cash_efficiency = (net_profit_per_unit * expected_units_sold_before_next_PO) / PO_cost
The SKU with the highest cash efficiency gets priority. If you only have $15k available and two POs both "need" to happen, the one that returns your cash fastest and with the most profit wins. The other one gets a smaller order or gets air-freighted later.
Concrete numbers:
| SKU | PO cost | Net profit over PO cycle | Cash efficiency |
|---|---|---|---|
| KITCHEN-01 | $9,200 | $6,100 | 0.66 |
| PET-03 | $4,800 | $3,900 | 0.81 |
| HOME-07 | $12,000 | $5,400 | 0.45 |
With $15k available, the right move isn't KITCHEN-01 alone. It's PET-03 + a partial KITCHEN-01 order, or PET-03 + air-shipping a smaller KITCHEN-01 resupply to bridge until cash frees up.
Step 6: Build in explicit "decision dates"
The thing that quietly kills solo sellers is decisions you didn't realize you needed to make. Chinese New Year is a perfect example. Every seller knows CNY exists. Every year, at least 30% of sellers I talk to still get burned by it.
Pre-schedule decision dates in your calendar:
- Oct 1: Review all SKUs for Q4 coverage through Feb 15 (post-CNY arrival)
- Nov 1: Final chance to place sea-freight PO that arrives before CNY factory closure
- Dec 15: Confirm which SKUs will need air-freight bridge orders in Jan
- Mar 1: Review Q2 coverage, plan summer seasonal SKUs
- Jun 1: Q4 planning starts (yes, June)
- Aug 1: Place Q4 hero SKU POs (sea freight, arriving October)
These aren't tasks, they're gates. You don't do them when you "feel like it." They're in the calendar with a 2-hour block.
Step 7: Know when to break your own rules
The system above is the default. But there are three situations where you consciously override it:
- New product launch: Under-order the first PO. You don't know velocity yet. Eating a stockout on a new SKU is way cheaper than eating $20k of dead inventory.
- Declining SKU: If 30-day velocity has dropped 25%+ for two consecutive months, don't reorder at historical ROP. Drop by 40%, or consider sunsetting.
- Viral spike: TikTok hit, 10x velocity for 3 days. Do NOT reorder at the new velocity. It's probably a spike. Use the 14-day trailing and air-freight a bridge order.
Write these exceptions into your SOP so you don't have to re-derive them at 2am when a SKU moves.
Putting it all together
If I zoom out, the whole system is just five columns of data per SKU, updated weekly:
- Current FBA inventory (from Seller Central)
- 30-day velocity (calculated)
- Days of cover (calculated)
- Reorder point (calculated, reviewed quarterly)
- Next action (Green / Yellow / Red with the specific action)
Plus one PO pipeline with stages and expected days per stage.
Plus a monthly cash-planning check before any PO is approved.
That's it. You can absolutely build this yourself in Google Sheets or Notion over a weekend. A lot of sellers I know have done exactly that, and if you enjoy the building part, go for it — it'll teach you your numbers better than anything else.
The version I actually use
I rebuilt this template probably six times over three years, making every mistake possible. I shipped orders late because I forgot CNY. I overstocked a SKU by 8 months because I forecast from a Prime Day spike. I had $40k in inventory and couldn't pay for the ads to move it.
Eventually I systematized every lesson into a single spreadsheet template designed specifically for solo sellers in the 20-200 SKU range — the awkward middle where you've outgrown eyeballing but a real inventory SaaS is overkill. It includes:
- The ROP calculator with configurable safety stock per SKU category
- Velocity tracking with the seasonal / trending / new-SKU logic baked in
- The days-of-cover dashboard with green/yellow/red flags
- The 9-stage PO pipeline tracker
- A cash-planning sheet that ranks POs by cash efficiency before you place them
- Pre-filled decision date calendar for CNY, Q4, Prime Day
- A weekly 15-minute review checklist
I packaged it as Stop FBA Stockouts: Inventory Template for Solo Sellers (20-200 SKUs). It's $29 — roughly 1% of the cost of a single stockout on a decent SKU. Works for Shopify and Etsy sellers too; the math is the same, only the lead times change.
It's not a SaaS. It's not a subscription. It's a spreadsheet that does the boring math correctly, with the SOPs written into the tabs so you actually use it.
Want the complete Stop FBA Stockouts template I used? View on Gumroad →
Top comments (0)