How fee rules work
How the fee rules work, and why unusual ones still fit.
That difference is invisible in a demo unless somebody tests it, and it is the single thing most likely to decide whether a school ERP fits your school.
The mechanism below is small. It is deliberately small. Small is why an unusual fee structure can be described rather than built.
The mechanism
Four parts, and that is all of it.
Fee rules 2 rules · both active
+ Add rule| Priority | Rule name | Condition | Actions | Status |
|---|---|---|---|---|
| 1 | Staff Ward · 50% discount on all fees | STAFF_WARD = Yes | 6 actions · 50% discount | ✓ Active |
| 2 | EWS · tuition fee waiver | RTE = Yes | 1 action · waive 100% tuition | ✓ Active |
A rule is a school policy, written once. The engine applies it every month.
A condition reads the student’s own record
Not a group you put them in. The rule looks at the student. Their concession category. Whether they are a staff ward. Their sibling position. The class they are in now, the class they were admitted into, and the year they joined.
Conditions chain with AND and OR, so “admitted before 2023 and currently in Class 9” is one rule rather than a list of students somebody maintains.
When it matches, it does one of four things
It applies a percentage discount. It applies a fixed discount. It waives the charge entirely. Or it adds a fee component that is not in the base plan at all.
That last one is the reason unusual structures work here. The rule is not limited to reducing what already exists. It can introduce a charge.
You see the result before you commit
Auto-assignment runs as a dry run first. You see exactly which students would get which charges, and nothing is written until you commit.
The same applies to a fee plan. Save this year’s structure as a template, preview what applying it would create, then apply it.
The run is auditable afterwards
Every billing run is logged. When somebody asks in February what happened in the October billing, there is an answer rather than a reconstruction.
What a rule looks like
Five common schemes, each expressed as one rule.
Every one of these is a condition on the student’s own record, and an action. None of them is a group somebody has to keep up to date.
| Scheme | Reads | Test | Then |
|---|---|---|---|
| Full scholarship | concessionCategory | EQUALS | 100% off tuition |
| Half scholarship | concessionCategory | EQUALS | 50% off tuition |
| Sibling, second child on | sibling flag | EQUALS | 50% off tuition and registration |
| Staff ward | is_staff_ward | EQUALS | 50% off tuition, registration and annual |
| Community trust, single parent, EWS | concessionCategory | IN | 50% off annual, registration and tuition |
What it holds in practice
One school, billed correctly, on forty rules.
The registration fee that falls due every second year, counting from each student’s own admission year, is 35 rules covering the whole admission-class to current-class matrix.
Each one uses the action that adds a fee head absent from the base plan. There is no setting in EduBold for a fee that repeats every second year. There did not need to be.
- Students billed
- 1,403
- Conditions across those rules
- 75
- Actions
- 45
- Rules
- 40
Demonstration data.
Two rules in full
Read as the office writes them.
- Staff Ward · 50% discount on all fees6 actions · 50% discount
- EWS · tuition fee waiver1 action · waive 100% tuition

Test it
Send us the three cases that break your current system.
We will configure them and show you your own students billed correctly. It costs you nothing, and you decide whether to buy after you have seen it.
