Skip to content
ERP for education

School ERP that gets the fees right before it tries anything clever

You run a school or a small group of them. Admissions happen in a form builder, fees in the accounts package, and attendance on paper registers someone types up on Friday. Parents ring the office to ask what they owe. Most school ERP projects start from exactly this point.

Example request from a education team

ERPNext v16

Where standard ERP gets awkward in education

Concessions calculated by hand

Sibling discounts, staff children, scholarships and hardship cases all stack differently. The bursar keeps the rules in her head and a spreadsheet only she can follow.

Fee reminders that feel random

Some parents get three chasers, others none. There's no link between what's overdue and who gets contacted, so the office sounds disorganised.

Transport fees out of step with routes

A family moves house, switches bus route mid-term, and the transport charge stays on the old stop for months.

Admissions waitlists in a shared inbox

Applications, sibling priority, entrance assessments and offers are tracked by email. When a place opens up in Year 4, the office has to dig through old emails to find who's next.

Fees first, everything else later

Ask a school what they want from an ERP and you’ll get a long list: timetables, homework, parent apps, library, hostel, canteen. Ask the bursar what keeps her up at night and it’s always fees.

We’d start there. When fees are wrong, parents lose trust quickly, the office drowns in phone calls, and cash flow suffers in a sector where it’s often tight. Get invoicing, concessions, instalments and reminders working properly, and the rest of the project has goodwill to spend.

Frappe Education, Odoo and the gap between them

On ERPNext, the Frappe Education app gives you a genuine head start. Students, Program Enrollment, Student Groups, Course Schedules, Student Attendance, Assessment Plans and Fee Structures with Fee Schedules that generate invoices. It’s aimed more at colleges than primary schools in places, but the bones are sound.

On Odoo, there’s no official app, so you’re choosing between a third-party addon and a module generated for you. Odoo’s portal, website forms and email templates are good, which helps with admissions and parent communication.

Neither handles the fee rules most schools actually have. Sibling discounts that depend on who else is enrolled, concessions that stack in a particular order, report card holds and mid-term changes to transport all need custom logic. Most of the school management module work we’re asked for is exactly this.

Three children, three instalments, worked through

Take a family with three children, all enrolled for the autumn term. The term fee is $2,400 per child, payable in three equal instalments.

  • First child pays the full $2,400.
  • Second child gets 10% off, so $2,160.
  • Third child gets 15% off, so $2,040.

That’s $6,600 for the term, so $2,200 per instalment. Instalment one is due 1 September, two on 1 October, three on 1 November.

Instalment two goes unpaid. On 31 October the module emails the parent with the balance and a payment link. Report cards are due out on 20 November, and those for all three children are marked “held” until it clears. The principal, Mr Okafor, can override that for a family he knows is going through a hard time, and the override is logged with his name.

Then the eldest child leaves at Christmas. Does the middle child become the “first child” and lose their discount from January? Schools answer this differently, and we’d rather you decide before the module is generated than discover it when a parent complains. We’ll ask. The rule goes into one Python function with a test, so the bursar’s next policy change is a small edit, not a rewrite.

Admissions season is its own project

Admissions has a different rhythm from the rest of the year. Enquiries, applications, assessments, sibling and staff priority, offers, deposits and waitlists all happen in a few intense months. It’s worth treating as a separate module with its own statuses, not a handful of extra fields on Student.

A good admissions flow ends by creating the Student, the Program Enrollment and the first fee invoice in one step, so the office doesn’t retype a family’s details in September.

Buses and registers come next

Once fees are stable, transport and attendance are usually the next two requests, and they’re linked more than people expect. A transport module holds routes, stops and the students assigned to each. When a family changes address, the office moves the child to a new stop with an effective date, and the transport charge on the next instalment changes to match. No more old-stop billing until someone complains.

Attendance is simpler than vendors make it look. Teachers mark a register on a tablet at the start of each period or day. Anyone absent without a note triggers a text to the parent by 10am. Patterns (say, five unexplained absences in a half term) go to the pastoral lead. Keep the register screen to one tap per student, or teachers will go back to paper within a month.

Please don’t rebuild the LMS inside your ERP

Homework, lesson plans and online quizzes are well served by tools teachers already know. Rebuilding those in ERPNext or Odoo is expensive, and teachers will resent it. Keep the ERP for students, fees, attendance, staff payroll and school bus fleet management, and sync class lists outward. For how the generated code is structured, see ERPNext custom module development or Odoo module development.

Modules education teams start with

Guides for education teams

Terms used on this page

How it works

From a paragraph to a pull request

The long version
  1. 01

    Describe it

    In your own words. Paste the spreadsheet or a photo of the paper form if that's easier.

  2. 02

    Answer a couple of questions

    It asks only what it can't work out from your setup, like who's allowed to override.

  3. 03

    Try it on a sandbox

    A copy of your site with the module installed. Break it, then ask for changes.

  4. 04

    Merge when it's right

    Code lands as a pull request with tests. Your developer, or ours, reviews it first.

Education ERP questions

Something missing? Email [email protected] and a person will answer.

Is there an education app for ERPNext already?

Yes. Frappe Education is a separate open-source app covering students, programs, courses, student groups, fee structures, fee schedules, attendance and assessments. We generally build on it and add the rules your school has that it doesn't.

Does Odoo have a school management app?

Not an official one. There are community and third-party education addons, some good and some abandoned. We can extend one you already use or generate a school module designed for your version of Odoo.

Can parents log in to see fees and attendance?

Both platforms have a portal. We usually generate a parent view that shows each child's invoices, payments, attendance and report cards, with parents only able to see their own children.

Can it take online fee payments?

Yes, through a payment gateway both platforms support. The gateway handles card data, so card numbers never touch your ERP. We generate the reconciliation that marks instalments paid when the gateway confirms.

Will it replace our learning management system?

We'd advise against it. Keep Google Classroom, Moodle or whatever teachers already use for lessons and homework. The ERP should hold enrolments, fees, attendance and staff, and sync class lists across.

Other industries

Your next module is one paragraph away

Write it the way you’d explain it to a new hire. We’ll turn it into an app you can read, test and install.

ERPNext v16

Create your account

Free to start. No card needed.

By signing up you agree to our terms and privacy policy.