There Isn’t One IOP CPT Code: How to Choose, Document, and Get Paid
You searched IOP CPT code because a claim bounced, or because someone asked which number to load into the behavioral health EHR. You want one code. Payers don’t give you that.
Intensive outpatient sits between weekly therapy and partial hospitalization. Billing follows the payer and the diagnosis, not a single CPT descriptor. Medicare’s 2024 IOP benefit made that split even sharper.
This post maps the code families payers actually use, shows how to choose among them, and covers the documentation and authorization habits that keep intensive outpatient program billing paid.
Why There Isn’t a Single IOP CPT Code
CPT describes sessions, not levels of care. Group psychotherapy (90853), a 53-minute individual hour (90837), a family session with the patient present (90847): those are intensive outpatient CPT building blocks. None of them means “this person is in IOP.”
IOP is intensity. SAMHSA describes adult intensive outpatient as a prearranged schedule of core services for a minimum of 9 hours a week, and 6 hours for adolescents.1 That is a program, not a procedure. CPT never named it.
That gap is why an iop cpt code search keeps turning up IOP HCPCS codes instead. HCPCS Level II (H-codes and S-codes) exists for services CPT does not cover.2 Four families show up on real claims:
- Bundled SUD HCPCS. H0015 is alcohol and/or drug intensive outpatient: a program that operates at least 3 hours a day and at least 3 days a week on an individualized plan.3 Some state Medicaid plans want H2036 (per diem) instead.
- Bundled psychiatric HCPCS. S9480 is intensive outpatient psychiatric services, billed per diem.4
- Unbundled CPT. Every group as 90853, individuals as 90832, 90834, or 90837, family as 90846 or 90847.
- Medicare’s path. Condition code 92 plus the day’s service-level CPT and HCPCS. Not H0015. Not S9480.
H0015 and S9480 each deserve their own playbook on units, modifiers, and state quirks. Here we stay at the family level so you pick the path before you argue about units.
Picture a dual-diagnosis IOP in Asheville. Monday’s census includes a Medicaid SUD client, someone with commercial coverage for depression, and a Medicare beneficiary.
They sit in the same groups. They do not share a billing code. Load one default in the EHR for all three and two of those claims will fail.
How to Choose IOP Billing Codes by Payer
Start with the payer, then the diagnosis, then bundled versus unbundled, then the claim form. That order is the whole skill in intensive outpatient program billing. Copying another agency’s iop cpt code into your fee schedule skips that order.
Medicaid. Many state plans and MCOs pay SUD IOP with H0015. Mental health IOP may use S9480, a 15-minute code, or unbundled CPT.
Wisconsin is a useful warning, not a template. When Medicaid is primary, certified IOP providers bill H2019 with HE, HF, or HH modifiers. They only use S9480 or H0015 for coordination of benefits when another payer is first.5
Read your state fee schedule and the MCO billing grid. A neighboring state’s setup will not save you.
Commercial. Contracts often list S9480 as the per-diem code for psychiatric IOP and H0015 for SUD IOP. Some plans still want unbundled CPT.
S9480 is an S-code. CMS marks it coverage I, not payable by Medicare.4 Never bill H0015 and S9480 for the same day of the same program.
Medicare. Section 4124 of the Consolidated Appropriations Act of 2023 created a Medicare IOP benefit effective January 1, 2024.6 Hospital outpatient departments and CMHCs report condition code 92 on the UB-04.7
You list the actual services delivered that day: individual psychotherapy, group (90853 or G0410), family, activity therapy. Payment is a per-diem APC based on how many services landed on the claim. You do not submit H0015 or S9480 to traditional Medicare, and you still will not find one iop cpt code on that claim.
A billing manager at a Portland community agency should keep a payer matrix. Capture the payer, MH or SUD, code family, unit definition, CMS-1500 or UB-04, and whether physician services sit inside the bundle.
PIMSY’s IOP and PHP billing support, plus clearinghouse connections, keep that matrix on the claim instead of in a spreadsheet. Facility claims that need a UB-04 belong on Platinum.
Dual diagnosis does not get a third code. The primary diagnosis and the contract pick the family.
PHP vs IOP Billing: Hours, Codes, and Condition Codes
Mixing PHP vs IOP billing on the same claim is a classic denial. The clinical difference is hours.
IOP commonly runs 9 to 19 hours a week and uses the families above. PHP typically runs 20 or more.
PHP uses a different set. H0035 covers mental health partial hospitalization (less than 24 hours) for many Medicaid plans. S0201 is the commercial PHP per-diem some contracts want, and Medicare uses condition code 41 instead of 92.
Facility claims often pair revenue code 0905 with psychiatric IOP and 0906 with chemical dependency IOP. Some state MCOs now require the matching HCPCS alongside those revenue codes, so a revenue code alone is no longer enough.
A client who attends 3 hours on Tuesday is on an IOP day for most payers. Billing PHP because the rate looks better will not survive a records request.
The hours in the group note have to support the level you billed. PIMSY’s group therapy software captures attendance and duration so billed level of care matches the day the client actually attended.
Don’t stack H0035 on top of H0015 or S9480 for the same day as if they were add-ons. They are different levels of care.
Document, Authorize, and Stop the Denials
The right family still needs a chart and an authorization that match it. Getting the family wrong will sink an iop cpt code claim faster than a thin note.
Hours and attendance. Bundled days assume a minimum, often 3 hours. Unbundled CPT needs start and stop times on each session. Medicare needs at least one primary service from CMS’s List A on that day.8
A note that only says “attended group” will not protect any of those paths. Good mental health documentation software puts those hours in the note before the claim goes out.
Medical necessity. Payers want a current treatment plan, a diagnosis that belongs at IOP intensity, and a reason weekly outpatient is not enough this week. Use ASAM or the LOC tool the payer named. “Client participated” is not a level-of-care argument.
Authorization. IOP almost always needs prior auth, then concurrent review every week or two. CARC 197 is missing precertification. CARC 198 is units or dates that ran past the auth.9
Bill the authorized code, not the code you wish the contract used, and put the auth number on the claim. Medicaid authorization tracking software belongs in that workflow. PIMSY tracks units and dates so a group day does not go out after the last approved unit.
Do not unbundle a per-diem day. A payer that pays H0015 or S9480 as a daily bundle will deny 90853 and 90837 billed for the same hours. The reverse is also true: a fee-for-service CPT contract does not want a per-diem H-code.
Do not mix IOP and PHP codes on the same day. Do not bill H0015 and S9480 together.
A clinician coding groups at a Bangor SUD IOP should see the payer’s required code on the encounter before the note is signed. When the code, the hours, and the auth line up in one system, the denials that remain are the ones you can actually appeal.
Our guide to common documentation barriers on behavioral health claims covers paperwork patterns that trip up more than IOP.
Family First, Then the Chart
Stop hunting for one iop cpt code. Ask which family this payer uses for this diagnosis, then prove the hours and the auth. That’s the whole game.
PIMSY was built for programs that run IOP and PHP, not just weekly outpatient. Group notes, authorization tracking, and claims that carry CPT or HCPCS keep the decision tree in the workflow instead of in someone’s head.
Want to see how that looks for your payer mix? Book a demo and we’ll walk an IOP day from group note to claim.
Sources
2 Centers for Medicare & Medicaid Services, Healthcare Common Procedure Coding System (HCPCS)
3 CMS HCPCS Level II, H0015 long descriptor via AAPC Codify
5 Wisconsin ForwardHealth, Intensive Outpatient Program (IOP) Frequently Asked Questions
6 CMS, CY 2024 OPPS/ASC Final Rule fact sheet (Section 4124, CAA 2023, Medicare IOP benefit)