FEATURE · Student Fee

The fee chart of accounts your school office actually uses.

Two simple screens that decide everything that follows — how fees show up on receipts, in invoices, in Tally exports, in CBSE/State Board audit reports. Categories group your fees into Academic, Administrative, Facility and Custom buckets. Heads are the actual line items — Tuition, Transport, Lab, GST flags, GL codes, refund and proration rules — each with the policy switches an Indian school accountant needs.

BG PICCOZONE

How most Indian schools manage their fee chart of accounts today

The principal of a CBSE day school in Lucknow opens her accountant's laptop on a Saturday morning. The fee receipt book is in front of her — triplicate carbon, cloth-bound, hand-signed. The accountant has been using the same Excel sheet for the last seven sessions: column A is Adm No, column B is Class, column C through column R are eighteen fee items — Tuition, Tuition March, Tuition arrears, Comp Lab, Sci Lab, Library, Late Fee, Late Fee 2, Annual, Sports, Picnic, Bus, Generator, Maintenance, Smart Class, Identity Card, Books, Misc. Some items repeat with slight name changes. Some items appear only for Class IX and X. Some items appear only for transport users. Nobody in the office can tell which heads are tax-exempt under the Income Tax Act, which heads attract GST under the GST Act 2017, or which heads are refundable when a student withdraws mid-session.

When the chartered accountant comes in for the September quarterly review, the first hour goes in mapping these eighteen Excel columns to her own Tally Chart of Accounts. 'What is the GL code for Smart Class — is it Tuition Income or Lab Income?' She asks. The accountant doesn't know. The principal doesn't know. The Tally entry from last March used 4100-001, but the entry from December used 4200-007, and now the trial balance has two heads that mean the same thing. By the time her audit report is signed, three days have gone in cleaning data, not analysing it. And the next school session is six weeks away.

This is the upstream problem behind every fee-related fire in an Indian school office. A school's fee chart of accounts is not a screen — it is the spine. Get the categories and heads right at the start of the session and every receipt, every invoice, every late fee, every refund, every WhatsApp reminder, every CBSE 14B audit response, every Tally export, every parent ledger and every annual income statement falls into place automatically. Get them wrong and every downstream module — collections, Razorpay reconciliation, scholarships, RTE quota, sibling discounts, EWS waivers — pays a tax in confusion.

Inkwelly Fee Categories list showing Academic, Administrative, Facility, Miscellaneous and Custom buckets with display order, status pill and edit/delete actions
Fee Categories — the parent buckets that hold every fee head your school charges.

How Inkwelly Fee Categories and Fee Heads work

Inkwelly splits the fee chart of accounts into two screens that you set up once at the start of the academic session: Fee Categories (/student-fee/config/fee-categories) and Fee Heads (/student-fee/config/fee-heads). Categories are the parent buckets — Academic, Administrative, Facility, Miscellaneous, and a Custom slot for school-specific groupings like Boarding or Summer Camp. Fee Heads are the individual line items inside each bucket — Tuition Fee inside Academic, Transport Fee inside Facility, Identity Card inside Administrative, Annual Picnic inside Miscellaneous.

Every fee head carries seven configuration switches that decide its behaviour everywhere downstream: fee type (One Time vs Recurring), proratable (yes if mid-session admission should pay only the remaining months), refundable (yes for Tuition, no for one-time Admission Fee), taxable (off for educational tuition under GST Notification 12/2017, on for transport / hostel for non-school students), tax percentage (0-100, only when taxable is on — typically 18% for transport), GL account code (your Tally / Zoho Books head, e.g., 4100-001 for Tuition Income), and display order (which head shows first on receipts and parent invoices). The form validates name length (3-100 chars), enforces the GL code limit (50 chars), and prevents duplicates across the school.

Once categories and heads are saved, every other Student Fee screen reads from this configuration. Fee structures pick heads from the list and assign amounts. Receipts group line items by category. Invoices break down GST per head. Tally export emits the GL code on each entry. Late fee rules attach to heads. Refund policies check the isRefundable flag before allowing a withdrawal refund. The chart of accounts is set once; the school office runs from it for the rest of the year.

What you configure on these two screens

  • Five built-in category types — ACADEMIC, ADMINISTRATIVE, FACILITY, MISCELLANEOUS and CUSTOM — covering every fee an Indian day, residential or international school charges.
  • Unlimited custom fee heads — name (3-100 chars), description, and the parent category from the dropdown of your active categories.
  • Fee type per head — One Time (Admission, Registration, Annual Picnic) vs Recurring (Tuition, Transport, Library) — drives how the head shows up in monthly / quarterly / annual fee cycles.
  • Proration on/off — when ON, mid-session admissions pay only for the remaining months; when OFF (e.g., Admission Fee, Annual Day), the full charge applies regardless of join date.
  • Refundable on/off — when ON, the head is eligible for refund on student withdrawal; when OFF (Admission, Identity Card), refund policies skip it automatically.
  • Taxable on/off + tax percentage — most Indian school tuition is GST-exempt under Notification 12/2017, but Transport, Hostel for non-school users and certain auxiliary services attract 18% GST. Toggle taxable, enter the percentage (0.00 - 100.00), and Inkwelly computes tax line by line on every invoice.
  • GL Account Code — the Tally, Zoho Books, QuickBooks or in-house ledger code for this head (max 50 chars, e.g., 4100-001, 4200-007). Drives clean accounting exports without manual remap.
  • Display order — lower numbers appear first on receipts, invoices and parent ledgers. Lets you put Tuition above Transport above Annual Day in the order parents expect.
  • Active / Inactive toggle — disable a head at session-end without losing its history; re-enable next session if needed. Inactive heads stop appearing in new fee structures but stay visible in past receipts and the audit log.

Walkthrough — three screens, end to end

BG PICCOZONE
1. Fee Categories list — Academic, Administrative, Facility, Miscellaneous, Custom — with display order, active toggle, and the count of fee heads each one holds.
BG PICCOZONE
2. Add Fee Category dialog — Name, Type dropdown, Description, Display Order, Active switch.
BG PICCOZONE
3. Add Fee Head dialog — Name, Category, Fee Type, Proratable / Refundable / Taxable switches, Tax percentage input, GL Account Code, Display Order, Active state.

Fee Categories — the five buckets every Indian school needs

The Categories screen ships with five fixed types that map cleanly to how Indian school accountants already think about fees. ACADEMIC holds Tuition, Computer Lab, Science Lab, Library, Examination, Smart Class — the heads that genuinely fund teaching. ADMINISTRATIVE holds Admission, Registration, Identity Card, Stationery — the office overhead. FACILITY holds Transport, Hostel, Mess, Generator, Smart Board Maintenance — physical infrastructure. MISCELLANEOUS holds Picnic, Sports Day, Annual Function, Field Trip — variable, occasion-driven heads. CUSTOM is the open slot for school-specific groupings — Summer Camp Fees for an IB school in Pune, Boarding Charges for a residential school in Dehradun, or Religious Studies Fund for a minority institution in Hyderabad.

Each category has its own display order, active toggle and free-text description. The order you set here decides the order categories appear inside fee structures, on parent invoices, and in the Tally export grouping. Most schools order: Academic → Administrative → Facility → Miscellaneous → Custom — matching how Indian parents read their child's fee receipt top to bottom.

Inkwelly Fee Category dialog with Name input, Type dropdown showing Academic, Administrative, Facility, Miscellaneous, Custom options, Description, Display Order, Active toggle
Inkwelly Fee Head dialog showing Tuition Fee linked to Academic category with Recurring fee type, Proratable on, Refundable on, Taxable off, GL Account Code 4100-001

Fee Heads — the line items every receipt prints

Fee Heads is where the daily work lives. Each head sits inside one parent category and carries the seven policy switches that drive every downstream fee module. Fee type is the primary cut — ONE_TIME (charged once per session — Admission Fee, Annual Picnic) or RECURRING (charged every fee cycle — Tuition, Transport). The fee type choice drives whether the head shows up in your monthly, quarterly, half-yearly or annual fee structure as a single charge or as a per-installment amount.

The four remaining switches encode the school's accounting policy: Proratable (mid-session admission pays only for remaining months — typical for Tuition, Transport; off for Admission, Identity Card). Refundable (refund on withdrawal — typical for unused Tuition; off for Admission, Books). Taxable (GST applies — off for tuition under Notification 12/2017, on for transport, hostel for outsiders, certain auxiliary services). GL Account Code (your accounting system's ledger code, max 50 chars). The decisions you encode here propagate to every invoice, receipt, refund, late-fee calculation and accounting export — so encode them once, correctly, with your CA in the room if needed.

GST flags built for the Indian school reality

Most school fees are GST-exempt under GST Notification 12/2017 — Central Tax (Rate), which exempts services 'provided by an educational institution to its students, faculty and staff'. So Tuition, Lab, Library, Examination, Identity Card and most academic heads keep isTaxable OFF. But the same notification carves out specific cases — Transport to non-school passengers, Hostel and Mess when provided to non-school users, Auxiliary services like sports facility rental to outsiders, and any Sale of goods (uniforms, stationery, books bought-and-resold) — which attract 18% GST.

Inkwelly handles this directly inside the Fee Head form. Toggle Taxable ON, enter the percentage (typically 18.00 for transport / hostel / auxiliary; 12.00 or 5.00 for specific goods), and every invoice generated for that head splits the line into base amount + tax amount + total amount automatically. The Tally export carries the tax breakup. The GST return (GSTR-1) reconciliation becomes a single export from the Student Fee module, not a Saturday-night manual exercise. Schools registered under GST get clean ITC trails; schools below the registration threshold simply leave the toggle off and operate fully exempt.

Inkwelly Fee Head Taxable toggle ON with tax percentage input showing 18.00 for Transport Fee, GL code field showing 4200-001
Inkwelly Fee Heads list showing Tuition, Computer Lab, Transport, Admission, Identity Card with category badges, fee type pills, GL codes and display order numbers

Refundable, proratable and the GL code that ties it all to Tally

The Refundable flag controls behaviour at student withdrawal. When a Class 6 student withdraws on November 15th, the refund policy iterates over every head charged in that student's fee structure. For each head, it reads isRefundable — refundable Tuition triggers a pro-rata refund of unused months; non-refundable Admission Fee is skipped silently; non-refundable Identity Card is skipped silently. The school office sees a clean refund proposal with line-by-line eligibility, no manual checking required.

The Proratable flag works the same way at the joining end. When a new admission joins in September instead of April, mid-session, Inkwelly checks each head's isProratable. Tuition is proratable — charge only Sep through March. Annual Picnic is proratable too if it's still upcoming. Admission Fee is not proratable — charge full amount, joining date doesn't matter. The new student's first invoice is computed correctly without anyone in the office doing the maths.

The GL Account Code is the bridge to your accounting system. Most CBSE / State Board schools run Tally Prime or Zoho Books in parallel for statutory accounting; some larger schools run QuickBooks or in-house ledgers. The GL code field accepts any 50-character string — 4100-001, Tuition Income, INC-TUI, school-tuition-academic — whatever your CA uses. Inkwelly does not impose a code structure; it stores yours and emits it on every export so the trial balance lines up with no manual remap.

Pehle har session start mein hum Excel sheet copy-paste karte the. Fee heads alag-alag spelling mein bante the — 'Tuition' ek sheet mein, 'Tuition Fee' doosri mein, 'Tut Fee' teesri mein. CA ki audit week se pehle do din lagte the data clean karne mein. Ab Inkwelly Fee Heads ek baar set kiye April mein, 22 heads, har ek pe GL code aur GST flag — saal bhar ek bhi mismatch nahi aaya. CA ko Tally trial balance mein ek-ek line milti hai, sign-off pehle hi din ho jaata hai.
Accounts Officer · Sunrise Public School, Lucknow

Real-world setup playbooks for Indian schools

Five worked examples drawn from real school migrations to Inkwelly:

1. CBSE day school (8 classes, ~600 students), Lucknow. Categories: Academic (Tuition, Computer Lab, Science Lab, Library, Examination, Smart Class), Administrative (Admission, Registration, Identity Card), Facility (Transport, Generator), Miscellaneous (Annual Function, Sports Day, Picnic). 14 fee heads total. Tuition / Library / Computer Lab / Science Lab / Smart Class set isTaxable OFF (educational exemption). Transport set isTaxable ON at 18%. All recurring heads set isProratable ON. Admission, Identity Card, Picnic set isRefundable OFF. GL codes mapped to the school's existing Tally chart of accounts (4100 series for income). Setup time: 35 minutes with the accountant, one screen open, one cup of chai.

2. ICSE residential school (Class 6-12, ~250 boarders), Dehradun. Categories: Academic, Administrative, Facility (heavy use — Boarding, Mess, Laundry, Medical), Miscellaneous, Custom (Adventure Club, Music Society). 28 fee heads. Mess Fee for parents marked GST-exempt; Mess Fee charged to occasional outside-faculty marked taxable at 5%. Boarding Fee marked proratable for mid-session admissions. Music Society marked refundable=OFF (yearly subscription). Setup time: 2 hours, including a 30-min call with their CA on hostel GST treatment.

3. State Board low-fee private school (Class 1-8, ~400 students), Bahraich, UP. Categories: Academic, Administrative, Miscellaneous. 8 fee heads only. School below GST registration threshold (turnover under ₹20 lakh) — every head set isTaxable OFF, no GST screens used. RTE quota students don't pay any of these heads — handled separately in the RTE module. GL codes left as plain text matching the school's Tally Silver chart. Setup time: 18 minutes.

4. International school (Pre-K to Grade 12, ~700 students, IB + Cambridge IGCSE), Bangalore. Categories: Academic (Tuition, Tech Fee, Lab, Library), Administrative (Admission, Registration, Application), Facility (Transport, Cafeteria), Miscellaneous (Field Trips, House Activities), Custom (Boarding for senior school, Music & Drama). 32 fee heads. Multiple currency exposure — fee structures use INR but heads carry standard GL codes. Transport for non-citizen students (NRI category) treated separately in fee structures. Setup time: 4 hours, two sittings, with the school CFO and external CA both on call.

5. Madrasa / minority institution (Class 1-10, ~180 students), Hyderabad. Categories: Academic, Administrative, Custom (Religious Studies Fund, Quran Hifz Programme). 11 fee heads. Religious Studies Fund marked refundable=OFF, taxable=OFF. Inkwelly's CUSTOM category handled the school-specific heads cleanly without forcing them into Academic or Miscellaneous. Setup time: 25 minutes.

Common operations that flow from a clean fee chart of accounts

  • Generate parent receipts that group line items by category — Academic at top, Administrative below, Facility next, Miscellaneous last — exactly how Indian parents expect to read a school fee receipt.
  • Export to Tally / Zoho Books / QuickBooks with the GL code embedded on every line; no manual remap during the September quarterly review or the March year-end close.
  • File GSTR-1 from the Student Fee module — taxable heads (Transport, auxiliary services) populate automatically with the correct rate; exempt heads stay outside the return.
  • Run mid-session admission proration by simply checking the isProratable flag on each head — no spreadsheet calculation, no human error.
  • Run withdrawal refunds using the isRefundable flag; non-refundable heads (Admission, Identity Card) are skipped automatically and the school office sees a clean refund proposal.
  • Build fee structures by picking heads from a pre-defined list — Tuition Class 1, Transport Route A, Computer Lab — without re-typing names or risking duplicates.
  • Configure late fee rules that attach to specific heads (late on Tuition charges 2% per month; late on Annual Picnic charges flat ₹100) — possible only because heads are clearly identified.
  • Audit the chart of accounts before a CBSE renewal, ICSE inspection, or State Board affiliation review — print the categories + heads + GL codes as a one-page document for the inspector.
  • Disable seasonal heads — Annual Picnic 2025-26 active April-November, then deactivated December onwards without losing history; re-activate next session.
  • Migrate to a new academic session by cloning categories and heads (zero edits) or by selectively deactivating retired heads and adding new ones.

Set up your fee chart of accounts live, in 30 minutes

Bring your current fee Excel sheet, your Tally chart of accounts, and one fee receipt. We will rebuild your school's fee categories and heads on Inkwelly during the demo — by the end of the call, your chart of accounts is ready to drive [fee structures](/features/fee-structures-and-fee-groups), receipts and GST returns.

Open Student Fee moduleSee Fee Structures & Groups

Limits, safety and the small print

Set once, runs all year — but everything is editable. Categories and heads are designed as the session-start setup, not a daily task. That said, every field on every head can be edited any time. Edit Tuition Fee's GL code mid-session and the change applies to all new invoices and exports; historical receipts retain the old GL code in their snapshot, by design — receipts are immutable financial records.

Five built-in category types are fixed; the fee head names are not. ACADEMIC, ADMINISTRATIVE, FACILITY, MISCELLANEOUS and CUSTOM cannot be renamed or extended — they map to a backend enum used by reports and exports. But you can create unlimited fee heads inside any category, and every head's name, description and policy is fully editable. The CUSTOM category is the slot for school-specific groupings that don't fit the four standard buckets.

Validation is enforced at save time. Name must be 3-100 characters, GL Account Code max 50 characters, tax percentage 0-100, display order numeric. Duplicate names within a category are blocked with a clean error (A fee head with this name already exists). The frontend dialog and the backend API both validate — no way to slip a malformed head through.

Inactive heads stay visible in history, hidden in new structures. Toggle a head to inactive and it stops appearing in new fee structures, new fee groups and the head dropdown. But every past receipt, invoice, fee group and audit log entry that referenced it continues to display the head exactly as it was — financial history is preserved verbatim, even when the chart of accounts evolves.

Delete is restricted by foreign-key dependency. A fee head with active fee-structure-item links cannot be deleted from the UI — the API blocks the call to protect financial integrity. To remove an unwanted head, deactivate it; deletion is reserved for heads created by mistake that have never been used in a fee structure or invoice.

Multi-currency, multi-school ready. Each school in a multi-school trust runs an independent chart of accounts. School A's Tuition Fee head is invisible to School B even within the same parent organisation — multi-tenant isolation is enforced server-side. Each school can choose its own currency in the Fee Settings, and GL codes are per-school strings, so a CA running consolidated trial balances across the trust gets clean per-school sub-ledgers.

DPDP Act 2023 compliance. The chart of accounts itself contains no personally identifiable parent or student data — only category and head metadata. PII appears only when fee heads are linked to specific student fee profiles inside fee structures and invoices. All Inkwelly data is hosted in India (Mumbai region), encrypted at rest with AES-256, and accessible only via role-based permissions configured in Identity & Access Management. Audit log entries record every category and head change with user, timestamp and the old/new field values.

Belongs to

1 module

Frequently asked

9 questions
Can I add my own fee category type beyond the five built-in ones?

Use the CUSTOM category type. The five built-in types — ACADEMIC, ADMINISTRATIVE, FACILITY, MISCELLANEOUS, CUSTOM — are fixed because reports and exports key off them. CUSTOM exists exactly for school-specific groupings that do not fit the four standard buckets — Boarding for residential schools, Religious Studies Fund for minority institutions, Summer Camp for IB / IGCSE schools, House Activities for Doon / Mayo style residential schools. You can create unlimited custom-categorised heads inside CUSTOM.

Most of our school fees are GST-exempt — do we still need to fill in tax flags?

No. If your school operates fully under [GST Notification 12/2017](https://cbic-gst.gov.in/) — which exempts educational services to your own students — every head can simply have isTaxable OFF. The form does not require tax percentage when isTaxable is off. Only toggle isTaxable ON for the specific heads where GST genuinely applies — Transport for non-school passengers, Hostel/Mess when provided to non-school users, sale of goods like uniforms or books, or any auxiliary service charged to outsiders. Your CA confirms which of your heads fall under which category.

What is the GL Account Code field — does Inkwelly impose a coding structure?

It is a free-text field up to 50 characters that maps each fee head to your school's Tally, Zoho Books, QuickBooks or in-house accounting ledger. We do not impose a structure — `4100-001`, `Tuition Income`, `INC-TUI`, `school-tuition-academic` are all valid. Whatever your CA already uses, you store here, and Inkwelly emits the same code on every fee export. The school's trial balance lines up without manual remap. Leave it empty if you do not run parallel statutory accounting yet — fees still work.

What happens to past receipts if I edit a fee head's name or GL code mid-session?

Past receipts and invoices are immutable financial records — they retain a snapshot of the head as it was on the date of issue. So if you edit Tuition Fee's GL code from `4100-001` to `4100-002` in October, every receipt issued before October still shows `4100-001`, every receipt issued after shows `4100-002`. The audit log records the change with user, timestamp and the old/new values, so the financial trail stays defensible during a CBSE / Income Tax / GST audit. New fee structures and new invoices use the latest configuration.

Can I delete a fee category or fee head once it is set up?

Categories and heads with no dependent records (no fee structures, no invoices, no receipts ever issued) can be deleted directly. Categories or heads that have ever been used in a fee structure, invoice or receipt cannot be hard-deleted — Inkwelly blocks the API call to protect financial integrity. The right action there is to mark the head Inactive: it stops appearing in new fee structures and dropdowns, but the entire past history remains intact and queryable. Most schools never delete heads — they accumulate the chart of accounts over years and use the active toggle to retire heads as needed.

How does proration actually work for mid-session admissions?

When you create a fee head with isProratable ON and the head is part of a fee structure on a [Recurring fee cycle](/features/fee-structures-and-fee-groups) (Monthly, Quarterly, Half-Yearly, Annual), an admission joining in say September instead of April pays only the months from September to March — the proration method (DAY_BASED, MONTH_BASED, TERM_BASED) chosen on the [fee structure](/features/fee-structures-and-fee-groups) decides the exact computation. Heads with isProratable OFF (Admission Fee, Identity Card, Annual Picnic) charge the full amount regardless of join date. Inkwelly computes both halves of this automatically — the school office sees the new student's first invoice already split correctly.

Can different classes have different Tuition Fee amounts but share the same fee head?

Yes — that is the entire design. Tuition Fee is one head in your chart of accounts. The amount Class 1 pays vs Class 12 pays is set inside the [fee structure](/features/fee-structures-and-fee-groups), not on the fee head itself. So you have one Tuition Fee head, eight fee structures (one per class or grade band), each with a different Tuition amount. The chart of accounts stays clean; the per-class differentiation lives one layer below.

Does this chart of accounts integrate with the RTE / scholarship modules?

Yes. Heads marked isRefundable / isTaxable / isProratable feed directly into the [scholarship](/school/dps/delhi/2026-27/student-fee/scholarships), [RTE quota](/school/dps/delhi/2026-27/student-fee/rte) and waiver workflows. RTE 25% quota students under the [Right to Education Act 2009](https://en.wikipedia.org/wiki/Right_of_Children_to_Free_and_Compulsory_Education_Act,_2009) automatically have all academic heads (Tuition, Lab, Library) waived; non-refundable, non-academic heads (Books, Identity Card, Sports) follow your school's RTE policy. Discounts, scholarships, EWS waivers all read the same chart of accounts — no parallel definitions.

Who in our school office should set up the chart of accounts?

The accountant or accounts officer, ideally with the school's Chartered Accountant on call for the GST and GL code questions. Most setups take 30-90 minutes for an Indian day school (8-15 fee heads); 2-4 hours for a residential / international school (25-35 heads). Once set up, daily users — admission desk, fee counter, principal — never see this screen unless adding a new head. Role-based access via [Identity & Access Management](/modules/identity-access-management) lets you restrict edit rights to accounts and admin roles only; teachers and class teachers see no Configuration menu at all.

You might also like

4 reads

See Inkwelly on your school

30-minute demo. We open your current ERP with you and load your data into Inkwelly on the call. Dated go-live plan by the end of it.

Fee Categories & Fee Heads · Inkwelly Student Fee