IOP and PHP Billing Codes: Revenue Codes, HCPCS and Medicare Rules

Quick answer
IOP and PHP billing codes come in two sets. Many Medicaid and commercial payers want one per diem UB-04 line that pairs revenue code 0905 or 0906 (IOP) or 0912 or 0913 (PHP) with a HCPCS code like S9480, H0015, H0035 or S0201. Medicare bills each service on its own line with condition code 92 (IOP) or 41 (PHP).
IOP and PHP billing codes trip up good billing teams because one program day can look three different ways on a claim. A Medicaid plan may want one per diem line. A commercial plan may want a different code pair for the same day. Medicare wants every service listed on its own line. This guide puts the revenue codes, HCPCS codes and Medicare condition codes in one place and shows where each one comes from.
IOP and PHP billing codes at a glance
Most IOP and PHP claims use some mix of the codes below. Four revenue codes and four HCPCS codes cover per diem billing. Two condition codes tell Medicare which program the claim is for.
| Code | What it means | Where you'll see it |
|---|---|---|
| 0905 | Intensive Outpatient Services-Psychiatric | Psychiatric IOP per diem |
| 0906 | Intensive Outpatient Services-Chemical Dependency | Substance use IOP per diem |
| 0912 | Partial Hospitalization-Less Intensive | PHP per diem |
| 0913 | Partial Hospitalization-Intensive | PHP per diem |
| S9480 | Intensive outpatient psychiatric services, per diem | Psychiatric IOP |
| H0015 | Alcohol and/or drug services; intensive outpatient | Substance use IOP |
| H0035 | Mental health partial hospitalization, treatment, less than 24 hours | Mental health PHP |
| S0201 | Partial hospitalization services, less than 24 hours, per diem | PHP |
| Condition code 92 | Claim is for intensive outpatient program services | Medicare IOP claims |
| Condition code 41 | Claim is for partial hospitalization services | Medicare PHP claims |
Revenue code labels come from Maryland COMAR 10.67.08.02. HCPCS descriptors come from Blue Cross NC. Condition codes come from the Medicare Claims Processing Manual ch. 4.
How do payers define IOP and PHP?
Medicare defines IOP and PHP by weekly hours. IOP needs at least 9 hours of services a week and PHP needs at least 20. Medicaid and commercial plans set their own limits. So the code you pick has to match the program the payer thinks you run.
What is an intensive outpatient program (IOP)?
An intensive outpatient program (IOP) is a distinct and organized ambulatory treatment program for patients who have an acute mental illness, including substance use disorder (Medicare Benefit Policy Manual ch. 6). CMS places it above outpatient day treatment and below PHP in intensity (MLN MM13222).
For Medicare a physician has to certify that the patient needs a minimum of 9 hours of services per week (Medicare Benefit Policy Manual ch. 6 §70.4). Recertification happens at intervals the provider sets but no less often than every 60 days.
Medicaid plans write their own rules. South Carolina Medicaid lists nine to 19 hours of intervention per week for adults on S9480 (SC DHHS). The H0015 descriptor itself describes a program that runs at least 3 hours a day and at least 3 days a week (Blue Cross NC).
What is a partial hospitalization program (PHP)?
A partial hospitalization program (PHP) is a distinct and organized intensive treatment program for patients who would otherwise require inpatient psychiatric care (Medicare Benefit Policy Manual ch. 6). For Medicare PHP a physician certifies that need. The physician also certifies that the patient needs at least 20 hours of services per week (Medicare Benefit Policy Manual ch. 6 §70.3).
The first recertification is due as of the 18th calendar day after admission. After that it comes at least every 30 days (Medicare Benefit Policy Manual ch. 6 §70.3).
There's no single daily-hours rule that fits every payer. Check the hours in your contract and in each authorization. If your team is sorting this out across several payers, see how we approach IOP and PHP billing for programs like yours.
IOP and PHP code table
The code you bill depends on the payer and the level of care. Revenue codes say what kind of program day it is. HCPCS codes describe the service. Many payers want both on the same line.
| Code | Type | Descriptor (from source) | Used for | Where it's listed (examples) |
|---|---|---|---|---|
| 0905 | Revenue code | Intensive Outpatient Services-Psychiatric | Psychiatric IOP | COMAR, Superior HealthPlan TX (with S9480), Blue Cross of Idaho (with S9480), Novitas JH |
| 0906 | Revenue code | Intensive Outpatient Services-Chemical Dependency | Substance use IOP | COMAR, Superior HealthPlan TX (with H0015), Blue Cross of Idaho (with H0015) |
| 0912 | Revenue code | Partial Hospitalization-Less Intensive | Less intensive PHP | COMAR, Superior HealthPlan TX (with H0035) |
| 0913 | Revenue code | Partial Hospitalization-Intensive | Intensive PHP | COMAR, Superior HealthPlan TX (with S0201), SC DHHS (with H0035) |
| S9480 | HCPCS Level II | Intensive outpatient psychiatric services, per diem | Psychiatric IOP | Blue Cross NC, SC DHHS, Vermont Medicaid, Nevada Medicaid WA 2452 |
| H0015 | HCPCS Level II | Alcohol and/or drug services; intensive outpatient (treatment program that operates at least 3 hours/day and at least 3 days/week…) | Substance use IOP | Blue Cross NC, Blue Cross of Idaho, Superior HealthPlan TX |
| H0035 | HCPCS Level II | Mental health partial hospitalization, treatment, less than 24 hours | Mental health PHP | Blue Cross NC, Nevada Medicaid WA 2452, Vermont Medicaid |
| S0201 | HCPCS Level II | Partial hospitalization services, less than 24 hours, per diem | PHP per diem | Blue Cross NC, Superior HealthPlan TX, Optum Gold Card list |
| Condition code 41 | UB-04 FL 18–28 | Claim is for partial hospitalization services | Medicare PHP | CMS Claims Processing Manual ch. 4 §260.1 |
| Condition code 92 | UB-04 FL 18–28 | Claim is for intensive outpatient program services | Medicare IOP from Jan 1, 2024 | MLN MM13222, CMS Claims Processing Manual ch. 4 §261.1 |
| G0410 / G0411 | HCPCS Level II (G) | Listed under revenue code 0915 Group Therapy (90853 is also listed) | Medicare PHP and IOP group therapy | CMS Claims Processing Manual ch. 4, CMS article A57053 |
| G0129 / G0176 / G0177 | HCPCS Level II (G) | Occupational therapy (PHP/IOP only), activity therapy (PHP/IOP only), training and education. Each per session (45 minutes or more) | Medicare PHP and IOP | Novitas JH |
Revenue codes (0905, 0906, 0912, 0913)
Revenue codes and condition codes live in the UB-04 data set run by the National Uniform Billing Committee. Its official manual is a paid subscription (NUBC), so the labels above come from the public text in Maryland's rules. The split is simple. 0905 is psychiatric IOP and 0906 is chemical dependency IOP. 0912 is less intensive PHP and 0913 is intensive PHP.
Some payers define the split by hours. Check your contract. Pairings vary too. Superior HealthPlan in Texas pairs H0035 with revenue code 912 (Superior HealthPlan). South Carolina Medicaid lists H0035 with revenue code 913 (SC DHHS).
HCPCS per diem codes (S9480, H0015, H0035, S0201)
HCPCS Level II covers services that CPT codes don't (CMS HCPCS overview). Many payers use four Level II codes for the IOP and PHP per diem.
S9480 and H0015 are both IOP per diem codes. S9480 is for psychiatric IOP. If you bill for substance use disorder programs H0015 is the line to watch, since Blue Cross NC says to report H0015 for IOP focused on substance use disorders (Blue Cross NC).
H0035 and S0201 both cover PHP. H0035 is a mental health partial hospitalization code. S0201 is a general partial hospitalization per diem. Blue Cross NC accepts either one on a facility claim.
Medicare's own PHP and IOP code tables don't list S9480, H0015, H0035 or S0201 (CMS Claims Processing Manual ch. 4). Don't read that as "S codes are commercial only." South Carolina Medicaid uses S9480 and Superior HealthPlan's Texas Medicaid plan uses S9480 and S0201.
Medicare component codes (G0410, G0411 and the rest)
Medicare doesn't pay IOP or PHP through one per diem HCPCS code. Each service gets its own line with a revenue code and a HCPCS or CPT code. CMS calls this component billing.
The CMS manual lists these revenue codes for PHP and IOP lines: 0250, 043X, 0900, 0904, 0914, 0915, 0916, 0918 and 0942 (CMS Claims Processing Manual ch. 4 §260.1 and §261.1). Hospital outpatient departments and CMHCs must report HCPCS codes. CAHs aren't required to.
Medicare MACs such as Novitas also accept 0905 for IOP lines (Novitas JH). The CMS manual's own CMHC example bills IOP testing lines under 0905 too (CMS Claims Processing Manual ch. 4). Novitas lists 0906 for opioid treatment programs.
Group therapy codes G0410, G0411 and 90853 go under revenue code 0915. Individual therapy goes under 0914, and that list includes the psychotherapy CPT codes 90832, 90834 and 90837.
Condition codes and bill types
Condition code 41 marks a PHP claim and condition code 92 marks an IOP claim. Both go in form locators 18 to 28 on the UB-04 (CMS Claims Processing Manual ch. 4).
Hospital outpatient departments bill type of bill 13X. CAHs bill 85X and CMHCs bill 76X (Novitas JH). RHCs and FQHCs report condition code 92 with revenue code 0905 for IOP (MLN MM13264).
How do commercial and Medicaid payers pay IOP and PHP?
Many commercial and Medicaid plans pay IOP and PHP as one per diem. A per diem is one line and one unit for the program day with most services folded in. The details still change from plan to plan.
One unit per date of service
Wellpoint allows "one (1) unit per date of service" for PHP or IOP and says "all other units billed will be denied" unless a contract says otherwise (Wellpoint policy C-19002). Blue Cross NC also allows only one unit of PHP or IOP per date of service.
IOP or PHP on a given day, not both
Wellpoint pays "either PHP or IOP services, not both" on a date of service. Blue Cross NC says "PHP, RTC and IOP services are mutually exclusive on the same date of service." Pick the level of care the patient actually got and the auth supports.
What does the per diem include?
Blue Cross NC says the per diem "includes all facility, professional, ancillary, and other services rendered to the member." Wellpoint lists room and board, lab, equipment and pharmaceuticals as included. Vermont Medicaid warns against billing the bundle and then billing included services separately (Vermont Medicaid).
State and plan examples
These are examples. They aren't national rules.
- Superior HealthPlan (Texas Medicaid). As of July 1, 2025 the HCPCS code must be on the claim. Claims without it are denied and need a corrected claim.
- Blue Cross of Idaho. IOP is billable in a clinic on a professional claim with S9480 or H0015. In a facility it goes on a UB claim with revenue code 0905 or 0906.
- South Carolina Medicaid. IOP and PHP are paid as a bundled per diem that covers the program's multidisciplinary services.
What changed for Medicare IOP in 2024?
Medicare started covering IOP for services on or after January 1, 2024 (MLN MM13496). Section 4124 of the Consolidated Appropriations Act 2023 created the benefit. CMS pays a daily rate based on how many services the patient got that day.
Who can bill Medicare IOP?
Hospital outpatient departments, CAHs, CMHCs, RHCs and FQHCs can furnish IOP. Opioid treatment programs can too for opioid use disorder through a weekly add-on code (CY 2024 OPPS fact sheet). The benefit covers both mental health conditions and substance use disorders (Novitas JH).
Certification and plan of care
A physician certifies that the patient needs at least 9 hours of services a week. Recertification comes no less often than every 60 days. Services follow an individualized written plan of care (Medicare Benefit Policy Manual ch. 6 §70.4).
Component billing and daily APCs
Medicare pays IOP and PHP per day based on service count. Each provider type has one payment class for days with 3 services and one for days with 4 or more.
| Program | Setting | 3-service day | 4+ service day |
|---|---|---|---|
| IOP | Hospital | APC 5861 | APC 5862 |
| IOP | CMHC | APC 5851 | APC 5852 |
| PHP | Hospital | APC 5863 | APC 5864 |
| PHP | CMHC | APC 5853 | APC 5854 |
To qualify for any of these APCs at least one service that day must come from the PHP and IOP primary list (CY 2026 OPPS final rule).
Claim mechanics that trip people up
- Sequential interim bills. Bill 131 for admit through discharge. Use 132 for the first interim claim, 133 for continuing months and 134 for the last month. CAHs use 851 to 854 and CMHCs use 761 to 764 (Novitas JH).
- Line-item dates of service. Hospitals and CMHCs report a date on each revenue code line. CAHs don't (Novitas JH).
- Sessions under 45 minutes. For codes with no time in the definition, don't bill sessions of less than 45 minutes (CMS Claims Processing Manual ch. 4).
- Off-campus modifiers. Non-excepted off-campus hospital departments report modifier PN. Excepted ones keep reporting PO (Novitas JH).
- IOP and PHP overlap. An IOP claim that overlaps a PHP claim with condition code 41 gets returned to the provider (MLN MM13222). Novitas says claims within seven days of each other return with reason code 38363.
- Other mental health services on IOP days. Report them on the same hospital claim with condition code 92.
What changed for 2026?
The CY 2026 OPPS final rule keeps the 3-service and 4+ service structure for IOP and PHP. It also bases CMHC IOP and PHP costs on 40 percent of the final hospital-based costs (CY 2026 OPPS fact sheet). Rates change each January, so check the current OPPS rule for the numbers.
UB-04 or CMS-1500: facility vs professional claims
Facility program days go on the UB-04, also called the CMS-1450. Under Medicare some professional services come off that claim and get paid separately. Commercial contracts set their own rules.
Under Medicare, physician, PA, NP, clinical nurse specialist and clinical psychologist services are unbundled and not paid as part of the PHP or IOP rate (CMS Claims Processing Manual ch. 4 §260.2 and §261.2). CMS's own example has a PA's employer bill the Part B MAC on the CMS-1500.
Clinical social worker, marriage and family therapist and mental health counselor services work the other way. Under a PHP or IOP they're included in the program rate (§270).
Commercial plans vary. Wellpoint wants the PHP or IOP revenue code and HCPCS code on a UB-04. Blue Cross NC allows IOP on a facility or professional claim but PHP only on a facility claim. Blue Cross of Idaho allows a professional claim for IOP in a clinic setting.
Which IOP and PHP coding errors cause denials?
The payer rules above point to a short list of avoidable errors. Each one below comes with its fix.
- Revenue code and HCPCS don't match. Billing 0906 with S9480 is one example. Fix: use the payer's published pairs. Superior HealthPlan pairs 905 with S9480 and 906 with H0015. Novitas says Medicare claims won't edit for the match, so this one is mostly a Medicaid and commercial problem.
- HCPCS missing where the payer requires it. Superior HealthPlan denies these claims. Fix: add the HCPCS to every per diem line.
- More than 1 unit for the day. Wellpoint denies the extra units. Fix: bill one unit per date of service on a per diem.
- IOP and PHP on the same or overlapping dates. Wellpoint and Blue Cross NC won't pay both, and Medicare returns overlapping claims. Fix: bill one level of care per day and match it to the auth.
- Medicare claim missing condition code 92 or 41 or line-item dates. Both are required. Fix: build them into your claim template.
- Untimed sessions under 45 minutes. CMS says not to bill them. Fix: check session length in the note before coding.
- Interim bills out of sequence. Medicare edits interim IOP bills for consistency. Fix: track the bill type month to month.
If the same errors keep coming back, a behavioral health coding review can show where in your workflow they start.
Pre-submission checklist for IOP and PHP claims
Run each IOP and PHP claim through a short check before it goes out. It catches the errors above before the payer does.
- Payer type matches the code set (per diem or Medicare component lines)
- Level of care matches the authorization
- Revenue code and HCPCS pair matches the payer's table
- One unit per day on per diem claims
- Condition code 92 or 41 on Medicare claims
- Type of bill follows the interim sequence
- Attendance and hours are documented
- No overlapping IOP and PHP dates
Want a second set of eyes on this? Start with a free revenue audit of your IOP and PHP claims.
Codes and rules vary by payer and contract. Check your own payer policy and contract before you bill. This isn't legal or coding advice.
FAQs
Frequently Asked Questions
1. What revenue codes are used for IOP and PHP billing?
Many Medicaid and commercial payers use revenue code 0905 for psychiatric IOP and 0906 for chemical dependency IOP. For PHP they use 0912 for less intensive PHP and 0913 for intensive PHP. Medicare lists each service with its own revenue code instead. Medicare MACs such as Novitas also accept 0905 for IOP lines. Check your payer contract.
2. What is the difference between S9480 and H0015?
S9480 is the per diem code for psychiatric IOP and H0015 is the per diem code for alcohol and drug IOP. Both are HCPCS Level II codes. Blue Cross NC for example says to report S9480 for mental health IOP and H0015 for substance use IOP. Medicare's IOP code tables don't list either code. Medicare bills IOP by component lines.
3. Which HCPCS code is used for partial hospitalization, H0035 or S0201?
Payers use both, so the right one depends on the payer. H0035 is mental health partial hospitalization, treatment, less than 24 hours. S0201 is a general partial hospitalization per diem. Blue Cross NC accepts either on a facility claim. Superior HealthPlan in Texas pairs H0035 with revenue code 912 and S0201 with 913. Check your payer's code table.
4. Does Medicare cover IOP, and how is it billed?
Yes, Medicare has covered IOP for services on or after January 1, 2024. Hospitals, CAHs and CMHCs report condition code 92 and list each service with its own revenue code. Hospitals and CMHCs also report HCPCS or CPT codes. Under the OPPS Medicare pays a daily rate for days with 3 services or with 4 or more.
5. Can IOP and PHP be billed for the same patient on the same day?
Usually not. Wellpoint pays either PHP or IOP on a date of service but not both. Blue Cross NC calls PHP, RTC and IOP mutually exclusive on the same date. Medicare returns an IOP claim that overlaps a PHP claim with condition code 41. Bill the one level of care the patient actually got and the auth supports.
6. Is IOP billed on a UB-04 or a CMS-1500?
Facility IOP usually goes on the UB-04 with a revenue code and a HCPCS code. Some payers allow a professional claim in a clinic setting, and Blue Cross of Idaho is one example. Under Medicare, physician, NP, PA and clinical psychologist services are paid separately from the program rate. Check your contract before you pick a claim form.
