Course enrolment system and software for language schools
Author:
Paweł Matusiak
·
A group nobody counted, payments in Excel and parents on Messenger asking “was my son in class”. A course enrolment system handles intake, groups, attendance and instalments — before the term falls apart.
A language school, a bootcamp, vocational courses, kids’ extras — the business stands on groups and on whether the instalment landed. A course enrolment system takes intake off Messenger: the parent or student picks a slot, pays the joining fee, lands in a group. The teacher has an attendance list. The office knows who is overdue. Term should not start by counting who is “probably enrolled” in three files.
What breaks at the start of term
Intake lasts three weeks and drifts because sign-ups live in a site form, in email and on Instagram. A cap of 10 breaks because nobody takes the seat in real time. Group level “will sort itself” ends in October churn. Instalments, a sibling discount and arrears have no date in Excel. A parent calls after every lesson because attendance is on a paper list in the room.
- Group caps exceeded because sign-ups lived in three places.
- Group level “will sort itself” — then churn and complaints.
- Payments: joining fee, instalment, sibling discount, arrears — Excel does not watch dates.
- Attendance on paper, a parent calling after every lesson.
- Materials and Zoom in an email that got lost.
- Cover teaching announced in a WhatsApp group not everyone joined.
Who this system is for (and who it is not)
A language school with in-person and online groups, vocational courses with intake waves, kids’ extras, a bootcamp with one edition and a waitlist. A different rhythm from a gym pass and from a single visit: you sell a seat in a group for a term, not a chair for an hour. If you have one group of six and know everyone by name — Excel will last another term. At a third branch or 15 groups it will not.
The offer, caps and online enrolment
The offer is not a banner “English for kids”. It is: level, age, day, time, teacher, room or link, cap, price, instalments, whether there is a placement test. Online enrolment takes the seat at once or puts them on a waitlist. A test or form — when it really decides the group, not as decoration that scares people off. Moves between groups are done by the office, with history, so the payment does not vanish.
- Course offer: level, age, slot, teacher, cap, price, instalments.
- Online enrolment with a placement test or a form (when needed).
- Group list, waitlist, moves between groups.
- Several branches: a shared offer or separate ones, permissions per site.
- Bootcamp editions with a start date — after start the rules change (a surcharge, no seats).
Attendance, progress and the parent portal
The teacher ticks attendance on a phone in 20 seconds. The parent portal shows whether the child was there, a note and the next class. An adult student gets their own portal — no “parent”. Grades and progress are on when they are in the teaching process, not because an LMS has them. Cover and a cancelled lesson go by SMS / email from the system, not from a private group someone was not added to.
Joining fees, instalments, arrears and invoices
Payment is part of enrolment, not a separate spreadsheet world. The joining fee holds the seat. Instalments have dates and a reminder. A sibling or “second course” discount is a rule, not a manual tweak accounts never see. A block on arrears — if you so decide — must be clear in the terms, not a surprise at the classroom door.
Invoices to companies (staff training, language in a company) from 2026 go through KSeF when you are a taxpayer under the duty. Dates from ksef.podatki.gov.pl: 1 February 2026 when 2024 sales exceed PLN 200 million (including VAT), 1 April 2026 for the rest. Invoices to private individuals in KSeF are optional. In practice schools often leave invoices in the accounts tool and the enrolment system passes the line (course, student, period). When the panel issues — KSeF in an app.
Online lessons without pretending to be Moodle
A Zoom / Teams link and attendance in one place cover most hybrid schools. A recording — if you may keep it and have consent. A full LMS (paths, quizzes, SCORM) belongs on an async course, not a Tuesday/Thursday 5 pm group. We do not embed video “by default”.
School SaaS or a custom system
Ready-made registers and enrolment platforms can be enough with one site and simple instalments. Custom when you have odd groups, several brands, teacher commission, a materials shop or you do not want children’s data at another vendor without control. Comparison: off-the-shelf or custom.
Go live before intake, not in week one of class
- A dictionary of courses and groups with the people who run them — not last year’s flyer.
- Enrolment + joining-fee payment + group list in time for intake.
- Attendance and the parent portal after classes start.
- Instalments, arrears, a second branch, e-learning — once the first wave did not go back to Messenger.
Children’s and parents’ data is not a newsletter list. Consents, retention, roles (the teacher does not see the bank account). GDPR is harder here than in a salon. If this term is “held together with string” again — describe course types, group count and whether parents or adult students write. We will ship enrolment and groups in time for intake; the rest after classes start.
Intake waves, a placement test and a group that does not add up
A September wave and a February wave are two seasons in one year. The system must close an edition, open a new one and not mix instalments. A placement test makes sense when someone marks it — otherwise it is a barrier after which the parent still writes on Messenger “put them with their friend”. The result sits on the enrolment; a method lead or a simple threshold decides the group. Mixing levels “because we are short” should be a noted decision, not an accident of three forms.
A group that missed its cap needs a rule: merge, move, refund the joining fee. That cannot be a 15-mail thread. The offer status (“forming / started / cancelled”) should be visible in the parent portal before they call.
The teacher: list, attendance, a note — nothing more at the start
A teacher does not want a CRM. They want today’s list, a tick, a short note (“Kasia did not do homework”, “Marek is ill a third time”). Pay and group commission — phase two, once attendance is true. Giving a teacher 20 tabs on day one is the fastest way back to the notebook. A teacher account does not see parent balances and does not export the children’s list to a stick.
Several brands, franchise, rooms in state schools
One company, three logos, rooms in three primary schools — a common setup. The system holds the brand on the offer and on the parent email, and one set of accounts. A venue contract (room rent, hours) need not be in the MVP, but the site and the room diary already should: two groups cannot take the same room at 4 pm. A cousin of resource booking, except the resource is a school room on a rented afternoon.
If you settle with a municipality or a voucher — we do not invent the rules. We export the list and attendance in the layout your accountant names. That is not a promise of “a grant module that matches every resolution”.
Materials, licences and what you must not email “to everyone”
A textbook PDF and a lesson recording are not an attachment to 80 people on BCC. The student portal gives the file to a logged-in user, with a date, and without further forwarding from the teacher’s private inbox. The publisher licence and consent to record (a child’s voice) are your legal call — the system only enforces access. We do not keep recordings “just in case” with no retention. After the term, materials either stay in a role-limited archive or go, by a rule you write at the start.
Cover teaching: the new teacher sees the group list and materials, not family notes they do not need. That detail is what separates a school from a leak.
A report the office needs, not LMS “engagement”
- Group fill vs cap — whether to open a second 5 pm group.
- Instalments overdue today and in the next 7 days.
- Attendance below a threshold — before the parent calls with a complaint.
- Enrolment source (Google, flyer, sibling) vs a signed agreement.
- Room and teacher load on Tuesday — whether you lack people or rooms.
The student agreement, terms and a joining-fee refund
Online enrolment with no accepted terms and no refund note ends as a September fight. The panel shows what the student ticked and when. A joining-fee refund when a group does not start is a rule, not a “we will agree on Messenger” exception. A mid-term quit — your policy; the system prorates instalments or not, as you type it. We do not advise which clause is valid; we keep the consent and payment trail.
A real-time seat cap and the three channels that break it
A group breaks when sign-ups live in a site form, in email and on Instagram. A cap of 10 only works when every channel takes the same seat. Instagram points at the offer in the system; reception types the phone into the same counter. A waitlist gets an SMS when someone quits. Merging groups that missed the cap is a noted decision (merge / move / refund the joining fee), not a 15-mail thread. Offer status (“forming / started / cancelled”) is visible in the parent portal before they call.
A placement test makes sense when someone marks it. Otherwise it is a barrier after which the parent still writes “put them with their friend”. The result sits on the enrolment; a method lead or a simple threshold decides. Mixing levels “because we are short” should be conscious. September and February waves are two seasons: the system closes an edition and does not mix instalments.
Instalments, a sibling discount and an employer invoice
The joining fee holds the seat. Instalments have dates and a reminder. A sibling or “second course” discount is a price-list rule, not a manual tweak accounts never see. A block on arrears — if you so decide — must be in the terms, not a surprise at the classroom door. A joining-fee refund when a group does not start is a rule, not a “we will agree on Messenger” exception. We do not advise which clause is valid; we keep the consent and payment trail.
- Parent portal: attendance, a note, the next class. An adult student — their own portal, no “parent”.
- The teacher ticks in 20 seconds; they do not see balances and do not export the children’s list.
- An invoice to a company funding staff language is a different view than the parent portal.
- Materials and recordings — logged-in access, retention after term, consent for a child’s voice.
Children’s data and KSeF on corporate training
A child’s and parent’s data is not a newsletter. A data minimum, consent, retention after the course, an EU server — GDPR. Invoices to firms from 2026 go through KSeF when you are a taxpayer under the duty. Dates: ksef.podatki.gov.pl — 1 February 2026 when 2024 sales exceed PLN 200 million (including VAT), 1 April 2026 for the rest. Invoices to private individuals optional. Often the invoice stays in the accounts tool and enrolment passes the line (course, student, period).
Frequently asked questions
- Will this replace Teams / Zoom?
- It does not have to. It can hold the lesson link and attendance. We embed video when there is a reason, not by default.
- Will the parent see grades?
- Yes, if you switch it on. Adult students get their own portal, no “parent”.
- Several branches?
- Yes — a shared offer or separate ones, shared accounts, permissions per site.
- A student app?
- At the start a phone-friendly portal. An Android app when you want push for cover lessons and overdue instalments.
- Does the teacher need a laptop?
- No. Attendance on a phone. Materials can arrive as a link. A teacher account does not see other groups.
- Sibling discounts and large-family cards?
- A rule in the price list, not a manual “by eye” cut. Otherwise the instalment report and KSeF will drift.
- A waitlist?
- Yes — when the group is full, the system asks for another slot or a waitlist. A freed seat can get an SMS.
- What about children’s data?
- A minimum, parent consent, retention after the course ends. The teacher does not export the list to a stick. An EU server.
Related service:
Custom software for companies
Describe your project