Stock Management and Stock API

Stock Management and Stock API

The KornitX Platform includes a stock management system.  

Warning
The old stock system available in our older Platform version (Custom Gateway CPP / OMS) is deprecated and should not be used.
Key features include:
  • Makes use of stock products in the catalog.
  • The ability to export and import stock levels.
  • Webhooks that allow retailers to receive stock level updates from suppliers in near realtime.
  • Stock levels are updated automatically when new orders get created.

Company set up requirements

The fulfiller company needs to have explicit access to the products category in order for stock management to work. 

The fulfiller company also needs the flag "Updates Stock" toggled on. 

Products

Any product in the catalog that have Stock set as its type automatically gets tracked by the stock system.

Stock products can be easily created in Catalogue via an import, see instructions here

Generally stock products would not be customisable. They may however have variants, in this case they need to be set with Type “Configurable Stock” and have additionally a stock product created for each variant and set on the variant under “Stock Product”.

More information on Catalogue Product Types is available in this article, while here you learn the types codes and how to manage product types.  

Instead, customisable products in the catalog should be linked to a base stock product via the Base Stock Product field.

The reverse is also true, customisable products would generally not have the stock type set.

This means that hundreds of customisable catalog products can be linked to a single stock base product.

In the case of customisable products that make use of variants, and in the case of configurable stock products, each variant must link to its own base stock product.

In the case of virtual products, the base stock product is derived from the virtual product’s base product.

 Base stock products and virtual product base products (sorry for the wordiness!) are similiar concepts but have been kept separate to give the system more flexibility.
  • Virtual products inherit production properties (e.g. print areas) from their base product.
  • Products inherit stock tracking properties from their base stock product.

Product Example with variants

Let’s say that Fulfiller A sells T-shirt T01 which comes in 2 sizes, S and L.

In the catalogue, the fulfiller would create 3 separate products.

IDSKUTypeVariant 1 SKUVariant 1 Base Stock Product IDVariant 2 SKUVariant 2 Base Stock Product ID
100T01-SStockN/aN/a  
101T01-LStockN/aN/a  
102T01CustomisableT01-S100T01-L101

When KornitX receives orders from a retailer for product 102, it will automatically adjust the stock levels for either product 100 or 101, depending on which variant of 102 was ordered.


Product Example Without Variants

Let’s say that fulfiller A sells Samsung S7 cases. The recommended approach would be for the fulfiller to create the following products in the catalog.
IDSKUTypeBase Stock Product ID
200S7StockN/a
201S7Customisable200

Taking a shortcut, it would also be possible to create a single product.

IDSKUTypeBase Stock Product ID
202S7Stock & CustomisableN/a

However with the shortcut, if the product is duplicated then the fulfiller will end up with 2 separate stock products that represent the same physical unit.

 The general rule of the thumb is that for a given fulfiller, all stock products in catalog should have unique SKUs.

Inventory User Interface

Stock levels can be manually updated via Production > Inventory. 

Bulk updates are best performed by first exporting a CSV, updating the CSV in a spreadsheet package and then re-importing.

Webhooks

Retailers are able to register a webhook URL that allows them to receive stock level updates.

The webhook will be called whenever the stock level of a base stock product changes (at a maximum frequency of once every 15 minutes for each base stock product).

The webhook can be set in the V3 advanced company settings section, under "Webhooks" or "Webhooks /Order Status" as shown below.


Product Determination

Retailers will receive updates via the webhook for base stock products across all suppliers where there exists a dropship connection between the supplier and the retailer.

In addition, the webhook will list all non stock products that the retailer has access to and that are associated with the base stock product.

For example, if Retailer A had their own version of product 102 (lets say the ID of their own version is 300), the webhook data for updates for product 100 will look something like:

{
	"stock": [
		"quantity_availble": 10,

		"linked" [
			{
				"product": {
					"id": 100,
					"sku": "T01-S"
				},

				"variant": null
			},

			{
				"product": {
					"id": 300,
					"sku": "T01"
				},

				"variant": {
					"attribute_1": {
							"name": "Size",
							"value": "Small"
					},

					"sku": "T01-S"
				}
			}
		]
	]
}

The base stock product is always the first product listed.

Stock management – Integrated

Instead of via manual exports and imports, if you are integrating with KornitX you can manage the stock too via integration, e.g.: Stock Management via API

Stock management via Generic Filesystem integration:  
On the SFTP the files should be placed in a directory called /inventory in the root - there is no specific file naming convention. Once the file has been processed by Kornit X, it will be deleted. 

Example File Format
CSV:
sku
quantity_available
ABC
1
XML: 

<i:product>  
<p:sku>ABC</p:sku>  
<p:quantity_available>1</p:quantity_available>  
</i:product>  
</inventory> 

Intentional Limitations

  • Stock products cannot have variants
  • Stock products cannot have a base stock product set.

    • Related Articles

    • Stock API for the retrieval and setting of stock values

      KornitX provides a Stock API to allow suppliers to provide up-to-date stock information when stock positions change by making a PUT request to the stock update endpoint. A retailer can also use the stock API to retrieve stock information by making a ...
    • Product Integration | Generic API

      Introduction This article has been created to show how to setup the Product integration Kornit X has built to connect to Generic API.  Setup To setup the Generic API integration, please head to your category and within and within the advanced ...
    • KornitX Platform Imports - Simple Stock (Creation Only)

      We offer this quick and easy way for fulfillers to create basic Stock Products which can be used for configurable stock items within variants or just to quickly create stock products to be sold on retailer websites. The headers for this import have ...
    • Supplier Integration | Generic API

      Introduction The Order Push API from Kornit X is our generic Order Manager API allowing us to POST order data in JSON format (matching the structure of our standard orders in API) to an endpoint nominated by a supplier. This is a cheaper alternative ...
    • Stock Picking Documents - Standard

      An example of the label can be seen below, and in PDF form attached This label contains a Item Description, SKU, Quantity and Item ID Barcode for station scanpoints. Label Dimensions - 110 x 30 MM Examples Purchase Locations -  ...