Kibo clients typically have extensive inventory data to share. While Kibo best practices recommend using the Inventory REST APIs, which provide better error handling and faster responses, the Bulk Data Exchange tools are also available. After processing the inventory data from the client import and factoring in issues such as pending orders, an Export file is made by Kibo and delivered to the front end for display. This file takes into account all current orders that impact inventory and informs the client about the actual quantities they have available to sell. This available quantity is calculated by subtracting the pending order items and safety stock from the amount “on hand”, so Inventory Export is valuable to clients to maintain reliability in their inventory management.
Some clients may use the imported inventory data to assign orders to their fulfillment locations. The inventory data is also provided to clients through the Inventory Export process.
For clients upgrading from a previous version of OMS to the Unified Commerce Platform, the process to import an inventory file remains unchanged. This includes the data fields within the files, as the platform’s translation layer is applied to these files to enable backwards compatibility.
Using Inventory Export
Two types of exports are available: Aggregate Exports and Location Exports.
- Aggregate Exports provides total stock information for items across all fulfillment locations included in the export.
- Location Exports provide item stock and location information, sorted by fulfillment location.
Note that there is no “trickle feed” in Inventory Export.
Getting Started
Setup Requirements
To get started, there must be an SFTP (Secure File Transfer Protocol) site where Kibo can pick up and drop off inventory files. The client needs to provide a username, password, remote path, and remote path archive for the file transmission location.
Scheduling Imports and Exports
Inventory imports and exports will occur on a regular, set schedule. Kibo Engineering can set up crons (scheduled jobs) to fetch inventory either at a specific time or on a regular interval, such as every 10 minutes or every hour.
Inventory Export Files
Inventory data is provided as XML files, compressed into Zip format. Kibo also provides a Trigger or Control file with the data. The Trigger file is written to the SFTP after transmission of the Inventory Export file is completed. Trigger files are empty files and have an extension of .done.
Aggregate Export Files
Aggregate Export files provide total stock information for items across multiple fulfillment locations.
File Names for Aggregate Exports
Files are named as follows:
- mfg_id_AGG_YYMMDDhhmmss – for XML files
- File name extension is .xml for XML files; .zip for zip files; .done for Trigger files.
Where:
- mfg_id is the Kibo-assigned manufacturer ID (for example, 3456)
- YYMMDD is the date as year-month-day that the file is created (for example, 130301 for March 1, 2013)
- _AGG_ designates that this is an Aggregate file, and is entered literally
- hhmmss is the time as hour-minute-second that the file is created in Pacific Standard Military Time (for example, 225912 for 10:59:12 p.m. PT)
Data Elements
Schema: http://api.shopatron.com/xsd/InventoryAggregateExport.xsd
Element | Required | Data Type | Occurs | Description |
item | Yes | Number of items in inventory (1 to 50) | A container that includes information for one item in inventory. | |
PartNumber | Optional | String | 0 or 1/item | The merchant-assigned Part Number for the product. The maximum length is 50. |
UPC | Optional | String | 0 or 1/item | The UPC of the product. The maximum length is 50. |
SKU | Optional | String | 0 or 1/item | The SKU for the product. The maximum length is 50. |
QuantityOnHand | Yes | Integer | 1/item | The number of this item in inventory. |
QuantityAvailable | Yes | Integer | 1/item | The number of this item that are available to sell; in other words, the QuantityOnHand minus the quantity already allocated minus the safety stock level. |
Attributes | Optional | Array | 0 or 1/item | A list of attributes that are assigned to the item. |
InventoryLocatorName | Optional | String | 0 or 1/item | An identifier to indicate where a particular SKU exists within a location. For example, “Aisle 5” would indicate that the bin this item belongs to is located in Aisle 5. The maximum length is 50. |
Location Export Files
Location Exports provide item stock and location information, by fulfillment location.
File Names for Location Exports
Files are named as follows:
- mfg_id_LOC_YYMMDDhhmmss.xml – for XML files
- mfg_id_LOC_YYMMDDhhmmss .zip – for zip files
Where:
- mfg_id is the Kibo-assigned manufacturer ID (for example, 3456)
- YYMMDD is the date as year-month-day that the file is created (for example, 130301 for March 1, 2013)
- _LOC_ designates that this is a location file, and is entered literally
- hhmmss is the time as hour-minute-second that the file is created in Pacific Standard Military Time (for example, 225912 for 10:59:12 p.m. PT.
Data Elements
Schema: http://api.shopatron.com/xsd/InventoryExport.xsd
Element | Required | Data Type (Length) | Occurs | Description |
Location | Yes | Struct | Number of locations in inventory file | A container that includes all the information for this location. |
LocationName | Yes | String (50) | 1/location | The name of this location. |
LocationActive | Yes | Int | 1/location | Indicates whether this location is active (1) or not active (0). |
STHEnabled | Optional | Int | 1/location | Indicates whether this store fulfills Standard (ship to home) orders; 0 (no) or 1 (yes). If not specified, default of 1 (yes) is used. |
STSEnabled | Optional | Int | 1/location | Indicates whether this store fulfills Ship to Store orders; 0 (no) or 1 (yes). If not specified, default of 0 (no) is used. |
ISPUEnabled | Optional | Int | 1/location | Indicates whether this store fulfills In-Store Pickup Local Search First orders; 0 (no) or 1 (yes). If not specified, default of 0 (no) is used. |
IncludeInAggregateFeed | Optional | Int | 1/location | Indicates whether this location information is included in the aggregate inventory export file; 0 (no) or 1 (yes). If not specified, default of 1 (yes) is used. |
Item | Yes | Number of items in inventory file (1 to 50) | A container that includes information for one item in inventory. | |
PartNumber | Optional | String (50) | 0 or 1/item | The merchant-assigned Part Number for the product. |
UPC | Optional | String (50) | 0 or 1/item | The UPC of the product. |
SKU | Optional | String (50) | 0 or 1/item | The SKU for the product. |
QuantityOnHand | Yes | Int | 1/item | The number of this item in inventory. |
QuantityAvailable | Yes | Int | 1/item | The number of this item that are available to sell; in other words, the QuantityOnHand minus the quantity already allocated minus the safety stock level. |
SafetyStock | Optional | Int | 0 or 1/Item | Quantity you want to keep in stock to ensure your stock isn’t completely depleted. Both Safety Stock and Floor are optional; most people prefer Safety Stock to Floor. |
Floor | Optional | Int | 0 or 1/item | Absolute minimum number that should be in stock at any time. Both Safety Stock and Floor are optional; most people prefer Safety Stock to Floor. |
Attributes | Optional | Array | 0 or 1/item | A list of attributes that are assigned to the item. |
InventoryLocatorName | Optional | String | 0 or 1/item | An identifier to indicate where a particular SKU exists within a location. For example, “Aisle 5” would indicate that the bin this item belongs to is located in Aisle 5. The maximum length is 50. The maximum length is 50. |
Example Files
Aggregate Export
<?xml version="1.0" encoding="UTF-8"?> <InventoryAggregateExport xmlns="http://api.shopatron.com/xsd/InventoryAggregateExport" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.shopatron.com/xsd/InventoryAggregateExport http://api.shopatron.com/xsd/InventoryAggregateExport.xsd"> <Item> <PartNumber>8888074513</PartNumber> <UPC>8888074513</UPC> <SKU>8888074513</SKU> <QuantityAvailable>10</QuantityAvailable> <QuantityOnHand>15</QuantityOnHand> <Floor>0</Floor> </Item> <Item> <PartNumber>8888074514</PartNumber> <UPC>8888074514</UPC> <SKU>8888074514</SKU> <QuantityAvailable>0</QuantityAvailable> <QuantityOnHand>10</QuantityOnHand> <Floor>0</Floor> </Item> </InventoryAggregateExport>
Location Export
<?xml version="1.0"?> <InventoryExport> xmlns="http://api.shopatron.com/xsd/InventoryExport" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.shopatron.com/xsd/InventoryExport InventoryExport.xsd"> <Location> <LocationName>1010</LocationName> <LocationActive>true</LocationActive> <STHEnabled>true</STHEnabled> <RestockEnabled>false</RestockEnabled> <PickupEnabled>true</PickupEnabled> <IncludeInAggregateFeed>true</IncludeInAggregateFeed> <Item> <PartNumber>11223344</PartNumber> <UPC>11223344</UPC> <QuantityAvailable>10</QuantityAvailable> <QuantityOnHand>12</QuantityOnHand> <SafetyStock>5</SafetyStock> <Floor>2</Floor> <LTD>1</LTD> <InventoryLocatorName>Aisle 3</InventoryLocatorName> </Item> <Item> <SKU>11223345</SKU> <QuantityAvailable>1</QuantityAvailable> <QuantityOnHand>2</QuantityOnHand> </Item> </Location> <Location> <LocationName>1011</LocationName> <LocationActive>false</LocationActive> <STHEnabled>false</STHEnabled> <RestockEnabled>true</RestockEnabled> <PickupEnabled>true</PickupEnabled> <IncludeInAggregateFeed>true</IncludeInAggregateFeed> <Item> <PartNumber>11223346-XL</PartNumber> <QuantityAvailable>0</QuantityAvailable> <QuantityOnHand>0</QuantityOnHand> <LTD>2</LTD> <InventoryLocatorName>Aisle 2</InventoryLocatorName> </Item> <Item> <SKU>xxxx-yyy-zzz-1</SKU> <QuantityAvailable>0</QuantityAvailable> <QuantityOnHand>1</QuantityOnHand> </Item> </Location> </InventoryExport>