---
title: Students
slug: students
docTags: 
createdAt: 2026-03-06T19:27:17.084Z
---

**Students** are the members of your academy. Each student has a profile with personal details, enrolments, payment history, and attendance records.

## ✏️ Adding a Student

Go to **Students → Add Student** and fill in:

| Field              | Notes                                                  |
| ------------------ | ------------------------------------------------------ |
| Full name          | Required                                               |
| Date of birth      | Used for age verification                              |
| IC number          | Identity card / passport number                        |
| Phone              | Student's contact number                               |
| Email              | Used for login and notifications                       |
| Emergency contacts | Name, phone, relationship — supports multiple contacts |
| Guardian           | Required for minors — see below                        |
| Custom fields      | Defined by your academy admin                          |

### 📥 Bulk Import

Go to **Students → Import** to add many students at once from a CSV or Excel file, instead of entering them one by one.

1. **Upload** — select a `.csv`, `.xlsx`, or `.xls` file. Don't have a file ready? Click **Download a template** for a starter spreadsheet with the right column headers, including any custom fields your academy has configured.
2. **Map Columns** — REMMU automatically matches your spreadsheet's column headers to the right student fields. Review the auto-detected mapping and adjust anything that wasn't matched correctly. A live preview shows your data as it will be imported.
3. **Review** — before anything is created, REMMU checks every row for duplicates (matching an existing student by name, phone, or email — defaults to Skip, choose Import anyway for e.g. siblings with the same name) and errors (missing required fields or unrecognised values).
4. **Confirm** — review the final count and click **Confirm Import**. This step cannot be undone.
5. **Results** — see how many students were imported, skipped, or failed, with a downloadable error report for anything that failed.

:::hint{type="info"}
Bulk Import is **admin only** and creates student profiles only — it does not enrol students into classes or create a linked parent login. Enrol students into classes afterward from their profile, and use **Send Invitation** or **Create Account** on the Guardian tab if you want to give a parent portal access.
:::

***

## 🎁 Referred By

If the [Growth module](docId\:xDzjnh4KezjFd7bEjvvVm) is enabled, the student profile shows a **Referred By** card indicating whether this student was attributed to a referral — with an option to attribute or correct it while the referral is still pending.

***

## 👥 Guardians

For underage students, you can link a **guardian** (parent or legal guardian). The guardian gets their own login and receives payment notifications on behalf of the student.

To add a guardian: open the student profile → **Guardian** tab, enter the guardian's name, email, phone, and relationship, then click **Send Invitation** — the guardian receives an email to set up their account.

### Creating a parent account directly

You can also create a guardian account without sending an invitation — useful during onboarding when you want to set up credentials on the spot. From the Guardian tab, click **Create Account**, enter the guardian's details and a password, and the account is created immediately. If the email already belongs to an existing REMMU account, that account is linked to the student instead of creating a new one.

***

## 📅 Upcoming Sessions

On the student profile, an **Upcoming Sessions** card shows the student's next 30 days of enrolled classes, with a status badge once each session is taken. Click a row to open the roster for that session and take attendance directly. A per-row actions menu lets staff retime, reschedule, or cancel the session (cancel is admin/team only).

***

## 🖨️ Attendance Summary

On the student profile → **Attendance** tab, click **Print** to generate a print-friendly attendance summary — attendance rate, totals, monthly breakdown, and a per-class matrix, over a date range you choose. Useful for parent-teacher discussions, compliance audits, or giving a student their own record.

***

## 📜 Enrollment History

Every change to a student's class enrolment status is automatically logged with a timestamp and the admin who made the change. View it from the student's profile → **Classes** tab → open an enrolment → **View History**. Read-only — useful for auditing membership changes and resolving disputes.

***

## 🗂️ Bulk Status Updates

When you have many students to update at once (e.g. clearing inactive members), use the bulk status action: apply a filter on **Students**, select students with the checkbox column, and use the action bar at the bottom to mark them Active/Inactive/Withdrawn.

:::hint{type="info"}
Bulk operations require admin role or team permission to manage students. Archive status is **not** available in bulk — archive students individually from the ⋯ menu.
:::

The same flow works on the mobile app.

***

## 📆 Monthly Payment Grid

The student profile's **Payments tab** shows a 12-month grid at the top — one cell per month of the current year — colour-coded by payment health (all paid, pending, overdue/failed, or no invoice), so you can see the student's monthly payment status at a glance. Click a month cell to jump straight to that payment.

***

## 📅 Enrolling a Student in a Class

From the student profile: go to the **Classes** tab, click **Enrol in Class**, select the class and billing start date, and confirm the billing type.

### Fee override

When enrolling, admins can override the default class fee for that specific student — as a percentage discount, a fixed discount, or a completely custom amount. Fee overrides apply to all future recurring invoices for that enrolment.

### Enrollment fee checklist

If your academy has payment types with **Auto-Generate on Enrollment** enabled (e.g. Registration Fee, Deposit), a checklist appears when enrolling a student, pre-checked but adjustable — uncheck any fee you don't want, or adjust its amount for this specific student. Check **Don't generate invoice for this enrollment** to skip all enrollment fees for transfers or comp enrolments.

:::hint{type="info"}
**Note:** A student can be enrolled in multiple classes simultaneously. Each enrolment is tracked separately for payments and attendance.
:::

### Enrollment end date (optional)

Check **Set an end date for this enrollment** to give the enrolment a fixed expiry — the enrollment automatically moves to Completed the day after the end date, and billing stops on its own. Leave unchecked for a normal, open-ended enrollment.

### Enrolling in a Pricing Group Bundle

If the class being enrolled in belongs to an active [Pricing Group](docId\:gdnhWQ2qynwvmrj5GB9MC), a **Use bundle pricing** option appears (Monthly billing only). Expand it to pick a class-count tier — picking a tier for more than one class opens extra class pickers scoped to the group's other eligible classes. Once every slot is filled, the enrollment summary shows the real bundle total that will be invoiced, not the sum of each class's individual fee.

A custom fee override for this specific student always takes precedence over bundle pricing — if a custom fee is set, the bundle option is skipped for that enrolment.

Parents self-registering a child (via **Add Child**) get the same bundle tier picker and see the same combined total before confirming, with a **Joining Month** toggle instead of the admin's "Bill For" label.

**Managing an existing bundle:** on the student's Enrolled Classes list, bundled classes appear grouped under one card showing the group name, class count, and current combined price (e.g. "Year 6 · 3 classes · RM 250.00/mo"), instead of as separate unrelated rows.

- **Add a class to the bundle** — click **Add Class** on the bundle card, pick another eligible class. You're billed the **tier price difference** today (e.g. upgrading 2→3 classes on a RM 190/RM 250 group bills RM 60, not the new class's own fee) — or check **Don't generate an invoice now** to defer all billing to the next cycle. Either way, the fuller bundle price applies starting the next invoice.
- **Remove a class from the bundle** — use the normal **Remove** action on that class's row. If dropping it still leaves enough classes to match a lower tier, the bundle price is automatically re-checked against the group's tiers starting the next invoice (the invoice already issued is never changed). If no tier matches the remaining count, the remaining classes fall back to being billed at their own normal fee.

***

## 🙋 Member Class Change Requests

When **Allow student to self update their enrollment** is on (Settings → General → Member Settings), members can drop or add classes for themselves or their children from the student profile — including adding a class to a bundle or choosing a fresh multi-class bundle tier.

With **Require approval for enrollment changes** also on, each change becomes a request:

- The member sees a **pending** banner on the student profile and can **withdraw** the request until it's reviewed
- Admins see an **Enrollment Change Requests** card on **Students** (and on the student's profile) with a count of pending requests
- For a **drop**, the admin chooses **Approve · Drop Now**, **Approve · End of Month** (the class is dropped automatically at month end, and the member sees a **scheduled** banner until then), or **Reject** with a note
- For **adding a class to a bundle**, approving opens an invoice choice for the tier top-up: **Generate invoice** (the tier difference for the rest of this month), **Skip this month's invoice** (billing starts next cycle), or a **Custom amount** (e.g. a manually prorated top-up)

With approval off, changes apply immediately.

:::hint{type="info"}
Members who have no class history yet — or have dropped their last class — still see every location's classes in the Enroll picker. If there are no classes to offer at all, they're asked to contact the academy.
:::

The same request flow is available in the mobile app.

***

## ⚙️ Custom Fields

Your academy admin can define additional fields to capture academy-specific data (e.g. belt rank, medical notes, member number), configured under **Settings → Custom Fields** across three tabs — Student Fields, Instructor Fields, and Emergency Contact Fields. Each field supports several types (text, number, dropdown, date, yes/no, etc.) plus validation and visibility controls.

***

## 💳 Student Payment Status

The class payment view shows a payment health indicator per student — Up to Date, Pending, or Overdue. There's no automatic suspension based on missed payments — an admin decides whether and how to follow up. → See [Automated Reminders](docId\:vdDeSCU6npoxSaR6o5IAR).

***

### Sorting by age

On the Students list, the sort dropdown includes **Age (Youngest first)** and **Age (Oldest first)**. Students with no date of birth always appear last. The same sort applies to the CSV export. To make sure every student has one, turn on **Require date of birth** in Settings → General → Member Settings.

### Students by Location & Class

The **Students by Location & Class** chart on the Overview tab shows your current headcount with a 12-month trend. Open a location to see its classes — every class is listed, including empty ones, with a month-by-month headcount grid (month-end numbers, with the last column showing today) and the change against last month. Set a **highlight below** number to flag classes with fewer students than you want. A **Not in any class** row shows students who aren't enrolled anywhere. Click a class to pin it and compare it against others, and export the chart.

### Age Breakdown

On **Students → Overview**, the **Age Breakdown** card charts your active and trial students grouped by current age — useful for planning age-banded classes.

### Team members and the Student menu

Team members with the **Manage Students** permission get the same **Student** menu as admins (All Students, Overview, Birthday, ID Card), except Import. Everything they see is limited to their assigned locations. Birthday is read-only for team — they can't send wishes or change auto-send settings.

## 🔧 Searching & Filtering

The Students list can be filtered by search (name, phone, email, IC, or any searchable custom field), status (Active/Inactive/Trial/Withdrawn/Archived), and location/class pills — all combinable.

### Status tabs

Above the list, a row of status tabs (All, Active, Trial, Inactive, Suspended, Withdrawn, Archived) shows a live count for each — click a tab to jump straight to that status instead of using the status filter dropdown. Archived and Suspended students, easy to lose track of otherwise, now have their own tab.

***

## 🎂 Birthday Wishes

REMMU can automatically send birthday emails to your students on their birthday (or a few days before). Go to **Students → Birthdays** for the birthday calendar, filterable by location, class, or status, with a banner flagging students missing a date of birth (use **Show all** on the banner to list them).

### Auto-Send Settings

Click **Settings** on the birthday page to toggle automatic sending, set the send time, and choose how many days in advance to send.

### Email Templates

Choose from a few email styles (warm & friendly, professional, fun & playful), and customise the subject line (supports a name placeholder), greeting, and footer message per template.

### Previewing & Sending Manually

Preview any template before it goes out, or click **Send Wish** on any student card to send immediately regardless of auto-send settings.

:::hint{type="info"}
Birthday emails are sent to the student's guardian if one is linked, otherwise to the student directly.
:::

***

## 📦 Managing Packages from the Student Profile

From a student's profile, open the **Packages** tab to view all active, expired, and cancelled packages, assign a new one directly (**Assign Package**), or adjust/deduct sessions from an existing entitlement via the ⋯ menu.

***

## 🪪 Student ID Cards

Generate and print physical ID cards for your students — branded with your academy logo and colour, with a QR code for check-in. Go to **Students → ID Card**, filter by location/class/status, choose from several card layouts, and customise which fields, custom fields, and emergency contact info appear.

:::hint{type="info"}
ID Cards are accessible to admins only under **Students → ID Card**.
:::

***

## 🚫 Suspending a Student (Access Gate)

When you need to block a student's access to REMMU temporarily — for non-payment, medical leave, behavioural issues, or any other reason — change their status to **Suspended**.

A suspended student sees a full-screen access gate showing the reason (and your free-text note, if added) when they try to log in. Non-payment suspensions gate the member to the My Payments page only, so they can pay outstanding invoices to lift the suspension themselves. Other reasons block all access until an admin reverts their status to Active.

:::hint{type="info"}
**Suspended vs Inactive:** *Inactive* is a soft state — the student keeps access. *Suspended* is enforced — the access gate kicks in immediately.
:::

***

## 📜 Status History

Every change to a student's overall status is automatically logged with timestamp, admin, reason code, and any note — visible on the student profile's **Status History** timeline. Separate from Enrollment History, which tracks class enrolment changes specifically.

***

## 🗂️ Archiving & Restoring a Student

When a student leaves, archive their profile instead of deleting it — this hides them from the active list while preserving all their records (payments, attendance, history). Archived students can be restored to active status at any time, or permanently deleted if you're certain.

:::hint{type="danger"}
**Permanent deletion cannot be undone.** All associated data — payment records, class enrollments, and history — will be permanently removed. Archive first; only delete if you are certain.
:::

***

## 📊 Students Overview

Go to **Students → Overview** for a dashboard of enrollment statistics — total/active students, new this month, active enrollments, growth trends, status distribution, top classes and locations by enrollment, and a billing-type breakdown.

***

## 🆘 Emergency Contacts

Each student profile supports multiple emergency contacts, each with name, relationship, phone, workplace, and occupation. Add or remove contacts from the student profile's Emergency Contacts section.

:::hint{type="info"}
The first emergency contact is always the primary contact shown in the student list and exported data.
:::

### Custom fields for emergency contacts

Need to capture extra details on each emergency contact (e.g. blood type, allergies, preferred hospital)? Configure them under **Settings → Custom Fields → Emergency Contact Fields** — each contact card gets its own values.

:::hint{type="warning"}
File-upload custom fields are not supported for emergency contacts — use them on student or instructor profiles instead.
:::
