Fee Management
Overview
Fees in CampusOS are deliberately built in layers rather than as one flat "fee amount" field, because real schools need to change one part (say, this year's Library Fee) without rebuilding everything, and need to discount an individual student without touching the whole class's fee plan.
Key concepts — the four layers
- 1. Fee ComponentA single named charge, e.g. "Tuition Fee" or "Library Fee." Components are the reusable building blocks — the same Library Fee component can appear in every class's structure.
- 2. Fee StructureA class's complete fee plan for an academic year: a set of installments (e.g. Term 1, Term 2), each grouping together the components due at that time.
- 3. ConcessionA discount rule (percentage or fixed amount) applied to one individual student's fees — e.g. a 10% Sibling Discount — optionally requiring a supporting document before it can be applied.
- 4. ChallanThe final, computed, per-student bill for one installment: every attached component's amount, minus whatever concessions apply to that specific student. This is the number a parent actually sees and pays.
Components
Define the named charges once (Tuition, Library, Sports…).
Structure
Group components into installments for a class + year.
Concessions
Apply a discount rule to individual students.
Challan
Generate the final per-student bill and verify the math.
Why this order matters: a Structure cannot be built until its Components exist, and a Challan cannot be generated until a Structure exists — Concessions can be created any time, but only change what a Challan shows once applied to a student.
4.1 Fee Components
| Field | Required | Description | Example |
|---|---|---|---|
Component Name |
Required | Must be unique per school. | Tuition Fee |
Amount |
Required | Must be a positive number. | — |
Frequency |
Required | How often the charge recurs (e.g. per term, one-time, annual). | — |
4.2 Fee Structure
| Field | Required | Description | Example |
|---|---|---|---|
Class |
Required | Which class this structure applies to. | 5 |
Academic Year |
Required | Must match the year configured in Academic Structure. | 2026-27 |
Installment Name / Due Date |
Required | Each installment groups a set of components under one due date. | Term 1 — due 2026-06-15 |
Components (per installment) |
Required | At least one fee component must be attached to each installment. | — |
4.3 Concessions
| Field | Required | Description | Example |
|---|---|---|---|
Rule Name |
Required | Descriptive name shown when applying it to a student. | Sibling Discount |
Discount Type |
Required | Percentage or fixed amount. | Percentage |
Discount Value |
Required | Must be between 0 and 100 for a percentage rule. | 10 |
Document Required |
Optional | When on, the rule cannot be applied to a student without an uploaded supporting document (e.g. an RTE certificate). | — |
Checked at the moment the rule is applied to a specific student, not when the rule itself is created.
The concession is rejected until a supporting document (e.g. an RTE certificate) is attached.
The concession applies immediately and is reflected on the student's next generated challan.
4.4 Challan generation
Validation rules & common errors
| Trigger | Error shown | Resolution |
|---|---|---|
| Duplicate fee component name | This component name already exists | Choose a unique name. |
| Zero or negative component amount | Amount must be greater than zero | Enter a positive amount. |
| Fee Structure saved with no installments | At least one installment is required | Add at least one installment before saving. |
| Installment saved with no components attached | At least one component is required | Attach at least one fee component to the installment. |
| Concession discount value outside 0–100% | Discount value out of range | Enter a percentage between 0 and 100 (or switch to a fixed amount). |
| Document-required concession applied without an upload | A supporting document is required for this concession | Upload the required document before applying the rule. |
After building or changing a Fee Structure or Concession, generate one challan and check the breakdown — it’s the fastest way to catch a misconfigured installment or a concession that isn’t computing as expected.