School district ABA contract billing is the monthly process of converting a clinic's RBT session notes, BCBA supervision logs, and IEP service-minute authorizations into a per-student, per-session, per-provider invoice in the format the district's accounts payable team requires, with the supporting documentation packet they need to verify and pay it. The invoice lists each session by date, CPT code (97153, 97155, 97156, 97158, 97151), rendering provider with credential (RBT, BCBA, or BCaBA) and NPI, supervising BCBA-of-record on every RBT line, IEP minutes authorized versus minutes delivered for the period, and a concurrent-supervision flag so overlapping RBT and BCBA time is not double-billed.
The payer is the school district itself, under a direct contract or purchase order. That is the structural distinction from every other kind of applied behavior analysis school district invoice work the clinic might encounter. There is no Medicaid managed care plan, no commercial insurance carrier, no Tricare. Almost no district accepts a CMS-1500 claim for IEP services delivered under contract; the format is an Excel or CSV upload to an AP portal, occasionally a paper PO with PDF attachments. The documentation packet the district expects is built around clinical-supervision evidence and IEP-minute reconciliation, not around medical-necessity narratives, prior authorizations, or denial appeals.
The monthly cycle is familiar to anyone who runs it. Gather the RBT session notes, BCBA supervision logs, the district student roster for the period, and the underlying contract or PO. Produce the per-student / per-session / per-provider invoice. Attach the supporting documentation packet. Submit through the district's AP portal, or by the channel the contract specifies. Reconcile remittance against the invoice when payment lands 30 to 90 days later. If your clinic has not contracted with a district before and you want a more general orientation first, the primer on invoicing a school district for related services covers the cross-modality basics that sit underneath this article's ABA-specific detail.
The Field Schema Your Monthly Invoice Spreadsheet Needs
The packet starts with the spreadsheet. A working RBT BCBA school services billing spreadsheet carries the same columns from one district to the next, in roughly the same left-to-right order, even when the district's portal repackages them under different headers. Treat the list below as the working column set, then map it to the specific district's portal layout last.
- District contract or PO number
- School site name
- District student ID (not the Medicaid ID, not the commercial insurance ID)
- Student initials or coded name, for PHI handling on the invoice face
- IEP service-minutes authorized for the period, expressed weekly or monthly as the IEP itself expresses them
- IEP service-minutes delivered this period
- Service date
- Session start time
- Session end time
- Total session minutes
- CPT code: 97153 (adaptive behavior treatment by protocol), 97155 (protocol modification by BCBA), 97156 (family adaptive behavior treatment guidance), 97158 (group adaptive behavior treatment), or 97151 (behavior identification assessment)
- Units, in 15-minute increments
- Rendering provider name
- Rendering provider credential: RBT, BCBA, or BCaBA
- Rendering provider NPI or the district's credentialing-file ID
- Supervising BCBA name, on every RBT-delivered line
- Supervising BCBA NPI, on every RBT-delivered line
- Concurrent-supervision-minutes flag
- Contract rate per unit
- Line total
- Cumulative student total for the period
- Notes column
The notes column carries a small fixed vocabulary that the district reviewer learns to read at a glance: school closure, snow day, student absent, IEP meeting day (where the service was on the schedule but the student was in the meeting), parent cancellation, supervision-only-not-billable, BCBA protocol modification. Codes the reviewer recognizes are the difference between a clean approval and a packet sent back for clarification.
Three fields draw most of the AP team's attention, and each rejects packets for a specific reason. The district student ID is the most common rejection cause: districts roster students by their own ID, and a Medicaid ID or commercial insurance ID in that column kicks the row back even when the underlying delivery was clean. Separate authorized and delivered minute columns exist because the district reconciles delivery against the IEP, not against the contract; collapsing them into one column hides the reconciliation the reviewer is trying to perform. Credential plus NPI on the rendering provider line matters because the contract pays a different rate for BCBA-delivered minutes than for RBT-delivered minutes, and the credentialing-file match is part of how AP confirms the rate. Supervising BCBA-of-record on every RBT line, with both name and NPI, sits in the same category: the district's clinical-supervision documentation requirement attaches to the RBT delivery row, not to a separate supervision log filed elsewhere.
The contract rate per unit is rarely a single flat figure. Most districts pay one rate for 97153 delivered by an RBT, a different rate for 97155 delivered by a BCBA, and a different rate again for 97156 family guidance, with separate rates for 97158 group and 97151 assessment where those codes are in scope. The rate column has to be sourced from the in-force contract by code and credential combination, not from a clinic-wide default.
The same fields that satisfy the invoice satisfy the audit. If the spreadsheet captures the contract reference, the student identifiers, the IEP minute reconciliation, the credential and supervision data, and the session times cleanly at the row level, the supporting documentation packet largely assembles itself from the underlying session notes and supervision logs. The packet is harder to build when the spreadsheet hides one of these fields than when it merely lists too many. For a parallel view from the receiving end, the district-side related-services invoice spreadsheet review walks the same workpaper from the district AP perspective and shows what the reviewer is checking column by column.
The Concurrent Supervision Rule, Worked Through End to End
When a BCBA observes and modifies protocol while an RBT is delivering 97153 to the same student in the same time window, the overlapping minutes cannot appear on both the 97153 line and the 97155 line. Bill the overlapping minutes once, on the BCBA's 97155 line, and back them out of the RBT's 97153 line. That is the entire rule. Concurrent supervision billing 97153 97155 fails the same way every time it fails: both lines show the overlap minutes, the district's overlap check flags the row pair, and the packet stalls.
The arithmetic is easier to see on a small worked example. Take a single 60-minute session in which the RBT delivers 97153 the full 60 minutes and the BCBA is present for 15 of those minutes delivering 97155, modifying the behavior plan in real time while the RBT continues with the student.
Written naively, the spreadsheet produces two rows for the session:
- RBT line: 60 minutes, 4 units of 97153
- BCBA line: 15 minutes, 1 unit of 97155
That looks reasonable on its own, but it bills 75 minutes of provider time for 60 minutes of student session. The 15 overlapping minutes appear once on the RBT line and again on the BCBA line, which is the double-bill the district's overlap check catches.
The reconciled rows back the overlap out of the RBT line and leave the BCBA line whole:
- RBT line: 45 minutes, 3 units of 97153
- BCBA line: 15 minutes, 1 unit of 97155, with the concurrent-supervision-minutes flag set and a notes entry such as "15 min concurrent BCBA supervision backed out of 97153 line"
Total billed time now sums to 60 minutes, matching the session length. The audit trail sits in the notes column, and an automated overlap check passes because the times no longer overlap on a billable basis.
This is the most-cited audit and denial trigger for school-contract packets, and the reason is procedural rather than clinical. Districts run automated overlap checks on session times by student. Any row pair where RBT and BCBA times overlap without a corresponding concurrent-supervision flag and a corresponding minute back-out gets flagged for review or outright denial. The clinic can usually win the reconsideration with the supervision log attached, but the cycle costs weeks of float.
Two things about the workpaper mechanics are worth getting right the first time. The concurrent-supervision-minutes column is populated from the BCBA supervision log, not from the RBT session note; the RBT writes a full session and the supervisor's overlap appears in the supervision log entry for the same date and student. The reconciliation happens at the spreadsheet level after both source documents are extracted, not at the source-document level, which means a reviewer reading either source in isolation will not see the back-out. The notes column is the audit-trail justification the district reviewer reads when the flag is set; treat the wording as part of the row, not as commentary.
The rule fires only on overlap. When a BCBA delivers 97155 to the student without an RBT present in the session window, the 97155 line stands on its own at full minutes and there is no back-out to perform. The same is true for a clean 97156 family guidance line, a 97158 group line, or a 97151 assessment session where the BCBA is the sole provider. The reconciliation logic only engages where two provider lines for the same student touch the same minutes.
Reconciling IEP-Authorized Minutes Against Delivered Minutes
The IEP service minute reconciliation ABA invoice work is what the authorized and delivered columns exist to do. They are not the same number, they come from different sources, and a district reviewer reads them as a pair before approving the student's totals for the period.
The authorized number is a per-student, per-period figure that comes from the IEP service grid. It is expressed weekly in most IEPs and monthly in some. The contract sets the rates, the credential rules, and the supervision framework; the IEP sets how many minutes of ABA the student is funded to receive. Two different documents, two different review processes inside the district, and they have to be carried as two different columns on the workpaper.
The delivered number is the sum of session minutes from the RBT session notes for the student over the period, plus any non-overlapping BCBA-delivered minutes for that student, after the concurrent-supervision back-out described in the previous section. A workpaper that totals delivered minutes before the back-out will systematically overstate delivery against authorization, which is the same shape of error that drives denials at the row level even when nothing else on the line is wrong.
The two failure modes are different problems with different consequences. Under-delivery against authorization, where the student received fewer ABA minutes than the IEP funded, is not a billing problem on its own; the clinic bills what was delivered, not what was authorized. It is a district-side trigger for a service-recovery conversation. The IEP team may need to schedule make-up sessions, adjust the service grid, or document the reason for the gap. The workpaper should surface the variance in the student's period summary so the clinic clinical lead and the district case manager see it before the AP team raises it. The cost of not surfacing under-delivery is a relationship issue, not a billing issue, and it is larger than the billing impact.
Over-delivery against authorization is the billing problem. Minutes delivered above the authorization for the period are non-billable to the district, even though the service was real and the RBT was paid for those hours. The spreadsheet has to enforce the cap. Sort the student's sessions chronologically by date and time, accumulate delivered minutes against the period authorization, and when the running total crosses the authorization, split the session that crosses. The portion of that session within the authorization stays on the billable line; the portion above moves to a non-billable holding row with a notes entry such as "exceeds IEP authorization for period". Sessions delivered after the cap is reached follow the same pattern, billed at zero with the notes entry preserved for the audit trail.
Mid-period authorization amendments add one wrinkle the workpaper has to handle structurally rather than as a one-off correction. An IEP team meeting in the middle of the period can raise or lower the service grid, and the change is effective from the meeting date forward. The workpaper needs an effective-date column on the authorization, or a per-period authorization entry that captures both the pre-amendment and post-amendment numbers, so that the cap on a December 1 session reflects the authorization in force on December 1 rather than the figure that applied for the prior six weeks. Carrying a single annual authorization figure produces wrong cap behavior whenever an amendment lands inside a billing period.
For NPA-structured contracts, the same per-student reconciliation logic carries across modalities; NPA monthly invoice extraction by student and IEP-authorized minutes walks the cross-modality version of this reconciliation for clinics operating under SELPA-administered contracts where per-student IEP-minute caps drive the invoice the same way.
School-Calendar Non-Billable Days and the School-Year Contract Cycle
Every ABA provider monthly district invoice runs into a handful of recurring cases where the schedule shows a session that did not turn into billable minutes. The notes column carries the reason; the period totals have to land correctly underneath.
Scheduled school closures, the district calendar holidays the contract acknowledges from the start of the year, are the easiest case: no session, no row, no notes entry needed. Unplanned closures are harder, because the session was on the schedule and the clinic may have generated partial documentation before the closure was announced. Snow days, weather closures, infrastructure outages all sit here. The workpaper either omits the row entirely (no session note was generated) or carries a row with zero billable minutes and a notes entry such as "snow day, district closed". The choice depends on whether the clinic's source documentation system created a stub for the planned session. Either approach is defensible; the requirement is that delivered minutes for the period still sum correctly.
IEP team meeting days fall into the same shape. The student was on the ABA schedule, but the meeting took the student out of session. No billable minutes, notes entry "IEP meeting, service not delivered". Parent cancellations and clinic-side cancellations follow the same pattern with the matching notes wording. A district reviewer reading the notes column should be able to reconstruct the month's exceptions without opening any of the underlying session notes.
The supervision-only-not-billable case deserves its own treatment because it does not map onto a session row at all. When a BCBA does a supervision visit that includes file review, parent consultation outside the 97156 family-guidance code, or treatment-plan revisions without delivering 97155 protocol modification in the student's session window, those minutes belong in the supervision log for clinical-compliance purposes but do not become an invoice line. The supervision log is the audit trail the district sees if it ever audits supervision delivery; the invoice line is the payment request. They do not have to match minute for minute, and trying to force every supervision-log minute onto the invoice is one of the more reliable ways to surface a billing-versus-clinical-records discrepancy at audit.
The school-year contract framing reshapes the workpaper at a higher level than any individual session. District contracts run on the academic calendar, August through June or July through June depending on the state, not on the calendar year. Rates renegotiate annually at contract renewal, which lands at the end of the school year rather than on January 1. The workpaper has to carry the in-force rate per period rather than a single annual rate table; a contract that renews in July with a 3% rate increase produces wrong line totals on the August invoice if the rate column still reads from the prior year. The cleanest pattern is to source the rate column per session from the contract in force on the session date, so that the cutover handles itself in the month the new rate takes effect.
Student rosters turn over across the August transition. IEPs are written for new students, transferred from other providers, or aged out, and the clinic's caseload for a given district may look meaningfully different on September 1 from how it looked on June 1. The August and September monthly packets typically need a roster reconciliation step against the district's current roster before the standard monthly cycle resumes; running the August packet against the prior school year's roster will surface mystery students who are no longer eligible and miss new students whose first month of service is sitting unbilled. The same school-year structure and calendar handling appears on the OT side as well; school district occupational therapy contract billing covers the parallel-modality workflow where these calendar mechanics drive the same workpaper decisions for a different credential set.
BCBA-of-Record on Every RBT Line, and the Clinical Standards Districts Cite
Every RBT-delivered session line on the behavior analysis school district vendor invoice, almost always a 97153 row, must name the supervising BCBA in two fields: the BCBA's name and the BCBA's NPI. The requirement applies regardless of whether that BCBA was physically present during the session. The supervising BCBA is the BCBA-of-record for that student under the clinic's clinical-supervision plan, not necessarily the BCBA who happened to observe the specific session being billed. Confusing the two costs clinics rejections every month: when an observing BCBA gets entered on a row because they did the observation, but a different BCBA holds the supervisory relationship under the clinical-supervision plan, the AP team's credentialing-file check rejects the row.
Districts attach the supervision requirement to the RBT row, rather than to a separately filed supervision document, for a practical reason. The row is the unit of payment. The district's contract typically commits the clinic to deliver RBT services under credentialed BCBA supervision, and the AP team verifies the supervisory link at the row where the payment is being requested. A supervision log filed separately, however thorough, does not satisfy the row-level verification because it is not in front of the reviewer at the moment of payment approval. Putting the BCBA-of-record on the row is the simplest way to make the credentialing-file match available where the verification happens.
The practical workpaper consequence is that BCBA assignment is a per-student, per-period field, not a flat clinic-wide field. When a clinic loses or transitions a BCBA mid-period, the BCBA-of-record changes on the affected students' lines from the transition date forward. The workpaper has to carry the assignment so that sessions before the transition date name the prior supervisor and sessions after the transition date name the new one. A workpaper that lists a single supervising BCBA per student for the full period will produce rejections in any month a transition occurs, and the rejection cycle delays payment on every affected line.
The clinical-standards source many districts cite in their RFP and contract language is the Council of Autism Service Providers (CASP). The CASP's ABA Practice Guidelines for the Treatment of Autism Spectrum Disorder frame what counts as adequate ABA service delivery for autism, and districts reference CASP rather than write their own clinical standards from scratch. The 3rd edition of the Council of Autism Service Providers' Applied Behavior Analysis Practice Guidelines for the Treatment of Autism Spectrum Disorder was released on April 29, 2024, and is written for healthcare funders, regulatory bodies, consumers, and ABA practitioners and employers, which is exactly the audience the district AP team and contract administrator sit inside. When an AP reviewer asks for the source behind a supervision requirement that feels unusual, CASP is almost always the answer the contract is pointing to.
The same credentialing-on-the-row pattern runs through related-services contracts in other modalities. School district speech therapy contract billing covers the SLP version, where the licensed SLP supervises the SLPA-delivered lines in the same structural way and the workpaper carries the supervising SLP on every assistant-delivered row. Treating the supervising-credential field as load-bearing rather than decorative is what keeps the packet defensible across audits, regardless of which credential is on which row.
District Format Variations, Adjacent Payer Streams, and the 2027 CPT Transition
Direct district contracts deliver invoices in three patterns. Excel or CSV upload to an AP portal is the dominant case across mid-sized and large districts: the district's procurement system has a defined column layout, the clinic uploads against that schema each month, and the portal returns a submission confirmation that becomes part of the audit trail. The column layout varies district to district, which is the practical reason the underlying workpaper has to be richer than any single district's portal layout. Paper PO with PDF attachments still appears in smaller and rural districts where the AP function has not moved to a portal yet. The clinic prints the invoice, attaches the supporting documentation, and mails or hand-delivers the packet against the PO. CMS-1500 is almost never the format for direct-district-contract billing because the payer is the district itself, not an insurance carrier, and the district is not configured to process medical claims. Clinics that expect to file CMS-1500 to a district are usually conflating direct-district-contract billing with school-Medicaid billing, which is a different stream entirely.
Multi-payer ABA bookkeeping is a separate workflow with its own documentation set. Clinics that run insurance, Medicaid managed care, commercial plans, and self-pay billing for the same patient panel handle medical necessity documentation, prior authorizations, CMS-1500 or 837P submissions, EOB processing, and denial appeals through a workflow this article does not cover. Multi-payer ABA therapy invoice extraction to Excel is the place that workflow lives. The boundary is clean: the work in this article ends at the direct district contract. Everything insurance-payer or commercial-payer adjacent belongs in the multi-payer workflow, even when the same student appears in both.
School Medicaid is a separate adjacent stream that some clinics participate in alongside their direct district contract. The direct district contract pays for the IEP-funded ABA delivery; the school-Medicaid layer (SHARS in Texas, SBHS in Massachusetts, and the equivalents in other states) separately reimburses the local education agency for the Medicaid-eligible portion of services delivered to Medicaid-enrolled students. The two streams use different documentation and different remittance formats, and the clinic that participates in both runs two reconciliations rather than one. School-based Medicaid R&S remittance reconciliation handles the school-Medicaid remittance side of that work.
California-certified Non-Public Agencies operating under SELPA-administered AB 114 contracts have invoice requirements that overlap with but extend beyond the generic direct-district-contract workflow. NPA certification numbers, master contract references, and SELPA-specific format fields all appear on the invoice in addition to the elements covered here. The IEP-minute reconciliation and credentialing requirements look the same; the contract structure around them is different. California NPA invoice requirements for school districts covers the NPA-specific layer for clinics operating under that structure.
The 2027 CPT transition is on the calendar already and worth surfacing in late 2026 contract conversations. The ABA Coding Coalition has six new CPT codes effective January 2027, with the older T-codes (0362T, 0373T) being deleted. Clinics with district contracts spanning the 2026 to 2027 year-end will need both code sets present in the same workpaper during the transition window. Sessions delivered in late 2026 bill under the current codes; sessions delivered in early 2027 bill under the new codes; a single monthly packet covering a late-December to early-January period may legitimately carry both code sets on different rows. Contract amendments may be needed at the district level if the contract names specific CPT codes as the billable services rather than referencing the current ABA code set generically. Surfacing the change with the district contract administrator before the calendar turn is cheaper than reconciling rejected claims in February.
Assembling the Monthly Packet from the PDF Pile
The input the clinic actually faces at month-end is a stack of PDFs from the EHR or session-tracking system: dozens to hundreds of RBT session notes, BCBA supervision logs for the same period, the district student roster, and the underlying contract or PO. For a single 8-to-20-student district contract this is typically 200 to 500 PDFs per month per district. Multi-district clinics multiply that, and a clinic running four district contracts can be looking at 1,500 to 2,000 PDFs to convert into invoices before any reconciliation work begins. The ABA clinic district billing packet is built from this pile, not from a clean database export.
The assembly sequence follows the structure of the prior sections. First, extract per-document fields from the session-note and supervision-log PDFs into row-level data matching the field schema above: service date and session times, CPT code and units, rendering provider with credential and NPI, supervising BCBA name and NPI, the student identifiers, and the notes-column codes. Second, run the concurrent-supervision reconciliation at the spreadsheet level using the extracted RBT and BCBA times, backing the overlap minutes out of the 97153 lines. Third, apply the IEP-authorized-minute cap per student per period, splitting any session that crosses the cap. Fourth, layer the calendar non-billable handling onto the period totals so closures, IEP meeting days, and cancellations land in the notes column without distorting the delivered-minute sums. Fifth, populate the supervising-BCBA fields from the per-period roster, respecting any mid-period BCBA transitions. Sixth, format the output to whatever the specific district's AP portal expects, which is usually a column rearrangement against the workpaper rather than a content change.
The first step is where the time goes. The RBT session note to district invoice spreadsheet conversion is the part of the cycle that scales linearly with caseload, and clinics doing it manually typically spend most of a working week per month per district on data entry alone. This is where Invoice Data Extraction fits the workflow as the tool clinics use to extract ABA session notes and supervision logs into a district invoice spreadsheet: upload the month's session-note and supervision-log PDFs as a single batch (the platform handles up to 6,000 files per job and individual PDFs up to 5,000 pages), write a prompt that defines the district's column schema including the credential and CPT-code fields, the concurrent-supervision flag, and the notes-column codes, and save that prompt to the prompt library. The platform returns a structured Excel, CSV, or JSON file matching the schema, with a source-file and page reference on every row so that any line on the invoice can be traced back to the originating session note or supervision log in a single click. The reference column is the audit trail the district AP team and an internal compliance reviewer both rely on when a row gets questioned, and it removes the "find the source PDF" step that otherwise breaks reconciliation flow.
The reuse story is what makes the saved prompt valuable past the first month. The prompt that worked for September runs again in October against a fresh upload of session notes and supervision logs with no reconfiguration; the schema is locked in. A copy of the same prompt with minor adjustments handles the next district contract, since the underlying field structure stays constant and only the column headers, the rate table, and the notes-column vocabulary change district to district. Three or four district-specific prompts in the library then cover the full clinic caseload, and the monthly cycle compresses from a week of data entry to a single batch run followed by the reconciliation work that actually requires human judgment.
Extract invoice data to Excel with natural language prompts
Upload your invoices, describe what you need in plain language, and download clean, structured spreadsheets. No templates, no complex configuration.
Related Articles
Explore adjacent guides and reference articles on this topic.
School District Occupational Therapy Contract Billing Guide
How OT contractors bill school districts each month. Covers invoices, signed timesheets, service logs, OTR/L vs COTA credentials, and packet assembly.
How to Invoice a School District for Related Services
Provider-side guide to invoicing school districts for related services, with invoice fields, service-log backup, and tips to reduce payment delays.
School District Speech Therapy Contract Billing Guide
How speech therapists bill school districts each month. Covers invoices, timesheets, service logs, direct vs indirect time, and rebilling risks.