Chapter 4

Fee Management

school_admin

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.

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

The Fee Components list before any components exist
Figure 4.43. Fee Components — empty.
The blank New Fee Component form
Figure 4.44. The New Fee Component form.
The New Fee Component form showing a validation error
Figure 4.45. Negative scenario — a duplicate name / invalid amount is rejected.
The New Fee Component form filled in for Tuition Fee
Figure 4.46. Filled in for Tuition Fee.
The Fee Components list showing Tuition Fee, Development Fee, Library Fee, Sports & Activity Fee, Computer Lab Fee, and Exam Fee
Figure 4.47. The full set of components created: Tuition Fee, Development Fee, Library Fee, Sports & Activity Fee, Computer Lab Fee, Exam Fee.
Field reference
FieldRequiredDescriptionExample
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

The Fee Structures list before any structure exists for Class 5
Figure 4.48. Fee Structures — empty for Class 5.
The blank New Fee Structure form
Figure 4.49. The New Fee Structure form.
The New Fee Structure form showing a validation error
Figure 4.50. Negative scenario — saving with no installments attached is rejected.
The New Fee Structure form filled in for Class 5
Figure 4.51. Filled in for Class 5, academic year 2026-27.
The Class 5 Fee Structure after being created
Figure 4.52. The Class 5 structure created.
The structure’s Installments section before any installments have been added
Figure 4.53. Installments — none added yet.
A validation error when adding an installment with an invalid due date
Figure 4.54. Negative scenario — an invalid due date is rejected.
Term 1 and Term 2 installments added, each with its own due date
Figure 4.55. Term 1 and Term 2 installments added, each with its own due date.
A validation error when trying to save an installment with no components attached
Figure 4.56. Negative scenario — an installment with no components attached is rejected.
Term 1 with its fee components attached
Figure 4.57. Term 1’s components attached.
Term 2 with its fee components attached
Figure 4.58. Term 2’s components attached.
The completed Class 5 Fee Structure, now activated
Figure 4.59. The structure activated — ready to be applied to students.
Field reference
FieldRequiredDescriptionExample
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

The Concession Rules list before any rules exist
Figure 4.60. Concession Rules — empty.
The blank New Concession Rule form
Figure 4.61. The New Concession Rule form.
The New Concession Rule form showing a validation error
Figure 4.62. Negative scenario — an out-of-range discount percentage is rejected.
The Concession Rules list showing Sibling Discount, RTE Full Waiver, and Staff-Child Concession
Figure 4.63. Three rules created: Sibling Discount (10%), RTE Full Waiver (100%, document required), and Staff-Child Concession (25%, document required).
Field reference
FieldRequiredDescriptionExample
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).
Applying a concession to a student — does this rule require a supporting document?

Checked at the moment the rule is applied to a specific student, not when the rule itself is created.

Access denied
Document Required is on, and no document has been uploaded for this student

The concession is rejected until a supporting document (e.g. an RTE certificate) is attached.

Access granted
Either Document Required is off, or a document has already been uploaded

The concession applies immediately and is reflected on the student's next generated challan.

Applying the Sibling Discount rule to Arjun Sharma
Figure 4.64. Applying the Sibling Discount to Arjun Sharma.
Confirmation that the Sibling Discount was applied to Arjun Sharma
Figure 4.65. Applied.
An error when applying a document-required concession without uploading the document
Figure 4.66. Negative scenario — applying a document-required rule without uploading the supporting document is rejected.
Confirmation that the RTE Full Waiver was applied to Kabir Ansari
Figure 4.67. The RTE Full Waiver applied to Kabir Ansari, after the supporting document was uploaded.

4.4 Challan generation

The Challans list before any challans have been generated
Figure 4.68. Challans — none generated yet.
The blank Generate Challans form
Figure 4.69. The Generate Challans form.
The Generate Challans form filled in for Class 5A, Term 1
Figure 4.70. Filled in for Class 5A, Term 1.
The Challans list now showing one challan per Class 5A student
Figure 4.71. One challan generated per Class 5A student.
Arjun Sharma’s challan breakdown, showing the Sibling Discount correctly subtracted from the component total
Figure 4.72. Arjun Sharma’s challan — the Sibling Discount is correctly subtracted from the component total, proving the fee math computes end-to-end.

Validation rules & common errors

Validation rules & common errors
TriggerError shownResolution
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.
Verify with a real challan, every time

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.