Billing a Term
Raising the term's bills, and everything you can do to one afterwards.
Before you start
Bills are built from a published fee structure, so your fees must be set up and published first — see Setting Up Your Fees. A structure left in draft charges nobody, and that is far and away the most common reason a billing run produces no bills at all.
1. Open the billing run
Go to Finance → Invoices and choose "Generate invoices". Pick the "Academic year", then the "Charge cycle". "Termly — this term's fees" is the ordinary run: it bills every fee set up as per-term, and the first termly bill of the session also carries the fees set up as per-session — a development levy, say — so parents get one bill, not two. A child who joins in the second term gets the session's fees on their first bill instead. A per-session fee is only ever billed once a session, however many runs you make. "Sessional — per-session fees as a separate bill" is for a school that sends the session's fees on a bill of their own; it bills only per-session fees not yet billed, and the list headed "Per-session fees to bill" narrows it to some of them. "One-off — only the one-off fees named below" bills only the fees marked in the list headed "Fees to bill", which offers only fees set up as one-off — so an excursion never brings the term's tuition with it. A termly run also asks for the "Term".
2. Fill in only what you need
"Due date" is when the bill falls overdue — leave it empty to use the dates on your fee structure. "Charge name" appears on sessional and one-off runs, and it is more than a label: it is what tells one charge apart from another. Bill an excursion, then bill a second excursion the same session without naming it, and the run skips every student as already billed. Name each one — the form suggests a shape like excursion-michaelmas — and both bill. "Only these classes" narrows the run to the classes you tick. "Specific pupils" bills only a few children instead: type their admission numbers, one per line or separated by commas. A number the school does not have stops the run and is named, so nobody is billed short without your knowing. Leave both empty for an ordinary termly or sessional run.
3. Decide whether to issue straight away
"Issue immediately" is the difference between a bill a parent can pay and a draft nobody can. Issued bills are frozen records, payable at once. Left unticked, the run produces drafts you can check over first and issue afterwards from each bill — useful the first time you bill a new structure. Then press "Run billing".
4. Read what it tells you
The run reports what it did, count by count, and it is safe to run again: billing the same thing twice does not charge anybody twice, and the second run reports what it skipped. That is the rerun protection working, not an error. So after admitting a few more pupils you can simply run it again, and only the new ones are billed. A child with nothing due on the run — a sessional run after the termly run already billed the session's fees — is named and left alone. A child two of your fee structures both apply to, where neither is narrower than the other, is named and not billed until you change one of the structures, because there is no single price to charge them. A fee set up as one-off is never billed by a termly or sessional run, even when it sits in the term's fee structure; the run lists any it left off, so you can bill them with a one-off run. And a second sessional run in the same session finds every child already billed: a per-session fee not on the first sessional bill goes onto the next termly bill, or give the second run its own "Charge name" to bill it now.
Optional fees: who takes the bus
A fee set up as optional in a fee structure — the school bus, lunch — is billed only to the children you have opted in to it, and children are not opted in until you say so. Go to Finance → "Optional fees", choose the "Session" and the "Fee", and press "Show". The page lists, class by class, the children whose fee structure carries that fee as optional, and shows who is already opted in. Tick the children who take it, choose "From" — "Start of session" or the term they start — and press "Opt in selected". They stay opted in for the rest of the session, so you do not enter them again each term. A fee charged once a session is billed once, on the first bill after the child is opted in. When a child stops, tick them, choose the "Last term billed" and press "Withdraw selected": the fee stops from the next term, and bills already raised are not changed. A withdrawal can only end an opt-in sooner, never later. If you opted a child in by mistake and nothing has been billed under it yet, press "Remove" on their row; once they have been billed, withdraw them instead. A child opted in after their bill for the term was made is not added to that bill: void their draft and run billing again, or the fee starts on their next bill. A billing run lists any optional fee it left off because nobody was opted in, before you issue anything. Until October 2026 every optional fee was billed to every child, so the first run after that change leaves those fees off until you record who takes them; "Billing anomalies" lists the optional fees already billed to children who are not opted in, and its "Record opt-ins" link opens this page with those children ticked.
Fees billed twice before
Before October 2026 a sessional or one-off run billed the whole fee structure, so some families may hold a term's tuition on two bills, or a levy on every term's bill. Finance → Invoices → "Billing anomalies" lists each such bill with what to do, so that every fee ends up on exactly one bill. One copy of each fee is marked "Keep — this is the copy that stays" — the term's own bill, or the bill the session's levy was first charged on — and is left alone. A bill on which every line is a copy of a kept one, with nothing paid, says "Void — nothing has been paid". Any other copy is taken off the bill with a concession funded by the school, because voiding that bill would also cancel fees it rightly carries, or because money has already been paid on it. Nothing on that page changes a bill for you — open each one and act on it there. The page also lists any fee structures that overlap, which stop the pupils they share from being billed at all until one is changed.
Finding a bill afterwards
Finance → Invoices lists what you have raised, and filters by year, "Term", "Document" status — "Draft", "Issued" or "Voided" — and "Settlement" status: "Outstanding", "Partially settled" or "Settled". It does not list children by name, so to see one family's bills put that student's ID in "Payer ID" and press "Filter".
What you can do to one bill
Open a bill and you can "Download PDF" to hand or send to a parent, "Record a counter payment" when they pay you directly, "Apply a concession", set up "Installments", or apply a sibling discount. A draft is issued here too, with "Issue invoice".
Letting a family pay in parts
Under "Installments", set the "First due" date and how many "Months apart" the parts fall, press "Suggest schedule" to see the dates and amounts, and "Apply this schedule" to put the plan on the bill. "Remove installment plan" takes it off again. Every part must fall due between the day the bill was issued and the end of its session — or of its term, if the fee structure says so — and the page shows those dates, with any limit the fee structure sets, above the form. The bill itself is not overdue while the parts are being paid on time — but do not carry that over to the arrears screen, which chases on the bill's own "Due date" and quotes the whole balance, because it does not know about plans at all. Read Chasing Unpaid Fees before you chase a family on one.
Correcting a bill
An issued bill cannot be edited — that is deliberate, so a bill a parent already has never changes behind them. To reduce one, use "Apply a concession": choose the "Type", say who is "Funded by", give the "Amount (₦)" or a "Rate %" and a "Reason", then "Apply adjustment". To cancel one outright, "Void invoice" and raise a fresh bill in its place.
Still stuck?
Email info@tocel.ng and tell us which guide you were following.