Multi Location Inventory

Multi-Location Inventory (MLI) refers to the capability of a sales channel (e.g., marketplace, e-commerce site, retailer platform) to manage inventory across multiple fulfillment locations, rather than maintaining a single global quantity per SKU.

With MLI, each SKU can have separate stock levels at different warehouses, stores, or distribution centers, enabling more accurate availability, efficient order routing, and improved fulfillment performance.

The channel integration flow can be switched between the single quantity flow and the MLI flow.

Multi-Location Configuration**

Multi-location support is controlled by the IsMultiLocationEnabled field in the GlobalSetting object, returned as part of the User Config response.

When IsMultiLocationEnabled = true, the user interface automatically switches to the Multi-Location Inventory (MLI) workflow.

When false, the channel continues to operate in single-location mode. By default it's false.

After MLI has been enabled then the MultiLocationInventory object is used to control options on the screen available to the user.

⚠️ Important

If a configuration already exists, it is strongly recommended to provide an explicit option (e.g., a checkbox or toggle) that allows the user to migrate to MLI manually. Do not switch users automatically, as they may not have configured their location mappings. Without proper mapping, inventory synchronization will fail.

Populating locations

The integration can be setup in two ways.

Integrations can handle location setup in one of two ways:

  • Integration provides locations
    • Set AutoPopulateLocations = True on the MultiLocationInventory object.
    • Populate the Locations[] array with the list of available locations.
  • Integration does not provide locations
    • Set AutoPopulateLocations = False on the MultiLocationInventory object.
    • The user will then be able to manually enter locations and assign tags as needed.

Order location

If the location supports providing the orders location id then this should be provided in the LocationTag on the OrdersResponse from the orders endpoint response .

Linnworks will automatically map it to the correct location in Linnworks configured by the user.

Inventory Update

When Multi-Location Inventory (MLI) is enabled, Linnworks includes an additional array in the ProductInventory request. This array is sent alongside the combined product quantity and provides detailed stock levels for each individual location.

The request includes a Tag and Quantity for each individual location within MultiLocationLevels[]. In addition, a combined quantity is provided at the product level, representing the sum of all individual location quantities.

If MLI is disabled, Linnworks may still send the MultiLocationLevels[] field, but it will be returned as an empty array.

When sending inventory Linnworks currently will send all MLI levels even if only one has changed, this is to help in scenarios where a channel may require all to be updated rather than just one.

{
	"Products": [
		{
			"SKU": "ABC1234",
			"Reference": "122440",
      "Quantity": 10, // Note the quantity here is the sum of all the MLI levels.
			"MultiLocationLevels": [
        {
          "Tag": "1234",
          "Quantity": 5
        },
        {
          "Tag": "9876",
          "Quantity": 2
        },
        {
          "Tag": "ABCD",
          "Quantity": 3
        }
      ]

		}
	],
	"AuthorizationToken": "4d1aa44d211641a48da9ae269ff68975"
}
{
	"Products": [
		{
			"SKU": "ABC1234",
			"Reference": "122440",
      "Quantity": 10,
			"MultiLocationLevels": []
		}
	],
	"AuthorizationToken": "4d1aa44d211641a48da9ae269ff68975"
}