Introduction
Hage Plus is a cloud School ERP for K-12 schools. This guide walks you through setting up a school from scratch and running it day to day — in the order the system expects.
The setup order matters
Each step depends on the one before it. You can't add students before classes exist, and you can't bill before fees exist. Follow the Set up your school section top to bottom:
Create school → Academic year → Settings → Classes → Subjects → Staff → Fees → Payment methods
Then move to Run your school to admit students, build timetables, run exams, collect fees and open the portals.
Prefer to explore first?
Run the
Demo Seeder to instantly create a fully-populated demo school (classes, subjects, staff, students, timetable, exams, invoices). Every password is
123456. Use it only on a training/staging site.
Where to click
Everything is reached from the left sidebar of the admin app. Throughout this guide a path like Academic › Classes means: open Academic in the sidebar, then Classes. You can also go straight to a screen by URL, e.g. …/academic/classes.
Note
Exact menu labels depend on your
role and permissions. If you can't see a menu, you may not have permission — ask a super-admin.
How the app works
Three ideas explain almost everything you'll see: roles, the school, and the academic year.
Roles
There are five roles. Each sees a different app:
One school = one tenant
Every record (student, invoice, class…) belongs to a school. A super-admin sees all schools and picks a working school from the profile menu; everyone else only ever sees their own school.
The academic year
The school's running academic year scopes enrolments, results and invoices. When you start a new year you create it and set it as running — old data stays intact under the previous year.
If data looks "missing"
You're almost always on the wrong
working school or
academic year. Reset both from the profile menu (top-right).
Step 1 · Create a school
A school is the container for everything else. Only a Super Admin can create one.
Steps
- Open the schools screen. In the sidebar go to Manage School › Schools (URL
…/administrator/school), then click Add.
- Enter the basics. School name, short code/branch name, address, phone and email.
- Upload the logo. It appears on the dashboard, printed timetables, receipts and report cards. Use a square PNG/SVG.
- Save. The school is created but not yet usable — continue to the academic year.
- Activate the licence (if your deployment uses licensing). On local/dev hosts licensing is bypassed automatically.
Multi-branch
Each physical campus is its own school record. Create one per branch — a super-admin switches between them with the working-school selector.
Result
The new school appears in the school list and in the super-admin's working-school selector.
Step 2 · Create the academic year
The academic year (or "session") is the calendar everything hangs off. A school needs a running year before you can enrol students or run exams.
Steps
- Open the academic year screen. Go to Setting › Academic Year (also called Session; URL
…/setting/session). Click Add.
- Name the year. Use a clear label such as
January 2026 – December 2026.
- Set the start and end dates for the year.
- Save.
- Make it the running year. Mark the new year as current / running for the school (this sets the school's academic year). New enrolments and invoices will use it.
Important
If a school has no running academic year, the Add-Student and exam screens will refuse to save. Always set the year before enrolling.
Result
The topbar / profile menu shows the current year, and it appears in the academic-year switcher.
Step 3 · School settings
Set the basics that shape money, dates and language before you add data.
What to set
- Currency & symbol. Used across fees, invoices and the portal (e.g.
$).
- Date format. How dates display everywhere.
- Language & RTL. Choose the interface language; enable right-to-left if using Arabic.
- Unpaid-invoice limit. How many unpaid invoices flag a student as "reached the limit" (used in debt reports).
These live under Setting › General / School Setting. Save when done.
Tip
Set the currency
before creating fees so every amount reads correctly from the start.
Step 4 · Classes & sections
A class is a grade (e.g. Grade 1). A section is a group inside it (e.g. A – Morning). Students are enrolled into a class + section.
Create classes
- Open classes. Academic › Classes (URL
…/academic/classes) → Add.
- Name the class (e.g.
Grade 1, Form One).
- Pick the level — Primary, Middle or Secondary. Levels let you generate timetables and group subjects across grades.
- Save, and repeat for every grade.
Create sections
- Open sections. Academic › Sections → Add.
- Choose the class the section belongs to.
- Name the section (e.g.
A, B).
- Set the shift — Morning, Afternoon, Full-day or Night. Shifts drive timetable generation.
- Save, and repeat for each section.
Result
The class + section dropdowns are now populated for admissions, timetables and exams.
Step 5 · Subjects & teachers
Subjects are defined once school-wide, then attached to each class and assigned to teachers.
a. Subject Master (school-wide list)
- Open Subject Master. Academic › Subject Master → Add.
- Add every subject the school teaches (Mathematics, Af-Soomaali, اللغة العربية, Science…). Optionally set a display order so subjects always sort the same way.
b. Class Subjects (which subjects each class takes)
- Open Class Subjects. Academic › Class Subjects.
- Pick a class (or level) and tick the subjects it studies. Levels share the same subjects, so you can set a whole level at once.
- Save.
c. Teacher Assignments (who teaches what)
- Open Teacher Assignments. Academic › Teacher Assignments.
- Choose a teacher, then tick the classes/subjects they teach for the current year.
- Save.
Do subjects before timetables & exams
The timetable generator and exam scheduling both read from the subjects assigned here.
Step 6 · Staff & logins
Add the people who run the school: a school admin, teachers, and other employees. Each gets a login.
School admin
Create an Admin user for the school so the principal/office can operate it without a super-admin. (A super-admin creates this.)
Teachers
- Open Manage Teacher. Teacher › Manage Teacher (URL
…/teacher) → Add.
- Fill name, phone, department/designation, and a username for login.
- Save. The teacher can now be assigned subjects and classes.
Employees (HR)
- Open Employees. HRM › Employee → Add. Create departments & designations first if needed.
- Choose the role (accountant, librarian, receptionist…) — this controls what they can access.
Passwords & credentials
Open any teacher/employee's detail view →
Account tab to see the username, reveal/copy the password, or change it.
Step 7 · Fees & discounts
Define what you charge (fee types) and any reductions (discounts/scholarships) before you admit students, so billing works from day one.
a. Fee types (income heads)
- Open income heads. Accounting › Income Head → Add a fee type (Tuition, Transport, Hostel…).
- Set the amounts per class under Accounting › Fees so each grade bills the right figure.
b. Discounts & scholarships
- Open discounts. Accounting › Discount → Add.
- Set the percentage (e.g.
100 = full scholarship, 50 = half).
- Scope it (optional). Tick specific fee types the discount applies to, or leave blank for all.
- Save. Discounts are picked in the Add-Student billing step.
Good to know
A line or invoice that nets to zero is auto-marked
Paid / Fully Waived — that's expected, not a bug.
Step 8 · Payment methods (Bill Config)
Tell parents how to pay. What you configure here is exactly what shows in the parent portal's "How to pay" panel.
Steps
- Open Bill Config. Setting › QR Code Bill Config (URL
…/setting/billconfig).
- Pick the school (super-admin) and click Add a method.
- Choose the channel — USSD (mobile money like EVC Plus / Zaad / Sahal), Bank, or QR.
- Enter the details — the dial code / number / QR data, and a label parents will recognise.
- Save.
Why parents see no "How to pay"
The panel appears only when (a) a payment method is configured here
and (b) the student actually owes money. No config or a zero balance → nothing shows.
Admit a student
With setup done, enrol students through the Add-Student wizard — it also creates the guardian and the first invoice.
- Open Add Student. Manage Student › Add Student (URL
…/student/add).
- Student details — name, gender, date of birth, class & section, photo.
- Guardian — link an existing guardian or create a new one (their phone becomes their portal login).
- Billing step — review the fee preview, pick a discount/scholarship if any, and confirm. Fully-waived lines show as Free.
- Review & submit. The student, guardian, enrolment and first invoice are created together.
Later changes
From
Manage Student › Student List you can edit, view, change status (drop/passed/graduated), or transfer a student to another class or school.
Generate a timetable
Build a conflict-free routine automatically, then print it with your school's branding.
- Open the generator. Academic › Timetable Generator (URL
…/academic/timetable_generator).
- Choose the scope — a single class, a whole level, or the entire school.
- Pick the shift (morning / afternoon) and any subject rules (e.g. back-to-back "double" periods).
- Generate. The system schedules subjects & teachers without clashes.
- Review & print. Use Color Print / Standard Print for a branded, colour-coded timetable.
View existing routines
Academic › Routine shows the timetable by Whole School, Class, Teacher or Subject.
Take attendance
Record daily student attendance; teachers can also do this from the teacher portal.
- Open attendance. Attendance › Student Attendance.
- Choose class, section and date.
- Mark each student Present / Absent / Late (default is Present).
- Save. Parents see the summary in the portal.
Exam attendance is different
Absence in
exams comes from
Room Attendance (see the exam guide), not from daily attendance.
Run an exam (full flow)
One guided cycle from creating the exam to publishing results to the portal.
- Create the exam. Exam › Exam → Add (name it, e.g. Mid Term 2026; set pass mark, and whether to show rank / pass-fail).
- Schedule it. Exam › Schedule — set date, time and room per class + subject. The system blocks clashes and out-of-range dates.
- Seat students & take Room Attendance. Assign students to rooms, then in Exam › Room Attendance untick anyone absent (seated students are present by default). This is the single source of truth for absence.
- Enter marks. Exam › Marks — enter Total/Obtained per subject; the grade auto-computes by percentage, and Absent is read from Room Attendance.
- Publish. Exam › Publish — this builds each student's result, class rank & pass/fail, locks the marks, and reveals results in the portal.
Outputs to print
After publishing: Result Card (per student), Mark Sheet (class matrix), Merit List, and Final Result (year aggregate) — each with the school logo, grade key and signature block.
Common mix-up
If a report card shows the wrong "Absent", fix it in
Room Attendance and re-publish — editing marks won't change it.
Invoicing & payments
Bill students, record payments, and track who owes what.
- Open the invoice manager. Accounting › Invoice (URL
…/accounting/invoice).
- Create an invoice for a student (fee types, discount, month). Admissions also create the first invoice automatically.
- Record a payment. Open the invoice → Pay Now, enter the amount and method. Status updates to Paid / Partial.
- Read the fee-status report to see paid / partial / overdue, and the "reached unpaid limit" list to chase debt.
Also here
Print receipts, issue refunds, and set
payment promises for parents who commit to pay by a date.
SMS & notices
Reach parents instantly and post school-wide announcements.
Set up an SMS gateway
- Open SMS settings. Setting › SMS. Pick a gateway (Hormuud, Twilio, Plivo…) and enter its credentials.
- Send a test to your own number before going live.
Notices, events & news
Post announcements from the relevant module; they surface to parents in the portal and on the school website.
If SMS won't send
Check the gateway credentials, account balance/credit, and the sender/number format.
Enable the portals
Get parents, students and teachers into the self-service portal at /portal/.
Three things every portal user needs
- The right login ID — student = admission no., guardian = phone, teacher = username.
- A password — set or reset it from the person's detail view → Account tab (Change Password).
- Mobile login turned on — the user's
mobile_login_enabled must be 1, or login is refused with "Mobile login is disabled".
What they can do
Hand-out
Give each family their login ID + password and the portal URL. They log in and immediately see fees, attendance and results.
Roles & logins
Who logs in with what, and where.
Reset a password
Open the student / guardian / teacher detail →
Account tab → reveal/copy the current password, or set a new one. Portal login also needs
mobile_login_enabled = 1.
Troubleshooting
The most common issues and how to fix them. you fix · check a setting · escalate
Never on a live school
No direct database edits, no Demo Seeder on real tenants, and no licence/token changes without engineering.
Glossary
The terms used throughout this guide.