Skip to main content

Shelf Life Dates on Inventory Packages and Inventory Aging

Flourish tracks five shelf life dates on inventory packages to monitor freshness and compliance. Dates travel through splits and transfers. System-derived dates power Inventory Aging analytics using a priority waterfall.

Shelf Life Dates on Inventory Packages and Inventory Aging

Overview

Flourish supports six date fields on every inventory package to help you track the freshness, compliance status, and regulatory validity of your products throughout their lifecycle.

These dates travel with the package through splits, transfers, and facility moves, and can be printed on labels, viewed in the All Packages grid, and reported on in your analytics.

In addition to the shelf life dates you manage on packages, Flourish uses several system-derived dates to calculate how old your inventory actually is. These are used in the Inventory Aging dashboard and analytics and are described at the end of this article.

The Six Shelf Life Date Fields

Production Date

The date the inventory was physically produced. This field is always present. It serves as the baseline for calculating shelf life dates.

Packaged Date

The date the inventory was physically packaged. This field is always present and is optional. It serves a regulatory purpose by indicating when the inventory was packaged, which may occur after it was produced.

Expiration Date

The date after which the product should no longer be sold or consumed. For regulated products, this date is often required by your state compliance program. In Flourish, you can configure Expiration Date on a per-item basis; when required, it must be entered before a package can be created.

Sell By Date

The last date the product should be offered for sale. This is distinct from the expiration date. A product may still be safe to consume after its sell by date, but retailers use it to manage inventory rotation. Like Expiration Date, Sell By Date can be configured as required on specific items.

Use By Date

The date by which the product is recommended to be used for best quality. This field is optional and item-configurable. It is most commonly used by operators who want to communicate a quality-based timeline to customers separate from the hard expiration.

Lab Test Expiration Date

The date on which the Certificate of Analysis (COA) for this package expires. Lab test results are typically valid for one year from the date testing was performed. Once a COA expires, the package can no longer be legally sold in some regulated markets. Thus, it is effectively dead stock regardless of its physical condition or age.

This date is specific to cannabis inventory and is derived from the lab result associated with the package. It is distinct from product expiration: a package can be within its product shelf life but still be unsellable due to an expired COA.

Configuring Date Requirements on Items

Each product date field (Expiration, Sell By, and Use By) can be toggled as required on a per-item basis from the Item Master. When a date is marked required for an item, operators will not be able to create a package of that item without entering the date.

Packaged Date is always required. Lab Test Expiration Date is derived from your lab results and does not need to be configured on the item.

To configure date requirements:

  1. Navigate to Items and open the item you want to configure
  2. Under the item's settings, locate the Shelf Life section
  3. Toggle on any dates that should be required when creating inventory for this item
  4. Save the item

How Dates Are Set When Creating a Package

When you create a new package, the shelf life date fields appear on the confirmation screen.

If you are creating a package from one or more source packages that already have shelf life dates, Flourish will pre-fill the dates by inheriting from the source. You can always override this before confirming.

Dates on Splits and Child Packages

When you split a package or create a new package from existing inventory, shelf life dates are automatically inherited from the parent package. The inherited values appear pre-filled on the confirmation screen and can be adjusted before the package is created.

This ensures that child packages maintain traceability back to the original shelf life expectations without requiring manual re-entry.

Dates on Transfers

Shelf life dates travel with the package on all transfers between facilities. When a package is received at a destination facility, its date values are preserved as-is. Operators at the receiving facility can see the dates in the package detail and All Packages grid.

For inbound transfers from external operators (via Metrc or BioTrack), any dates provided by the sender are pulled in during receipt.

Viewing Dates in the All Packages Grid

Expiration Date, Sell By Date, Use By Date, and Lab Test Expiration Date are available as optional columns in the All Packages grid. They are hidden by default and can be enabled using the column picker. All columns support sorting and filtering, making it easy to identify inventory approaching key dates.

Printing Dates on Labels

All product shelf life date fields (Packaged Date, Expiration Date, Sell By Date, Use By Date) are available as merge fields in the Label Maker. You can add them to any label template by inserting the corresponding field from the available fields list. They are also available via the Label API and in BarTender templates for operators using direct print integrations.

Lab Test Expiration Date is not typically printed on customer-facing labels but is available for internal label workflows.

State Compliance Notes

Some states require specific shelf life dates to be submitted to their compliance system when creating packages. Flourish passes all populated date fields to Metrc automatically.

New York (OCM): Effective May 15, 2026, Expiration Date and Sell By Date are required by the Office of Cannabis Management for all final form, count-based (Each) items. If your facility is licensed in New York and you create packages of Each items, these two fields will be enforced as required regardless of your item-level configuration.

How Flourish Determines Inventory Age

In addition to the shelf life dates you manage on packages, Flourish tracks several system-derived dates that are used to calculate how old your inventory actually is. These dates are not entered or edited by operators — they are recorded automatically as inventory moves through your operation.

These dates power the Inventory Aging dashboard and analytics, where Flourish uses them to classify inventory into aging buckets, flag dead stock, and calculate financial risk metrics. For a full breakdown of how aging is calculated and what actions to take, see the Inventory Aging documentation.

Production Date

The date a manufactured product was produced. This is the primary age date for processed goods such as edibles, concentrates, and infused products. When available, Flourish uses this as the most accurate indicator of how long a product has existed.

Harvest Date

The date a cultivation batch was harvested. This is the primary age date for flower and other harvest-derived products. For cultivation operators, this is typically the most meaningful measure of product age.

Lot First Seen Date

The earliest date any package in a given lot was created in the system. This is used when neither a production date nor a harvest date is available, and gives a reasonable approximation of when a lot of inventory entered the operation.

Package Timestamp

The date and time the package record was created in Flourish. This is the fallback age date when no other date is available. It is the least precise of the four options but ensures every package has an age calculation.

How Flourish Selects the Age Date

Flourish applies a priority waterfall to select the best available age date for each package:

Priority

Date

Best For

1

Production Date

Manufactured goods

2

Harvest Date

Flower and cultivation products

3

Lot First Seen Date

Lots without a production or harvest date

4

Package Timestamp

All other inventory

The selected date is used to calculate days old and assign each package to an aging bucket (0–30 days, 31–60 days, and so on through 181+ days). All four individual date options and their corresponding days-old values are also available in analytics for operators who want to analyze aging from a specific date perspective.

For more information on aging buckets, dead stock flags, financial risk metrics, and how to act on aging inventory, see the Inventory Aging documentation.

Frequently Asked Questions

Do I have to use all shelf life date fields? No. Only the fields you configure as required on an item will be enforced. Lab Test Expiration Date is populated automatically from your lab results. The others are optional unless your state compliance program or item configuration requires them.

What happens if my lab test expires? A package with an expired COA cannot be legally sold in most regulated markets. Flourish flags these packages as dead stock in inventory reporting so they are surfaced for immediate action to write-off, remediation, or re-testing if permitted by your state.

Can I edit shelf life dates after a package is created? Yes. Shelf life dates can be edited on an existing package from the package detail view, subject to your user permissions.

What is the difference between Sell By and Use By? Sell By is a retail-facing date used to manage inventory rotation. It indicates the last date a product should be on the shelf. Use By is a quality-facing date indicating when the product is best consumed. Both are optional in Flourish unless required by state regulation or your item configuration.

What is the difference between Expiration Date and Lab Test Expiration Date? Expiration Date is a product attribute indicating when the physical product expires. Lab Test Expiration Date is a compliance attribute indicating when the COA for that product expires, which is typically one year after the test date. Both can independently make a package unsellable.

Why does the Inventory Aging dashboard show a different age than I expect? Flourish selects the most accurate age date available using the priority waterfall described above. If a package has a production date, that will be used rather than the package creation date. You can view all four individual age dates in the Inventory Aging analytics to understand exactly how the age is being calculated for any given package.

How did we do?

Inventory: Upload PDF To Record Lab Test Results

Refresh Inventory of Non-Cannabis Items

Contact