Skip to main content

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 Practice Fit Call

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’s easy to treat their billing as one problem. It isn’t. They’re two distinct levels of care, and payers authorize, code and reimburse them on separate tracks. When the claim describes one level and the chart, the authorization or the bill type points to another, you get a denial, or worse, a clawback months later when the money’s already been spent.

For a Portland behavioral health program running both services, the gap between a clean PHP claim and a clean IOP claim comes down to four details: the level of care, the hours documented, the codes selected and the bill type submitted. Line those up and reimbursement is predictable. Let any one of them drift and you’re looking at appeals, refunds and a frustrated finance team. Here’s what actually separates the two, and how to bill each one correctly.

Levels Of Care

What PHP And IOP Actually Are

Both are ambulatory. The client goes home every evening either way, and where they differ is intensity, which is the biggest single driver of how each one gets billed.

Partial Hospitalization (PHP) is the most intensive ambulatory level of care, one step below inpatient or residential treatment. It’s structured and near-daily, often around 20 or more hours a week. PHP works as a hospital-level service without the overnight stay, so it almost always comes with an expectation that a physician certifies the level of care in the documentation, and it’s 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 a week, often spread across about three days. There’s enough structure to require group and individual work, and enough room that clients can keep a job or stay in school around it. IOP is generally billed per diem, one unit for each qualifying program day, not session by session.

The level of care drives everything downstream. It decides the code you submit, the authorization you need and the rate the payer applies, which is how two programs that look alike from across a hallway can land in very different places on a remittance.

Coding

How Each Level Is Coded And Billed

Here’s where the difference gets concrete, because each level of care has its own usual coding pattern, bill type and authorization expectation. Treat them as common conventions, not a universal rulebook. They shift a lot from payer to payer and between state Medicaid programs.

PHP Coding

PHP typically goes out on a facility (UB-04) claim with revenue codes such as 0912 or 0913, and some Medicaid programs use HCPCS code H0035 for the partial-hospitalization day. Medicare adds its own per-diem and condition-code rules on top.

IOP Coding

IOP is usually billed per diem, one unit per program day. Commercial psychiatric IOP commonly uses S9480. H0015 shows up for substance-use IOP and in many Medicaid programs, and either one goes out with the appropriate facility revenue codes.

The Per-Diem Rule

Per diem means the program day is the unit, not each group or session, so a day that doesn’t meet the program’s minimum required hours generally shouldn’t be billed at all. Billing a short day as a full one is a frequent, avoidable mistake. Auditors look for exactly that.

Separate Authorization

Payers authorize PHP and IOP separately, each against its own medical-necessity criteria. An auth for one level doesn’t cover the other. When a client steps up or down between them, you almost always need a new or revised authorization before services continue, or those days go unpaid.

Codes, covered revenue codes and minimum-hour thresholds vary a lot by commercial payer and by state Medicaid program. Check the current requirements in the payer’s own policy and your state Medicaid manual before you submit. The examples above are common conventions. They aren’t a guarantee of coverage.

Pitfalls

Where IOP And PHP Claims Go Wrong

Most denials and recoupments on these services trace back to the same few mismatches, places where the claim says one thing and the record, the authorization or the bill type says another. If your revenue cycle management process keeps producing surprise denials here, 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 aren’t covered.
  • Documentation that doesn’t support the hours or intensity. The chart has to show the program time and the structured services the billed level of care requires.
  • Per-diem days that don’t meet minimums. A day that fell short of the required hours gets billed anyway, and now there’s a clean clawback target sitting in the file for the next 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 this is exotic. These are the everyday friction points of running intensive ambulatory programs, and they’re exactly what a disciplined intake-to-claim workflow should catch before a claim ever leaves the building.

Getting It Right

Billing Each Level Cleanly

Clean IOP and PHP billing comes from keeping the level of care, the documentation and the claim in agreement from the first day of programming. Memorizing codes helps less than you’d think. These habits are what separate predictable reimbursement from a steady stream of appeals.

  • The authorized level of care, confirmed before each admission and checked again on every step-up or step-down between PHP and IOP.
  • Each level mapped to its correct coding pattern, meaning facility revenue codes plus the right HCPCS, taken from that payer’s current policy rather than a generic crosswalk.
  • Program hours tracked every day. A per-diem day only gets billed when it meets the program’s minimum threshold.
  • Before the claim goes out, someone checks that the bill type, revenue codes and place of service match the level delivered.
  • PHP physician certification of the level of care, in the record and current.
  • Authorizations reconciled against the days actually delivered, so a lapsed or wrong-level auth gets caught before it turns into a denial.

Build these checks into intake and charge entry and you’ll spend far less time in appeals. For the wider coding picture behind these services, read our overviews of mental health billing and behavioral health CPT codes alongside this one.

FAQ

Frequently Asked Questions

What Is The Main Billing Difference Between IOP And PHP?

PHP is the more intensive level of care, near-daily and often around 20 or more hours a week, and it’s typically billed on a facility (UB-04) claim with revenue codes such as 0912 or 0913. IOP is lighter, roughly 9 to 19 hours a week. It’s usually billed per diem, with a code like S9480 for psychiatric IOP or H0015 for many substance-use and Medicaid programs. In both cases, 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, so one unit covers the whole program day, and a day that falls short of the program’s required minimum hours typically shouldn’t be billed. Billing a short day as a full one is a common error. It’s also a frequent target in audits and recoupments.

Does PHP Require Physician Certification?

In most cases, yes. PHP functions as a hospital-level service without the overnight stay, so 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 get denied or recouped.

Do Payers Authorize IOP And PHP Separately?

Yes. Payers treat PHP and IOP as distinct levels of care, each with its own medical-necessity criteria, and authorize them separately. An authorization for one level doesn’t cover the other. A step-up or step-down between them generally needs a new or revised authorization before services continue.

Are These Codes The Same For Every Payer?

No. Codes, covered revenue codes and minimum-hour thresholds vary significantly by commercial payer and by state Medicaid program. S9480, H0015, H0035 and revenue codes like 0912 and 0913 are common patterns. They aren’t universal, so confirm the current requirements in the specific payer’s policy and your state Medicaid manual before you bill.

Next Step

Know What This Would Cost For Your Practice.

Every service has a published price and a written scope. If you are not sure which one fits, ask and you will be pointed at the right one.