Financial reports
Expected tuition versus collected revenue, why they never match, and the outstanding-payments list.
Reports then Financials holds three reports. They look like three views of the same money and they are not — they answer three different questions, and the difference between the first two is the single most common misunderstanding in the whole product.
Owner and Admin only.
The one-sentence version
Tuition Tracking is what your active roster should pay you this month. Revenue Over Time is what actually arrived in your Stripe account. They will not match, and there is nothing wrong when they don't.
1. Revenue Over Time
"Completed payment revenue by month." An area chart of the last twelve months, one point per month.
What goes into a month's figure:
- Every charge your studio took that succeeded, plus every charge that was partially refunded, counted at the amount actually kept.
- Bucketed by the date the payment was processed.
- Refunds are netted out. A $95 charge with a $20 refund contributes $75.
What is deliberately left out:
| Excluded | Why |
|---|---|
| Fully refunded charges | The net is zero, so including them would add nothing but noise. |
| Disputed charges | The money is contested or held. It is not settled revenue. |
| Pending charges | Not collected yet. |
| Failed charges | Never collected. |
Two things people expect this chart to be, and it isn't:
- It is not tuition. It is every payment: monthly subscriptions, one-off card charges your staff took at the desk, families paying online, and event fees. A belt-test weekend shows up here as a spike.
- It is not your takings. It is money that moved through Stripe. Cash, cheques, bank transfers and anything else collected outside Dojo Tiger are invisible to it.
An Independent studio sees a flat zero here, forever
If your payments mode is Independent — you collect money outside Dojo Tiger — there are no charge records, so this chart is empty and always will be. That is correct behaviour, not a fault. Tuition Tracking below still works, because it reads your rates rather than your money.
2. Outstanding & Failed Payments
Two short tables of things that need chasing.
Unpaid Invoices — invoices that have been issued and not paid, soonest due date first, up to 50 rows. Columns: the payer's name, the amount still outstanding (what was due, minus anything already paid against it), and the due date.
Failed Payments — charges that failed, most recent first, up to 50 rows. Columns: the payer's name, the amount, the plain-English decline reason from Stripe, and when it happened.
The name in both tables is the payer, not the student: for a child that is their guardian, because the guardian is who the card belongs to.
A failed payment on a monthly subscription is usually already being retried by Stripe — do not charge the card again by hand until you have read When a payment fails.
3. Tuition Tracking
"Monthly revenue breakdown and custom rates." This is the forward-looking one.
Expected Monthly Revenue
The headline figure. It is built by taking every enrollment whose status is Active, right now, resolving each one's effective monthly rate, and adding them up.
"Resolved" means the same precedence chain the enrollment table and monthly billing use: custom rate → promotion → sibling tier → program's monthly rate. The number is calculated in one place and shared, so the tuition report can never disagree with what an enrollment row says. See Setting your prices.
There is no date window. Change an enrollment's rate and this figure changes on the next page load.
The other two cards:
- Students with Discounted Rates — how many active enrollments are resolving to something other than the plain program rate.
- Avg Rate per Student — expected revenue divided by the number of active enrollments. Note that it is per enrollment: a student in two programs is counted twice, here and everywhere else on this report.
Revenue by Program
One row per program: the program's default rate, how many active enrollments it has, and the sum of their effective rates. This is where you see that Kids Karate is 60% of your income, or that a program you spend two evenings a week on is worth $400 a month.
Students with Discounted Rates
Every enrollment not paying the plain program rate, with why: the student, the program, the base rate, the discount label (Custom rate, Promo: Summer 2026, Sibling discount (15%)), the effective rate, and any note you left.
Read it once a quarter. Discounts are easy to grant and easy to forget, and this table is the only place they are all visible at once.
Why Tuition and Revenue never match
This is the section to read before deciding something is broken. All of the following are normal:
They measure different directions in time
Tuition is a forecast of a month that has not happened. Revenue is a record of months that have.
Not everyone active is being billed through Dojo Tiger
Tuition counts every active enrollment. Revenue only sees money that went through Stripe. A student who pays you in cash is worth full tuition in the first report and nothing in the second.
Revenue includes things tuition never counts
Event fees, one-off charges, catch-up payments, a family paying two months at once. All of it lands in Revenue; none of it is tuition.
A running subscription can be collecting an old amount
Changing an enrollment's rate updates Tuition immediately, but it does not re-price a subscription that is already running — until you press Sync, Stripe keeps collecting the old figure. So Tuition can be right and Revenue right and the two still disagree by exactly the difference. See When you change tuition.
Refunds only hit one of them
A refund reduces Revenue. It does not touch Tuition, because the student is still enrolled and still expected to pay next month.
Renewal dates are spread across the month
Subscriptions renew on the day they started, not on the 1st. A calendar month can hold two charges for one family or none, so a single month's Revenue is a lumpy sample of a smooth Tuition figure.
Failed and pending payments count for nothing
A card that declined on the 3rd and succeeds on the 11th moves revenue between months. A card that never recovers removes it entirely — while the student stays on the roster and stays in Tuition, because the payment system never changes your roster.
How to use them together
Compare Tuition's Expected Monthly Revenue against the most recent complete month of Revenue, and treat a persistent gap as a question rather than an error:
- A gap roughly equal to your cash-paying families is expected.
- A gap that grows month over month usually means subscriptions that were never started, or rate changes that were never synced.
- Revenue above Tuition means one-off income — events, catch-up payments — which is a good problem.
What this screen does not have
- No date range. Revenue is fixed at twelve months; Tuition is always now.
- No year-to-date, no tax report, no profit. Dojo Tiger records what your studio charged; it knows nothing about your costs, and it is not accounting software. For payouts, fees and settlement dates, go to your Stripe dashboard.
- No forecast beyond this month. Expected Monthly Revenue is one month, not a projection.
Revenue Over Time and Tuition Tracking each have a Download CSV button. Outstanding & Failed Payments does not — see Exporting to CSV.
Last reviewed