This is a beta release of documentation for Magento 2.4, published for previewing soon-to-be-released functionality. Content in this version is subject to change. Links to the v2.4 code base may not properly resolve until the code is officially released.

Manage stocks

Stocks map your sources to sales channels, providing a direct link to salable quantities and inventories.

All stores start with a default stock. When the inventory management functionality is enabled, Magento automatically assigns products to the default source and stock. Single Source merchants use the default stock only. Multi Source merchants create and configure stocks as needed to best fit their stores and order fulfillment processes.

The stock_id of the default stock is 1. You cannot delete or add sources to the default stock, but you can perform these actions with custom stocks.

Any sales channels that are not explicitly assigned to a custom stock are assigned to the Default Stock.

Service name:

inventoryApiStockRepositoryV1

REST endpoints:

1
2
3
4
5
POST /V1/inventory/stocks
PUT /V1/inventory/stocks/:stockId
GET /V1/inventory/stocks/:stockId
DELETE /V1/inventory/stocks/:stockId
GET /V1/inventory/stocks

StockInterface parameters:

Name Description Type Requirements
stock_id An ID generated when a stock is created. Integer Required for PUT, DELETE, and GET operations
name The display name of the stock. String Required for POST and PUT operations
sales_channels Defines the sales channel for this stock. Currently, only websites are supported. Array Required for POST operations
type Defines the type of sales channel. This value must be website. String Required for POST operations
code Specifies a valid website code name String Required for POST operations

Create a stock

Only one stock can be mapped to each sales channel. If you assign a sales channel that is already mapped to another stock, the sales channel will be removed from the original stock.

Sample usage:

POST <host>/rest/<store_code>/V1/inventory/stocks

Payload:

1
2
3
4
5
6
7
8
9
10
11
12
13
{
  "stock": {
    "name": "Central Stock",
    "extension_attributes": {
      "sales_channels": [
        {
          "type": "website",
          "code": "test_site"
        }
      ]
    }
  }
}

Response:

A stock_id, such as 4.

Update a stock

You can change the name of a custom stock and its associated sales channels. Each PUT call overwrites the previous set of assigned sales channels. If you omit the sales_channel array, all sales channels will be unassigned from the stock.

If you change a sales channel between stocks, we recommend that you first complete any open orders and shipments that may need access to the assigned sources.

Sample Usage:

PUT <host>/rest/<store_code>/V1/inventory/stocks/4

Payload:

1
2
3
4
5
6
7
8
9
10
11
12
13
{
  "stock": {
    "name": "St. Louis Stock",
    "extension_attributes": {
      "sales_channels": [
        {
          "type": "website",
          "code": "test_site"
        }
      ]
    }
  }
}

Response:

A stock_id, such as 4.

Return all information about a stock

This call returns detailed information about the specified stock.

Sample Usage:

GET <host>/rest/<store_code>/V1/inventory/stocks/4

Payload:

None

Response:

1
2
3
4
5
6
7
8
9
10
11
12
13
{
  "stock": {
    "name": "St. Louis Stock",
    "extension_attributes": {
      "sales_channels": [
        {
          "type": "website",
          "code": "test_site"
        }
      ]
    }
  }
}

Delete a stock

You cannot delete a stock if it is assigned to a sales channel. You can unassign a stock’s sales channels by omitting the sales_channels array in a PUT /V1/inventory/stocks/:stockId call.

Sample Usage:

DELETE <host>/rest/<store_code>/V1/inventory/stocks/4

Payload:

None

Response:

Magento returns an empty array.

[]

Search for stocks

The following call returns all stocks whose name contains the string Stock.

See Search using REST APIs for information about constructing a search query.

Sample Usage:

GET <host>/rest/<store_code>/V1/inventory/stocks?searchCriteria[filter_groups][0][filters][0][field]=name&searchCriteria[filter_groups][0][filters][0][value]=%25Stock%25&searchCriteria[filter_groups][0][filters][0][condition_type]=like

Payload:

None

Response:

Show code sample
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
{
    "items": [
        {
            "stock_id": 1,
            "name": "Default Stock",
            "extension_attributes": {
                "sales_channels": [
                    {
                        "type": "website",
                        "code": "base"
                    }
                ]
            }
        },
        {
            "stock_id": 4,
            "name": "St. Louis Stock",
            "extension_attributes": {
                "sales_channels": [
                    {
                        "type": "website",
                        "code": "test_site"
                    }
                ]
            }
        }
    ],
    "search_criteria": {
        "filter_groups": [
            {
                "filters": [
                    {
                        "field": "name",
                        "value": "%Stock%",
                        "condition_type": "like"
                    }
                ]
            }
        ]
    },
    "total_count": 2
}