Control sellable windows
Set how close to expiration you are willing to ship, using Less Than or Greater Than in Sellable Days before Expiration (relative to each bin’s expiration date).
Shelf Life lets you define how many days before a product’s expiration date it may still be sold, per sales channel or globally. The warehouse uses those rules together with expiration dates on bins when allocating stock. Orders from a store can be held back when no bin inventory matches the rule, until you adjust stock or use a supported processing override.

Rules are edited on the product page in the Shelf Life accordion. The grid uses the table title Double click to edit.
Open the product
From the catalog, open the product you want to configure.
Open the Shelf Life section
In the accordion, click Shelf Life. The table loads existing rules for that SKU.
Add a new rule
Click Add (the button shows a plus icon). A new row appears with default values. Edit cells, then use Save Record (save icon) or Cancel (remove icon) on the row.
Edit an existing rule
Double-click the row when the module is active. Set:
Save or delete
Click Save Record to send changes. To remove a rule, use the trash control on the row (tooltip Delete). A dialog asks Are you sure you want to proceed with deleting the Shelf Life? Choose Yes or Cancel.


When validation succeeds, the product screen treats the module as active (success message: Shelf life module is activated for this account). If the module is off, double-click or Add can show a Please check dialog with the message above.
From Integrations List, open the row actions for a store and choose Upload Shelf Life Config by CSV when the Shelf Life module and premium service are on.
Open the upload dialog
The modal title is Upload Shelf Life CSV.
Download the template
Click the link ShelfLife_template.csv to download the file.
Choose your file
Use Choose a File CSV to select your CSV (required).
Optional: update existing rows
Enable Update/Replace ShelfLife that are already created for the SKUs. if you need to overwrite rules that already exist for the same SKU on that channel. If this is off, an existing rule for the same SKU and channel returns an error instead of updating.
Upload
Click Upload. The button can show Uploading… while the file is sent. Use Close to dismiss without uploading.
Review results
On success, a message appears at the bottom of the modal. If some rows failed, use Download observations to get a file with per-row details.
The template header row is:
shelf_life_name, sku, sellable_days, days
| Column | Description |
|---|---|
shelf_life_name | Name of the rule (allowed characters per server checks). |
sku | Must match an existing product SKU for the account. |
sellable_days | Must be less_than or greater_than (these map to Less Than / Greater Than in the product grid). |
days | Integer from 1 to 999. |
If the same sku appears more than once in one file, only the first row is processed; duplicate lines are reported with an observation that only the first occurrence is processed.
These options are the Sellable Days before Expiration field on the Shelf Life grid. Sell by is the number of days N (1–999). The system compares today’s date and time to the instant that is N calendar days before the bin’s Expiration date. That instant is the cutoff between “still outside the last N days” and “already inside the last N days before expiration.”
The two options are mutually exclusive for the same N: a given bin line either matches one or the other, not both.
Choose Greater Than when the rule should only allow bins where today is still before that cutoff.
Choose Less Than when the rule should only allow bins where today is after that cutoff.
| Option | Roughly matches bins where… |
|---|---|
| Greater Than | Today is before “N days before expiration” → still more than N days until expiration date. |
| Less Than | Today is after “N days before expiration” → within the last N days before expiration date. |
On Orders, when Shelf Life is enabled at the warehouse level, the status column can show a secondary badge:
Shelf Life: Process Anyway
That indicates the order was flagged because available bin stock did not satisfy the Shelf Life window. The activity log can record event Order not processed with description This order cannot be processed due to Shelf Life configuration.
Accounts with a distribution center can use the bulk action Route Orders (orders list actions menu) to drive processing that bypasses the shelf-life stock check in code paths that call routeOrder with a forced shelf-life flag—use only when your policy allows shipping outside the sell-by window.
Open Reports view the page title in the header is Reports. Use the Advanced tab. When the Shelf Life module is active for your session data, the Shelf Life report card appears; if the module is off, that card is not listed.
Report description in the system:
The generated CSV uses columns such as SKU, Location, BIN, Lot, Expiration Date, Sell by Name, and Days Left. If UOM is enabled for the warehouse, a UOM column is included. Rows are filtered by bin expiration date within the report’s date range.
Bins need a valid expiration date for Shelf Life filtering to apply to that stock.
Use Pending Orders when you need to find orders blocked by Shelf Life and optionally push them through with Process Anyway.
Prepare Shelf Life and inventory
Configure Shelf Life on the catalog SKU for the order’s channel, and set expiration on bins so stock either passes or fails the rule for your test.
Select and order to process
Select the checkbox for the order you want to process.
Confirm Process
Click Actions > Process. The order moves to processing status. You should be redirected to the Shipping page to continue fulfillment.
Message if processing fails
If processing fails, an error alert shows the message and the pending table reloads.
Confirm Process Anyway
Click Shelf Life: Process Anyway. In the dialog titled Shelf Life: Process Anyway, read Are you sure you want to process this order? Choose Ok to continue or Cancel to stop.
Result
On success, a confirmation alert can appear and the system redirects you to Processing view.
Set how close to expiration you are willing to ship, using Less Than or Greater Than in Sellable Days before Expiration (relative to each bin’s expiration date).
Pick a Channel/DC Name in the grid, or Global when the rule applies to all channels for that SKU.
Pending-to-processing and bin selection filter inventory by expiration when Shelf Life is active for the account.
Use Upload Shelf Life Config by CSV on the Integrations list to load or update many SKUs at once.
Receiving and cycle counting should set expiration on bins so Shelf Life rules match physical stock.
Configure rules for the same store / channel the order uses, or Global where appropriate.
Use Shelf Life: Process Anyway only when your policy allows shipping outside the configured sell-by window.
| Issue | What to check |
|---|---|
| Shelf Life panel is read-only or a Please check alert appears | Read the message text (warehouse module off vs contact Warehouse Manager). |
| Orders stuck with Shelf Life sub-status | Confirm bin expiration dates and quantities; review activity Order not processed and the Shelf Life description. |
| CSV upload errors | Use less_than / greater_than for sellable_days; ensure SKUs exist; days between 1 and 999; enable Update/Replace ShelfLife… only when you intend to overwrite existing rules. |
| Duplicate SKU lines in one CSV | Only the first row per SKU is processed; check the observations file for Duplicate SKU .Only the first occurrence will be processed. |
| Report missing | On Reports, open the Advanced tab; the Shelf Life card is shown only when the Shelf Life module flag is on. |
Next steps: Catalog Overview · Creating Products · Integrations Overview · Reports Overview · Orders Overview