Pharmaceutical distribution is unglamorous, expiry-driven inventory work at a scale where a spreadsheet stops being viable somewhere around a few hundred SKUs, and Acumatica's Distribution Edition is built for exactly that shape of problem. This is the second vertical in this cluster I can recommend without hedging — the native inventory engine, not a bolt-on module, does the heavy lifting.
FEFO, not FIFO, and why the difference is configuration not code
Acumatica's issue methods for lot/serial-tracked items include an Expiration method — pick the soonest-to-expire lot first — alongside FIFO, LIFO, and Sequential. For pharma distribution this should be the default issue method on every expiry-tracked item, set at the Lot/Serial Class level so it is not something a warehouse picker can override by habit.
Lot/Serial Class: PHARMA-EXP
Segment Key: Assigned at Receipt
Track Expiration Date: Yes
Issue Method: Expiration (FEFO)
Days before Expiration
to warn on issue: 30
Profile: Lot Numbered
The 30-day warning threshold is a soft control — it flags a pick that would issue near-expiry stock, but a warehouse user can still confirm it. For controlled categories, some clients back that with a workflow approval step on the shipment so a near-expiry pick needs sign-off rather than a dismissible warning. That is a small customization on the Shipment screen's persist logic, not a platform limitation.
Controlled-substance-adjacent inventory discipline
I am careful with the word "controlled substance" — Acumatica has no native DEA Schedule II-V workflow, no ARCOS reporting, and no built-in chain-of-custody signature capture. If you distribute scheduled drugs in the US, that regulatory layer is a specialized add-on or a dedicated system, full stop. What Acumatica does give you natively, which covers a large share of the actual inventory discipline: full lot genealogy from receipt to shipment, a hard audit trail on every inventory transaction (who, when, quantity, lot), and role-based restriction on who can perform inventory adjustments versus who can only view them. That is real infrastructure a controlled-substance compliance layer would sit on top of, not a substitute for it.
The genealogy trace is only as good as your receiving discipline. If a receiving clerk keys a lot number by hand and typos it, the trace breaks silently — the system will not tell you it lost the thread. I run a mock recall with every pharma distribution client during UAT: pick a real lot, ask them to find every customer shipment that contains it, and time it. If it takes longer than fifteen minutes, the gap is almost always inconsistent lot capture at receiving, not a system limitation.
Temperature and cold-chain: outside the ERP's job
Some pharma distribution involves cold-chain product. Acumatica has no temperature-monitoring capability — that data comes from IoT sensors or a warehouse management system and gets attached to the lot record via the REST API as a custom attribute or a linked document, at best. Do not let a client believe the ERP is monitoring cold-chain integrity; it is recording data that a monitoring system feeds it.
Wrapping up
For expiry-driven pharma distribution, Acumatica's native FEFO issuing, lot genealogy, and inventory audit trail are genuinely strong and need no apology. Scheduled-substance regulatory workflows and cold-chain monitoring are not native — plan for a specialized integration for those, and use the ERP's real strength (traceable, auditable inventory movement) as the foundation they sit on.
Independent software engineer in Nairobi specialising in Acumatica customisations, Laravel backends, and tax fiscalisation integrations across East and Southern Africa.