Magento Multi-Source Inventory (MSI) is the inventory system built into Magento Open Source and Adobe Commerce. It tracks stock separately for each physical location, called a source, groups sources into stocks that websites sell from, reserves units at checkout, and suggests which location should ship every order.
Why MSI confuses so many store owners
Most people meet Magento Multi-Source Inventory by accident. They upgrade, open a product, and find "Quantity per Source" and "Salable Quantity" where a single stock number used to be. Then a customer says the website shows 8 units while the warehouse report says 11, and the questions start.
I have explained MSI to a lot of store owners and finance teams, and the confusion always comes from the same few ideas: sources, stocks, salable quantity and reservations. Once those click, Magento Multi-Source Inventory is logical and quite elegant.
This post explains each idea in plain language, with small worked examples. If you want the wider picture of day-to-day stock work, our practical post on Magento inventory management covers stock status, low stock alerts, backorders and bulk updates. And if your stock really lives in an ERP, the Dynamics 365 Business Central Magento integration explains how ERP quantities reach Magento. The same ERP-first pattern also works beyond Magento, as our overview of Business Central eCommerce integrations for WooCommerce and Shopify shows.
What is Magento Multi-Source Inventory?
Magento Multi-Source Inventory is a set of inventory modules that lets one Magento installation track quantities in many physical locations and sell them through one or more websites. It replaced the older single-quantity model, where every product had one stock number for the whole store.
Adobe describes Adobe Commerce Inventory Management as a way to track inventory across websites and physical or virtual locations, protect checkout and support order fulfilment. It is installed with both Magento Open Source and Adobe Commerce, with all features enabled by default.
The Inventory Management release notes list Inventory Management 1.1.0 shipping with Magento 2.3.0, and later versions ship with each 2.4.x release. So if you run any supported Magento 2.4 store today, Magento Multi-Source Inventory is already there, even if you only use one location.
In short, Magento Multi-Source Inventory answers three questions for every order:
- How much can this website sell right now? (salable quantity)
- Who has already claimed some of it? (reservations)
- Which location should ship it? (source selection)
What changed from the old Magento inventory model?
The old Magento inventory model stored one quantity per product for the whole store. Magento Multi-Source Inventory stores a quantity per product per location, and adds reservations and source selection on top. That is the whole shift, and it explains every new screen you see after upgrading.
Under the old model, a product had a single "Qty" field. Every order reduced it straight away, and Magento had no idea where the goods physically were. That worked for one warehouse and broke for two.
Magento Multi-Source Inventory changed three things:
• Where quantity lives. Quantity moved from the product to the source item, so each warehouse has its own number.
• When quantity drops. Orders no longer reduce physical quantity at checkout. They create reservations, and physical quantity drops only when goods ship.
• Who ships. Magento can now suggest the best source for each shipment.
For day-to-day Magento inventory management, the practical effect is that you now watch two numbers per product: quantity per source and salable quantity. Once your team knows which is which, Magento Multi-Source Inventory is easier to trust than the single number ever was.
What are the key MSI terms?
Magento Multi-Source Inventory uses a handful of terms that do not exist in older Magento versions. Here they are in one place.

Two relationships matter most in Magento Multi-Source Inventory. A stock can serve several websites, but each website can be linked to only one stock. And a source can belong to several stocks, with a different priority in each.
How does Magento Multi-Source Inventory work, step by step?
Magento Multi-Source Inventory works in four stages: quantities are recorded per source, stocks aggregate them per website, orders create reservations that lower salable quantity, and shipments deduct units from the source that actually ships. Here is that flow for one order.
- Quantities per source. You (or your ERP) record 30 units of a jacket in the Atlanta warehouse and 15 in the Denver warehouse.
- Aggregation per stock. Both warehouses belong to the US stock, assigned to the US website. Salable quantity is 45.
- Order placed. A customer buys 2 jackets. Magento Multi-Source Inventory creates a reservation of -2, so salable quantity drops to 43. Source quantities have not changed yet.
- Source selection. When you create the shipment, the Source Selection Algorithm suggests Atlanta, because it has the highest priority in the US stock.
- Shipment. Atlanta ships. Its source quantity falls to 28, and a compensating reservation of +2 clears the hold. The result: source quantities only change when goods physically leave, while salable quantity changes the moment an order is placed. That separation is what stops two customers buying the same unit.
What is the difference between single-source and multi-source mode?
Single-source mode means all stock sits in one location, using the Default Source and Default Stock that every installation starts with. Multi-source mode begins automatically the moment you add a custom source, and lets you hold different quantities in each location.
Adobe's notes on single-source and multi-source merchant setups show how the Admin work differs:
• Single-source merchants update the Default Source with their one location's details, keep every website in the Default Stock, and set inventory options. No extra sources or stocks are needed.
• Multi-source merchants add a custom source per location, create custom stocks (often one per region), order the sources in each stock by priority, and enter a quantity per source for each product.
One rule surprises people: only the Default Source can be assigned to the Default Stock. If you add warehouses, you create custom stocks for them. Single-source stores still run on Magento Multi-Source Inventory; they simply use one source.
How are stocks mapped to websites?
Stocks connect sources to websites. Each website is assigned to exactly one stock, and a stock can serve one website or many. That one-stock-per-website rule shapes every Magento Multi-Source Inventory design.
Common Magento Multi-Source Inventory patterns I use:
• One stock for everything. Several websites (for example, two brands) sell from the same warehouses. One stock, all websites assigned.
• One stock per region. A US website sells from US sources and a Canada website from Canadian sources, so each region only shows stock it can ship quickly.
• Shared sources, different priorities. A central warehouse belongs to both regional stocks, ranked first in one and second in the other.
Plan this before you enter quantities in Magento Multi-Source Inventory. Changing stock assignments later is possible, but it changes salable quantity on live websites instantly.
What is salable quantity, and how is it calculated?
Salable quantity is the amount a sales channel can still sell. Magento Multi-Source Inventory calculates it by adding the quantities of the enabled, in-stock sources in a stock, then subtracting outstanding reservations; an out-of-stock threshold is held back as safety stock.
A worked example for one SKU on a UK website:

This explains the most common Magento Multi-Source Inventory question I get: "Why does the product grid show 56 when customers can only buy 40?" The grid shows physical quantity per source. Customers see salable quantity. Both are correct.
How do reservations work in MSI?
Reservations are temporary holds that Magento Multi-Source Inventory creates when stock is promised but not yet shipped. An order creates a negative reservation; a shipment, cancellation or credit memo creates a positive one. When an order is complete, its reservations for a product add up to zero.
Adobe's explanation of source selection and reservations gives the details. A few that matter in practice:
• Reservations are created when an order is placed, cancelled in full or in part, shipped, invoiced (for virtual and downloadable products) or refunded with a credit memo.
• A cron job, inventory_cleanup_reservations, runs daily at midnight by default and removes reservation sequences that have fully balanced.
• On self-hosted and PaaS installs, a message queue consumer updates salability status and must keep running.
When reservations go wrong, products look out of stock even though warehouses are full. Magento includes command-line tools to list reservation inconsistencies and create compensating reservations, so a developer can repair them without editing the database by hand.
How does the Source Selection Algorithm choose a warehouse?
The Source Selection Algorithm (SSA) suggests which source or sources should ship an order. Magento Multi-Source Inventory includes two algorithms: priority, which works down the stock's ordered source list, and distance priority, which picks the source closest to the shipping address.
• Priority algorithm. Uses the source order you set in each stock, skips disabled sources, and keeps going until the order quantity is covered. It is simple and predictable, so it is my default for most stores.
• Distance priority algorithm. Uses either Google Maps, which needs a Google API key with the Geocoding and Distance Matrix APIs and a billing plan, or an offline calculation based on imported geocode data, which usually needs a developer to set up.
Developers can also add custom algorithms through extensions. For virtual and downloadable products, source selection runs automatically at invoicing and cannot be adjusted.
The SSA only suggests. Staff can change the selected source when creating a shipment, which is useful when a warehouse is closed for a stocktake.
How does MSI handle backorders and low stock alerts?
In Magento Multi-Source Inventory, backorders are configured per source, and low stock alerts are measured against salable quantity. Both settings behave differently from the old model, so it is worth checking them after any upgrade.
Backorders have three options: No Backorders, Allow Qty Below 0, and Allow Qty Below 0 and Notify Customer. Adobe recommends a negative out-of-stock threshold when backorders are enabled, for example -5, which caps how far below zero a website can sell. With backorders on, a threshold of 0 means unlimited backorders, which surprises a lot of merchants.
Low stock alerts use the Notify for Quantity Below setting. Because Magento Multi-Source Inventory compares it with salable quantity, an item can appear on the low stock report while the warehouse still holds more units, simply because open orders have reserved them. That is usually the behaviour you want, since reserved units cannot be sold again.
My rule of thumb: allow backorders only for products you can genuinely replenish, such as made-to-order or drop-shipped items, and send low stock alerts to whoever raises purchase orders, not to a general inbox.
How do you manage quantities per source?
You manage quantities per source on each product, in bulk from the product grid, or by CSV import. Magento Multi-Source Inventory stores each SKU's quantity separately for every source it is assigned to.
Adobe's notes on managing product quantities per source describe the main options:
• Assign sources per product, then enter a quantity for each location.
• Bulk assign or unassign sources to selected products as a mass action.
• Transfer inventory to a source, which moves all inventory from one source to another in bulk, for example when you close a warehouse.
• Import and export by CSV to update many SKUs, sources and quantities at once.
The product grid shows "Quantity per Source", and hovering reveals the full list. On upgraded stores, existing products and quantities land in the Default Source first, so check assignments after migrating.
For stores with an ERP, manual editing should be rare. The ERP holds the real quantities, and a connector writes them into each source automatically.
Example: Magento Multi-Source Inventory for a US and Canada store
Here is how I would set up Magento Multi-Source Inventory for a seller with two websites, one for the US and one for Canada, and three locations.

The US website is assigned to the US stock and the Canada website to the Canada stock. A US customer sees salable quantity from Columbus and Reno combined, while a Canadian customer sees only Mississauga stock, which keeps delivery promises and duties simple.
When a US order arrives, the priority algorithm suggests Columbus first and only splits the shipment to Reno if Columbus cannot cover it. If Mississauga runs low, Canadian customers see that immediately, even while US warehouses are full. This regional split is one of the most common reasons merchants move from a single source to Magento Multi-Source Inventory.
Who needs Magento Multi-Source Inventory, and who can keep it simple?
Every Magento 2.3 and later store already runs Magento Multi-Source Inventory, but not every store needs multiple sources. The question is whether you ship from more than one location and want websites to see that.
You benefit from multiple sources if you:
• Ship from two or more warehouses, stores or 3PLs.
• Sell in more than one region and want each website to show only stock it can ship quickly.
• Offer store pickup or ship-from-store.
• Use drop shippers whose stock you want to sell separately.
You can stay single-source if all orders ship from one warehouse and you have one region. Adding sources you do not need only adds admin work.
If you are still choosing a platform, multi-location stock is one of the clear differences in Magento vs WooCommerce for Business Central projects. Magento Multi-Source Inventory handles multiple warehouses natively, while WooCommerce usually relies on extensions for the same job.
How does MSI work with an ERP?
With an ERP, Magento Multi-Source Inventory becomes the selling layer and the ERP becomes the stock ledger. Each ERP warehouse maps to a Magento source, the ERP pushes per-source quantities into Magento, and Magento sends orders back so the ERP can ship and invoice.
In Microsoft Dynamics 365 Business Central, warehouses and stores are locations with their own codes. The cleanest setup uses the same code for the Business Central location and the Magento source, so every quantity has an obvious home. Locations that should not sell online, such as returns or quarantine, stay unmapped.
Two rules keep the integration healthy:
- The ERP owns quantities. Staff edit stock in the ERP, not in the Magento admin.
- The ERP sends available stock. Units already committed to phone or trade orders are deducted before syncing, so Magento never sells them twice. Magento then does what it is good at: reserving stock at checkout, calculating salable quantity per website and suggesting the shipping source.
How do you set up Magento Multi-Source Inventory?
Setting up Magento Multi-Source Inventory takes six steps: plan, create sources, create stocks, assign sources to products, configure thresholds, and test with real orders.
- Plan your locations. List every warehouse, store and 3PL, and decide which should sell on which website.
- Create sources. Add one source per location, with address details if you plan distance-based selection.
- Create stocks. Group sources into stocks, assign websites, and order sources by priority.
- Assign sources and quantities. Assign sources to products and enter quantities, by hand, CSV or ERP sync.
- Configure thresholds. Set out-of-stock thresholds, low stock notifications and backorder rules per product type.
- Test. Place, cancel and partially ship test orders, and confirm salable quantity and reservations behave as expected. Do steps 1 and 3 on paper first. Most Magento Multi-Source Inventory problems I fix started with stocks designed in a hurry.
Common MSI problems and how to fix them
These are the Magento Multi-Source Inventory problems I see most often:
• Products show out of stock with plenty in the warehouse. Usually stuck reservations, a stopped consumer or an index that has not run. Check reservations, cron and indexers.
• Salable quantity looks wrong after an upgrade. Products were moved to the Default Source; check source assignments and stock links.
• A website shows no stock at all. The website is not assigned to the stock that holds its sources.
• The wrong warehouse ships. Source priority in the stock is in the wrong order.
• Quantities drift from the ERP. Someone edits stock in the Magento admin, or SKUs do not match.
Key takeaways
• Magento Multi-Source Inventory tracks quantities per physical location (source) and sells them through stocks assigned to websites.
• Each website belongs to one stock; a stock can serve many websites, and a source can sit in several stocks.
• Salable quantity equals total source quantity in a stock, minus reservations and any out-of-stock threshold.
• Magento Multi-Source Inventory reservations hold stock at order time and clear when orders ship, cancel or are refunded.
• In Magento Multi-Source Inventory, the Source Selection Algorithm suggests the shipping source by priority or distance.
• With an ERP, map each ERP warehouse to one source and let the ERP own quantities.
Frequently asked questions
**What is Magento Multi-Source Inventory?
**Magento Multi-Source Inventory, or MSI, is the inventory system in Magento Open Source and Adobe Commerce. It tracks stock separately for each warehouse, store or 3PL, groups those locations into stocks that websites sell from, reserves units at checkout and suggests which location should ship each order.
**Which Magento versions include MSI?
**Adobe's release notes list Inventory Management 1.1.0 shipping with Magento 2.3.0, and later versions ship with each 2.4.x release. Any supported Magento 2.4 store already has Magento Multi-Source Inventory installed with its features enabled, even if it only uses one location.
**What is the difference between a source and a stock?
**In Magento Multi-Source Inventory, a source is a physical place that holds and ships products, such as a warehouse or store. A stock is a virtual group of sources that a website sells from. Quantities live in sources, while websites read their salable quantity from the stock they are assigned to.
**What is salable quantity in Magento?
**Salable quantity is how many units a website can still sell. Magento Multi-Source Inventory adds the quantities of the enabled sources in the website's stock, subtracts reservations for orders that have not shipped and holds back any out-of-stock threshold. It is usually lower than the physical quantity shown in the product grid.
**What are reservations in Magento MSI?
**In Magento Multi-Source Inventory, reservations are temporary holds on stock. Placing an order creates a negative reservation that lowers salable quantity before anything ships. Shipments, cancellations and credit memos add positive reservations that clear the hold. A daily cleanup job removes reservation records that have fully balanced to zero.
**Do I need MSI if I only have one warehouse?
**You already have Magento Multi-Source Inventory, but you do not need extra sources. Single-location stores use the Default Source and Default Stock, which work like the older single-quantity model. Add custom sources only when you ship from more than one location or want regional websites to show different stock.
**How does Magento decide which warehouse ships an order?
**In Magento Multi-Source Inventory, the Source Selection Algorithm suggests a source. The priority algorithm uses the order of sources in the stock, while the distance algorithm chooses the closest source using Google Maps or imported geocode data. Staff can change the suggested source when creating a shipment if needed.
**Can one website sell from several warehouses?
**Yes. In Magento Multi-Source Inventory, assign several sources to one stock and assign that stock to the website. Salable quantity then combines the quantities from every enabled source in the stock, and the Source Selection Algorithm decides which warehouse ships each order based on priority or distance.
*Can Magento MSI sync with an ERP like Business Central?
*
Yes, through a connector. Each ERP location maps to a Magento source in Magento Multi-Source Inventory, the ERP pushes available quantities into those sources, and Magento sends orders back to the ERP. Keeping the ERP as the owner of quantities avoids conflicts between warehouse records and the website.
**Why does Magento show out of stock when the warehouse has stock?
**In Magento Multi-Source Inventory, the usual causes are stuck reservations, a stopped message queue consumer, indexes that have not run, a product missing its source assignment, or a website linked to the wrong stock. Check reservations and cron first, then source assignments and stock settings for the affected product.
Conclusion
Magento Multi-Source Inventory looks complicated until you see it as four simple ideas: sources hold stock, stocks group sources for websites, reservations hold units for open orders, and the Source Selection Algorithm suggests who ships. Get those right, and multi-warehouse selling in Magento becomes predictable.
If your real stock lives in Microsoft Dynamics 365 Business Central, our Business Central Magento connector maps your locations to Magento sources and keeps quantities in sync automatically. Book a demo with the New Wiz Tech team, and we will walk through your warehouses, stocks and websites with you.
Top comments (0)