Multi-warehouse, multi-tenant US-based support Talk to sales
Inventory & Warehouse

Lots, expiry, and FEFO picking — built for product that goes bad.

Real lot-level inventory, automatic FEFO assignment, expiry-driven write-offs, and FSMA-204 traceability — the inventory engine food distributors actually need.

APFoods inventory dashboard

Generic ERPs treat inventory as a number. Food distribution is lots.

A SKU isn't enough. You need to know which 50-lb case of Striploin goes out the door — by lot, by receive date, by supplier, by expiry. Pick the wrong one and you've got a recall problem, a returns problem, or a write-off you didn't see coming.

APFoods runs lot-first. Every receipt creates a lot. Every pick consumes from a specific lot. Every report rolls up to FSMA-204-ready traceability.

What's in the inventory module.

The complete warehouse operating layer.

Lot-level inventory

Every receive creates a tracked lot — supplier, PO, expiry, location, status. Pick logs draw from specific lots, not "the SKU."

FEFO auto-pick

Picks default to first-expiry-first-out across the warehouse, with manual override when operations need it.

FSMA-204 traceability

Critical Tracking Events captured at receive, transform, pick, and ship. One-click trace lookup forward and backward.

Expiry-driven write-offs

Daily auto-expiry task writes off expired lots and generates an URGENT warehouse task to physically remove product.

Receiving & putaway

Receiving dock workflow with QC hold, putaway suggestions to bin, and warehouse-app integration for putaway crews.

Cycle counts + transfers

Daily cycle counts, location-to-location transfers, lot quarantine and release — every move is auditable.

Lot management

FEFO order, expiry alerts, and a quarantine path for everything.

The Active Lots table is the warehouse manager's daily home base. Every lot is sortable by expiry, status, supplier, or zone. Quarantine, release, recall, and transform actions are one click away.

  • Expiry buckets — today, 7 days, 14 days, 30 days
  • FEFO compliance score per warehouse
  • Quarantine flow that locks the lot from picking until released
  • Recall workflow tied to FSMA-204 critical tracking events
Picking

Pick lists that know what's actually on the shelf.

Picks are generated from confirmed orders, sequenced by route load order, and pre-allocated to specific lots in FEFO order. The pick-list reconciles against truck-loading sequence so the first stop's product comes off the truck first.

  • Per-warehouse pick list generation with backorder reconciliation
  • Catch-weight handling — nominal weight at pick, actual weight at ship
  • Short-pick self-heal that auto-resolves orphaned reservations
  • Mobile picker app with barcode/QR confirmation
Warehouse mobile app

Scan-gun-driven picking and receiving — built for the warehouse floor.

The mobile app pairs with a Bluetooth scan gun so pickers and receivers work hands-on-the-product, not heads-down at a keyboard. Every pick is FEFO-ordered, every receive is QC-aware, every scan auto-advances to the next line.

  • Scan to confirm — no manual SKU entry, no transcription errors
  • Lot label scan locks the pick to the FEFO-selected lot
  • Receiving captures actual weight per case for catch-weight items
  • QC-hold flow surfaces inspection requirements before put-away
  • Short-pick and damage-flag paths built in — exceptions are first-class
Warehouse mobile app — picking Picking
Warehouse mobile app — receiving Receiving

Inventory FAQ

What's the difference between SKU-level and lot-level inventory?

SKU-level says "you have 200 cases of Beef Striploin." Lot-level says "you have 80 cases received 5/12 expiring 5/26, 60 received 5/14 expiring 5/28, 60 received 5/17 expiring 6/01 — and the pick consumed the 5/12 lot first." That precision is what makes recalls and write-offs survivable.

How does FSMA-204 traceability work?

Critical Tracking Events are captured at every CTE-defined point: receiving, transformation, shipping, and final-product creation. A single trace query returns both upstream (where did this lot come from?) and downstream (where did this lot go?) within seconds.

What happens when a lot expires?

A daily auto-expiry task scans every active lot. Anything past its expiry date is auto-written off with `reason=expired`, and an URGENT warehouse task is created so the physical product gets pulled off the shelf the same day.

Do you handle catch-weight (variable-weight) items?

Yes. Items can be flagged catch-weight with a nominal weight + tolerance percentage. The system handles weigh-at-pick or weigh-at-ship modes — actual weight rolls into invoicing automatically.

Can we run multiple warehouses on different SKUs?

Yes. Each warehouse has its own item catalog membership, locations, lots, and operating cut-offs. Cross-warehouse transfers move lots between DCs while preserving lot identity.

How are returns handled?

Returns can be received back into a quarantine location, inspected, and either disposed or returned to picking stock as a new lot with adjusted expiry. Every step is captured as a CTE.

See lot-level inventory in your warehouse.

We'll set up a sample SKU with three lots, walk through receive → putaway → pick → ship, and show you exactly what FSMA-204 trace lookup returns.

Book an inventory demo