Analysis 002 · CMS pharmacy acquisition cost survey, 2019 to 2026 · Cost Plus catalog history, 2022 to 2026 · Published September 2026

Does acquisition cost fall after Cost Plus adds a generic?

We tested 1,069 generics Cost Plus added to its catalog against 773 generics it never carried. Raw, a Cost Plus generic costs pharmacies 10.5% less a year after it enters the catalog. Most of that gap was opening before entry: Cost Plus picks generics whose prices are already falling. After removing each drug's own trend, what remains is a short dip that has closed by twelve months, except among generics over $1 a unit, where the drop holds near 10%.

1,069
generics Cost Plus added, 2022 to 2026, against 773 it never carried
raw difference at 12 months, before the trend correction
trend-adjusted at 12 months. The interval includes zero.
trend-adjusted at 12 months for the 244 generics over $1 a unit

The price path around catalog entry

Each point is the average change in a treated drug's acquisition cost relative to the controls, measured from its own price in the six months before entry. Month 0 is the month the drug first appears in the Cost Plus catalog. A real effect would show a flat line before month 0 and a drop after it. The line is not flat before month 0: treated drugs were already falling relative to controls, 7.2% a year on average.

treated minus control, raw95% interval

Difference-in-differences by month since entry. Positive values before month 0 mean treated drugs were priced above their later trend relative to controls, which is the selection the adjustment removes. n between 1,025 and 1,065 drugs per point.

Raw and trend-adjusted, by horizon

The trend-adjusted number subtracts each drug's own pre-entry slope relative to controls, fit over months -12 to -1. It is the number to quote. The placebo shifts every entry date back 18 months and reruns the same estimator; a real effect should vanish there. The raw placebo does not vanish, which is the pre-trend again. The adjusted placebo sits near zero through 6 months and drifts negative after, so treat the adjusted estimates as an upper bound on any effect.

Percent change in acquisition cost relative to controls, with 95% cluster-bootstrap intervals (300 replications, resampling drugs). Placebo columns use the same estimator with entry dates shifted back 18 months.

Where the effect is real

Split by the drug's acquisition cost before entry, the effect concentrates entirely in the top tier. Generics that cost pharmacies more than $1 a unit before Cost Plus added them show a trend-adjusted drop of about 10% at twelve months, with an interval that excludes zero, and the drop is still visible at 24 months. Generics under $0.25 a unit show nothing, or a small rise: at that level the survey sits near its rounding floor and manufacturer exits push prices up.

By pre-entry price per unit. Tier boundaries are $0.05, $0.25, and $1 per unit (tablet or capsule).

By entry cohort, the launch batch of January 2022 shows a small adjusted drop at twelve months. The 2023 Q4 mass expansion (346 drugs) shows a larger dip at six months that is gone by twelve.

Reading

Adding a generic to the Cost Plus catalog is not followed by a lasting drop in what pharmacies pay for it, except among expensive generics. Cost Plus's savings for the patient come from the markup it removed between acquisition cost and the counter, not from moving the acquisition cost itself. That is consistent with how the company describes its own model, and it is the honest version of the "Cost Plus Effect": real where the margin above acquisition cost was largest, absent where generics were already near the floor.

The 1,069 drugs

One row per generic (ingredient, strength, and form), with its catalog entry month, its acquisition cost per unit before entry, and the raw and trend-adjusted change at 12 and 24 months relative to controls. Search by drug or ingredient. Click a column to sort.

Drug Entered catalog Cost per unit before entry Raw, 12 mo Adjusted, 12 mo Raw, 24 mo Adjusted, 24 mo Tier

Download per-drug CSV Download JSON 1,069 rows. The JSON carries every summary on this page.

Method

Question. When Cost Plus Drugs starts carrying a generic, does the retail pharmacy acquisition cost of that drug fall relative to comparable generics Cost Plus does not carry?

  • Unit: a clinical drug (ingredient, strength, and form), generic oral solid forms only, identified through RxNorm.
  • Outcome: the log of the monthly median acquisition cost per unit across the drug's generic NDCs, from the CMS National Average Drug Acquisition Cost survey (NADAC), 2019 to 2026. Months with fewer than two priced NDCs are excluded.
  • Treatment date: the month the drug first appears in the Cost Plus catalog, from Internet Archive captures of the site's sitemap and medication pages. Products in the first archived sitemap (January 2022) are dated to that month; Cost Plus launched on 2022-01-19.
  • Treated: 1,069 drugs matched to a Cost Plus product with at least three of the six pre-entry months observed. Controls: 773 generic oral solid drugs never matched to a Cost Plus product.
  • Estimator: stacked difference-in-differences. For each treated drug, the change in log price from its pre-entry baseline (mean of months -6 to -1) to month +k, minus the same change over the same calendar months averaged across control drugs. The reported effect is the mean across treated drugs. Intervals: cluster bootstrap over drugs, 300 replications.
  • Trend adjustment: each drug's pre-entry slope relative to controls, fit over months -12 to -1, extrapolated and subtracted at each horizon.

What this can and cannot say. NADAC is a survey of retail pharmacy invoices. It moves with generic competition, shortages, and manufacturer exits regardless of Cost Plus; the controls absorb the common trend, not drug-specific shocks. Cost Plus chooses which drugs to carry, so treated drugs are not a random sample; the pre-entry points and the placebo are the guards against that, and the adjusted placebo shows they are imperfect at long horizons. The catalog entry month is an upper bound: a drug may have been listed before the first capture that shows it. This is a market-level association. It does not identify the channel, and it says nothing about drugs that could not be matched to RxNorm (topicals, liquids, brands). Reproduce it with the script named in the JSON.