Expiry Audits, FIFO, and Recalls: How to Stay Compliant and Ready
You stay compliant for expiry audits and recalls by tracking expiry and batch on every relevant item, using FIFO (or FEFO) when selling or issuing, and keeping batch-level reports so you can identify and isolate affected stock in a recall. One system that does all three keeps you audit-ready.
In this article
- How to prove you're using FIFO or FEFO in an audit
- How to run a recall when you have batch tracking
- The best way to track expiry dates for audits
- Expiry, FIFO, and recalls: one foundation
How do I prove I'm using FIFO or FEFO in an audit?
Your system should record which batch (and expiry) was used on each sale or issue. Audit trails that show "this sale used batch X, expiry Y" prove that you're following FIFO or FEFO. Reports that list stock by expiry and show movements by batch support that story. For pharmaceuticals and medical supplies, this is what auditors expect.
| Requirement | Your system must |
|---|---|
| Expiry and batch at receipt | Record expiry (and batch) at goods receipt for every relevant line |
| FIFO/FEFO at sale or issue | Suggest or enforce "oldest expiry first"; record batch/expiry used |
| Audit trail | Show "this sale/issue used batch X, expiry Y" for every movement |
| Reports | Stock by expiry and batch; movements by batch |
How do I run a recall when I have batch tracking?
When a batch is recalled, filter by batch (or batch range) in your system. You get: current stock (to quarantine and dispose) and sales/allocations (to notify customers or trace). The faster you can run that report, the faster you respond. For more on batch reporting, read batch-level reporting for regulatory compliance.
What's the best way to track expiry dates for audits?
Record expiry (and batch) at goods receipt. Use that data at sale to suggest or enforce "oldest expiry first." Keep reports that show stock by expiry and batch so auditors can verify. For a full walkthrough, see navigating expiry date audits.
Expiry audits, FIFO, and recalls all depend on the same thing: recording batch and expiry, and using them in every move.