D2C dark store inventory planning: how much stock to send (with formula)
26 October 2026 · Shaheer Ahmed
Say you have 10,000 units and the next production batch is two months away. Website customers in your big cities want it in 30 minutes or same-day, Blinkit just sent a PO, and the rest of India still needs to be served from your main warehouse.
How many units go where? That's the inventory split between a city dark store, a national warehouse and the q-com apps, and it's easy to do it by gut feel. It doesn't matter if your brand is from Delhi, Mumbai or Bangalore. If you stock a dark store in any city, you face this question.
Here's how we'd think about it, with a simple formula you can put in a spreadsheet today.
First, look at your own orders
Before any formula, pull the last 60 to 90 days of orders from Shopify (or wherever you sell) and group them by pincode and channel.
You want two numbers:
- City website orders per day. Website orders to the pincodes your dark store partner covers, divided by the number of days.
- App PO volume per week. How many units Blinkit, Zepto, Instamart and others actually ordered from you.
Big cities matter. In EasyEcom's data, Bengaluru was the single biggest city, with about 1.1Cr orders in a year, and CLSA counts 3,536 quick-commerce dark stores across the top 10 cities. But the same data says those top 10 cities make up only 22% of total orders. So don't size your split on industry averages. Size it on your own pincode data.
Three places, three different jobs
Each slice of your stock does a different job, and you control each one differently.

1. The city dark stores. This is stock sitting inside the city, ready for quick delivery from your own website. You decide how much goes in, and you sell it at your own margin to your own customers.
2. The q-com platform reserve. On quick-commerce apps, you don't pick the dark store. For Blinkit, you ship to a city or regional warehouse, it checks quantity, barcodes and shelf life, and then spreads the stock across its own dark stores. Apps buy through purchase orders, and brands refill them every 24 to 48 hours.
So the "app" share isn't stock you place. It's a reserve you hold back so you can fill POs when they arrive. Once you ship it, it's theirs.
3. The national warehouse. Everything else. It serves the rest of India and acts as the shared buffer that refills the other two.
Why splitting needs more stock than you think
There's an old idea in supply chain called the square root law. Under ideal conditions, the safety stock you need grows with the square root of the number of places you keep it. Split one pool into four, and you need roughly twice the safety stock.
Real life is messier, and the savings are usually smaller than the theory says. But the direction holds: every extra location needs its own cushion.
That's why I wouldn't split all 10,000 units three ways on day one. More locations isn't more sales; it's more places for stock to sit. Keep the city slice lean, sized in days, and let the national warehouse be the pool everything draws from.
How much stock to send to city dark stores: a simple formula
How much to send to your dark store depends on a few things: how often you restock, how long stock takes to reach the city, how much is still sitting there when the new batch lands, your past orders, and what's coming up (a sale, an influencer push, a slow month).
Here it is in one line:
Units to send = D × (C + B) − L
- D (daily city sales): your average from the last 60 to 90 days. Multiply it up for a planned campaign (say 1.3 for a big sale) or down for a slow month (say 0.9).
- C (cover days): days until your next restock. Most brands we work with restock monthly or fortnightly, depending on shelf life, lead time and order volume. Keep it within how long your dark store holds stock before charging for storage. Ask your partner.
- B (buffer days): a few extra days in case sales jump or the next truck is late. Pick what fits your lead-time risk; the example below uses 4.
- L (left on arrival): units still in the dark store when the new stock lands. That's what's there today, minus D × transit days.
And when to ship: send before the dark store drops to D × (transit days + buffer days). If the stock isn't made yet, add production time on top, and start that much earlier.
Inbound itself shouldn't be the slow part. At Zappr, inbound takes a couple of hours at most, and there's no minimum, so a small top-up is fine.
A worked example
A protein snack brand with its warehouse in Delhi has 500 units until the next batch, about 60 days away. In the last 60 days:
- 120 website orders came from the dark-store partner pincodes, so D = 2 a day.
- About 180 website orders came from the rest of India, so roughly 3 a day.
- Q-com platform POs added up to about 25 units a week.
- A sale is planned in the next fortnight, so D goes up to 2.5.
They restock the partner dark-store fortnightly (C = 14), keep 4 buffer days (B = 4), and the truck from Delhi takes 3 days. The dark store is empty today (L = 0).
Dark store: 2.5 × (14 + 4) − 0 = 45 units.
App reserve: about two weeks of POs, so 50 units, kept in the main warehouse and earmarked, not shipped.
National warehouse: the rest, 405 units. That covers about 3 orders a day from the rest of India for the next two months, refills the dark store every fortnight, and holds the app reserve. Add it all up over 60 days, though, and demand comes to a little over 500. Something will run short, which is the next section.
About 11 days after the stock lands, the dark store is down to around 17 or 18 units. That's 2.5 × (3 transit days + 4 buffer days), so it's time to ship. When the truck lands three days later, about 10 are left (L = 10). If sales are still at 2.5 a day, the next send is 45 − 10 = 35 units.
Notice how small the city slice is at any one time. That's the point: it turns fast, and you refill it from the pool.
When the apps ask for more than you planned
They will. Fill rate is units supplied divided by units ordered, and platforms track it on weekly scorecards that can affect visibility. No platform publishes its exact thresholds or penalties, so ask your category manager rather than trusting a number from a blog (including this one).
With fixed stock, every extra unit you send to an app is a unit you can't sell on your own site. How we'd think about it: protect your dark store's buffer days first. Fill the PO in full if the city slice still has its buffer after the next restock. If it doesn't, a lower fill rate can be a deliberate choice, not a failure. Just know the scorecard cost is real.
There's one more difference worth knowing. Stock you ship to an app is gone. Stock you send to a dark-store partner isn't stuck: if the dark store is over-stocked, brands can pull it back out at no cost, and then send it on wherever they need it. That makes it much easier to start lean and adjust.
Your 15-minute exercise this week
- Export the last 60 to 90 days of orders. Group them by pincode and by channel.
- Work out D: website orders per day from your dark store's pincodes. Adjust it for anything you have planned.
- Pick C (fortnightly or monthly) and B (a few days). Ask your partner about free storage time.
- Put D × (C + B) − L in a spreadsheet. That's your dark store send.
- Earmark a reserve for app POs (the example used two weeks). Leave everything else in the main warehouse.
- Set a weekly reminder to check it.
If you have orders in Bangalore and want to try 30-minute delivery without locking up stock or going through all the calculations above, check out zappr.delivery. We handle all the math and just give you the number you need to ship. Our pricing is public too.
Sources
- 57% of e-commerce orders come from smaller cities, MediaNews4U (EasyEcom), 22 Sep 2026
- Flipkart Minutes overtakes Swiggy Instamart in dark stores across top 10 cities, Outlook Business (CLSA), 26 Aug 2026
- How to sell on Blinkit: seller onboarding guide 2026, Unicommerce, 15 Sep 2026
- Scaling brands on Blinkit, Zepto and Instamart, Unicommerce, 16 Sep 2026
- Why seller fill rates are the backbone of quick commerce, WareIQ, updated 21 Feb 2026
- Maister on the square root law, International Journal of Physical Distribution, 1976
- Demand pooling analysis, MetricGate, 14 Feb 2025
- E-commerce order volumes jump 31% year on year, quick commerce grows 85%, Free Press Journal (Unicommerce), 14 Oct 2026
