Skip to main content
The fee matrix is the grid where your fee items meet your classes. Each cell is what that class pays for that item, this term. A blank cell means that class is not charged that item at all. In the example above, Creche and KG pay no ICT levy — that is a blank, not a zero.
A zero and a blank are different, and the difference shows on the invoice. Zero prints a line at GH₵ 0.00, which is how you show a family that something is included at no cost. Blank prints nothing at all.

Filling it in

The grid is built for keyboard entry — set a whole row across the classes without reaching for the mouse. Prices are entered in cedis and stored in pesewas. Every class you run needs a price for every compulsory item it is charged, before you bill. A missing price is the most common reason a billing preview comes out lower than expected.

Each term is priced separately

The matrix belongs to a term. Term 2’s grid starts empty rather than inheriting Term 1’s, which is deliberate: fees change between terms, and a grid that silently carried forward would bill last term’s prices without anyone noticing.

Check the preview, not the grid

The grid is what you charge a class. What a pupil is billed is the grid price adjusted by their fee category and their enrolment. The only reliable check is the billing preview, which shows the real totals before anything is issued — see Running term billing.
Changing a price after invoices are issued does not change those invoices. An issued invoice is fixed. Correcting an over-charge that has already gone out is a credit note, not a grid edit.

Who can edit it

The edit_finances permission. Schools that want a second pair of eyes on price changes can require approve_fee_changes as well.