Free AuditEnterprise AIShelfSense
Back to Blog
PharmacyApr 18, 202612 min read

340B Inventory Tracking — The Compliance Gap That HRSA Audits Catch First

Most 340B audit findings are inventory-tracking failures, not sophisticated diversion. The 4 rules, the 5 typical gaps, and the practical fixes for covered entities.

SE

ShelfLifePro Editorial Team

Inventory management insights for retail and pharmacy

Why 340B inventory is the audit risk most covered entities underestimate

The 340B Drug Pricing Program is one of the largest sources of working-capital relief for safety-net providers in US healthcare. It's also one of the most heavily audited programs HRSA runs. The audit findings that come up most often aren't sophisticated — they're inventory-tracking failures. Specifically: lots of 340B-purchased product getting dispensed to patients who weren't 340B-eligible, lots of GPO-purchased product getting dispensed to 340B-eligible patients, and the "virtual inventory" that hospitals run not actually reconciling with physical reality.

This post is the no-nonsense walkthrough of where the inventory gaps usually live and what disciplined tracking looks like.

Free Tool

Not sure how much you're losing to expiry?

Run a free inventory waste audit — find your bleeding SKUs in 60 seconds. No sign-up required.

Run free audit

The four 340B inventory rules that govern everything

Rule 1 — Patient eligibility tied to dispense. A 340B-purchased unit can only be dispensed to a patient who meets the 340B definition of patient (under HRSA guidance). If your pharmacy dispenses a 340B-priced unit to a non-eligible patient, that's a diversion finding.

Rule 2 — GPO prohibition for hospital outpatient. If you're a covered entity using the Group Purchasing Organization prohibition (most disproportionate share hospitals), you can't use GPO pricing for outpatient drugs purchased through the 340B program. Mixing the two pools — running a 340B drug through a GPO order or vice versa — is a finding.

Rule 3 — No duplicate discounts. A drug can either be 340B-priced OR Medicaid-rebated, never both. If you bill Medicaid for a 340B-purchased unit and the manufacturer pays a Medicaid rebate on it, that's a duplicate discount and a finding.

Rule 4 — Physical-virtual inventory match. If you run a virtual inventory model (most covered entities do), the system must reconcile to physical inventory regularly. HRSA audits often find that the virtual books and the warehouse / pharmacy floor don't match.

Where 340B inventory typically breaks

Receiving. The split-billing system flags a unit as 340B-eligible at receipt, but staff put it on the same shelf as the GPO-purchased unit of the same NDC. Now you can't tell which physical unit is which without serial-level tracking.

Dispensing. The pharmacy software dispenses whichever unit is closest at hand — FEFO if you're disciplined, "whatever's grabbed" if you're not. The system records "dispensed NDC X to patient Y," but the link back to the specific 340B-vs-GPO purchase batch is lost.

Reconciliation. The end-of-month reconciliation shows the virtual 340B inventory expected to be 1,200 units, but the physical count comes in at 1,150. The 50-unit gap is unexplained. HRSA wants to know why.

Replenishment ordering. The accumulator tells you that you've dispensed 800 units of 340B-eligible NDC X this month, so you order 800 to replenish the 340B account. But the physical pharmacy actually dispensed 850 of that NDC to 340B-eligible patients, plus 100 to non-eligible patients. The replenishment math drifts every month until reconciliation.

What disciplined 340B inventory looks like

A pharmacy that's HRSA-audit-ready has all of the following baked into the workflow:

  • Every receipt of a covered NDC tags the units as 340B vs GPO at the lot or unit level. No "we'll figure it out later."
  • Every dispense records both the patient eligibility status AND the inventory pool the unit came from. If those two don't match, the system flags it for review.
  • The accumulator (the system that tracks how many 340B-eligible units have been dispensed and triggers replenishment ordering) reconciles to physical count weekly, not monthly. Smaller drift windows = smaller findings.
  • There's an audit trail showing every adjustment — every transfer between 340B and GPO pools, every write-off, every receipt — with timestamp and the user who made the change.
  • Duplicate-discount checks run automatically: if a 340B-purchased unit is dispensed to a Medicaid patient, the system either prevents the Medicaid claim or flags it for billing review before submission.

The cost of a 340B audit finding

HRSA audit findings range from "corrective action plan required" to "removal from the 340B program." Removal is rare but devastating — it eliminates the working-capital benefit that funded the safety-net mission in the first place.

More commonly, findings result in:

  • Repayment of the 340B savings on the affected units (sometimes hundreds of thousands of dollars)
  • Mandatory third-party audit (annual cost: $30k-$80k)
  • Mandatory monthly self-audit reporting
  • Public listing of the finding on HRSA's website
  • Heightened scrutiny on subsequent audits

The reputational and operational cost almost always exceeds the dollar repayment. Avoiding findings is far cheaper than remediating them.

The practical fix — five things to put in place this quarter

1. Lot-level pool tagging. Every NDC unit should be tagged 340B or GPO at receipt. If your software supports it, do unit-level. If not, do lot-level — at minimum, the lot tag travels with the units through dispensing.

2. Real-time accumulator reconciliation. Move from monthly reconciliation to weekly (or daily, if your software supports it). Smaller windows catch drift before it compounds.

3. Duplicate-discount automation. Build a check into your billing flow that prevents Medicaid claims for 340B-purchased units (or routes them through your replenishment partner / TPA).

4. Audit trail completeness. Every inventory adjustment — receipts, dispenses, transfers, write-offs, mistakes — needs a timestamp and a user. No "ghost" adjustments.

5. Quarterly internal mock audit. Before HRSA audits you, audit yourself. Pick a random 10-20 NDCs, trace each unit from receipt through dispense, and confirm the eligibility status matches the inventory pool. Findings here are cheap to fix; findings HRSA discovers are not.

Where ShelfLifePro fits

ShelfLifePro tracks lot at receiving and ties every dispense back to the originating lot. For 340B-using pharmacies, the lot becomes the carrier of the 340B-vs-GPO tag. The audit trail is built in. The reconciliation reports run on demand. We're not a replacement for a dedicated 340B TPA — we're the inventory backbone they integrate with.

If you're managing 340B inventory in spreadsheets or in a system that doesn't support lot-level tagging, start a free trial and run a mock audit drill on day one.

Related reading

SE

ShelfLifePro Editorial Team

The ShelfLifePro editorial team covers inventory management, expiry tracking, and waste reduction for pharmacies, supermarkets, and retail businesses worldwide.

Inventory backbone for 340B operations

ShelfLifePro tracks lot at receiving and ties dispense back to the originating pool. Free 14-day trial — run a quarterly mock audit on day one.

Newsletter

Weekly expiry-tracking playbook

One short email every Tuesday. FEFO tactics, markdown math, and real-world waste-reduction wins. Unsubscribe anytime.

No spam. Unsubscribe in one click.