A customer in Perth sees a two-day delivery promise at checkout, but your Sydney warehouse holds the stock. That gap between national inventory totals and local delivery reality is where most multi-store merchants lose sales. Treating every Australian state as its own demand island is not a nice-to-have; it is the foundation of a checkout promise you can actually keep. National stock numbers average away both stockouts and dead stock, hiding the real problem until a customer in one state is left waiting while slow stock sits in another.
This tutorial shows you how to fix that with a per-state inventory management method. You will learn why a combined national total cannot serve a two-day Perth promise, how per-store safety stock is calculated from delivered-in-time demand and freight transit windows, and how to apply those location-level buffers instead of relying on the combined figure. We will walk through a worked Sydney and Perth example, cover what WooCommerce should promise at checkout, and explain how to keep location-level stock accurate across Square and WooCommerce. You will also see how to rebalance at month-end without breaking a delivery promise, and how to source state-level demand data now that national monthly retail estimates have ended. Set one state buffer first, then prove it.

Why a National Stock Number Cannot Serve a Two-Day Perth Promise
Treat each state as its own demand island. A Perth customer promised a two-day delivery cannot be rescued by units sitting in a Sydney warehouse, however healthy the combined stock figure looks. Yet most multi-store merchants review total units on hand across all locations, a number that treats Sydney, Melbourne, Brisbane, Perth, Adelaide and every regional site as one pool. That pooled figure never fulfils an order. The delivery estimate a shopper sees is determined by the location that would pick, pack and dispatch it, so the national aggregate has no direct influence on the promise at checkout.
The fix follows from that: calculate delivered-in-time demand per state, apply each state's freight transit window, set a safety stock buffer per store, then let those buffers rather than the combined total drive what checkout promises. For the pickup equivalent, see how to sync per-location pickup times.
Why National Totals Average Away Both Stockouts and Dead Stock
The averaging effect is simple arithmetic with an expensive outcome. A single national figure blends a fast-selling state with a slow one, so the aggregate looks healthy while one location is effectively out of stock and cannot meet its promise.
The trigger is usually the reorder point. Set it from a national velocity average and an ordinary replenishment signal in Perth looks unremarkable, even when Perth-specific demand has moved well above its own baseline. The same average overstocks slower states, which is where aged inventory, markdowns and write-offs eventually surface.
Two decisions get confused here. Allocation decides which location receives scarce units today; replenishment decides when to buy more. Merge them and both collapse back into a national number.
This is structural, not a data-entry error. Better counts alone will not fix it, because the same aggregate math keeps producing the same bad buffer. Only a location-level buffer changes the outcome. If your Square and WooCommerce stock figures disagree, the fix often starts with these safety stock rules for overselling.
The Three Inputs Behind Every Per-State Buffer
Those failures stem from treating one number as local truth. A per-state buffer needs three location-specific inputs plus a variability term that sets its width.
Delivered-in-time demand counts only orders each state location shipped inside its promised window. Late orders are excluded because the promise, not the order, is what the buffer protects.
The freight transit window is realistic calendar days from dispatch to delivery for each origin and destination pair, such as Sydney to Perth, taken from carrier published standards and checked against your contracts.
Target service level is the share of demand you intend to cover from stock on hand, expressed as a z-score in the safety-stock formula and chosen per state. One blanket service level recreates the single-number problem.
The standard deviation of delivered-in-time demand over your review period pairs with the transit window to set cushion width: high variability or a long window means a wider buffer, not a bigger guess.
Hold all three at state and store level; a national demand figure, transit average or service level collapses back into the aggregate. Accuracy depends on reliable counts, especially when running separate inventory systems between Square and WooCommerce.
How to Set Per-Store Safety Stock With a Per-State Inventory Management Method
With those inputs defined, apply them in order.
Segment demand by state and location. Build a state-by-state table from WooCommerce order data and Square location reporting, not one combined column. Keep SKUs grouped at a manageable family level; where bundles are involved, review how kit components sync so component counts stay aligned.
Calculate delivered-in-time demand. Use a consistent review period, such as 12 weeks, counting only orders shipped inside the promised delivery date. Late shipments are excluded because the buffer protects the promise, not raw order volume.
Convert variability per location. Multiply the standard deviation of weekly delivered-in-time demand by the square root of the transit window in weeks, then by the state z-score you have chosen.
Set the reorder point. Add expected demand across the transit window to that buffer. Review it monthly and immediately after any promotion that shifted one state's demand.
Report, do not trigger. The national total is the sum of state buffers plus in-transit stock. It is an output only, never the reorder trigger.
Worked Example: A Hypothetical Sydney and Perth Buffer
Everything below is hypothetical and illustrative. Treat each figure as a placeholder for structure, not a benchmark, and substitute your own delivered-in-time demand and the carrier service standards that apply to you.
Suppose a Sydney store covers New South Wales on a two-day promise and a Perth store covers Western Australia. A meaningful share of WA orders cannot be met from NSW inside that window, so the two locations behave differently.
Hypothetically, Perth's delivered-in-time demand is 200 units a week, standard deviation 40, inbound transit two weeks, z-score 1.65. Standard safety stock is z x standard deviation x the square root of transit weeks: 1.65 x 40 x 1.41, about 93 units. Add expected demand across the window (roughly 400 units) for a Perth reorder point near 493. Multiplying average demand by transit weeks and z, as some simplified guides do, overstates the cushion; variability has to drive it.
A national calculation blends Perth's demand with a slower state's, so the aggregate average under-buffers Perth and over-buffers the other store. Perth sells out while the slower location sits on stock it cannot move. Split the buffers and Perth's reorder point rises, the slower location's falls, and working capital is released without cutting service in either state.
What WooCommerce Should Promise at Checkout
Those buffers only pay off if checkout reads them. WooCommerce derives its delivery estimate from the stock and shipping configuration attached to each location, so the promise is only ever as honest as the location data behind it.
The failure mode is direct. An estimate built on combined stock, or on a warehouse the customer's state cannot be served from, produces a promise the store cannot keep, and every hour spent sizing per-state buffers upstream is wasted. If the underlying setup is still unclear, our guide to WooCommerce inventory management covers the mechanics.
Two levers fix it. Match each shipping zone to the location that actually serves it, then let that location's stock and its buffer drive availability for the zone. Treat the delivery date as a service-level commitment rather than a marketing message. A missed date costs more in refunds, support time and repeat purchase than a slightly cautious buffer costs in working capital.
Run one test this week: enter a Perth postcode, read what checkout promises today, and confirm which location would actually pick, pack and dispatch that order.

Keeping Location-Level Stock Accurate Across Square and WooCommerce
A checkout promise is only as good as the location quantity behind it, and that quantity must be current. A per-state buffer calculated on stale or pooled stock still hides a stockout until the customer finds it.
Routine reconciliation risks break location accuracy: the same SKU selling in store through Square and online in WooCommerce, returns and exchanges, and internal transfers between stores. Each changes one location's count independently of the others.
Look for location-aware quantity updates rather than one pooled figure, order-level accuracy, and a way to catch duplicate or mismatched product records before they distort counts. Sync stock across platforms depends on these controls. SquareSync for Woo syncs products, inventory, orders, customers, loyalty programs and discounts between Square and WooCommerce in real time, and includes a Find Square Matches feature for spotting duplicate listings.
Test any setup: make one sale in the Perth store and confirm the quantity WooCommerce uses for the Perth zone drops, not just a global number no checkout reads.
Month-End Rebalancing Without Breaking a Promise
With location counts trustworthy, month-end rebalancing can stay disciplined. Treat interstate transfers as a slow tool: each move consumes the transit window in both directions, so reserve them for slow-moving stock you have already over-buffered, never for covering a live stockout. Reallocate on a delivered-in-time demand trend, not a single strong week, so buffers follow real change rather than noise. Review buffers before edge cases that move one state only: promotions, public holidays, regional events and localised weather. Reacting after a late shipment is too late. Never fund a fast state by clearing a slow state to zero; the national-total habit returns the moment that state misses a promise, and the fix costs more than the buffer saved. If a connector change coincides with transfers, use a cutover sequence preserving order history so location counts stay attributable.
State-Level Demand Data You Now Have to Source Yourself
That rebalancing discipline depends on a dataset most merchants do not yet have. The ABS published its 771st and final monthly Retail Trade estimate, ending a series that ran for 75 years (ABS, Retail Trade: a journey through 75 years of retail statistics). For inventory management, there is no longer a free monthly national benchmark, so state-level demand has to come from your own order, shipment and delivered-in-time data.
The same retrospective covers online shopping and shifting household spending, but check current figures at source before quoting them. Build the dataset now: at least 12 weeks of per-state delivered-in-time demand at SKU-family level, plus carrier service standards for every origin and destination pair you rely on. Australia Post has reported an underlying loss, as covered by the IPC news portal, so verify network and service standards against your own carrier contracts instead of assuming last year's transit windows hold. Our Square and WooCommerce sync guides show how location data stays aligned.
Next Steps: Set One State Buffer, Then Prove It
State-level data underpins the method; now prove it on one state before scaling. Buffers belong to states and stores, while the national total is a reporting output, not an allocation input.
Your First Week
Pick one state. Compute delivered-in-time demand across 12 weeks. Confirm the transit window with your carrier, choose a service-level z-score, set the reorder point, then watch that state's stockout rate.
Then Extend
Roll the method to every state and align each WooCommerce shipping zone with the location that actually serves it, so the checkout promise stops outrunning the stock behind it.
Keep It Honest
Label illustrative numbers as illustrative. Review buffers monthly and after promotions, and treat every late shipment as evidence that a buffer, a transit window or a promise needs recalibrating.
Conclusion
National stock totals cannot support a two-day Perth promise. Buffers belong to states and stores, and three inputs set them: per-state delivered-in-time demand, confirmed carrier transit windows, and your chosen service-level z-score. Location-level accuracy across Square and WooCommerce keeps those buffers honest, so checkout promises match the stock actually behind them. Review monthly, after promotions, and treat every late shipment as a signal to recalibrate. Your next step is deliberately small: pick one state, compute 12 weeks of delivered-in-time demand at SKU-family level, confirm the transit window with your carrier, and set a single reorder point. Then watch that state's stockout rate. Prove the method on one state, and you earn the confidence to scale it to every state and shipping zone. Our Square and WooCommerce sync guides show how location data stays aligned while you do it.
FAQS
Why can't a national stock total support a two-day delivery promise?
A national total pools units across all locations, but an order is fulfilled by the one location that picks, packs and dispatches it. Stock in a Sydney warehouse cannot rescue a Perth customer promised two-day delivery, so the combined figure has no direct influence on the checkout promise.
What inputs are needed to set a per-state safety stock buffer?
Three location-specific inputs plus a variability term: delivered-in-time demand for each state location (counting only orders shipped inside the promised window), the freight transit window for each origin and destination pair, and a target service level expressed as a z-score chosen per state. The standard deviation of delivered-in-time demand sets the width of the buffer.
How is per-store safety stock calculated?
Multiply the standard deviation of weekly delivered-in-time demand by the square root of the transit window in weeks, then by the chosen state z-score. Add expected demand across the transit window to that buffer to get the reorder point. The post's hypothetical Perth example uses 1.65 x 40 x 1.41, about 93 units, plus roughly 400 units of expected demand for a reorder point near 493.
Why shouldn't the national total trigger reorders?
The national total is the sum of state buffers plus in-transit stock, so it is an output for reporting only. Using it as the reorder trigger blends fast and slow states together, leaving one location understocked while another holds stock it cannot move.
How should WooCommerce checkout delivery estimates be set up?
Match each shipping zone to the location that actually serves it, then let that location's stock and buffer drive availability for the zone. The delivery date should be treated as a service-level commitment. A simple test is to enter a Perth postcode, read the promise shown, and confirm which location would dispatch the order.