Along with Page Builder, Magento 2 Multi Source Inventory (MSI) is one of Magento’s breakthroughs in the 2.3 version launching at the end of 2018. This new feature is available on both Open Source and Commerce editions, determining the beginning of a powerful assistance tool in terms of Magento 2 inventory management for multi-nation e-businesses.
This article will go over the Multi-Source Inventory Magento 2 workflow in detail, from configurations to order and shipment management.
Let’s get started!
Overview of Magento 2 Multi Source Inventory
Table of Contents
Single-Source And Multi-source In Magento 2 Inventory: What Is The Difference?
Single-Source Inventory Magento 2
Single source inventory means the business operates only one source location managing on-hand Magento inventory, and merchants ship products from one location to every customer worldwide.
For example, you have three websites: US, UK, and Singapore, which all get products from a source. When customers purchase products on any website, this single source manages Magento inventory quantities and shipments to returns.
Magento 2 Multi-Source Inventory
On the contrary, Multi-source Inventory in Magento 2 defines a business owning a lot of source locations depending on the store market and demands of customers, costs, and so on.
Merchants now ship products to purchasers from more than one location, such as brick-and-mortar stores, warehouses, drop shippers, and distribution centers.
Still own three websites: the US, UK, and Singapore, but you now create three corresponding warehouses located in America, Europe, and Asia. Each source is assigned to a website matched with location; for instance, Warehouse in Europe is assigned to the UK website.
Then, when customers buy products on each website, its separate source takes responsibility for all Magento inventory stock and fulfills orders.
>>> CHECK OUT Full Magento tutorial from beginner to advanced to get more helpful learning resources.
Why is Magento 2 Multi-Source Inventory?
For global eCommerce, customers are located widely around the world, and in case products are shipped from only one position to every destination, shipping costs come as a big problem. Also, it takes a longer time to deliver items to purchasers due to the distance as well as the complexity of the transportation process.
Therefore, Magento Multi-Source Inventory, high flexibility, cost-effectiveness, and efficiency are mainly outstanding remarks encouraging store owners to experience and better Magento 2 inventory management.
There are more business values that Magento 2 MSI can bring, aside from managing your sources, such as:
- Improving checkout performance: Even for Single Stock merchants, Magento 2 MSI removes the possibility of excessive database lock and inventory consistency validation during the checkout process. These two factors lower the performance when there is a high checkout concurrency rate.
- Import/Export Stock Data: The new import and export stock data for inventory is introduced to accelerate the external integration with the ERP system.
- Dropshipping support: It is now possible for merchants to set up drop shipping for external sources.
- Stock control/ Low stock reports: Magento 2 multi-source inventory supports all physical location sources with Stock Control and will notify merchants when low stock runs in specific locations.
Even though this newly added feature brings more benefits to multi-stock control store owners, it preserves the simplicity of UI and Stock Management for single-stock usage. Therefore, single-stock users will feel no added complexity in their process.
>>> READ NOW: Magento 2 Configurable Product Inventory: Beginner-Friendly Dictionary
Magento 2 MSI: Some Key Features
The MSI inventory feature of Magento 2.4 is the thing that makes a significant difference from its predecessor, Magento 2.2. Compared to the old inventory system from 2.2, here are the new features you will see in multi-source-inventory:
- Assign product and quantity to each fulfillment source, like warehouse, store, distribution center, or third-party drop shipper.
- The new MSI can now track the inventory and help ease the management inventory process.
- Streamline operation with rules to prioritize and automatically control the sources that are supplied for the website in real time.
- The MSI allows third-party inventory system integration.
Even the merchant with a single inventory source would benefit from the MSI inventory, as they can track the deduction of salable stock when customers put it in the cart. This will give a more accurate track of checkout performance, show customers the correct number of stocks left in the inventory, and save time for buyers and sellers.
Magento 2 Multi Source Inventory: How to Implement?
In general, store owners using Magento Multi-Source Inventory can implement the following things:
- Create as many sources as possible based on business situation and demand
- Group sources into virtual stocks corresponding to sale channels
- Assign product quantity at each source in the product edit page
- Track Magento 2 inventory at multiple sources conveniently
It’s time to explore a complete flow in the Magento Multi Source Inventory usage process for store owners to manage sources and order management.
Let’s go Multi Source Inventory Magento 2 tutorial now!
Here are 6 steps to Magento 2 enable multi source inventory!
Step 1. Create and Manage sources
Source is a new advanced term in Magento 2 Multi Source Inventory. It can be physical stores, warehouses, houses, or anything covering your products to provide customers. As long as the sources are relevant to your business, you can add an unlimited number of them.
Take an example for the whole process:
Store owners should use three websites to sell clothes to many markets globally: US, UK, and Korea websites. Moreover, remember to build big warehouses in America, Europe, and Asia to distribute products quickly to consumers.
In addition, if merchants want to manage the store’s inventory more effectively, they should implement Magento Multi-source inventory to create sources, stocks and track products.
You can create these four sources by going to Store ⇒ Inventory ⇒ Source:
Besides, you also need to complete all required information like Name, Code, Country, and Postcode to determine a source. Other fields should be filled for other purposes, such as latitude and longitude, to select the most suitable source to get products.
All of the added sources are shown in the grid table as below:
Step 2: Create stocks
Stock is a virtual inventory of products available for sale. A stock can include more than one source. Depending on your preference or current business situation, you can organize sources into stocks by country, continent, locale, or website.
In this example, we will create stocks based on continents by navigating to Store Inventory Stocks:
- Europe stock for the UK and Spain Warehouses
- US stock for US Warehouse
- Asia stock for Korea and Australian stores
Let’s take a look at the European stock:
For each stock, it is necessary to choose one or multiple sales channels as websites. However, there is an important note that a stock can be assigned to a lot of websites while a sales channel just connects to one stock only.
Next, you assign sources for this stock and easily modify the sort order of each source by drag and drop. The source order is considered an essential factor in determining which source to get products and ship orders to customers.
After creating three stocks, all of them are managed in the following grid table which shows information about both sales channels and assigned sources of each stock.
Step 3: Add product quantity for each source in the product edit page
After creating sources and stocks, you can assign sources for each product in the product edit page and even define product quantity in each source. For example:
We assign 5 sources for this Strive Shoulder Bag as well as a complete specific quantity for each source. After saving, it is easy to check the quantity per source and salable quantity in the product grid table:
In this section, we get a new concept, called Magento 2 Salable quantity displayed in a separate column of the product grid. So what is the difference between product quantity per source and Salable quantity?
- Magento 2 Salable quantity is an aggregated total of product inventory available to purchase for a stock. It is calculated by summing all product quantity per source assigned to the stock, then subtracting the Out-of-Stock threshold (if you set up this amount in the backend). On the other hand, salable quantity is the actual number of products you can sell for customers.
- In the example, the Magento 2 salable quantity of the Strive Shoulder Bag is 200.
- Quantity per source determines the number of products at each location which changes whenever shipped. Magento 2 Salable quantity only changes when a reservation occurs (we will explain it later in detail).
*Note: You can use the Import and Export features to update sources and quantities by product SKUs via a CSV file. As a result, adding new sources and updating Magento inventory quantities for all or a specific source is easier and faster than ever before, especially if you have a lot of products to process.
Step 4: Place an order in the frontend
Go to the UK website, add the Strive Shoulder Bag to the cart, and complete the checkout. For a single source, this order management is straightforward with the complete order fulfillment from placing the order to shipping or even refunding.
Magento 2.4, on the other hand, highlights some special functions for Magento 2 MSI with a different flow from the process based on a single source.
After finishing the checkout, Magento 2 Multi Source Inventory firstly processes the order as a reservation, giving holds on inventory quantity. This reservation happens at the stock level, subtracting from Magento 2 salable quantity.
Only when the order is invoiced, and shipped to purchasers, is this reservation removed, and the product quantity is now deducted from each corresponding source of the website (sales channel).
For example, you finished checking out to purchase 10 Strive Shoulder Bags from the UK website. After receiving the order request, Magento Multi Source Inventory checks the product availability in the current inventory salable quantity. The stock now has enough product quantity (Total salable quantity = 200); hence, a reservation now occurs and places a hold for that ordered product, then recalculates the salable quantity as well.
It means that the Magento 2 salable quantity is subtracted by 10, and the total remaining is 190.
The order is then invoiced and shipped to customers from UK Source (for instance). This reservation is now cleared, and the quantities are automatically deducted by 10 from the UK source.
Let’s take a look at the following flow:
>>> THING YOU SHOULDN’T MISS OUT: Magento Multi Store: Must-Have Weapon To Multiply Your Sales
Step 5: Shipment
Unlike shipping products from a single source, a merchant store using Multi Source Inventory Magento 2 can have more than one source to get products and deliver them to customers. Hence, determining which source to select for cost-effectiveness or convenience is a problem to consider carefully.
Luckily, Magento provides a Source Selection Algorithm (SSA) to decide on a suitable source to deliver to buyers, including Source Priority, Distance Priority, and Custom Algorithm.
Source Priority Algorithm
As you remember in Step 2, we create a stock and define the sort order for the assigned source of stock. Magento uses this order to recommend product deductions per source when invoicing and shipping the order.
When this algorithm runs, Magento will:
- Check the order of all assigned sources at the stock level from the top to the bottom
- Recommend a quantity to ship and a source to get the product from (based on the order, available quantity, and ordered quantity)
- Continue checking the list until the order shipment is filled
- Skips disabled sources if found in the list
For example, if the order includes a Strive bag placed from the UK website, Magento will select a source to ship to customers, Warehouse UK or Warehouse Spain. When creating UK stock and assigning these two sources, Warehouse UK is in the top sort order and has higher priority than the remaining one.
Furthermore, the number of products available in this source is 50, which is sufficient to process an order with the required quantity of 5. As a result, Warehouse UK is recommended to pick up ordered products and deliver them to customers.
Distance Priority Algorithm
As its name suggests, this algorithm determines the most accurate source to fulfill shipments by comparing source locations to the shipping destination. The distance can mean physical distance by kilometers or time spent traveling from one location to another.
To calculate the time to travel or distance and find out the closest source to ship products, you can set up Google Map or Offline Calculation methods by making some simple configurations.
Custom Algorithm
Developed as an Open-source platform, Magento always welcomes customization and extension to add alternative algorithms to prioritize sources. This custom algorithm adds more advanced features to SSA, providing essential features related to Magento stores during business operations.
Step 6: In case of a Cancel or Refund Order
- Cancel Order: If a customer cancels his/her order before Magento stores deliver products, a compensation reservation is entered to clear that amount and return the ordered product quantity to the Magento 2 salable quantity.
- Refund Order: When there is a refund request, and products are then returned to you, you need to create a credit memo to provide the money and update product amounts. Quantities are added to products and sources that ship orders. A compensation reservation is entered to update salable quantities for the associated stock.
Magento 2 Disable Multi Source Inventory: 3 Easy Steps
Step 1: Create a Backup of Your Store
Before making any changes, ensure you create a complete backup of your Magento installation, including all files and the database. This will provide a safety net, allowing you to restore your store if any problems occur during the process.
Step 2: Disable the Module using the Command Line
To disable Inventory Management, it’s best to do it from the command line by running this command in the Magento root:
php bin/magento module:disable –f Magento_Inventory Magento_InventoryAdminUi Magento_InventoryApi Magento_InventoryBundleProduct Magento_InventoryBundleProductAdminUi Magento_InventoryCatalog Magento_InventorySales Magento_InventoryCatalogAdminUi Magento_InventoryCatalogApi Magento_InventoryCatalogSearch Magento_InventoryConfigurableProduct Magento_InventoryConfigurableProductAdminUi Magento_InventoryConfigurableProductIndexer Magento_InventoryConfiguration Magento_InventoryConfigurationApi Magento_InventoryGroupedProduct Magento_InventoryGroupedProductAdminUi Magento_InventoryGroupedProductIndexer Magento_InventoryImportExport Magento_InventoryIndexer Magento_InventoryLowQuantityNotification Magento_InventoryLowQuantityNotificationAdminUi Magento_InventoryLowQuantityNotificationApi Magento_InventoryMultiDimensionalIndexerApi Magento_InventoryProductAlert Magento_InventoryReservations Magento_InventoryReservationsApi Magento_InventoryCache Magento_InventorySalesAdminUi Magento_InventorySalesApi Magento_InventorySalesFrontendUi Magento_InventoryShipping Magento_InventorySourceDeductionApi Magento_InventorySourceSelection Magento_InventorySourceSelectionApi Magento_InventoryShippingAdminUi Magento_InventoryDistanceBasedSourceSelectionAdminUi Magento_InventoryDistanceBasedSourceSelectionApi Magento_InventoryElasticsearch Magento_InventoryExportStockApi Magento_InventoryReservationCli Magento_InventoryExportStock Magento_InventorySetupFixtureGenerator Magento_InventoryDistanceBasedSourceSelection
After that, you should see the following modules and values in
<Magento_installation_directory>/app/etc/config.php: ‘Magento_Inventory’ => 0, ‘Magento_InventoryAdminUi’ => 0, ‘Magento_InventoryAdvancedCheckout’ => 0, ‘Magento_InventoryApi’ => 0, ‘Magento_InventoryBundleProduct’ => 0, ‘Magento_InventoryBundleProductAdminUi’ => 0, ‘Magento_InventoryCatalog’ => 0, ‘Magento_InventorySales’ => 0, ‘Magento_InventoryCatalogAdminUi’ => 0, ‘Magento_InventoryCatalogApi’ => 0, ‘Magento_InventoryCatalogSearch’ => 0, ‘Magento_InventoryConfigurableProduct’ => 0, ‘Magento_InventoryConfigurableProductAdminUi’ => 0, ‘Magento_InventoryConfigurableProductIndexer’ => 0, ‘Magento_InventoryConfiguration’ => 0, ‘Magento_InventoryConfigurationApi’ => 0, ‘Magento_InventoryDistanceBasedSourceSelection’ => 0, ‘Magento_InventoryDistanceBasedSourceSelectionAdminUi’ => 0, ‘Magento_InventoryDistanceBasedSourceSelectionApi’ => 0, ‘Magento_InventoryElasticsearch’ => 0, ‘Magento_InventoryExportStockApi’ => 0, ‘Magento_InventoryIndexer’ => 0, ‘Magento_InventorySalesApi’ => 0, ‘Magento_InventoryGroupedProduct’ => 0, ‘Magento_InventoryGroupedProductAdminUi’ => 0, ‘Magento_InventoryGroupedProductIndexer’ => 0, ‘Magento_InventoryImportExport’ => 0, ‘Magento_InventoryCache’ => 0, ‘Magento_InventoryLowQuantityNotification’ => 0, ‘Magento_InventoryLowQuantityNotificationApi’ => 0, ‘Magento_InventoryMultiDimensionalIndexerApi’ => 0, ‘Magento_InventoryProductAlert’ => 0, ‘Magento_InventoryRequisitionList’ => 0, ‘Magento_InventoryReservations’ => 0, ‘Magento_InventoryReservationCli’ => 0, ‘Magento_InventoryReservationsApi’ => 0, ‘Magento_InventoryExportStock’ => 0, ‘Magento_InventorySalesAdminUi’ => 0, ‘Magento_InventorySalesFrontendUi’ => 0, ‘Magento_InventorySetupFixtureGenerator’ => 0, ‘Magento_InventoryShipping’ => 0, ‘Magento_InventorySourceDeductionApi’ => 0, ‘Magento_InventorySourceSelection’ => 0, ‘Magento_InventorySourceSelectionApi’ => 0, ‘Magento_InventoryLowQuantityNotificationAdminUi’ => 0, ‘Magento_InventoryShippingAdminUi’ => 0, ‘Magento_InventoryGraphQl’ => 0,
Step 3: Clean Cache and Reindex
Lastly, don’t forget to flush cache and reindex actions by the following command:
php bin/magento setup:upgrade php bin/magento cache:flush php bin/magento indexer:reindex
>>> 3 Simple Solution to Uninstall Magento 2 Module
Top Extensions for your Magento 2 Inventory
When Magento 2 MSI was released, there were extensions built to add more features for customers’ convenience and benefit customers more than what Magento 2 multi source inventory offers. We will provide some of the top extensions to go with Magento 2 multi-source inventory under your fingertips:
Magento 2 Inventory Report by BSSCommerce
The Magento 2 Inventory Report extension will track all the changes in the stock of products and give you a detailed inventory list, which you can export into a CSV file and delete inventory logs. There are no specific reports on new shipment, time, and details for Magento MSI inventory Default. These customizable and detailed inventory reports will enable you to bypass the limitation of Magento 2 default MSI and manage the inventory efficiently from the inventory report grid. The extension by BSS Commerce is compatible with Magento 2.4.x – an MSI inventory function.
GET all valuable data from the Magento 2 Inventory Report to plan your inventory strategy
Advanced Multi Stock Inventory by Wyomind
The Advanced Multi Stock Inventory extension would round out the Magento MSI inventory system. The extension helps you leverage the default tools and workflow and manage your inventory from different warehouses. The extension also shows your customer which warehouse is still in stock of the product they search for and its location on Google Map.
Advanced MSI from Amasty
The Advanced MSI from Amasty is also a good option when it comes to overcoming the limitation of Default Magento 2 MSI. It splits your inventory over to multiple warehouses and optimizes the warehouse selection algorithm to reduce your delivery cost. Mind that this extension only runs on Magento version 2.4.X and higher.
>>> GET NOW: A Full Guide to Install Magento 2 extension
Conclusion
Magento 2 Multi Source Inventory is obviously a powerful tool to enhance business efficiency in many different aspects.
In this article, BSS Commerce has provided all you need to know about the Multi Source Inventory Magento 2 tutorial. There are numerous ways in Magento 2 to update the product quantity. However, by default, Magento 2 does not track inventory adjustments. To view the current quantity for each item, admins must visit the product edit page.
Therefore, having a feature that enables store owners to understand how and when the product stock was altered will be helpful. A robust inventory management tool called the Magento 2 Inventory Report extension enables admins to track all product quantity adjustments.
Additionally, explore BSS Commerce’s Magento Commerce extension store and get more powerful tools for your online shop. All the plugins offer FREE Installation, FREE 1-year Support and FREE Lifetime Update.