No split
How the default inventory strategy works.

Problem

You have an order containing several SKUs, whose stock is available in a single location and — eventually — belongs to multiple shipping categories. You want to (always) create a unique shipment from that single stock location to fulfill the order line items.
The order always creates a unique shipment based on availability of a single stock location

Solution

You need to use the no split strategy, which is the default one. To do that, check the related option in the admin UI or send a PATCH request to the inventory_models/:id endpoint, setting the strategy attribute accordingly.

Example

Request
Response
The following request explicitly updates the strategy for the inventory model identified by the "BwAezhyOQw" ID:
curl -g -X PATCH \
'http://yourdomain.commercelayer.io/api/inventory_models/BwAezhyOQw' \
-H 'Accept: application/vnd.api+json' \
-H 'Authorization: Bearer your-access-token' \
-H 'Content-Type: application/vnd.api+json' \
-d '{
"data": {
"type": "inventory_modeld",
"id": "BwAezhyOQw",
"attributes": {
"strategy": "no_split"
}
}
}'
On success, the API responds with a 200 OK status code, returning the updated inventory model object:
{
"data": {
"id": "BwAezhyOQw",
"type": "inventory_models",
"links": {
"self": "https://yourdomain.commercelayer.io/api/inventory_models/BwAezhyOQw"
},
"attributes": {
"name": "EU Inventory Model",
"strategy": "no_split",
"stock_locations_cutoff": 3,
"created_at": "2018-01-01T12:00:00.000Z",
"updated_at": "2018-01-01T12:00:00.000Z",
"reference": "ANY-EXTERNAL-REFEFERNCE",
"reference_origin": "ANY-EXTERNAL-REFEFERNCE-ORIGIN",
"metadata": {
"foo": "bar"
}
},
"relationships": {
"inventory_stock_locations": {
"links": {
"self": "https://yourdomain.commercelayer.io/api/inventory_models/xYZkjABcde/relationships/inventory_stock_locations",
"related": "https://yourdomain.commercelayer.io/api/inventory_models/xYZkjABcde/inventory_stock_locations"
}
},
"inventory_return_locations": {
"links": {
"self": "https://yourdomain.commercelayer.io/api/inventory_models/xYZkjABcde/relationships/inventory_return_locations",
"related": "https://yourdomain.commercelayer.io/api/inventory_models/xYZkjABcde/inventory_return_locations"
}
},
"attachments": {
"links": {
"self": "https://yourdomain.commercelayer.io/api/inventory_models/xYZkjABcde/relationships/attachments",
"related": "https://yourdomain.commercelayer.io/api/inventory_models/xYZkjABcde/attachments"
}
}
},
"meta": {
"mode": "test"
}
}
}

How it works

This inventory strategy affects the creation of the resources involved in the process by the following logic.

Shipments

Just one stock location is checked — the primary one or the one specified in the scope. The selected stock location will fulfill all the SKUs associated with the order, thus just one shipment is created, no matter the SKUs shipping categories.

Stock line items

Each SKU associated with the order generates a stock line item that is also linked to the single stock location from which its quantity will be fulfilled.

Shipping categories

In case the order contains SKUs belonging to different shipping categories, they are ignored: just one shipment is created with no specific category (the number of available shipping methods for this shipment will increase accordingly since they won't be filtered by shipping category).

Additional notes

Do not ship SKU

If an SKU is marked with the do_not_ship flag, no shipment is generated for it. The necessary stock line items are created anyway.
This option still tracks inventory.

Do not track SKU

If an SKU is marked with the do_not_track flag, stock line items are still created but they aren't associated with any stock item so that the stock isn't decremented/incremented on order placement/cancellation.
This option still generates shipments.

More to read

See our documentation if you need more information on how to update an inventory model or if you want more information about SKUs, shipments, stock transfers, and stock line items.