Skip to main content
Version: Next

Fee setup and invoicing

This guide covers the complete fee management workflow—from defining fee structures to generating invoices through billing runs. The finance module supports multiple fee types, flexible scoping, late fees, discounts, and integration with payment tracking.

What this guide covers

  • Fee structure planning and configuration
  • Creating and managing school fees
  • Billing run execution and scope targeting
  • Invoice generation and management
  • Fee assignment strategies (grade, class, individual)
  • Late fees, discounts, and scholarship eligibility

Before you start

Required setup

RequirementLocationPurpose
Academic yearFoundation → Academic YearsFee period context
TermsFoundation → TermsTerm-based billing
Grade levelsFoundation → Grade LevelsGrade-specific fees
Class divisionsFoundation → Class DivisionsClass-specific fees
StudentsPeople → StudentsInvoice recipients

Required permissions

PermissionDescription
finance.fees.createCreate fee definitions
finance.fees.editModify fee configurations
finance.billing_runs.createExecute billing runs
finance.invoices.viewView generated invoices

Fee lifecycle overview

┌────────────────┐    ┌─────────────────┐    ┌────────────────┐    ┌────────────────┐
│ Create fee │ → │ Run billing │ → │ Generate │ → │ Collect │
│ definitions │ │ batch │ │ invoices │ │ payments │
└────────────────┘ └─────────────────┘ └────────────────┘ └────────────────┘

FunctionPath
FeesFinance → Fees
Billing runsFinance → Billing Runs
InvoicesFinance → Invoices
PaymentsFinance → Payments
ReceiptsFinance → Receipts

Part 1: Fee configuration

Fee types

Configure different fee categories:

Fee typeDescriptionExamples
TuitionCore academic instructionTerm tuition, annual fees
RegistrationEnrollment processingNew student registration, re-enrollment
BoardingResidential accommodationBoarding fees, hostel charges
TransportSchool transportationBus fees, route charges
ExaminationAssessment feesZIMSEC levies, mock exam fees
ActivityExtracurricular programsSports, clubs, trips
MaterialLearning materialsTextbooks, stationery, uniforms
DevelopmentInfrastructure contributionsBuilding fund, IT levy

Fee categories

CategoryDescription
MandatoryRequired for all applicable students
OptionalOpt-in fees for specific services
Once-offSingle payment (e.g., registration)
RecurringRepeated each term/year

Creating a fee

Navigate to Finance → FeesCreate Fee

FieldRequiredDescription
Fee nameYesDescriptive name (e.g., "Term 1 Tuition 2024")
Fee codeNoShort code for reference
Fee typeYesTuition, Registration, Boarding, etc.
Fee categoryYesMandatory, Optional, etc.
Academic yearYesYear the fee applies to
TermNoSpecific term (leave blank for annual)

Late fee configuration

Enable late fees for overdue payments:

FieldDescription
Has late feeToggle to enable
Late fee typeFixed amount or Percentage
Late fee amountFixed value if type is Fixed
Late fee percentagePercentage if type is Percentage
Late fee starts after daysDays after due date
Maximum late feeCap on late fee accumulation

Discount configuration

Configure early payment and sibling discounts:

FieldDescription
Has discountToggle to enable
Early payment discount %Percentage for early payment
Early payment deadlineCutoff for early payment discount
Sibling discount %Discount for multiple siblings

Scholarship and subsidy

FieldDescription
Scholarship eligibleCan be covered by scholarships
Subsidy applicableCan receive government subsidy
Subsidy descriptionDetails of subsidy program

Part 2: Billing runs

Billing runs generate invoices for groups of students based on fee definitions and scope targeting.

Billing run scope types

Scope typeDescriptionUse case
SchoolAll students in schoolSchool-wide fees (registration, development)
Grade levelStudents in specific gradesGrade-specific tuition
Class divisionStudents in specific classesClass-specific fees
Subject classStudents in subject groupsSubject-specific fees
Student listExplicitly listed studentsIndividual or special billing

Creating a billing run

Navigate to Finance → Billing RunsCreate Billing Run

FieldRequiredDescription
Scope typeYesSchool, Grade level, Class, Student list
Grade levelIf scope is gradeTarget grade level
Class divisionIf scope is classTarget class
Student IDsIf scope is listSpecific students

Billing run statuses

StatusDescription
pendingRun created, not yet started
queuedWaiting to be processed
processingCurrently generating invoices
completedSuccessfully completed
failedEncountered errors
cancelledManually cancelled

Billing run results

After execution, the run shows:

MetricDescription
Total studentsStudents in scope
Processed studentsStudents processed
Successful invoicesInvoices created
Failed studentsStudents that couldn't be billed
Failure summaryBreakdown of failure reasons

Failure codes

CodeDescriptionResolution
duplicate_invoiceInvoice already existsUse force regenerate or skip
invoice_creation_failedSystem error creating invoiceCheck logs, retry
validation_failedData validation errorFix student data
no_student_matchesNo students in scopeVerify scope settings

Part 3: Invoice management

Invoice structure

Each invoice contains:

ComponentDescription
Invoice numberUnique reference
StudentBilled student
GuardianBill-to contact
Line itemsFee breakdowns
SubtotalSum before adjustments
Tax amountIf applicable
Discount amountAny discounts applied
Total amountFinal amount due
Due datePayment deadline
StatusCurrent invoice state

Invoice statuses

StatusDescription
draftBeing prepared
pendingAwaiting payment
partially_paidPartial payment received
paidFully paid
overduePast due date
cancelledCancelled/voided
refundedPayment refunded

Invoice line items

Each line item includes:

FieldDescription
DescriptionFee description
QuantityUsually 1
Unit amountPer-unit price
Total amountLine total
Tax rateIf applicable
DiscountLine-level discount
GL accountAccounting code
Cost centerCost center code

Viewing invoices

Navigate to Finance → Invoices

Filter by:

  • Student name or number
  • Invoice status
  • Date range
  • Academic year/term
  • Grade level
  • Amount range

Invoice details

Opening an invoice shows:

  1. Header — Invoice number, dates, student info
  2. Bill-to — Guardian/payer details
  3. Line items — Fee breakdown
  4. Totals — Subtotal, tax, discount, total
  5. Payment history — Associated payments
  6. Status timeline — Status changes

Part 4: Fee assignment strategies

Strategy 1: School-wide fees

For fees that apply to all students:

  1. Create fee with Applies to: All students
  2. Create billing run with Scope: School
  3. Execute billing run

Strategy 2: Grade-specific fees

For grade-based tuition differentiation:

  1. Create separate fee for each grade level
  2. Set Applies to: Specific grades
  3. Select applicable grade levels
  4. Create billing run with Scope: Grade level

Strategy 3: Class-specific fees

For class-based fees:

  1. Create fee with Applies to: Specific classes
  2. Select applicable class divisions
  3. Create billing run with Scope: Class division

Strategy 4: Individual billing

For special cases:

  1. Create fee definition
  2. Create billing run with Scope: Student list
  3. Enter specific student IDs
  4. Execute billing run

Part 5: Workflow examples

Example: Term tuition billing

  1. Create fee

    • Name: "Term 1 Tuition 2024"
    • Type: Tuition
    • Category: Mandatory
    • Amount: $500
    • Academic year: 2024
    • Term: Term 1
    • Applies to: All students
  2. Create billing run

    • Scope: School
    • Fee: Term 1 Tuition 2024
    • Invoice date: January 5, 2024
    • Due date: January 20, 2024
  3. Review and execute

    • Use dry run first to preview
    • Execute to generate invoices
    • Verify in Invoices list

Example: Grade-specific boarding fees

  1. Create fees per grade

    • "Form 1 Boarding - Term 1" — $300
    • "Form 2 Boarding - Term 1" — $320
    • "Form 3 Boarding - Term 1" — $340
  2. Set applicability

    • Each fee: Specific grade level
    • Student type: Boarding
  3. Create billing runs per grade

    • One run per fee/grade combination

Example: Late registration fee

  1. Create once-off fee

    • Name: "Late Registration Fee"
    • Type: Registration
    • Category: Once-off
    • Amount: $50
  2. Identify late registrants

    • Filter students by enrollment date
  3. Billing run with student list

    • Scope: Student list
    • Enter late registrant IDs

Fee reconciliation

Balance verification

For each student, verify:

CheckLocation
Total invoicedStudent profile → Finance tab
Total paidPayment history
Current balanceOutstanding amount

Batch verification

After billing runs:

  1. Navigate to Finance → Invoices
  2. Filter by billing run date
  3. Verify invoice count matches expected
  4. Spot-check amounts
  5. Review any failed students

Common issues

Billing run shows no students

Problem: Billing run completes with 0 students

Causes:

  • Fee applicability doesn't match scope
  • No students in selected grade/class
  • Students already have invoices (without force regenerate)

Solution: Verify fee applicability matches billing scope

Duplicate invoice error

Problem: Billing run fails with duplicate invoice errors

Solution:

  • Enable Force regenerate to recreate invoices
  • Or skip students with existing invoices

Wrong amount on invoice

Problem: Invoice amount doesn't match fee definition

Causes:

  • Fee amount changed after invoice creation
  • Discount or scholarship applied
  • Line item modifications

Solution: Review invoice line items and adjustments

Student missing from billing run

Problem: Student not included in billing run

Causes:

  • Student not in specified scope (grade/class)
  • Student enrollment status not active
  • Fee applicability excludes student type

Solution: Verify student's grade, class, and enrollment status


Best practices

Fee setup

  • Name fees clearly with year/term
  • Use consistent fee codes
  • Set appropriate due dates
  • Configure late fees to encourage timely payment
  • Enable early payment discounts where applicable

Billing runs

  • Always use dry run first for new fee types
  • Verify scope before executing
  • Check failed students after each run
  • Document billing run schedule

Ongoing management

  • Review overdue invoices weekly
  • Reconcile payments regularly
  • Archive old academic year invoices
  • Audit fee assignments each term

Outcome

After completing fee setup and invoicing:

  • ✅ Fee structure configured for the school
  • ✅ Fees assigned to appropriate student groups
  • ✅ Billing runs executed successfully
  • ✅ Invoices generated and accessible
  • ✅ Students can view and pay invoices
  • ✅ Balance tracking enabled