How to balance stock between locations before buying more
Start with transferable stock, not the number shown as on hand. Reservations already belong to customers, damaged units cannot fulfil demand and safety stock protects the source. If a shop has 40 units, 5 reserved and 15 safety stock, only 20 are available for transfer.
Before buying the same item again, check whether another of your own locations can release stock without creating the next shortage at home. This guide tests that release step by step.
Define the shortage on the same horizon
Define the shortage at the destination on the same horizon. A location with 10 units of demand is not necessarily short 10 if it already has usable stock or confirmed inbound arriving in time. Conversely, an inbound shipment after the need date cannot solve today's shortage.
Pick the horizon first, for example the next 14 days, and use it for demand, inbound deliveries and the safety stock you want left at the end. If you keep lower, base and high demand columns, choose one scenario and say which.
Respect packs and routes
Respect packs and routes. If the SKU moves only in packs of 5, a ten-unit shortage needs two packs. A route with fixed cost 50 and variable cost 2 per unit costs 70 for the ten-unit transfer. That is a real cash cost, but it is not enough to claim the move saves money unless the business also enters the cost of a lost sale, emergency purchase or expiry.
A route also has a calendar: dispatch days, lead time and the destination's receiving days. A route with a lead time of 5 days that leaves on 2 November arrives on 7 November and cannot serve demand needed on 4 November, however cheap it is.
A worked example: 40 on hand, 10 short, packs of 5
Here is the whole calculation for one store pair, with every number as the tool reports it for this example.
| Step | Input | Result |
|---|---|---|
| Free stock at Store A | 40 on hand − 5 reserved − 0 damaged | 35 |
| Transferable at Store A | 35 free − 15 safety stock | 20 |
| Shortage at Store B | 10 units needed on 5 November, nothing on hand, nothing inbound | 10 |
| Packs | 10 units ÷ pack of 5 | 2 packs |
| Route A → B | leaves 2 November, lead time 1 day | arrives 3 November, before the need date |
| Transfer cost | fixed 50 + 2 × 10 units | 70.00 |
| After the move | Store B short 0, Store A keeps its 15 safety stock | 10 units fewer short |
The search proved that no plan with fewer units short exists under the entered objective. The table does not say the move "saves" anything, because no shortage cost was entered.
Check the source after the move
Check the source after the move. Transferable quantity is a constraint, not a suggestion. Raising the source safety stock from 15 to 35 in the example removes all transferable units. A plan that still moves ten would be arithmetically attractive and operationally wrong.
In numbers: 35 free − 35 safety stock = 0 transferable. The proposal to move 10 becomes infeasible and Store B stays 10 short. With safety stock at 30, Store A can release 5 units: one pack for 50 + 2 × 5 = 60.00, and Store B is still 5 short.
Perishable stock adds time
Perishable stock adds time. A lot must remain usable when it arrives and through the entered minimum shelf-life. The oldest lot may be the first FEFO candidate, but not if route lead time makes it unusable. Capacity, dispatch days and receiving constraints can also turn a cheap-looking route into an impossible one.
Another example: Store A holds lot OLD (30 units, expired on 1 November), lot SOON (20 units, expiry 5 November) and lot NEW (10 units, no expiry). The plan date is 2 November, the route arrives on 3 November and the item needs 2 days of shelf-life after arrival. OLD is expired. SOON would have to stay usable after 5 November, so it is excluded. The plan moves 10 units of NEW for 70.00, and Store B, which needs 15, is still 5 short.
Capacity works the same way: if Store B needs 20 and the route carries 15 units, the plan moves 15 for 50 + 2 × 15 = 80.00 and reports 5 still short.
Read the optimisation status
Read the optimisation status. “Feasible” means the plan satisfies the model. “Optimal” means the search proved no better plan exists under the entered objective. For a large problem, a useful plan may be available before proof. Keep the bound or gap in the report instead of hiding it.
The default objective is shown on screen: fewest units short (weighted by your priority), then fewest units expiring, then lowest transfer cost, then fewest routes. When two routes give the same physical result, the cheaper one wins after the shortage tie: a route from Store C at 30 + 1 × 10 = 40.00 beats the 70.00 route from Store A because both leave Store B short 0.
Physical result first, money when you enter it
Without shortage and expiry costs, the comparison stays physical: units short, units at expiry risk and transfer cost on separate lines. With them, the tool can value the outcome:
- benefit = avoided shortage cost + avoided expiry cost − transfer cost;
- with a lost-sale cost of 4 per unit, moving 10 units avoids 40 of shortage cost and costs 70, so the benefit is −30.00, and a money objective would keep the stock where it is;
- with 12 per unit, the same move avoids 120 and the benefit is 50.00.
The money figures depend entirely on the costs you enter; the tool does not guess them.
From proposal to receipt
A proposal is not a stock movement. Approve freezes the plan, dispatch lowers the source and puts the units in transit, receive raises the destination. If 9 of 10 units arrive, a separate adjustment records the missing unit with a reason, so on hand, in transit and lost still add up.
Checklist before you move stock
- Count free stock: on hand minus reserved and damaged, without expired lots.
- Subtract the source's safety stock to get transferable units.
- Set one horizon and one demand scenario for every location.
- Include confirmed inbound that arrives before the need date, and nothing later.
- Round to whole packs unless split packs are allowed for the item.
- Check the route calendar, lead time, capacity and the destination's receiving days.
- Exclude lots that expire before arrival plus the required shelf-life.
- Compare with the no-transfer baseline using the same simulation.
- Claim savings only when shortage and expiry costs are entered.
- Record the status: optimal within the model, or feasible with its bound and gap.
What this method does not cover
The model uses direct routes between your own locations, one dispatch per route per plan, and demand needed on the first day of its period. It does not order from suppliers, book a carrier, forecast demand or connect to a point-of-sale system; you enter the numbers or import CSV. Large networks may stop at the time limit with a feasible plan and a stated gap. If you are still deciding how much to buy, see the Stock Purchase Planner; for counts and losses, the Stocktake & Shrinkage Control; for dated lots, the Expiry, Batch & Recall Control.
Compare with the same simulation
Multi-Location Stock Transfer Optimizer compares the no-transfer baseline, the generated plan and a user plan using the same simulation. Open the fictional three-store demo to inspect shortages, expiry, packs, costs and the dispatch-to-receipt ledger.
Tools mentioned in this guide
Interactive tool
Multi-Location Stock Transfer Optimizer
Move stock you already own between your locations before buying more — with shortages, expiry, packs, lead times and transfer cost checked first.
Interactive tool
Stocktake & Shrinkage Control
Count what is really there, account for stock movements and resolve differences before adjusting inventory.
Interactive tool
Expiry, Batch & Recall Control
Know which batch to use first, what may expire unsold and which orders are affected when a batch is blocked.
Interactive tool
Stock Purchase Planner
Decide what to reorder, how much and by which date, and split a limited purchase budget across products so the stock you can afford covers the most valuable demand.

