Shopify Multi-Location Inventory Management
Every added warehouse, store or 3PL brings its own stock count, its own demand pattern and new ways to oversell or ship from the wrong place. This guide covers how to plan locations, set reorder points per location, decide on transfers and audit the whole setup.
Why more locations make inventory harder
With one location you keep one count per SKU and one reorder point. A second warehouse, a retail store or a 3PL changes the problem in four ways:
- Visibility. Which location holds the SKU a customer just ordered, and is it really free to sell?
- Overselling. Location A shows 5 units and location B shows 3. Do you have 8, or has a pending transfer already claimed 3 of them?
- Fulfillment cost. Shipping from the wrong location, or splitting an order across two, can turn a profitable order into a losing one.
- Replenishment. Each location has its own demand pattern, so each needs its own reorder point and safety stock.
How per-location inventory works
Shopify tracks inventory per location, and each location's quantity is split into a few states. Other tools may label these differently, but the ideas are the same:
- On hand: physically in the location.
- Committed: on hand, but promised to open orders that have not shipped.
- Incoming: ordered from a supplier or in transit on a transfer, not yet received.
- Unavailable: on hand but not sellable, such as damaged or quarantined stock.
Available to promise
The total across all locations can look healthy while the quantity you can actually sell from each one is much lower. Available to promise (ATP) is what a location can still commit to new orders:
Reserved holds are B2B allocations or stock set aside for upcoming subscription shipments. Incoming units should not count until they are received. A transfer in transit should leave the sending location's on-hand count when it ships and join the receiving location's count only when it arrives. In between, those units are sellable nowhere, and if any system treats them differently your counts will drift.
Routing orders to locations
When an order arrives, something decides which location fulfills it. The simplest rule is a ranked list: check location 1 first, then location 2. That is easy to maintain, but a fixed list ignores distance, remaining stock and shipping cost. If the top location has 2 units left and another has 200, a rigid list keeps pulling from the first until it reaches zero.
| Routing factor | Why it matters | Question to ask |
|---|---|---|
| Distance to customer | Shipping cost and delivery time | Which location is closest to the destination? |
| Remaining stock | Avoids draining one location while others sit on excess | Would this order push the location below its reorder point? |
| Fulfillment cost | Labor and 3PL fees differ by location | What is the all-in cost to ship from here? |
| Order splitting | Two parcels cost more than one | Can one location fill the whole order? |
| Carrier cut-off times | Determines which day the order ships | When is the last pickup at this location? |
Order splitting is the easiest cost to see: three items filled from two locations means two shipments instead of one. Check whether one location can fill the whole order before splitting it.
Plan the structure before adding locations
- Define each location's purpose: fulfillment, retail, overflow or drop-ship.
- Decide which SKUs each location carries. Zero units at a location that should carry the SKU means "stocked here, currently out." A SKU the location should never carry is a different situation, and it should not show up as a stockout.
- Write down transfer rules: who approves a transfer, the minimum transfer size and the expected transit time.
- Choose routing logic: nearest to the customer, lowest cost, highest stock, or a mix.
- Enter full addresses. Distance and shipping rates depend on them. Give a 3PL its own location so its counts stay separate.
- Load starting quantities per location and confirm them with a physical count.
Set reorder points and safety stock per location
Say a retail store sells 5 units a week and a warehouse ships 500 a week. They cannot share one reorder point. Apply the standard formulas separately to each location, using that location's demand. See the reorder point formula and the safety stock formula for the full derivations.
Here z is the service-level factor: about 1.28 for a 90% target, 1.65 for 95% and 2.33 for 99%.
Hypothetical example. Two locations are replenished with a 9-day lead time and a 95% service target (z = 1.65).
- Warehouse: average 20 units a day, standard deviation 2. Safety stock = 1.65 × 2 × √9 = 1.65 × 2 × 3 = 9.9, so about 10 units. Reorder point = 20 × 9 + 10 = 190.
- Store: average 6 units a day, standard deviation 5. Safety stock = 1.65 × 5 × 3 = 24.75, so about 25 units. Reorder point = 6 × 9 + 25 = 79.
The store sells less than a third as much but needs more than twice the safety stock, because its daily sales are erratic.
Splitting stock also costs buffer. Suppose the same two demand streams were served from one pooled stock and daily demands are independent. The combined standard deviation is √(2² + 5²) = √29 ≈ 5.39, so safety stock = 1.65 × 5.39 × 3 ≈ 26.7, about 27 units. Held separately, the two locations need 10 + 25 = 35. Pooling is not free, since customers far from the pooled stock cost more to ship to, but it is the trade-off behind deciding how many locations carry a SKU.
Also avoid assuming seasonality is uniform. Demand for a product can peak at different times in different regions, and one network-wide assumption can leave one region empty while another sits on excess. See seasonal inventory planning.
Transfers: when and how much
Trigger a transfer when:
- A location will hit its reorder point before the next supplier delivery arrives.
- Another location holds more days of supply than your own excess threshold allows.
- The transfer cost per unit is lower than the margin you would lose to a stockout, or than the shipping saved on later orders.
- Demand is shifting from one region to another.
To size the transfer, compute what the receiving location needs, then cap it by what the sending location can spare:
The transfer quantity is the smaller of the two numbers, and never below zero.
Hypothetical example. A second store sells 8 units a day, you want 21 days of supply there, and it has 60 units on hand with nothing incoming. Need = 21 × 8 − 60 = 168 − 60 = 108 units. The sending warehouse has 260 available and a reorder point of 190, so it can spare 260 − 190 = 70. You transfer 70 units, and the remaining 108 − 70 = 38 units have to come from a supplier order.
The goal is to balance stock relative to demand, not to move everything to the fastest seller.
Scaling beyond two locations
Going from one location to two is manageable by hand. Past that, three things change.
- Transfer routes multiply. With n locations there are n(n − 1) / 2 location pairs: 1 pair for 2 locations, 10 for 5, and 45 for 10. That is quadratic growth, and it quickly breaks ad hoc decisions. Apply one written rule set to every pair.
- Purchasing needs a design. You can ship supplier orders to a central hub and redistribute, or ship straight to each location. The right answer depends on supplier minimums, freight per delivery and internal transfer cost, so compare the total landed cost of each design using your own numbers. See purchase order management.
- Forecasts need a location dimension. A network-level forecast hides local patterns. See demand forecasting, and start with your A items from an ABC analysis.
Multi-location metrics to track
- Days of supply per location = on hand ÷ average daily demand at that location.
- Balance ratio per location = (location's share of total inventory) ÷ (location's share of total demand). It equals the location's days of supply divided by the network's days of supply. A value of 1.0 is balanced, above 1 means overstocked relative to demand, and below 1 means understocked.
- Order split rate = orders shipped from two or more locations ÷ total orders.
- Per-location stockout rate = days with zero available ÷ days in the period.
- Fulfillment cost per order, by location = total fulfillment cost ÷ orders shipped from that location.
- Transfer volume and cost per month.
Hypothetical example. Three locations hold 600, 300 and 100 units and sell 20, 20 and 10 units a day. Their inventory shares are 60%, 30% and 10%, and their demand shares are 40%, 40% and 20%, so the balance ratios are 1.5, 0.75 and 0.5. Their days of supply are 30, 15 and 10, against 1,000 ÷ 50 = 20 for the whole network. The first location is the natural source for transfers and the third is the first to receive them.
Set your own targets from a few months of your data, then watch the trend. See also the inventory KPI guide.
A quarterly multi-location audit
- Balance check. Compute the balance ratio for each location on your A items and investigate large deviations.
- Count check. Compare physical counts with system counts at every location. Persistent gaps point to receiving errors, mis-picks or shrinkage.
- Transfer cost review. Total what you spent moving stock between locations. A rising total often means the initial allocation is wrong.
- Split-order review. Find which SKU combinations get split and whether a stocking change would stop it.
- Dead stock by location. Find SKUs with no sales at a location over a period you choose, for example 90 days. They are candidates for consolidation or clearance. See dead stock management.
- Lead time accuracy. Compare actual and expected lead times, for suppliers and for transfers. Wrong lead times flow straight into reorder points. See preventing stockouts.