Fees & finance
Transport fee setup
Put a monthly fee on each stop, create the TRN fee type before assigning students, and know what happens to unpaid months when a student leaves the bus.
Fees & finance guide for day and boarding schools.
Last updated August 29, 2026
Transport billing is derived from geography. The monthly fee is a property of the stop, so two children boarding at the same stop pay the same amount regardless of route or vehicle. Assigning a student to a stop generates one fee instance per month, each keyed by the assignment and the year-month, which makes the sync safe to re-run: months already billed are skipped rather than duplicated.
Order matters more here than almost anywhere else in fees. The fee type carrying the code TRN must exist before the first assignment, because the sync looks it up rather than creating it. Assign students first and you get transport rides with no charges, and no error visible on the assignment screen.
Set up in this order
- Create a fee type with the code TRN at /fees/fee-types
- Confirm the active academic year, since billing months run to its end date
- Define routes and stops at /transport, setting a monthly fee on every stop that charges
- Assign students to stops; each assignment generates its own installments
- Check the generated lines on the student fee ledger before opening collection
What the generated instances look like
| Field | Value |
|---|---|
| Amount | The monthly fee on the assigned stop |
| Due date | The seventh of each billed month |
| Range | Current calendar month to academic year end, at most twelve months |
| Note | Carries the assignment id, the year-month, and the stop name |
Handoff
Once created, transport charges are ordinary fee instances and stop being a transport concern. They appear on the family fee page alongside tuition, are collected at the counter or online, appear in outstanding and defaulter reports, and are chased by the same dunning ladder. The only transport-specific behaviour left is the waiver applied when the assignment ends, which is why unassigning a student in the transport module and forgetting to tell finance still produces the right ledger.
Limits
- Billing is whole months only. A student joining mid-month is charged the full month
- There is no pro-rata refund on leaving; unpaid months are waived and paid months stand
- One-way or alternate-day pricing is not modelled - the stop has a single monthly figure
Common questions
Quick answers in plain language.
I assigned a student to a stop and no fee appeared. Why?+
Two common causes. Either the stop has no monthly fee, or greater than zero, or there is no fee type with the code TRN. Without that fee type the sync stops immediately and reports trn_fee_type_missing. Create it at /fees/fee-types before assigning anyone.
When are transport installments due?+
The seventh of each billed month. Billing runs from the current calendar month to the end of the academic year, capped at twelve installments.
What happens to the fee when a student stops using the bus?+
Ending the assignment waives every unpaid installment for that assignment - status WAIVED, payable zero, with a note recording the reason. Installments that were already paid are left alone, so the history and the receipts stay intact.
Do I need to create a fee structure for transport?+
No. If no active TRN structure exists for the academic year, one is created automatically using the stop monthly fee, twelve installments, and a seven-day grace period. You only need the fee type.
Related searches
School leaders and IT teams often search for: bus fee monthly charge, and route stop fee schools.

