Skip to main content
When enabled, future inventory is used to calculate the total amount that is “available to promise.” This allows you to allocate against future inventory at the location level (as well as at the tag level if applicable). This calculation is:
  • Available to Promise = Available + Future
Current inventory is always prioritized before future inventory is allocated. For example, if you have 5 quantity of a product on hand, 3 allocated, and 5 future, then you have a total of 7 available to promise. When all of the on hand inventory has been allocated, then the 5 future inventory will begin to be allocated (which can then be deallocated if needed).

Enable Future Inventory

In order to allocate against future inventory, you must enable it in both your site settings and the item level.

Enable for Site

To enable future inventory on your site:
  1. Go to System > Settings > General.
  2. In the Site section, locate the Future Inventory Settings.
  3. Toggle Future Inventory on.
  4. Set the Future Date Limit you want to consider future inventory for. Only the amount within this date limit will be calculated into the quantity available to promise.
    • For example, if you have a view of inventory for 12 weeks from the current time then you can choose to allocate future inventory for just the next 4 weeks. 
  5. Set the Future Date Unit. This can be days, weeks, or months.
  6. Click Save.
Close-up of Future Inventory settings with a time frame of 15 days.

Enable for Products

After enabling future inventory for your site, you can enable it for individual products either in the Admin UI’s product attributes or the Create Order API. To enable it via the Admin UI:
  1. Go to System > Schema > Product Attributes
  2. Click Create New Attribute and configure a new property called “future-inventory-enabled” with a Yes/No input type. See the Property Attributes documentation for more details about creating attributes.The Product Attributes page with an example of the future-inventory-enabled attribute
  3. Go to System > Schema > Product Types.
  4. Select a product type or create a new product type.
    • Note that this functionality is only supported for product types with the Standard Product, Configurable Product with Options, or Bundle Components usage.
  5. In the Properties section, click Add and then select the future-inventory-enabled attribute. The Add Properties modal with future-inventory-enabled selected
  6. Set the Display Group to “Storefront Details.”
  7. Click Done and then save the product type.
  8. Go to Main > Catalog > Products.
  9. Select a product of the appropriate product type or create a new one.
  10. In the Properties section, set future-inventory-enabled to true. It is false by default. If you selected a product type of Configurable Product with Options, this will only be set on the base product and then inherited by all product variants.The Properties section of product settings with a callout for the future inventory attribute
  11. Click Save.
To enable products via the Create Order API instead, use the properties in an order item’s items array to define the “future inventory enabled” property as shown below:
"properties": [
  {
    "attributeFQN": "tenant~future-inventory-enabled",
    "name": "Future Inventory Enabled",
    "dataType": "Bool",
    "isMultiValue": false,
    "values": [
      {
        "value": true
      }
    ]
  }
],

Set Future Inventory Records

You can set up future inventory records to be unique by their UPC-Location-Future Delivery Date or their UPC-Location-External ID. This means that if your delivery dates are not unique, then an external ID is needed to differentiate between records. External IDs may also be especially beneficial if you use purchase order numbers that you want to apply to future inventory.  For example, if you have three future inventory updates for the same product on August 7 and do not have unique delivery date-times, then external IDs of PO1, PO2, and PO3 could identify each record. If your future date-times are unique such as 10:00, 2:00, and 5:00, then you will not need an external ID to tell the records apart. You can use REST APIs or flat file import to set future inventory levels. Kibo will perform updates based on what information you provide. If you have set up your records to be unique based on external ID, the following behavior will be performed.
  • If both an External ID and Delivery Date are provided: If a record for that ID already exists, then the existing delivery date and quantity will be updated to the new values. If one does not exist, a new record will be created.
  • If only an External ID is provided: If a record for that ID already exists, the quantity will be updated. If one does not exist, then it will return an error. If you want to create a new record, you must provide both the ID and a delivery date.
If you have set up your records to be unique based on delivery date, the following behavior will be performed.
  • If a Delivery Date is provided: If a record for that delivery date already exists, the quantity will be updated. If one does not exist, then a new record is created.
External IDs can also be used in combination with granular inventory fields, allowing you to further differentiate unique future inventory records.

File Import

Follow the steps outlined in the Inventory Import File guide to build a .CSV or XML file of your inventory data. For future inventory records, provide a delivery date and/or external ID such as in the below example: A CSV file with example data for products

Inventory APIs

Use the Refresh and Adjust APIs to set inventory records in place of the file import if desired, such as in the below example that includes both the deliveryDate and externalId fields. You can then use the Adjust Future Date API to change the incoming date of existing records as needed.
{
    "locationCode": "1",
    "items": [
        {
            "partNumber": "part01",
            "upc": "example123",
            "sku": "example124",
            "ltd": 0,
            "floor": 0,
            "quantity": 20,
            "safetyStock": 0,
            "retailPrice": 1.99,
            "currencyID": 1,
            "deliveryDate": "2024-03-26T19:59:00+0000",
            "externalID": "exampleExternalID"
        }
    ]
}
You can also use external IDs in other inventory calls such as this example request to the GET Inventory API:
{
    "type": "ANY",
    "items": [
        {
            "upc": "exampleProduct",
            "partNumber": "exampleProduct",
            "sku": "exampleProduct",
            "quantity": 0
        }
    ],
    "includeAttributes": true,
    "includeNegativeInventory": true,
    "includeFutureInventory": true,
    "includeNegativeFutureInventory": true,
    "externalID": "exampleExternalID"
}

Orders with Future Inventory

When assigning orders to fulfillment locations, current inventory is always prioritized before future incoming inventory.  When considering future inventory, the following logic is used:
  • BOPIS: Earliest available date at the selected BOPIS location.
  • STH: Order Routing will look for the earliest available date across locations.
Future inventory is supported for STH, BOPIS (including Delivery and BOPIS w/ Transfers), and STH Consolidation. However, future inventory will not be considered for transfer shipments. This means that only the parent shipment of any fulfillment type can be allocated or assigned with future inventory. 

Cart and Checkout Behavior

When an inventory check is done from a cart or checkout, the system will validate items against future inventory:
  • Items will not be considered Out of Stock if the total quantity can be satisfied by current and future inventory. They will only be Out of Stock if the sum of current and future inventory is less than the requested quantity.
  • Backorderable items will not be placed into Backorder if the total quantity can be satisfied by current and future inventory. They will only be backordered if the sum of current and future inventory is less than the requested quantity.
  • If the order includes reservation items, inventory can be reserved at a location as long as the sum of its available and future inventory meets the requested quantity. When the quantity in the cart is updated, then the reserved inventory will be deallocated or allocated as needed. (For BOPIS, the system will attempt to provide any needed inventory from the current stock at transfer locations first. If transfers are not enabled or there are no locations with current inventory, then the system will reserve from the pickup location’s future inventory.)
When editing a customer’s cart, inventory levels will be displayed in each line item’s Fulfillment Search dropdown menu. If the total includes future inventory, the value will be underlined and hovering over it will reveal a breakdown of future and current inventory levels. The Fulfillment dropdown with options for Direct Ship and Delivery locations with current and future inventory

Shipment Behavior

Shipments that are created with future inventory begin in the Future status and cannot be fulfilled until inventory arrives at the location and the shipment moves into the Ready state. Shipments are moved from Future to Ready status by the “FutureInventoryShipmentRelease” job. Please request Kibo Support to enable this job for you. Future shipments always have a date associated with them to indicate when future inventory is arriving. The system will update shipments whenever their future inventory’s expected date or quantity changes, depending on the scenario:
  • If a future inventory record changes to a different delivery date, associated shipments will automatically update to match the new date (as long as it is not beyond the Future Date Limit). If only some shipment items change dates or the items change to two different dates, then the shipment is split based on those dates.
  • If a future inventory record changes to a delivery date beyond the Future Date Limit setting, then those items on STH shipments are reassigned. 
  • If a future inventory record changes to a delivery date beyond the Future Date Limit setting, then those items on BOPIS shipments will be backordered. If any items in the shipment are not backorderable, then the shipment is split and those items will either be cancelled or sent to Customer Care (depending on your Action on BOPIS Reject site setting).
  • If future inventory records change to a quantity of either 0 or an amount less than the required quantity on a shipment, then the unavailable quantity is turned into pending items on that shipment and will be allocated whenever inventory is available again.
You can cancel a Future shipment or force fulfillment from the Order Admin UI by changing the shipment’s status. Forcing fulfillment may be useful if any future inventory becomes available sooner than expected but the delivery date does not change, such as if current inventory becomes available due to order cancellations. However, you cannot reassign Future shipments through the Order Admin UI at this time.

View in Inventory UI

All incoming On Hand, Available, and Allocated levels are displayed on the Inventory UI by default. Records that include future inventory will be underlined in the table, and hovering over them will display a summary of the current and future amounts. To filter for inventory arriving up to a specific date, enter a date in the View Future Inventory option in the top right. The inventory UI with callouts for the View Future Inventory field and popup To view more details about future inventory levels: 
  1. Expand a table row that contains future inventory to view a breakdown of that product’s Current, Future, and Total (the sum of Current and Future) inventory levels. Then, click the Future Inventory Dates link.An inventory record expanded to show the Future Inventory Dates link
  2. This will display a pop-up with more details about the inventory updates that are expected until the selected date. Select a site and future date from the drop-down menu shown below to filter results to inventory arriving within that site and time frame. These date options are pre-calculated by the system based on the future date limit configured in the site settings. The Future incoming inventory dates table

 Assume Infinite Inventory on a Future Record:

To enable Infinite Inventory on a segmented record, include "includeItemsWithInfiniteInventoryFlag": true in the request when using the Refresh and Adjust APIs or inventory import process to create or update Future inventory. When active, this Boolean field overrides standard allocation rules, allowing allocation even if inventory is unavailable To identify which inventory records have this flag enabled, use the Get Inventory  API with the parameter includeItemsWithInfiniteInventoryFlag. Records with infinite inventory will return hasInfiniteInventory: true in the response.