Along with Page builder, Magento 2 Multi source inventory (MSI) is one of the breakthroughs Magento has attained in the 2.3 version launching at the end of 2018. This new feature is available on both Open Source and Commerce edition, determining the beginning of a powerful assistance tool in terms of inventory management for multinational E-business built on Magento 2.
In this article, I want to concentrate on explaining the workflow of Multi Source Inventory in details, from configurations to order and shipment management
Single source inventory means the business operates the only one source location managing on-hand inventory and merchants ship products from one location to every customer all over the world. For example, you have 3 websites as US, UK, and Singapore which all get products from a source. When customers purchase products on any website, this single source manages all activities from inventory quantities, shipments to returns.
On the contrary, Magento 2 Multi source inventory defines a business owning a lot of source locations depending on store market and demands of customers, costs and so on. Merchants now ship products to purchasers from more than one location such as brick-mortar stores, warehouses, drop shippers and distribution centers. Still owning 3 websites as US, UK, and Singapore, but you now create 3 corresponding warehouses located in America, Europe and Asia. Each source is assigned for a website matched with location, Warehouse in Europe is assigned to UK website, for example. Then, when customers buy products on each website, its separated source takes responsibility for all inventory stock and fulfill orders.
Why is Magento 2 Multi Source Inventory?
For global Ecommerce, customers are located widely around the world, and in case products are shipped from the only one position to every destination, shipping costs comes as a big problem. Also, it takes a longer time to deliver items to purchasers due to far distance as well as complexion in the transportation process. Therefore, to Multi Source Inventory, high flexibility, cost-effectiveness, and efficiency are mainly outstanding remarks encouraging store owners to experience.
How MSI works?
In general, store owners using MSI 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 inventory at multiple sources conveniently
It’s time to explore a complete flow in the MSI usage process, in terms of store owners to manage sources and order management. Let’s go step by step now!
1. Create and Manage sources
Source is a new advanced term in MSI. It can be physical stores, warehouses, houses or anything which cover your products to provide customers. You can add an unlimited number of sources as long as they are matched to your business.
Take an example for the whole process:
I use three websites to sell clothes to many markets in the world: US, UK, and Korea websites. I also build big warehouses in America, Europe, and Asia to distribute products quickly to consumers. To manage effectively, I implement Multi source inventory to create sources, stocks and track product inventory.
I create these 4 sources by going to Store ⇒ Inventory ⇒ Source:
I need to complete all required information like Name, Code, Country, and Postcode to determine a source. Other fields should be filled for other purposes, latitude, and longitude for selecting the most suitable source to get products, for instance.
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. You can group sources into stocks per country, continent, locale, or per website depending on your desire or your current business situation.
In this example, I will create stocks based on continents by navigating to Store Inventory Stocks:
- Europe stock for UK and Spain Warehouses
- US stock for US Warehouse
- Asia stock for Korea and Australia stores
Let’s take a look at the Europe 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 as an important factor to determine which source to get products and ship orders to customers.
After creating 3 stocks, all of them are managed in this 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:
I assign 5 sources for this Strive Shoulder Bag as well as 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 Salable quantity and displayed in a separate column of the product grid. So what is the difference between product quantity per source and Salable quantity?
- Salable quantity is an aggregated total of product inventory available to purchase for a stock. On the other hand, salable quantity is the real number of products you can sell for customers. 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).
In the example, the salable quantity of the Strive Shoulder Bag is 200.
- Quantity per source determines the number of products at each location which changes whenever ordered products are shipped to customers. Salable quantity only changes when a reservation occurs (I 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 inventory quantities for all or a specific source becomes easier and faster than ever, especially in case you have a large number of products to process.
Step 4: Place an order in the frontend
Go to the UK website, add the Strive Shoulder Bag to cart and then complete the checkout. For a single source, this order management is straightforward with the thorough order fulfillment from placing order to shipping or even refunding. However, Magento 2.3 remarks some outstanding functions for MSI with a different flow from the process based on the single source.
After finishing the checkout, MSI firstly processes the order as a reservation which gives holds on inventory quantity. This reservation happens at the stock level, subtracting the quantity from 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 UK website. After receiving the order request, MSI 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 recalculating the salable quantity as well. It means that the salable quantity is subtracted by 10, the total remainings are 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:
Step 5. Shipment
Unlike shipping products from a single source, a merchant store using MSI can have more than one source to get products and deliver to customers. Hence, determining which source to select for cost-effectiveness or more convenience is a problem to take into careful consideration. Luckily, Magento provides Source Selection Algorithm (SSA) to decide a suitable source to deliver to buyers from, 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, a source to get 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, the order including Strive bag placed from UK website, Magento will select a source to ship to customers, Warehouse UK or Warehouse Spain. When creating UK stock and add assigned these 2 sources, Warehouse UK is in the top sort order and has higher priority than the remaining one. Furthermore, the available number of product in this source is 50, enough to process an order with necessary quantity as 5. Therefore, Warehouse UK is recommended to take ordered products and deliver to purchasers.
Distance Priority Algorithm
As its name suggests, this algorithm determines the most proper 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 others.
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.
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 and related to Magento stores during the business operation.
Step 6: In case of 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 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 which shipped orders. A compensation reservation is entered to update salable quantities for the associated stock.
Magento 2 Multi Source Inventory is obviously a powerful tool to enhance business efficiency in many different aspects. If you have any questions or issues to ask more, don’t hesitate to leave comments under this post. We are always willing to support you.