A free guide from Cima EHR
IOP and PHP billing codes
The short answer: a substance use IOP day is usually billed as H0015, a mental health IOP day as S9480, and a PHP day as S0201 or H0035, one unit per day. On a facility claim (UB-04), the same day also carries a revenue code: 0906 or 0905 for IOP, 0912 or 0913 for PHP. Which pair a plan wants is set by its contract, not by the code book. Here is what each code means, who uses which, and how to set them up without denials. Written by people who run a licensed Texas PHP, IOP and outpatient program.
Updated October 24, 2026. General information, not billing or legal advice: confirm every code with the payer's current manual and your contract.
The reference table
The codes most programs bill, with the plain meaning of each. HCPCS descriptions are paraphrased from the CMS code set; revenue code meanings follow the NUBC categories that Medicare contractors and payers publish.
| Code | Kind | What it means | Billed as | Medicare pays it? |
|---|---|---|---|---|
| H0015 | HCPCS (H code) | Alcohol and/or drug intensive outpatient treatment: a program running at least 3 hours a day, at least 3 days a week, on an individualized treatment plan (assessment, counseling, crisis intervention, activity therapy or education) | 1 unit per day | No (status I) |
| S9480 | HCPCS (S code) | Intensive outpatient psychiatric services, per diem | 1 unit per day | No (S codes are for private payers) |
| S0201 | HCPCS (S code) | Partial hospitalization services, less than 24 hours, per diem | 1 unit per day | No |
| H0035 | HCPCS (H code) | Mental health partial hospitalization, treatment, less than 24 hours | 1 unit per day (check the payer) | No |
| H2036 | HCPCS (H code) | Alcohol and/or other drug treatment program, per diem (no hours in the descriptor; the payer defines the day) | 1 unit per day | No (status I) |
| 0905 | Revenue code | Intensive outpatient services, psychiatric | With S9480 (or H0015, if the payer says so) | On hospital, CMHC, FQHC and RHC claims |
| 0906 | Revenue code | Intensive outpatient services, chemical dependency | With H0015 (or S9480, if the payer says so) | Limited; check the contractor |
| 0912 | Revenue code | Partial hospitalization, less intensive (payers often define it as a half day, about 3 to 5 hours) | With H0035 or S0201, or alone | Medicare PHP bills line items instead |
| 0913 | Revenue code | Partial hospitalization, intensive (often defined as a full day, about 6 hours or more) | With S0201, H0035 or H0037, or alone | Medicare PHP bills line items instead |
The hour ranges for 0912 and 0913 are a payer's definition (one Medicaid plan's fee schedule uses 3 to 5 hours for 0912 and 6 or more for 0913), not part of the code. Your contract may define a PHP day differently. Read the contract's definition before you pick a code.
The per diem HCPCS codes
HCPCS has two levels. Level I is CPT, the AMA's codes for professional services (90834, 90853). Level II is the national code set CMS maintains, which includes the H codes (behavioral health and substance use services, used mostly by Medicaid and many commercial plans) and the S codes (temporary national codes created for private payers, which Medicare doesn't pay). Program days are almost always Level II codes, because no CPT code describes "a day of intensive outpatient treatment."
H0015: substance use IOP
The H0015 descriptor is specific: a program that runs at least 3 hours a day and at least 3 days a week, based on an individualized treatment plan. That's why many programs schedule IOP as three-hour blocks three or more days a week: a shorter day doesn't meet the description of the code. Assessment, counseling, crisis intervention and activity therapy or education are part of it, which is why most payers won't pay a separate group or individual code on the same day (see per diem billing for when they do).
S9480: mental health IOP
Intensive outpatient psychiatric services, per diem. It's the usual code for a mental health or co-occurring IOP whose primary focus is psychiatric. Billing H0015 for a mostly mental health program, or S9480 for a substance use program, is a common reason for denials and audit questions: the code has to match the program the client is actually in and the primary diagnosis on the claim.
S0201 and H0035: PHP
Both describe a partial hospitalization day of less than 24 hours. S0201 is the S code many commercial plans use; H0035 is the H code (named for mental health partial hospitalization) that many Medicaid programs and some commercial plans accept. Some payers accept either for a substance use PHP, others want one. TRICARE, for example, pairs revenue code 0912 with H0035 for a half day.
H2036: a per diem treatment program
Alcohol and/or other drug treatment program, per diem. The descriptor names no hours or level, so the payer that uses it decides what a day is and which level it covers. You'll mostly see it in Medicaid programs. Don't bill it unless a contract or Medicaid manual tells you to.
Revenue codes on a UB-04
A revenue code says which department or kind of service a line is, and it exists only on the facility claim (UB-04, sent electronically as an 837I). The 090X and 091X families cover behavioral health:
- 0905 intensive outpatient, psychiatric, and 0906 intensive outpatient, chemical dependency. Medicare contractors such as First Coast list both; for IOP at rural health clinics and FQHCs, CMS names 0905.
- 0912 partial hospitalization, less intensive, and 0913 partial hospitalization, intensive.
- Payers pair the HCPCS and revenue codes differently. TRICARE accepts 0905 or 0906 with either H0015 or S9480, 0912 with H0035 (or alone) for a half day and 0913 with H0037 (or alone) for a full day, and bills each date of service on its own line. A Medicaid plan in another state ties H0035 to 0913 instead. There is no single right pairing, only the one your contract names.
Whether you bill on a UB-04 at all is its own decision. UB-04 vs CMS-1500 for behavioral health covers the type of bill, the attending provider and when a plan wants which form.
Which payers use which codes
| Payer | What they usually expect | Watch for |
|---|---|---|
| Commercial plans (Blue Cross, Aetna, Cigna, UnitedHealthcare and their behavioral health managers) | Per diem HCPCS: H0015 or S9480 for IOP, S0201 or H0035 for PHP, one unit per day. Some contracts want a UB-04 with a revenue code; others take a CMS-1500. | Prior authorization for each level, one unit per date of service, and the contract's definition of a billable day. The plan on the card may not manage the behavioral health benefit (a carve-out). |
| Medicaid and Medicaid managed care | H codes (H0015, H0035, H2036) with state-defined modifiers and hours. Louisiana limits H0015 to one unit a day; New Mexico pays its H0015 and S9480 daily rate only for at least 3 hours of service. | Every state writes its own rules. In Texas, check the Texas Medicaid Provider Procedures Manual (and, for plan rules, Texas Medicaid for IOP and PHP programs) and the fee schedules at TMHP for each code, then each managed care plan's billing guide. |
| Medicare | PHP and, since 2024, IOP are paid only to hospital outpatient departments, community mental health centers and a few other provider types such as FQHCs and rural health clinics. Each service is a line item on the facility claim, with condition code 41 (PHP) or 92 (IOP). | H0015, S9480, S0201 and H0035 aren't payable by Medicare. Most freestanding programs can't bill Medicare for these levels at all. |
| TRICARE | A UB-04 with revenue codes (0905/0906 with H0015 or S9480; 0912/0913 for PHP) and condition code 41 on PHP claims. | TRICARE requires IOP and PHP programs to be accredited and authorized, and lists 0914 and 0915 as payable only to hospitals paid under Medicare's outpatient system. |
CPT codes inside a program
Inside a per diem day, the group and individual sessions are part of the day's code and usually aren't billed on their own. CPT codes matter in three places:
- Outpatient (OP) clients, the step down after IOP, bill session by session on a CMS-1500 under the rendering clinician's NPI: 90832 (16–37 minutes of psychotherapy), 90834 (38–52), 90837 (53 or more), 90853 group psychotherapy, 90846 and 90847 family psychotherapy without and with the client, and 90791 for the diagnostic evaluation. Many plans and Medicaid programs also use HCPCS H0004 (behavioral health counseling, per 15 minutes), H0005 (alcohol and drug group counseling by a clinician) and H0001 (alcohol and drug assessment).
- Separately billable sessions. Some contracts pay an individual session or a psychiatric visit on top of the per diem. A prescriber's medication visit on a program day is often billed separately on a CMS-1500 under the prescriber's own NPI with an E/M code (99212–99215), if the plan allows it. Get it in writing.
- Hourly program codes. Some plans pay PHP or day treatment by the hour instead of the day, such as H2012 (behavioral health day treatment, per hour). Then units are hours, not days.
Psychotherapy codes are picked by the time actually spent, not the time scheduled. A 50-minute session is 90834, not 90837. Under 16 minutes isn't billable psychotherapy.
Units vs per diem
| Kind of code | One unit is | Examples |
|---|---|---|
| Per diem | One qualifying day, however many hours it lasted past the minimum | H0015, S9480, S0201, H0035, H2036 |
| Time-based HCPCS | The time named in the code, such as 15 minutes or an hour | H0004 (15 minutes), H2012 (per hour) |
| Time-banded CPT | One session; the code itself changes with the minutes | 90832, 90834, 90837 |
| Per session | One session, whatever its length within the payer's rules | 90853, 90791, H0005 |
The common error is billing a per diem code with more than one unit, either for "two groups" or for two days on one line. A per diem is one unit per date of service. Several payers state that limit outright, Louisiana Medicaid for H0015 among them. A week of IOP is three or more lines, one per day attended.
Modifiers
Commercial plans often take the per diem code with no modifier. Medicaid programs and some managed care plans require them to say what kind of program, which clinician or which population. The HCPCS Level II modifiers you'll see most:
| Modifier | Meaning | Typical use |
|---|---|---|
| HF | Substance abuse program | Marks a service as part of an SUD program |
| HE | Mental health program | Marks a service as part of a mental health program |
| HQ | Group setting | A group version of a counseling code |
| HO / HN / HP | Master's, bachelor's or doctoral level clinician | Medicaid rates that differ by the clinician's degree |
| HA / HB | Child or adolescent program / adult program | Programs with separate adolescent and adult tracks |
| 95 / 93 | Video / audio-only telehealth | With place of service 10 (client at home) or 02 (elsewhere); some older plans want GT |
| 59 or XU | Distinct or unusual service on the same day | Only when a separately billable service really is separate, never to get around bundling |
Before you add a modifier, find it in the payer's billing guide. An unexpected modifier gets a claim rejected as surely as a missing one.
Mistakes that cause denials
- The code doesn't match the program or the diagnosis: H0015 with a primary depression diagnosis, or S9480 for a substance use program.
- The day didn't meet the hours the code or contract requires, such as a two-hour H0015 day. The fix is in the schedule and the notes, not the claim.
- More than one unit of a per diem on one date, or a day billed past the authorized number of days.
- The authorization is for a different level than the code billed: the client stepped down to IOP but the claim still says S0201.
- A group or individual code billed on top of the per diem when the contract bundles them.
- The wrong form or a missing revenue code for a contract that requires a UB-04.
Our IOP and PHP billing checklist puts the checks for each of these in the order a biller runs them. Each of these also shows up again as a recoupment when an auditor matches claims to notes months later. The chart audit checklist reads charts the way that auditor does.
How Cima sets the codes
In Cima's Program plan, codes are set once per level of care under Settings, Program, and every charge follows from the notes:
- Each level has its own per diem code, modifiers and hours (the Program plan for IOP and PHP includes all of it). Defaults are PHP S0201 at 4 hours a day and 20 a week, and IOP H0015 at 3 hours a day and 9 a week. Change PHP to H0035 or IOP to S9480, add up to four modifiers, and set the hours your contracts require.
- A day becomes one unit of that code only when the client's signed group notes (and individual sessions, if you count them) reach the day's hours. One per diem claim per client per day, so the same day can't be billed twice.
- Facility claims get a revenue code per level (defaults 0913 for PHP and 0906 for IOP) when you bill on an 837I. The professional 837P is the default.
- Outpatient sessions pick their own CPT code from the minutes in the note (16–37 minutes is 90832, and so on), with modifier 95 or 93 and the right place of service for telehealth.
- Each claim is checked before it can be sent: NPIs, taxonomy, diagnosis pointers, at most four modifiers, an authorization that covers the date and hasn't run out of visits, and the days left before your filing limit.
One honest limit: the per diem code is set per level for the whole program, not per payer. If two of your plans want different codes for the same level, tell us before you go live, and we'll set it up with you.

Bill program days from signed notes, not spreadsheets
Cima's Program plan is $399 a month for up to 25 clients: levels of care, group notes, attendance hours, per diem claims on a CMS-1500 or UB-04, and authorizations.
See the EHR for IOP and PHP programs, compare the plans or take the tour. Opening a program and want the fee schedule, clearinghouse, ERA and EFT set up for you? Cima Consulting's billing set-up is $1,500, flat.
Questions
What is the billing code for IOP?
Usually H0015 for a substance use IOP and S9480 for a mental health IOP, one unit per day. On a UB-04 the day also carries revenue code 0906 (chemical dependency) or 0905 (psychiatric). Your contract decides which pair it pays.
What is the difference between H0015 and S9480?
H0015 is the alcohol and drug intensive outpatient code, defined as at least 3 hours a day, 3 days a week. S9480 is intensive outpatient psychiatric services, per diem, an S code meant for private payers. Match the code to the program's primary focus and the client's primary diagnosis.
Is S0201 or H0035 right for PHP?
Both describe a partial hospitalization day under 24 hours. Many commercial plans use S0201; many Medicaid programs and some commercial plans use H0035. Bill the one your contract names, and check whether it wants revenue code 0912 or 0913 with it.
Can I bill 90853 group therapy on an IOP day?
Usually not. The per diem includes the day's groups. Bill 90853 for outpatient clients who aren't in the per diem level, or when a contract explicitly pays groups separately.
Does Medicare pay H0015 or S9480?
No. Medicare pays PHP and IOP only to hospitals, community mental health centers and certain other provider types, billed as line items on a facility claim with condition code 41 or 92. The per diem H and S codes are for Medicaid and private payers.
Do I need a prior authorization for these codes?
Almost always for PHP and IOP. Get it before the first day, track the days it covers, and request the continued stay before it runs out. The prior authorization guide walks through it.
Sources
- HCPCS Level II descriptors: H0015 and H2036 (HCPCS.codes, from the CMS code set); AAPC, H2036.
- First Coast Service Options (Medicare contractor), IOP billing requirements for institutional services (revenue codes 0905 and 0906, condition code 92, types of bill).
- Noridian JE Part A, Intensive Outpatient Program.
- CMS, MLN Matters MM13222 and CGS, January 2024 IOP notice (condition code 92; types of bill 13X, 76X, 85X; RHC and FQHC IOP with revenue code 0905).
- CMS, CY 2024 OPPS final rule fact sheet (Medicare IOP from 2024 and who can bill it).
- TRICARE For Life, PHP and IOP claims (revenue and HCPCS pairings, condition code 41, one line per date of service, 0914/0915 OPPS-only).
- CareSource, SUD fee schedule (0912 less intensive, 3–5 hours; 0913 intensive, 6+ hours).
- Louisiana Department of Health, Informational Bulletin 22-36 (H0015 one unit per day); New Mexico HSD, IOP rate letter of direction (H0015 and S9480 daily rate, 3-hour minimum).
Code descriptions here are plain-language summaries, not the official descriptors. CPT is a registered trademark of the American Medical Association. This guide is general information, not billing or legal advice.
Your codes, set once. Your days, billed from the notes.
Cima's Program plan counts each client's hours from signed group notes and bills the day only when it qualifies. Take the tour.
Get early access