Skip to content

Products & Variants

Manage your full product catalog. A product is the parent container; a variant is the trackable SKU that moves through inventory. Each variant carries its own cost, price, barcode, unit of measure, and per-location stock. Purchase orders, transfers, production, and COGS all read from this catalog.

Key capabilities

  • Products and variants with create, edit, and archive (archiving preserves history)
  • Per-variant SKU, manufacturer SKU, and barcode (UPC/EAN/QR)
  • Unit cost and price per variant
  • Standard cost history: dated standard costs per variant for standard-cost COGS
  • Automatic profit margin (price − cost) per variant
  • Unit of measure per variant (EA, LB, OZ, G, KG, ML, L, CASE, BOX)
  • Default vendor per variant for reorder suggestions and draft POs
  • Per-location on-hand and available quantities with reorder point and quantity
  • Manual stock adjustments with a required reason; they post to the books and update cost lots
  • Scan / SKU lookup in the toolbar jumps straight to a variant's product
  • Product categories: Finished Goods, Intermediate Goods, Raw Materials (Ingredients), Packaging
  • Bulk unit-cost update via CSV export → preview → apply
  • Opening stock via Initial Inventory on a new variant or the Import from Spreadsheet wizard
  • Convert a standalone product into a variant of another product
  • Optional expiration tracking (FEFO instead of FIFO) per product

How it works

Products group related SKUs. Each variant owns cost, price, and a stock level per location. Adjustments and receipts update the per-location level.

flowchart TD
  product["Product"] --> v1["Variant / SKU"]
  product --> v2["Variant / SKU"]
  v1 --> level["Stock per location"]
  level --> reorder{"Below reorder point?"}
  reorder -->|"Yes"| alert["Low-stock alert"]
  v1 --> adj["Manual adjustment"]
  adj --> level

How to use it

  1. Open Inventory and select the Products tab.
  2. Click New Product, enter a name, and optionally set a category and expiration tracking.
  3. Expand the product and click Add variant for SKU, manufacturer SKU, barcode, price, cost, unit of measure, default vendor, inventory category, and initial inventory.
  4. Read per-variant stock badges for on-hand and available across locations.
  5. Click a product row for its detail page, then Adjust on a variant under Stock by Location: choose Add units or Remove units, enter a quantity, pick a location and a reason.
  6. Use search, All / Manual / Shopify / Archived, the Category buttons, Low stock, and Grouped / Flat SKUs in large catalogs.
  7. The detail page also shows Standard cost history, Vendor Sources, Related Recipes, Reorder Settings, Active Purchase Orders, and recent activity.
  8. Click Unit Costs to export variant costs, edit them in a CSV, and upload to preview and apply.

Pro tips

  • Products group items (T-Shirt); variants are what you stock and sell (Medium / Blue). Stock lives on the variant, per location.
  • Set a default vendor on each variant — reorder suggestions need one.
  • Use Standard cost history to record dated standard costs when your COGS basis is standard cost (see Production & Costing).
  • Archive instead of delete — history and stock ledger stay intact.
  • Load opening stock with Initial Inventory or the spreadsheet import instead of adjustments, which post to the books.
  • Enable expiration tracking on perishables for FEFO consumption.

In-depth guide

Stock fields

Field Meaning
On hand Physical units at the location (decimals supported)
Available Allocatable units
Reorder point Triggers low-stock alert when available falls below
Reorder quantity Suggested reorder amount

A manual removal larger than the available quantity is rejected. Stock can still show negative if sales outrun what was received, which is flagged as oversold.

Adjustments

Manual adjustments require a reason: Shrinkage, Damage, Expired, Count variance, Theft, Transfer correction, Customer return, Receipt correction, Found inventory, or Other. Each change updates the stock level and is recorded in the stock history. When the variant has a cost, the adjustment also posts a journal entry between Inventory and Inventory Adjustments (or your mapped category ledgers), removing cost lots on a decrease and adding one on an increase.

Bulk unit cost: export active variants as CSV, edit the New unit cost column, preview, and apply. Convert to variant (on a product row) moves a product's variants under another product and archives the source. Archive hides a product or variant and can be reversed with Restore; a variant with no stock, history, or order, shipment, transfer, or count lines can also be deleted permanently.

Variants with a Stripe connection mirror to Stripe Catalog. Shopify and Square IDs link variants for inventory sync. Barcode/SKU lookup resolves a single non-archived variant for scanner-driven flows.