> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kibocommerce.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Inventory Delta Export Feed

## Overview

The Inventory Delta Export Feed is a Kibo-managed automated export that periodically queries your inventory for **recently changed records** and delivers a compressed CSV file to a destination of your choice. It is designed for scenarios where you need to keep a downstream system (e.g., a warehouse management system, an external marketplace, or a third-party platform) in sync with your Kibo inventory without pulling a full inventory snapshot each time.

<Tip>
  Looking to push inventory changes **into** Kibo on a recurring basis instead? The [Inventory Import File](/pages/inventory-import-file) supports incremental update files (sometimes called a delta import feed) that apply quantity adjustments throughout the day.
</Tip>

***

## How to Get Started

To set up an Inventory Delta Export Feed for your tenant, **open a support ticket** at [help.kibocommerce.com](http://help.kibocommerce.com/) with the following information:

### Required Information

| Item                                | Details                                                                                                                                                                                               |
| ----------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Tenant ID**                       | Your Kibo tenant ID                                                                                                                                                                                   |
| **Delivery destination**            | Where you want the files sent (see options below)                                                                                                                                                     |
| **Delivery credentials**            | Access credentials for your chosen destination                                                                                                                                                        |
| **Location Group IDs** *(optional)* | One or more Location Group IDs to scope the export to a specific subset of locations. If omitted, all tenant locations are exported. See [Filtering by Location Group](#filtering-by-location-group). |

### Delivery Destination Options

Choose one of the following delivery methods and provide the corresponding details:

#### Option 1 — Amazon S3

* S3 bucket name (and optional key prefix/folder path)
* AWS region
* IAM role or policy granting Kibo write access to the bucket

#### Option 2 — Google Cloud Storage (GCS)

* GCS bucket name (and optional folder path)
* A service account or Workload Identity Federation configuration with write access to the bucket

#### Option 3 — SFTP

* SFTP hostname and port
* Username and password (or SSH key)
* Remote directory path where files should be deposited

***

## How It Works

Once configured, the feed runs automatically on a schedule. On each run, Kibo:

1. Identifies all inventory records that were **updated since the last successful run**
2. Exports those records to a CSV file
3. Compresses the CSV into a ZIP file
4. Uploads the ZIP to your configured destination

<Note>
  If no inventory records changed during a given interval, no file is uploaded for that interval.
</Note>

### Timing Window

* By default, each run captures changes from the **last 30 minutes**.
* The timing window is tracked automatically — you do not need to manage state on your end.
* If a run is delayed or missed, the system will not exceed a **4-hour catch-up window** to prevent unexpectedly large exports

<Note>
  The 30-minute timing window and automatic last-run tracking described above apply to standard (non-prefixed) export configurations. Exports using the `DELTA_EXPORT_` prefix use a fixed 24-hour lookback window instead. See [Filtering by Location Group](#filtering-by-location-group).
</Note>

***

## Filtering by Location Group

By default, each delta export run includes inventory records from **all locations** in your tenant. If you need to scope an export to a specific subset of locations — for example, only warehouse locations, only retail stores, or only a regional set of stores — you can link the export configuration to one or more **Location Groups**.

### Requirements

Three conditions must be met for location group filtering to take effect:

1. **The export settings name must begin with** `DELTA_EXPORT_` (for example, `DELTA_EXPORT_WAREHOUSE` or `DELTA_EXPORT_MEX_STORES`). Export configurations whose names do not use this prefix will export all tenant locations regardless of any Location Group association.
2. **One or more Location Groups must be linked** to the export settings record.
3. **At least one active storage destination (S3, GCS, or FTP) must be configured** on the export settings record. Records with no active destination are not processed by the cron, even if they match the `DELTA_EXPORT_` naming prefix.

> **Important:** If your export settings name does not start with `DELTA_EXPORT_`, location group filtering will not be applied — the export will deliver all tenant locations. Double-check the configuration name if filtered results are not appearing as expected.

### Lookback Window

Exports using the `DELTA_EXPORT_` prefix use a fixed **24-hour lookback window** — each run queries for inventory records updated within the last 24 hours. This is different from the standard (non-prefixed) export path, which tracks a dynamic last-run timestamp per tenant.

<Note>
  If no inventory records changed within the lookback window, no file is uploaded for that run.
</Note>

### Configuring Multiple Filtered Exports

You can run multiple filtered exports simultaneously, each targeting a different location group and writing to a different destination. Create a separate export settings record for each, naming each with the `DELTA_EXPORT_` prefix and linking the appropriate Location Group in the Export Settings.

**Example:**

| Export Settings Name      | Location Group               | Delivery Destination  |
| :------------------------ | :--------------------------- | :-------------------- |
| `DELTA_EXPORT_US_STORES`  | US stores Location Group     | S3 bucket `/qoh/usa/` |
| `DELTA_EXPORT_MEX_STORES` | Mexico stores Location Group | S3 bucket `/qoh/mex/` |

All `DELTA_EXPORT_` configurations run within the same cron invocation, on a schedule determined by your deployment configuration. Each delivers a separate ZIP file to its own destination — or skips upload if no inventory changes were found in the lookback window.

### Backward Compatibility

Existing export configurations that do **not** use the `DELTA_EXPORT_` prefix are unaffected by this change. They continue to export all tenant locations using the dynamic last-run tracking, without any reconfiguration required.

## Output File Format

Each delivery is a **ZIP archive** containing a single file named `inventory.csv`.

### ZIP File Naming

```text theme={null}
{tenantId}_{YYYYMMDDHHmmss}.zip
```

Example: `100041_20240815143000.zip`

### CSV Structure

The CSV includes a header row. The base columns are:

| Column          | Description                                                     |
| --------------- | --------------------------------------------------------------- |
| `location_code` | The location identifier where inventory is held                 |
| `upc`           | The product's UPC/SKU                                           |
| `onHand`        | On-hand quantity, net of safety stock                           |
| `rawOnHand`     | Raw on-hand quantity (before safety stock deduction)            |
| `available`     | Available quantity, net of safety stock and pending allocations |
| `condition`     | Product condition (e.g., `new`, `used`)                         |
| `lot_code`      | Lot code, if applicable                                         |
| `date`          | Inventory date                                                  |
| `serial_number` | Serial number, if applicable                                    |
| `attributes`    | Legacy attribute value, if configured                           |

#### Future Inventory Columns

Future inventory data in the Delta Export is **opt-in per tenant**. When enabled, five additional columns appear in the CSV output. When the flag is off, the export output is identical to its previous format — no new columns are added.

To enable future inventory columns in your Delta Export, make sure to keep `include_future_inventory` flag enabled

<Note>
  Only future inventory records with a delivery date on or after the current date are included.
</Note>

When enabled, the following columns are added to the CSV:

| Column                | Description                                                                                           |
| :-------------------- | :---------------------------------------------------------------------------------------------------- |
| `Allocated`           | Current allocated quantity for this inventory row.                                                    |
| `FutureOnHand`        | Sum of future on-hand quantities across all future records for this SKU/location.                     |
| `FutureAvailable`     | Sum of future available quantities across all future records for this SKU/location.                   |
| `FutureAllocated`     | Sum of future allocated quantities across all future records for this SKU/location.                   |
| `FutureInventoryDate` | Earliest future delivery date across all future records for this SKU/location (UTC, ISO 8601 format). |

When both `include_future_inventory` and`onlySendAvailable` export setting are enabled, products with zero current availability but positive future availability are **included** in the export. A product is only excluded if both its current available quantity and future available quantity are zero or less.

<Note>
  If future inventory is deleted via the API (`DELETE /futureInventory`), the delta export will not reflect that removal until the next regular inventory update occurs on that row.
</Note>

### Optional Columns

The following columns can be enabled on request:

| Column                         | Description                                                                        | How to Enable                                                                        |                              |
| ------------------------------ | ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ | ---------------------------- |
|                                | `inventory_locator_name`                                                           | Planogram or bin locator name for the product                                        | Request in your setup ticket |
| *Custom extensible attributes* | One column per custom inventory attribute you have defined (e.g., `Color`, `Size`) | Request in your setup ticket; multi-value attributes are pipe-delimited (e.g., \`Red | Blue\`)                      |

### Example CSV

```text theme={null}
location_code,upc,onHand,rawOnHand,available,condition,lot_code,date,serial_number,attributes,Allocated,FutureOnHand,FutureAvailable,FutureAllocated,FutureInventoryDate
WAREHOUSE-A,012345678901,48,50,45,new,,,,,5,20,20,0,2026-07-15T00:00:00Z
WAREHOUSE-B,098765432100,0,2,-1,new,,,,,2,,,,
```

***

## Frequently Asked Questions

**What if no inventory changed during an interval?** No file is uploaded for that interval. Your destination will simply have no new file for that run.

**What time zone are timestamps in?** All timestamps are in **UTC**.

**Can I receive files more or less frequently than every 30 minutes?** This setting is fixed at 30 minutes and does not support customization.

**Can I receive files to more than one destination?** Yes — include all destination details in your support ticket.

**What does `available` represent exactly?** `available` = raw on-hand quantity - safety stock - pending allocations. `onHand` = raw on-hand - safety stock only. Use `rawOnHand` if you need the unmodified quantity.

**What if an extensible attribute has multiple values?** Multi-value attributes are serialized as a pipe-delimited string in a single column. For example, a `Color` attribute with values `Red` and `Blue` would appear as `Red|Blue`.

**How do I enable future inventory columns in my delta export?** In your export settings make sure `include_future_inventory` option is enabled. Once enabled, five new columns will appear in your CSV output: `Allocated`, `FutureOnHand`, `FutureAvailable`, `FutureAllocated`, and `FutureInventoryDate`. If the setting is off, your export format remains unchanged.

**Can I filter the delta export to only certain store locations or warehouses?** Yes. Kibo supports location group filtering for delta exports. Name your export settings with a `DELTA_EXPORT_` prefix (for example, `DELTA_EXPORT_WAREHOUSE`) and link the desired Location Groups in the  **Export Settings**. Each filtered configuration uses a fixed 24-hour lookback window and can deliver to its own destination. Exports configured without the `DELTA_EXPORT_` prefix are unaffected and continue to export all tenant locations. See [Filtering by Location Group](#filtering-by-location-group) for full details.
