Guide

IOP vs. PHP Billing in Behavioral Health: Codes, Differences, and Denials

IOP and PHP bill by their own rules. The codes, the difference between the two levels of care, and the denials to avoid.

Book a 20-Minute Consult

Overview

Why the Billing for IOP and PHP Is Not Interchangeable

Intensive Outpatient (IOP) and Partial Hospitalization (PHP) sit next to each other on the behavioral-health continuum, so it is easy to treat their billing as one problem. It is not. These are two distinct levels of care, and payers authorize, code, and reimburse them on separate tracks. When a claim describes one level but the chart, the authorization, or the bill type points to another, the result is a denial — or worse, a clawback months later after the money has been spent.

For a Portland behavioral-health program running both services, the difference between a clean PHP claim and a clean IOP claim comes down to a handful of details: the level of care, the hours documented, the codes selected, and the bill type submitted. Get those aligned and reimbursement is predictable. Get them crossed and you inherit appeals, refunds, and a frustrated finance team. This guide walks through what actually separates the two and how to bill each one correctly.

Levels of Care

What PHP and IOP Actually Are

Both are ambulatory programs — the client goes home at the end of the day — but they differ sharply in intensity, and that intensity is the single biggest driver of how each is billed.

Partial Hospitalization (PHP) is the most intensive ambulatory level of care, one step below inpatient or residential treatment. Programming is structured and near-daily, frequently running around 20 or more hours per week. Because it functions as a hospital-level service delivered without an overnight stay, PHP almost always carries a documentation expectation of physician certification of the level of care, and it is typically billed on a facility (UB-04) claim.

Intensive Outpatient (IOP) is a step down from PHP. It usually runs roughly 9 to 19 hours per week, often delivered across about three days per week. It is intensive enough to require structured group and individual work, but light enough that clients can hold a job or attend school around it. IOP is generally billed as a per-diem service — one unit for each qualifying program day — rather than by individual session.

The takeaway is simple: the level of care drives everything downstream. It determines the code you submit, the authorization you need, and the rate the payer applies. Two programs that look similar from across a hallway can land in very different places on a remittance.

Coding

How Each Level Is Coded and Billed

Here is where the operational difference becomes concrete. Each level of care has its own typical coding pattern, bill type, and authorization expectation. Treat these as the common conventions rather than a universal rulebook — they shift meaningfully by payer and by state Medicaid program.

PHP Coding

PHP is typically submitted on a facility (UB-04) claim using revenue codes such as 0912 or 0913. Some Medicaid programs use HCPCS code H0035 for the partial-hospitalization day. Medicare layers on per-diem and condition-code rules that govern how the day is reported.

IOP Coding

IOP is usually billed per diem — one unit per program day. Commercial psychiatric IOP commonly uses S9480, while H0015 frequently appears for substance-use IOP and in many Medicaid programs. Both are reported with the appropriate facility revenue codes.

The Per-Diem Rule

Per-diem billing means the program day is the unit — not each group or session. A day that does not meet the program’s minimum required hours generally should not be billed at all. Reporting a short day as a full day is a frequent and avoidable error.

Separate Authorization

Payers authorize PHP and IOP separately, with their own medical-necessity criteria. An authorization issued for one level does not cover the other, and a step-up or step-down between them almost always requires a new or revised authorization before services continue.

Codes, covered revenue codes, and minimum-hour thresholds vary significantly by commercial payer and by state Medicaid program. Always confirm the current requirements in the specific payer’s policy and your state Medicaid manual before submitting — the examples above are common conventions, not guarantees of coverage.

Pitfalls

Where IOP and PHP Claims Go Wrong

Most denials and recoupments in this space trace back to a small set of recurring mismatches. Each one is a place where the claim says one thing and the record, the authorization, or the bill type says another. If your revenue cycle management process is generating surprise denials on these services, the cause is usually on this list.

  • Authorization for the wrong level of care. The client is in PHP but the auth on file is for IOP (or the reverse), so the higher-intensity days are not covered.
  • Documentation that does not support the hours or intensity. The chart needs to demonstrate the program time and the structured services that the billed level of care requires.
  • Per-diem days that do not meet minimums. A program day that fell short of the required hours gets billed anyway, setting up a clean clawback target on audit.
  • Wrong bill type or place of service. Facility claims, revenue codes, and place-of-service indicators have to match the level of care being delivered.
  • Missing PHP physician certification. PHP generally requires certification of the level of care, and its absence is a common reason partial-hospitalization claims are denied or recouped.

None of these are exotic. They are the everyday friction points of running intensive ambulatory programs, and they are precisely the errors a disciplined intake-to-claim workflow is built to catch before the claim ever leaves the building.

Getting It Right

Billing Each Level Cleanly

Accurate IOP and PHP billing is less about memorizing codes and more about keeping the level of care, the documentation, and the claim in agreement from the first day of programming. A few habits make the difference between predictable reimbursement and a steady stream of appeals.

  • Confirm the authorized level of care before each admission and re-verify on every step-up or step-down between PHP and IOP.
  • Map each level to its correct coding pattern — facility revenue codes plus the right HCPCS — using the specific payer’s current policy, not a generic crosswalk.
  • Track program hours per day and bill per-diem days only when they meet the program’s minimum threshold.
  • Verify the bill type, revenue codes, and place of service match the level delivered before the claim goes out.
  • Keep PHP physician certification of the level of care in the record and current.
  • Reconcile authorizations against the actual days delivered so a lapsed or wrong-level auth is caught before it becomes a denial.

Programs that build these checks into intake and charge entry spend far less time in appeals. For the broader coding context that sits behind these services, our overviews of mental health billing and behavioral health CPT codes are good companions to this guide.

FAQ

Frequently asked questions

What is the main billing difference between IOP and PHP?

PHP is the more intensive level of care — often around 20 or more hours per week, near-daily — and is typically billed on a facility (UB-04) claim with revenue codes such as 0912 or 0913. IOP is lighter, roughly 9 to 19 hours per week, and is usually billed per diem using a code like S9480 for psychiatric IOP or H0015 for many substance-use and Medicaid programs. The level of care drives the code, the authorization, and the reimbursement.

Can I bill an IOP day that didn’t meet the minimum number of hours?

Generally no. IOP is a per-diem service, meaning one unit covers the whole program day, and a day that falls short of the program’s required minimum hours typically should not be billed. Billing a short day as a full day is a common error and a frequent target during audits and recoupments.

Does PHP require physician certification?

In most cases, yes. Because PHP functions as a hospital-level service delivered without an overnight stay, it usually requires physician certification of the level of care in the documentation. A missing or outdated certification is one of the more common reasons PHP claims are denied or recouped.

Do payers authorize IOP and PHP separately?

Yes. Payers treat PHP and IOP as distinct levels of care with their own medical-necessity criteria and authorize them separately. An authorization for one level does not cover the other, so a step-up or step-down between them generally requires a new or revised authorization before services continue.

Are these codes the same for every payer?

No. The codes, covered revenue codes, and minimum-hour thresholds vary significantly by commercial payer and by state Medicaid program. The conventions described here — S9480, H0015, H0035, and revenue codes like 0912 and 0913 — are common patterns, but you should always confirm the current requirements in the specific payer’s policy and your state Medicaid manual before billing.

Stop Losing Revenue to Level-of-Care Mismatches

We help Portland behavioral-health programs bill IOP and PHP cleanly the first time, with documentation and authorizations that hold up on audit.

Book a Practice Fit Call