Inventory Export File

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.

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 either an SFTP (Secure File Transfer Protocol) site or an S3 bucket 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.

SFTP Best Practices

Kibo recommends following the below guidelines to maximize SFTP performance. These suggestions apply to any file pickup and ingestion processes from a client-side or third party SFTP droppoint, as well as Kibo's own file delivery.

  • Ensuring access to the SFTP droppoint is the responsibility of the client or third party maintainer. Make sure that Kibo's SFTP user has read and write permissions to the directory, which is required to deliver files.
    • For example, in the command line this may look like drw-rw-r-- (which means the owner has read/write, the group has read/write, others are read-only)
  • Ensure files do not pile up over time → utilize /archive folders and periodic cleanup of historic data. Monitor the droppoint and clean up files that are no longer needed.
    • If you need to retain the files, archive them to another folder once they’ve been processed. 
  • Ensure disk space usage is monitored and alerts the maintaining IT team in time to address low disk space situations before causing connection issues for Kibo.

Configuring Export Settings

You can use the Inventory API to configure your settings for the inventory export process to either S3 or FTP endpoints. There are three /create endpoints used to achieve this: a general endpoint, an S3-specific endpoint, and an FTP-specific endpoint. You can also configure fetch files with the Save Fetch Config API.

You may use any of these, but the general endpoint allows you to fine-tune your settings by specifying specific location groups and sites that those configurations should apply to, when inventory is being exported from those locations or sites. These specifications cannot be defined with the S3 and FTP specific endpoints.

Configuring these settings will determine how these files are delivered and received, but that will not activate any exports. To activate, Kibo Engineering must configure processes on Kibo's side as well. If you need to enable inventory imports and exports, contact Kibo Support.

Scheduling Imports and Exports

Inventory imports can occur at any time, as Kibo is constantly looking for new files on the client server. Exports will occur on a regular, set schedule as Kibo Engineering will set up cron jobs to export inventory daily at a specific time.

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 or S3 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:

  • T__AGG_YYMMDDhhmmss
  • File name extension is .xml for XML files; .zip for zip files; .done for Trigger files.

Where:

  •  is the Kibo-assigned tenant ID (for example, 3456)
  • AGG designates that this is an Aggregate file
  • YYMMDD is the date as year-month-day that the file is created (for example, 130301 for March 1, 2013)
  • 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

ElementRequiredData TypeOccursDescription
itemYes
Number of items in inventory (1 to 50)A container that includes information for one item in inventory.
PartNumberOptionalString0 or 1/itemThe merchant-assigned Part Number for the product. The maximum length is 50.
UPCYesString0 or 1/itemThe UPC of the product. The maximum length is 50.
SKUOptionalString0 or 1/itemThe SKU for the product. The maximum length is 50.
QuantityOnHandYesInteger1/itemThe number of this item in inventory.
QuantityAvailableYesInteger1/itemThe number of this item that are available to sell; in other words, the QuantityOnHand minus the quantity already allocated minus the safety stock level.
AttributesOptionalArray0 or 1/itemA list of attributes that are assigned to the item.
InventoryLocatorNameOptionalString0 or 1/itemAn 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:

  • T__LOC_YYMMDDhhmmss
  • File name extension is .xml for XML files; .zip for zip files; .done for Trigger files.

Where:

  •  is the Kibo-assigned manufacturer ID (for example, 3456)
  • LOC designates that this is a location file
  • YYMMDD is the date as year-month-day that the file is created (for example, 130301 for March 1, 2013)
  • 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

ElementRequiredData Type (Length)OccursDescription
LocationYesStructNumber of locations in inventory fileA container that includes all the information for this location.
LocationCodeYesString (50)1/locationThe name of this location.
LocationActiveYesInt1/locationIndicates whether this location is active (1) or not active (0).
STHEnabledOptionalInt1/locationIndicates whether this store fulfills Standard (ship to home) orders; 0 (no) or 1 (yes). If not specified, default of 1 (yes) is used.
STSEnabledOptionalInt1/locationIndicates whether this store fulfills Ship to Store orders; 0 (no) or 1 (yes). If not specified, default of 0 (no) is used.
PickupEnabledOptionalInt1/locationIndicates whether this store fulfills BOPIS orders; 0 (no) or 1 (yes). If not specified, default of 0 (no) is used.
IncludeInAggregateFeedOptionalInt1/locationIndicates 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.
ItemYes
Number of items in inventory file (1 to 50)A container that includes information for one item in inventory.
PartNumberOptionalString (50)0 or 1/itemThe merchant-assigned Part Number for the product. The maximum length is 50.
UPCYesString (50)0 or 1/itemThe UPC of the product. The maximum length is 50.
SKUOptionalString (50)0 or 1/itemThe SKU for the product. The maximum length is 50.
QuantityOnHandYesInt1/itemThe number of this item in inventory.
QuantityAvailableYesInt1/itemThe number of this item that are available to sell; in other words, the QuantityOnHand minus the quantity already allocated minus the safety stock level.
SafetyStockOptionalInt0 or 1/ItemQuantity 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.
FloorOptionalInt0 or 1/itemAbsolute minimum number that should be in stock at any time. Both Safety Stock and Floor are optional; most people prefer Safety Stock to Floor.
AttributesOptionalArray0 or 1/itemA list of attributes that are assigned to the item.
InventoryLocatorNameOptionalString0 or 1/itemAn 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.example.com/xsd/InventoryAggregateExport"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <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.example.com/xsd/InventoryExport"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Location>
        <LocationCode>1010</LocationCode>
        <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>
        <LocationCode>1011</LocationCode>
        <LocationActive>false</LocationActive>
        <STHEnabled>false</STHEnabled>
        <RestockEnabled>true</RestockEnabled>
        <PickupEnabled>true</PickupEnabled>
        <IncludeInAggregateFeed>true</IncludeInAggregateFeed>
        <Item>
            <PartNumber>11223346-XL</PartNumber>
            <UPC>11335577</UPC>
            <QuantityAvailable>0</QuantityAvailable>
            <QuantityOnHand>0</QuantityOnHand>
            <LTD>2</LTD>
            <InventoryLocatorName>Aisle 2</InventoryLocatorName>
        </Item>
        <Item>
            <UPC>22446688</UPC>
            <SKU>xxxx-yyy-zzz-1</SKU>
            <QuantityAvailable>0</QuantityAvailable>
            <QuantityOnHand>1</QuantityOnHand>
        </Item>
    </Location>
</InventoryExport>