← Data Analysis

Medicaid Provider Spending

An interactive look at public Medicaid provider spending data, 2018 to 2024.

Why This Data

As a nurse, I've worked at the front line of healthcare, where care is actually delivered. This dataset was a chance to see one of the system's most important parts from the other side: how Medicaid pays for that care, and where the money goes.

Medicaid is one of the largest parts of the U.S. healthcare system. Together with CHIP, it covered about 73 million people in June 2026, nearly half of them children,2 and in 2024 Medicaid spending reached $931.7 billion, about 18% of all U.S. health spending.3

The charts below show what the public data says, as plainly as possible: how much was paid, for what services, to whom, and how that changed over time. How the data was prepared, how the numbers were checked, and what the data can't tell us are all covered further down.

These figures match HHS's own published charts to the cent

HHS publishes example charts for this dataset. Recomputed on the same date window, the top 20 procedures, top 20 billing providers, and all 72 monthly totals here match them exactly, same items in the same order. How the numbers were checked

The Data

Dataset
Medicaid Provider Spending by HCPCS1
Publisher
U.S. Department of Health and Human Services, HHS Open Data
Underlying data
CMS T-MSIS, the system states use to report Medicaid and CHIP claims
Version
Published February 9, 2026
Accessed
May 19, 2026
Coverage
January 2018 to December 2024; fee-for-service, managed care, and CHIP; all states and territories
One row equals
One billing provider × one servicing provider × one procedure code × one month
Size
10.76 GB CSV, 238,015,729 rows

What the Data Shows

Date range

Loading data…

Total paid per month

Spending rose from in 2018 to in 2023, an increase of . Monthly spending fell between January and April 2020, at the start of the COVID-19 pandemic, and was back to January's level by October. Through October, 2024 ran ahead of the same months of 2023. November and December 2024 drop far below every other month, which fits CMS's note that 2024 data are preliminary, so they are marked as incomplete.

Hover or use the arrow keys to read any month. Dollars are not adjusted for inflation.

How this was calculated
SELECT CLAIM_MONTH, SUM(TOTAL_PAID), SUM(TOTAL_CLAIM_LINES), SUM(TOTAL_PATIENTS)
FROM prepared_data GROUP BY CLAIM_MONTH ORDER BY CLAIM_MONTH
Full script on GitHub

Top 20 procedure codes by total paid

Personal care services lead, at over 2018 to 2024. Many of the top 20 are home and community-based services, such as personal care, attendant care, habilitation, and adult day care: care that helps people live at home or in the community. Office visits and emergency department visits are the most common medical services on the list.

Descriptions are HHS's own short labels for these HCPCS codes.

† State-specific code. States create their own codes for services that don't fit the national system, and these have no public description. Z9525 is one row per month with no billing or servicing provider listed.

How this was calculated
SELECT HCPCS_CODE, SUM(TOTAL_PAID), SUM(TOTAL_CLAIM_LINES)
FROM prepared_data
WHERE YEAR(CLAIM_MONTH) BETWEEN :first_year AND :last_year
GROUP BY HCPCS_CODE ORDER BY SUM(TOTAL_PAID) DESC LIMIT 20
Full script on GitHub

Top 20 billing providers by total paid

All 20 are organizations, including county mental health departments, state disability agencies, and home care organizations. The largest, Public Partnerships LLC, is a fiscal intermediary for self-directed care: Medicaid members hire their own caregivers, who can include friends or family, and the intermediary processes their wages.5 A large total usually reflects how many people a provider serves.

Names, locations, and provider types from the CMS NPI Registry.4 Excludes spending with no billing provider listed.

‡ Tennessee's Department of Intellectual and Developmental Disabilities bills under two NPIs, so it appears twice, as it does in HHS's chart.

How this was calculated
SELECT BILLING_PROVIDER_NPI_NUM, SUM(TOTAL_PAID)
FROM prepared_data
WHERE YEAR(CLAIM_MONTH) BETWEEN :first_year AND :last_year
  AND BILLING_PROVIDER_NPI_NUM <> 'UNKNOWN'
GROUP BY BILLING_PROVIDER_NPI_NUM ORDER BY SUM(TOTAL_PAID) DESC LIMIT 20
Names come from the public NPI Registry API (lookup script).

How spending is spread across billing providers

Over 2018 to 2024 the typical (median) billing provider received in total. of providers received under $100K each, together of the dollars, while the providers above $100M ( of providers) received .

Columns count providers; hover a column for its share of dollars. The darkest column holds the median provider. Excludes with no billing provider listed.

How this was calculated
SELECT BILLING_PROVIDER_NPI_NUM, SUM(TOTAL_PAID) AS provider_total
FROM prepared_data
WHERE YEAR(CLAIM_MONTH) BETWEEN :first_year AND :last_year
  AND BILLING_PROVIDER_NPI_NUM <> 'UNKNOWN'
GROUP BY BILLING_PROVIDER_NPI_NUM
-- then each provider_total is counted into its range
Full script on GitHub

A Closer Look: How Medicaid Billing Works

Every row in this dataset names two providers. The billing provider is the one Medicaid paid. The servicing provider is the one recorded as delivering the care. Often they are the same, such as a clinic billing for its own visits. They differ when an organization bills for care delivered by its staff or contractors, or when an intermediary bills on behalf of caregivers, as in the self-directed care programs mentioned above. Neither case suggests anything unusual; it is how much of Medicaid billing is structured.

The chart splits each year's dollars four ways, including money where one of the two providers isn't listed at all.

Share of dollars by billing and servicing provider

Each year, between and of dollars went to providers billing for their own services. of all dollars over 2018 to 2024 have no billing provider listed.

How this was calculated
SELECT YEAR(CLAIM_MONTH),
  CASE WHEN BILLING_PROVIDER_NPI_NUM = 'UNKNOWN' THEN 'Billing provider not listed'
       WHEN SERVICING_PROVIDER_NPI_NUM = 'UNKNOWN' THEN 'Servicing provider not listed'
       WHEN BILLING_PROVIDER_NPI_NUM = SERVICING_PROVIDER_NPI_NUM THEN 'Same provider'
       ELSE 'Different provider' END,
  SUM(TOTAL_PAID)
FROM prepared_data GROUP BY 1, 2
Full script on GitHub

What "not listed" means. The dataset's documentation keeps claim lines whose provider number is blank, and the blank shows up here as "not listed." The documentation doesn't say why a provider number is missing, so this page doesn't guess. It includes all of the state-specific code Z9525 from the procedure chart above.

How the Data Was Prepared

The raw file is too large for a spreadsheet, so I converted it to Parquet, a compressed columnar format, and queried it with DuckDB. Each step and its effect on the row count and total:

Why procedure code 20 was removed. Its 34 rows add up to , about times all U.S. health spending from every source in 2024 ($5.3 trillion).3 Payments that large can't be real, so they were treated as a data error. Every other row was kept, including rows with negative payments ( in total), which are most likely payment corrections; the dataset includes finalized adjusted claims.

How the numbers were checked

The checks run automatically every time the numbers are rebuilt, and the build fails if any don't pass. The scripts and summary data are on GitHub. My full exploration notebook is available on request at [email protected].

What the Data Can't Tell Us

Glossary

NPI
National Provider Identifier: a unique 10-digit number every U.S. healthcare provider, person or organization, uses on claims.
Billing provider
The provider that submitted the claim and was paid by Medicaid.
Servicing provider
The provider recorded as actually delivering the service. It can differ from the billing provider.
HCPCS / procedure code
The standard code on a claim that says what service was provided, such as an office visit or an hour of personal care.
Claim line
One service on a claim. A single claim with three services has three claim lines.
Patient-service count
Unique patients within one row (one provider pair, code, and month). Added across rows, the same person is counted more than once.
CHIP
Children's Health Insurance Program: coverage for children in families that earn too much for Medicaid but can't afford private insurance.
T-MSIS
Transformed Medicaid Statistical Information System: the system all states use to send Medicaid and CHIP data to CMS each month.

Sources

  1. U.S. Department of Health and Human Services. Medicaid Provider Spending by HCPCS. HHS Open Data, published February 9, 2026. Accessed May 19, 2026.
  2. Centers for Medicare & Medicaid Services. Medicaid & CHIP Enrollment Data Highlights, June 2026.
  3. Centers for Medicare & Medicaid Services. National Health Expenditure Fact Sheet, 2024 data.
  4. Centers for Medicare & Medicaid Services. NPPES NPI Registry.
  5. New York State Department of Health. Consumer Directed Personal Assistance Program (CDPAP).
  6. U.S. Department of Health and Human Services. Example charts for Medicaid Provider Spending by HCPCS (Examples tab), FY2019 to FY2024.

Want to make sense of your own data, or learn to use AI for it? I can help. Get help