CohortLedger· v1
Learn / Billing

Quarterly ESA invoicing for microschools: the math when families are partly funded

How to invoice when an ESA covers part of tuition and the family owes the rest. Real numbers, real timing, the spots where money goes missing.

Effective June 8, 2026

Quarterly ESA invoicing for microschools is mostly straightforward when a family is fully ESA-funded and tuition lines up neatly. The hard part is the families who are partly funded. The math is where money goes missing.

Below is the playbook we use in CohortLedger. Real numbers, real timing, the spots to watch.

Start from the annual award and the annual tuition

Take the family’s ESA award for the year and the school’s tuition for the year. Divide both by four. That gives you a per-quarter ESA portion and a per-quarter tuition. These are the two numbers every downstream calculation comes from.

Example. The Castillo family has one student, Aria, on the Arizona ESA. The award is roughly $7,431 per year. Lone Star’s tuition is $7,200 per year. Per quarter:

  • Aria ESA per quarter: $1,857.75
  • Aria tuition per quarter: $1,800

ESA exceeds tuition. Aria is fully covered, with about $57 of unused award that the family can apply to books or supplies through the ClassWallet marketplace. Lone Star invoices the ESA for $1,800. There is no out-of-pocket portion.

Now the tricky case

The Reed family has one student, Hazel, on Utah Fits All. The award is $8,000 per year. Lone Star’s tuition for an out-of-state Utah student is $9,000 per year (the school charges a small premium because the Utah platform routes through Odyssey and the reporting overhead is real). Per quarter:

  • Hazel ESA per quarter: $2,000
  • Hazel tuition per quarter: $2,250

ESA does not cover the full tuition. The family owes $250 per quarter out of pocket. The invoice has two lines: an ESA portion of $2,000 routed to Odyssey, and a family-owed portion of $250 due directly to the school.

The timing problem

Even when the math is clean, ESA money takes time to land. The funding window for a quarter typically opens around the 15th of the first month and closes around the 30th. Funds submitted into the window deposit on a rolling basis. Once deposited, they take five to ten business days to settle in your bank account.

That means a quarter looks like this:

  • Day 0: you generate the quarterly invoice batch. ESA portions are marked pending. Family-owed portions are marked unpaid.
  • Day 1 through 15: families with the platform claim the quarter, CohortLedger updates ESA portions to received as deposits arrive.
  • Family-owed portions follow whatever payment cadence the school collects on, ACH or check.
  • By end of month one: pending should be down to a handful of stragglers. End of month two: any still-pending invoices need a phone call.

The partial-receipt problem

Sometimes ClassWallet, Odyssey, or Step Up deposits a fraction of the expected ESA portion in the first window, with the balance staged for a later date. The platform reasons are varied: family eligibility re-verification, mid-quarter recertification, prior-quarter clawbacks.

Treat partial as a real state. Track what came in, when, and what is still expected, with a date. CohortLedger marks an invoice partial and shows both numbers, so when you reconcile against your bank statement the math is on screen, not in your head.

The out-of-pocket family

Some families do not have an ESA and pay full tuition out of pocket. Invoice the full tuition as the family-owed portion. No ESA portion, no pending state. Treat these the same way you would treat any private tuition family, with whatever payment plan you have agreed.

The siblings case

When two siblings are enrolled on the same ESA program, generate one family invoice with two students and sum the per-student ESA and tuition. The ESA portion is the sum of each sibling’s per-quarter ESA, capped at the sum of per-quarter tuition. The family-owed portion is the leftover, or zero if ESA covers everything.

What to write down for every invoice

  1. The ESA portion in cents, with a status (pending, received, partial, not applicable).
  2. The out-of-pocket portion in cents, with a status (paid, partial, unpaid).
  3. Received date if any. Expected date if pending. Both if partial.
  4. The quarter and the platform.

That is the audit trail. If a state reviewer ever asks for evidence that this quarter’s ESA funding was correctly invoiced, received, and reconciled, you hand them a dated list and you are done.

Where this lives in CohortLedger

The Billing tab generates the quarterly batch, splits ESA from OOP, and marks status as deposits arrive. The Overview tab shows the running totals (expected, received, pending, outstanding). Plain numbers, no spreadsheet.

Continue reading