Inventory Export File

After processing imported inventory data and factoring in changes such as pending orders, an Export file is generated by Kibo. This file takes into account all current orders that impact inventory and informs you about the actual quantities that are 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 maintain reliability in your inventory management.

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

You must prepare either an SFTP site, S3 bucket, or GCS bucket where Kibo can drop off inventory files. Use the Export Inventory API to configure your settings for the inventory export process to these droppoints. There are three endpoints used to achieve this: a general endpoint (for any type including GCS), an S3-specific endpoint, and an FTP-specific endpoint.

The general endpoint allows you to name location groups or sites if you want the configurations to apply specifically to exports from them, which cannot be defined with the S3 and FTP endpoints. When using the general endpoint to configure exports to a GCS bucket, you must provide a gcsInformation object as shown below (these fields will be added to the API documentation soon).

{
    "exportSettings": {
        "name": "main-export-settings",
        "fileFormat": "XML",
        "exportType": "AGGREGATE",
        "gcsInformation": [
            {
                "name": "Export1",
                "gcsBucket": "inventory-export-sb/export",
                "active": true
            }
        ],
        "siteIDs": [
            "12345"
        ]
    }
}

Configuring these settings will determine how these files are delivered and received, but that will not activate any exports yet. Contact Kibo Support to enable inventory imports and exports.

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.

Schedule 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 schedule after Kibo Engineering sets up jobs to export inventory for you 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

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 Yes 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:

  • 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

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.
LocationCode 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.
PickupEnabled Optional Int 1/location Indicates whether this store fulfills BOPIS 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. The maximum length is 50.
UPC Yes String (50) 0 or 1/item The UPC of the product. The maximum length is 50.
SKU Optional String (50) 0 or 1/item The SKU for the product. The maximum length is 50.
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.

Examples

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>