Skip to main content
The Inventory Import process provides current stock-level information to Kibo. This data helps Kibo accurately assign orders to fulfillment locations and set product availabilities. If you have multiple fulfillment locations, you use inventory data to manage inventory levels at each location and assign orders to them appropriately.

Types of Inventory Import

Two types of Inventory Import processes exist: Refreshes and Updates. Refreshes are more comprehensive and usually sent once per day, providing the total count for all products in the catalog. Updates are normally sent every hour and provide an adjustment to the values sent in the previous Refresh, indicating which product counts should be increased or decreased.

Refresh File Attributes

  • Delivered to Kibo once each day
  • Represents an accurate stock count for all products
  • Includes products with a stock count of zero (0)

Update File Attributes

  • Delivered to Kibo throughout the day
  • Increments (+2) or decrements (-2) existing stock count(s)
  • Sometimes called a ‘trickle’ feed

Getting Started

You must prepare either an SFTP (Secure File Transfer Protocol) site, S3 bucket, or GCS bucket where Kibo can pick up inventory files. Use the Save Fetch Config API to provide its information to Kibo, including the remote path and remote path archive for the file transmission location. Some different fields are required depending on whether you’re setting up SFTP, S3, or GCS. These are labelled in the field names and descriptions of the Save Fetch Config schema (which will be updated soon with GCS fields). The below example would configure a GCS bucket:

SFTP Best Practices

Kibo recommends following the below guidelines to maximize SFTP performance. These suggestions apply to any file pickup and ingestion processes from the 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 a 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.

Create and Upload Inventory Files

Inventory data should be submitted as XML or CSV files and compressed into Zip format before being transferred. A Trigger/Control file should also be created each time data is submitted. The Trigger file tells Kibo that the inventory file is ready to process. This is an empty file with the same file name as the inventory files being submitted, and the extension .done (ex. T_{tenantId}_REFRESH_130909121152.zip.done). The zipped file should be uploaded to the SFTP or S3/GCS bucket followed by the Trigger file. For optimal efficiency and timely data processing, please ensure that all submitted Refresh and Update files are populated with inventory data. As a best practice, your automated processes should be configured to prevent the unnecessary transmission of empty files without inventory data to Kibo.

Naming Inventory Import Files

Inventory files should be named with the following conventions, depending on what type of inventory import it is:
  • T_{tenantId}_REFRESH_YYMMDDhhmmss
  • T_{tenantId}_UPDATE_YYMMDDhhmmss
Where:
  • {tenantId} is the Kibo-assigned tenant ID (for example, 3456)
  • REFRESH identifies this file as a Refresh
  • UPDATE identifies this file as an Update
  • YYMMDD is the year, month, and day represented in two-digit format. For example, 130301 is March 1, 2013
  • hhmmss is the time in Pacific Standard Military Time, expressed as hour-minute-second, that the file was created. For example, 205912 is 10:59:12 p.m. PT.

Data Elements

These parameters are used in both CSV and XML file formats. When building the file, identify a location name and then follow it with blocks of the item-specific data for each product.

Quantity — Conditional Requirement for Refresh Imports

The Quantity field is conditionally required for Refresh import rows. Whether it must be provided depends on the presence of other fields in the same row: Dependent fields — any one of the following makes Quantity optional:
Validation Rules When Quantity Is Required
When Quantity is required (no dependent fields present), the following validation applies:
  • The value must be an integer.
  • By default, the value must be non-negative (≥ 0).
  • If your account has the Available Inventory Updates feature enabled, negative integers are permitted, allowing an explicit reduction of available stock below zero.
Behavior When Quantity Is Omitted
When Quantity is omitted and a dependent field is present:
  • The row is accepted without error.
  • The on-hand quantity for that item is not modified.
  • Only the fields explicitly provided in the row are updated on the record.
This allows a Refresh file to function as a targeted attribute update — for example, toggling AssumeInfiniteInventory across a set of items without resetting their physical stock counts.
Refresh Quantity Examples
Valid — Quantity omitted, dependent field present:
Accepted. AssumeInfiniteInventory is updated; existing on-hand quantity is unchanged. Valid — Quantity provided with dependent field:
Accepted. Both Quantity and SafetyStock are updated. Invalid — No Quantity and no dependent fields:
Rejected. Quantity is required when no dependent fields are present.

Examples

Here is an example import sequence:
  1. Create the file : T_{tenantId}_REFRESH_130909121152.xml (or .csv)
  2. Compress (zip) the file : T_{tenantId}_REFRESH_130909121152.zip
  3. Upload the zip file.
  4. Upload a Trigger/Control file : T_{tenantId}_REFRESH_130909121152.zip.done
XML File The following example provides inventory information for two locations and includes only required elements.
CSV File The following example provides inventory information for two locations. Note that CSV has some special requirements:
  • The header is optional.
  • Order of inventory fields matters: LocationCode,PartNumber,UPC,SKU,Quantity,Bin, etc.
  • At least the string fields must be quoted. Quotes may not be required for the data field names or integers, but if you experience errors then Kibo recommends adding quotes to all values as shown below.
CSV File with Inventory Tags This example includes a custom tag called “channel” used in inventory segmentation. This indicates that these inventory records belong to the Amazon order channel.