6.1 Learn the ABA billing codes
Last updated: July 28, 2026
Almost everything you bill in ABA runs through five CPT codes. You don't need to be a biller (Alpaca handles claim creation and submission), but understanding what each code means (and how they relate) makes the session, supervision, treatment-plan, and payer guides click into place. Keep this as your one-page reference.
The CPT Codes You'll Use
Code | What It Is | Who Delivers It |
|---|---|---|
97151 | Assessment: the initial behavior-identification assessment used to build the treatment plan (and later reassessments). | BCBA |
97153 | Direct therapy: one-to-one ABA with the client. This is the bulk of your billable hours. | RBT / BT |
97155 | Protocol modification: a session that adjusts the treatment protocol; this is also how supervision is captured (see below). In a one-tier model, it's also how a BCBA bills direct treatment (see below). | BCBA |
97156 | Family / caregiver guidance: working with the parent/caregiver, not the child directly. | BCBA |
0373T | Multi-technician / high-intensity: 2:1 or group arrangements, where the payer allows it. | 2 technicians |
(You may also see 97152, an additional assessment code. Assessment codes are the ones payers watch most closely for frequency limits.)
⚠ Heads up: 0373T is a temporary Category III code. The AMA is retiring it (along with 0362T) in the January 2027 CPT update, replacing it with permanent codes under a new "two-technician base plus add-on" billing structure. Some payers have already stopped accepting it. Worth a note to revisit this table once the 2027 codes are finalized.
What a "Unit" Is
ABA is billed in 15-minute units: 1 unit = 15 minutes of service. A 2-hour direct-therapy session is 8 units of 97153. When Alpaca builds a claim it sums the units for the same code and picks the place of service with the most units.
Payers cap how many units they'll authorize per period (and sometimes per day). Those caps live on the authorization, which you watch on the client's Insurance tab.
Caps Vary by Payer and Authorization
Every authorization sets its own limits on top of the code itself: how many units of a given CPT are allowed per day or per authorization period. These caps live on the authorization, not the CPT code, so they differ payer to payer and even client to client. A couple of examples of the kind of caps you might see:
No more than 8 hours (32 units) of direct therapy (97153) per day.
No more than 2 hours (8 units) of assessment (97151) per authorization.
Note: These are illustrative examples, not universal rules. Always check the specific authorization on the client's Insurance tab, or the relevant payer guide, before scheduling near a limit.
Modifiers: the Little Suffixes on a Code
A modifier is a two-character tag appended to a CPT code to tell the payer something extra about the service. In ABA the one you'll see most is:
TJ: required by Colorado Medicaid only, to identify habilitative ABA services. No other payer uses it.
Alpaca applies the correct modifiers automatically based on the payer, so you don't hand-code them, but if you see a TJ on a Colorado Medicaid claim, that's expected, not an error.
Protocol Modification = 97155, and How It Links to 97153
The single most important mechanic to understand: "protocol modification" is the 97155 code, and a 97155 session is how a BCBA both modifies the protocol and supervises the RBT.
Alpaca links a 97155 (BCBA) session to the RBT's 97153 (direct therapy) session it overlaps, and that link is what makes the supervision count toward your required ratios (10% of client hours, 5% of RBT hours; see the Supervision guide).
If you ever see "protocol modification" on a session type, CPT, or supervision screen, it means 97155.
One-tier model: In a one-tier (BCBA-delivered) model, where a BCBA is providing the direct treatment themselves rather than supervising an RBT, the BCBA bills that direct treatment under 97155. So 97155 covers both protocol modification / supervision and BCBA-delivered direct treatment, depending on the model your practice runs.
Concurrent Billing: When a BCBA and RBT Overlap
Because supervision is a 97155 session run alongside an RBT's 97153, the two codes often overlap in time. Whether a payer lets you bill both for the same interval varies:
Most payers allow the concurrent 97155 + 97153 that supervision requires.
TRICARE does not allow 97153 and 97155 to be billed simultaneously for the same client. Colorado Medicaid allows the concurrent 97155 supervision + 97153 billing.
Alpaca handles this for you by carving out the overlapping interval so the claim stays compliant. You don't have to do the math, but expect TRICARE session times to be split accordingly.
Note: Concurrent-billing rules, unit caps, and which codes a payer even covers are all payer-specific. See the Payer-Specific Rules guide and your region's payer pack.
Electronic Visit Verification (EVV) for Colorado Medicaid
Electronic Visit Verification (EVV) is an electronic clock-in/clock-out that confirms to the state that a session actually happened. Today it applies to one payer: Colorado Medicaid. Whenever a client is assigned to Colorado Medicaid, Alpaca automatically turns EVV on for that client's sessions. It's triggered by the payer, not by where the session takes place, so it applies to that client's sessions regardless of location. If EVV is missing or the times are wrong, the claim can be denied and the family's care can be delayed.
What this means in practice:
Add your SSN in My Profile. Alpaca needs it to connect you to the state EVV system, and if we don't have it on file you'll be asked for it before the session.
Clock in by starting the session in Alpaca when the session begins.
Clock out when you finish, after reviewing the note and data. Your clock-out time sets how long the session was and how much is billed.
Do not clock out early. Clocking out more than 8 minutes before the scheduled end causes a billing issue and a manual adjustment, which can lower your EVV compliance score. Clocking out on time, or slightly late, is fine. When in doubt, don't cut it short.
If a client is not on Colorado Medicaid, you won't see this step. See the full Electronic Visit Verification (EVV) for Medicaid guide for details.
The Note → Units → Claim → Payout Chain
Every dollar starts with a signed note. The chain is:
A session is delivered and its note is signed (by the Sunday 4:00 PM PST payout cutoff; there's also a universal 72-hour hold before a claim can go out).
The signed note produces billable units for its CPT code.
Alpaca groups units into a claim (one claim per client + date of service + rendering provider + CPT) and submits it to the payer.
Alpaca pays you biweekly for the reimbursable portion, guaranteed. This does not wait on the payer: you're paid on Alpaca's biweekly cycle whether or not the insurer has responded yet.
Separately, and on its own timeline, the payer responds with either payment or a denial. Denials and missing-info requests surface to you as escalations. Because your payout isn't gated on that response, a slow insurer doesn't slow your pay.
The practical takeaway: an unsigned note is unbilled revenue. Signing notes on time is the single most reliable thing you can do to protect your payouts.
Quick Reference
97151 assessment (BCBA) · 97153 direct therapy (RBT) · 97155 protocol modification / supervision, and BCBA-delivered direct treatment in a one-tier model · 97156 caregiver guidance (BCBA) · 0373T 2:1.
1 unit = 15 minutes.
Payers cap units per authorization; both per-day and per-period caps are common (e.g., an 8-hour/day cap on 97153, or a 2-hour cap on 97151).
"Protocol modification" = 97155, and it links to the RBT's 97153 to make supervision count.
TJ modifier = Colorado Medicaid only (applied automatically).
TRICARE forbid simultaneous 97153 + 97155: Alpaca carves out the overlap.
EVV (Colorado Medicaid clients only, triggered by payer not location): clock in/out on time and never clock out more than 8 minutes early, or it hurts your compliance score.
Signed note → units → claim → biweekly, guaranteed payout (independent of the payer's response). Unsigned = unbilled.