Skip to main content

Fee Management

Overview

Manages fee structures, records payments, tracks outstanding balances, and sends reminders. See also Accounts for the double-entry bookkeeping underlying all transactions.

Fee Structure

Define fees per class per academic year:

POST /school-admin/fee/structure/create
{
"data": {
"academicYearId": "uuid",
"classId": "uuid",
"heads": [
{ "name": "Tuition Fee", "account": "REVENUE_TUITION", "amount": 5000, "frequency": "MONTHLY" },
{ "name": "Transport Fee", "account": "REVENUE_TRANSPORT", "amount": 2000, "frequency": "MONTHLY", "optional": true },
{ "name": "Lab Fee", "account": "REVENUE_LAB", "amount": 1000, "frequency": "ANNUAL" },
{ "name": "Admission Fee", "account": "REVENUE_ADMISSION", "amount": 5000, "frequency": "ONE_TIME" }
]
}
}

Frequency Types

FrequencyDescription
MONTHLYCharged every month
QUARTERLYCharged once per quarter
HALF_YEARLYCharged twice a year
ANNUALCharged once per academic year
ONE_TIMEOne-time (admission, exam fee)

Record Payment

POST /school-admin/fee/collection/record
{
"data": {
"studentId": "uuid",
"academicYearId": "uuid",
"date": "2024-04-05",
"amount": 7000,
"paymentMode": "ONLINE", // CASH | ONLINE | CHEQUE | DD
"transactionRef": "UPI/TXN123456",
"narration": "Q1 tuition + transport"
}
}

This creates double-entry records in the FeeLedger (see Accounts).

Fee Collection Report

GET /school-admin/fee/report/collection?from=2024-04-01&to=2024-04-30
{
"data": {
"totalCollected": 125000,
"totalOutstanding": 43000,
"modeBreakdown": {
"ONLINE": 95000,
"CASH": 20000,
"CHEQUE": 10000
},
"classBreakdown": [
{ "className": "Class 1", "collected": 20000, "outstanding": 5000 },
{ "className": "Class 2", "collected": 18000, "outstanding": 8000 }
]
}
}

Outstanding Report

GET /school-admin/fee/report/outstanding

Lists all students with pending fees, sorted by amount due.

Send Reminder

POST /school-admin/fee/reminder/send
{
"data": {
"studentId": "uuid",
"medium": "SMS" // SMS | EMAIL | BOTH
}
}

Sends via SNS → SMS or SES → email.

Concessions

POST /school-admin/fee/concession/apply
{
"data": {
"studentId": "uuid",
"type": "SCHOLARSHIP", // SCHOLARSHIP | SIBLING | NEED_BASED | SPORTS
"amount": 5000,
"reason": "Academic excellence"
}
}

Creates a CR entry in FeeLedger (see Accounts).

Parents App Integration

Parents can view:

  • Fee structure and what's due
  • Payment history
  • Download receipt (PDF via S3 presigned URL)