{
  "slug": "pharmacy-generic-margin",
  "title": "Pharmacy Generic Drug Margin Calculator",
  "heading": "Pharmacy Generic Drug Margin Calculator",
  "category": "financial",
  "url": "https://www.revenuelab.fyi/toolbox/pharmacy-generic-margin",
  "summary": "Calculate true margin on a generic prescription after acquisition cost, dispensing fee, and DIR fees.",
  "description": "Independent pharmacies survive or fail on generic drug margin since brand-name reimbursement is often near or below acquisition cost. This calculator takes the reimbursement rate (typically calculated as a MAC or AWP-minus rate plus a dispensing fee), the pharmacy's actual acquisition cost for the drug, and estimated direct and indirect remuneration (DIR) fees that PBMs claw back after the point of sale, to compute true net margin per prescription. DIR fees are the critical and often underestimated variable — they're deducted retroactively, sometimes months after the fill, based on pharmacy performance metrics, and can turn an apparently profitable $8 margin fill into a net loss once clawed back. The calculator also shows margin as a percentage of reimbursement so you can compare across drugs of different price points. Pharmacies use this per-NDC to decide which generics to stock proactively versus order on-demand, since a drug with thin or negative margin after DIR fees may not be worth carrying inventory risk on, and to negotiate wholesaler pricing tiers where volume discounts can flip a marginal drug into a profitable one.",
  "formula": "Gross margin = reimbursement + dispensing fee − acquisition cost. Net margin = gross margin − estimated DIR fee.",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=pharmacy-generic-margin",
  "inputs": [
    {
      "id": "reimbursement",
      "label": "Ingredient cost reimbursement",
      "kind": "number",
      "hint": null,
      "default": 18.5,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "dispensingFee",
      "label": "Dispensing fee",
      "kind": "number",
      "hint": null,
      "default": 1.5,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "acquisitionCost",
      "label": "Pharmacy acquisition cost (NADAC/actual)",
      "kind": "number",
      "hint": null,
      "default": 12,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "dirFeePct",
      "label": "Estimated DIR fee (% of reimbursement)",
      "kind": "number",
      "hint": null,
      "default": 4,
      "unit": "%",
      "min": 0,
      "max": 20
    },
    {
      "id": "fillsPerMonth",
      "label": "Fills per month for this drug",
      "kind": "number",
      "hint": null,
      "default": 40,
      "unit": null,
      "min": 0,
      "max": null
    }
  ],
  "outputs": [
    {
      "id": "netMargin",
      "label": "Net margin per fill (after DIR)",
      "format": "currency",
      "hint": null,
      "primary": true
    },
    {
      "id": "monthlyProfit",
      "label": "Monthly profit on this drug",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "grossMargin",
      "label": "Gross margin before DIR fee",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "dirFeeAmount",
      "label": "Estimated DIR fee per fill",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "netMarginPct",
      "label": "Net margin as % of total reimbursement",
      "format": "percent",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Ingredient cost reimbursement: 18.5 $",
      "Dispensing fee: 1.5 $",
      "Pharmacy acquisition cost (NADAC/actual): 12 $",
      "Estimated DIR fee (% of reimbursement): 4 %",
      "Fills per month for this drug: 40"
    ],
    "outputs": [
      "Net margin per fill (after DIR): $7.26",
      "Monthly profit on this drug: $290",
      "Gross margin before DIR fee: $8.00",
      "Estimated DIR fee per fill: $0.74",
      "Net margin as % of total reimbursement: 36.3%"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter ingredient cost reimbursement ($).",
      "Enter dispensing fee ($).",
      "Enter pharmacy acquisition cost (nadac/actual) ($).",
      "Enter estimated dir fee (% of reimbursement) (%).",
      "Enter fills per month for this drug.",
      "Read your net margin per fill (after dir) on the right — it updates as you type.",
      "Hit Share to keep the scenario or send it to someone."
    ]
  },
  "scenarios": [
    {
      "name": "Conservative",
      "description": "Lower-end numbers — what if things land soft?",
      "values": {
        "reimbursement": 11.1,
        "dispensingFee": 0.8999999999999999,
        "acquisitionCost": 7.199999999999999,
        "dirFeePct": 2.4,
        "fillsPerMonth": 25
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "reimbursement": 18.5,
        "dispensingFee": 1.5,
        "acquisitionCost": 12,
        "dirFeePct": 4,
        "fillsPerMonth": 40
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "reimbursement": 29.6,
        "dispensingFee": 2.4000000000000004,
        "acquisitionCost": 19.200000000000003,
        "dirFeePct": 6.4,
        "fillsPerMonth": 65
      }
    }
  ],
  "limitations": [
    "Results are estimates before tax, fees, and inflation unless an input explicitly covers them.",
    "Rates are treated as fixed for the whole period — variable-rate products will drift from this projection.",
    "This is educational maths, not financial advice. Check anything contractual with the lender or your accountant."
  ],
  "faq": [
    {
      "q": "Why are DIR fees such a problem for independent pharmacies?",
      "a": "DIR fees are assessed after the point of sale, sometimes 60-90 days later, based on pharmacy performance scores the pharmacy can't fully see or control at the time of the fill. This makes real-time margin tracking nearly impossible and has been a major driver of independent pharmacy closures over the past decade."
    },
    {
      "q": "Where do I find my actual acquisition cost?",
      "a": "Use your wholesaler invoice cost for the specific NDC dispensed, not the published AWP or WAC price, which are list prices far above what pharmacies actually pay. NADAC (National Average Drug Acquisition Cost) from CMS is a reasonable public benchmark if you don't have exact invoice data handy."
    },
    {
      "q": "Should I stop stocking drugs with negative net margin?",
      "a": "Not automatically — some low or negative margin drugs drive foot traffic, keep patients on your other prescriptions, or are required for a specific patient population you serve. But track them explicitly rather than discovering the loss buried in aggregate pharmacy P&L."
    },
    {
      "q": "How much do 2024 DIR fee reforms change this math?",
      "a": "CMS finalized rules moving most Medicare Part D price concessions to point-of-sale starting 2024, which should reduce retroactive DIR clawbacks significantly for Part D claims specifically. Commercial and Medicaid PBM contracts may still use retroactive DIR-like fee structures, so verify per payer contract."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/urgent-care-visit-margin",
    "https://www.revenuelab.fyi/toolbox/patient-collections-rate-impact"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Pharmacy Generic Drug Margin Calculator (https://www.revenuelab.fyi/toolbox/pharmacy-generic-margin)"
}