Stock and availability
Multi-location inventory: decide per location what your store may sell
Your ERP holds a quantity per item and per location. The store may sell only part of it: the showroom does not ship, one warehouse holds stock for wholesale, another keeps a safety margin. We set those rules per location and send the store the number that can ship.
One number per item is the wrong number
A distributor holds 100 units of an item in the Reno warehouse and 10 on the showroom floor in Sacramento. An integration that adds up every location sends 110 to the store. A customer orders 105, the warehouse ships 100, and the other 5 are display units in another city. That case is on the stock and availability page. This page covers the rules that prevent it.
The problem grows with the grid. A catalog of 4,000 SKUs in two warehouses and one retail location is 4,000 times 3: 12,000 quantities. Each one has its own committed stock and each location has its own purpose. A fourth location adds 4,000 more.
How it works
Every location in the ERP gets a rule, and the quantity is calculated per location before anything is added up. Take item 00123456 in three locations:
location on hand for store rule
Reno 100 84 12 committed, safety stock 4
Columbus 40 15 5 committed, 20 held for wholesale
Sacramento 10 0 showroom, not shipped
total 150 99
Adding up on hand gives 150. Adding up what each location may ship for the web store gives 99. The difference of 51 units is stock that exists and that the store must not sell.
The rules per location
| Rule | Example | Effect on item 00123456 |
|---|---|---|
| Counts for the web store | Sacramento: no | 10 units stay out |
| Channel reserve | Columbus: 20 units held for wholesale | 40 minus 5 minus 20 is 15 |
| Safety stock | Reno: 4 units | 100 minus 12 minus 4 is 84 |
| Fulfillment priority | Reno first, Columbus second | an order for 60 ships from Reno |
| Split or ship complete | split allowed | an order for 90 ships 84 from Reno and 6 from Columbus |
A reserve can be a fixed quantity or a share. A percentage is rounded down per item, so 15% of 84 units is 12, not 12.6.
Mapping locations
The ERP and the store rarely have the same list of locations. There are four shapes.
| Shape | ERP | Store | Quantity |
|---|---|---|---|
| One to one | Reno | Reno | 84 |
| Many to one | Reno and Reno overflow | Reno | the two added up |
| One to many | Reno | retail store and wholesale store | 84 split by rule: 75% and 25% is 63 and 21 |
| Excluded | Sacramento, returns, quarantine | none | 0, and listed in the run report |
One to many is the shape that needs a rule: one physical stock feeds two storefronts, or a store and a marketplace, and the same unit must not be offered twice. The split is recalculated on every change, so a sale in the wholesale store reduces what the retail store shows.
Who routes the order
A store with several locations assigns each order to one of them. Shopify applies its order routing rules from top to bottom: "Minimize split fulfillments", "Stay within the destination market" and "Ship from closest location" by default, with "Use ranked locations" as an option. The ERP has its own logic. NetSuite's Automatic Location Assignment uses the location type on the location record, which is Store, Warehouse or Undefined.
When both decide, they disagree on part of the orders. Shopify assigns an order to Columbus because it is closer to the buyer, the ERP commits the stock in Reno, and the shipment from Reno cannot be booked against a fulfillment order that sits at Columbus. The integration gives one system the decision. When the ERP decides, the fulfillment order in Shopify is moved to the ERP's location with fulfillmentOrderMove before the shipment is posted. That call fails when the destination does not stock the item, which is one more reason to keep the item active at every mapped location.
Throughput
A full write of 12,000 quantities to Shopify, in arrays of 250, is 12,000 divided by 250: 48 calls. A normal run sends changes only. If 900 quantities changed since the last run, that is 4 calls. The API budget is shared with prices and orders; the arithmetic is in the notes on integration throughput and Shopify API rate limits.
What goes wrong quietly
A new location is counted. The warehouse manager creates "Returns, to inspect" in the ERP on October 1. An integration that adds up all locations now sells returned goods that nobody has checked. A location without a rule is excluded and reported.
An item is not stocked at the store location. In Shopify an item has a quantity at a location only after it is activated there with inventoryActivate. A product created last week that was activated at Reno only has no inventory level at Columbus: the 15 units there are not offered, and an order cannot be moved to Columbus for that item. The integration activates the item at every mapped location when the product is created.
A transfer is in transit. 30 units leave Reno for Columbus on Monday and are received on Wednesday. For two days they are on hand in neither location and the total is 30 lower. That is correct, and it is the reason a sudden drop on one location is checked against open transfer orders before it raises an alert.
The reserve is applied twice. The ERP already subtracts a safety stock of 4 and the integration subtracts 4 again. Per location and per rule, one system owns the subtraction. The safety stock page covers how buffers are calculated.
What it covers
- A rule per location. Counts for the store or not, per sales channel.
- Reserves. A fixed quantity or a share held back per location, per channel or per item group.
- Location mapping. One to one, many to one, one to many and excluded.
- Routing. One system decides the fulfillment location, the other receives it, including split shipments and partial fulfillment.
- New and changed locations. A location without a rule is left out and listed in the run report.
Which systems
| System | What it gives you per location | Limit or caveat |
|---|---|---|
| Shopify | an inventory level per item and location; the setting "Use inventory at this location to fulfill online orders" | 10 active locations on Basic, Grow and Advanced, 200 on Plus |
| NetSuite | On Hand, Committed and Available per location; checkboxes "Make Inventory Available" and "Make Inventory Available in Web Store" | both checkboxes apply to the whole location, for every item |
| Adobe Commerce | sources grouped into stocks, with a salable quantity per stock | Source Priority or Distance Priority picks the shipping source |
| Business Central | a location code on every inventory posting | the standard API returns one inventory number per item |
Shopify's limits are in its help center page on locations, checked on October 3, 2026. Deactivated locations and locations created by fulfillment apps do not count toward the limit.
The Business Central caveat decides the build. The item resource of the standard API v2.0 has a single read-only inventory property, and its itemLedgerEntries resource lists quantity and posting date without a location. Quantity per location is read through an API page or query added to your Business Central for that purpose.
In Adobe Commerce the store does not see locations at all. It sees a stock, which is a group of sources assigned to a sales channel. Three sources with 20, 25 and 10 units and open reservations for 15 give a salable quantity of 40. Which sources belong to which stock is the Adobe Commerce version of "which locations count".
The pair pages for Shopify and NetSuite, Magento and NetSuite and Shopify and Business Central cover the location model of each combination.
Where standard connectors stop
Standard connectors and iPaaS platforms document two settings for locations: which ERP locations contribute to the store's quantity, and a mapping that is one to one or many to one. One to many is not a documented option. A fulfillment priority, a reserve per channel and a split rule are not settings either. The nearest thing is a buffer, applied as one flat quantity to every item.
That covers a single warehouse and a store that ships everything it has. It leaves 3 of the 5 rules in the table above without a place: the channel reserve, the priority and the split. In an integration built for your locations those rules are settings you can read, with a dry run that shows the quantity per location before anything is written. The controls are on the dry run and approval page. Send us your list of locations and what each one is for. Tell us what you run.
Frequently asked questions
Which system decides which warehouse ships an order?
One of the two, and it is set once. When the ERP or the warehouse system decides, the store receives that decision: the order is moved to the location the ERP picked before the shipment is booked. When the store decides with its own routing rules, the ERP receives the location with the order. Two systems that each pick a location on their own disagree on part of the orders, and those shipments fail to match.
Can stock in a retail store be sold online?
Yes, with a rule for that location. A store that ships online orders counts with a reserve, for example everything above 2 units per item, so the last units stay on the shelf for walk-in customers. A store that does not ship keeps its stock out of the online number. On Shopify the same choice exists per location as the setting "Use inventory at this location to fulfill online orders".
What happens when we add a location in the ERP?
Nothing changes in the store until the location has a rule. A location without a mapping is left out of the available quantity and appears in the run report with its name and the number of items it holds. That prevents a new returns or quarantine location from raising the number the store sells.
How many locations does Shopify allow?
Shopify allows 10 active locations on the Basic, Grow and Advanced plans and 200 on Plus. Deactivated locations and locations created by fulfillment apps do not count. An ERP with more locations than the plan allows is mapped many to one: several ERP locations add up into one Shopify location. Checked against Shopify's help center on October 3, 2026.
Does stock in transit between two warehouses count?
Not until it is received. Units on a transfer order have left the first location and are not on hand at the second, so the total drops by that quantity for the duration of the transfer. The integration can show them as incoming at the receiving location with the expected date, which the delivery dates page describes.
Tell us what you need
Tell us which systems you use and what needs to work better. We reply personally within one working day. We help you define the work, then agree the price and timing before you commit.
- You know the price and the timeline before you commit to anything
- We work out the connection that takes the work off your hands
- We handle the build, hosting, monitoring and maintenance
- Your team has less information to retype and fewer discrepancies to chase