Teachers and Teacher Pay
Assign paid and volunteer teachers, understand the teacher of record, and follow teaching hours from the class time clock through to payroll.
Every class has one teacher of record, and that one choice decides who can take the register, who receives the class’s alerts, and whether the hours taught become payroll hours or volunteer hours.
When you’d use this
- You are assigning teachers to a term’s classes.
- A volunteer is teaching one class and a paid employee another, and you need both to be recorded correctly.
- Somebody is away and a colleague is covering a single session.
- A teacher’s hours are not reaching payroll and you need to know why.
Paid or volunteer: the one rule
Muin checks this when you assign the teacher, not when you add the person.
| Teacher kind | What must already exist | Where their hours go |
|---|---|---|
| Paid staff | A live employee record in HR | Payroll, as a time entry linked to the class |
| Volunteer | A live volunteer role on the person | Volunteer hours. No payroll hours, by design |
The picker only offers people who satisfy one of the two, and when both hold, paid wins. The badges on the console’s Teachers tab read Paid staff or Volunteer.
If you assign through an API or a bulk path instead of the picker, the refusals are explicit:
- “A paid teacher of record must be a linked employee so their Class hours post to payroll; onboard them in HR, or assign them as a volunteer teacher instead.”
- “A volunteer teacher of record must be a registered volunteer; add the volunteer role for this person first.”
- “The selected teacher has no person record in this tenant; a teacher of record must be a known person.”
Teacher of record, and cover
The teacher of record is the person the class belongs to for the term. Assign one per class from the Program console, Teachers tab or from the class’s own Setup. A class can have more than one teacher; one of them is the teacher of record.
Assigning the teacher of record does two things: it names them on the class, and it puts them on the class roster as a non-seat row, so they can clock in and never consume a student seat.
The teacher of record drives:
- who may take the register
- where a check-in is routed, to the time clock or to volunteer hours
- who receives the class’s alerts. A class with no teacher of record and no program coordinator has its alerts calculated and then dropped
- the teacher of record missing flag on the console
- future session rosters, so a teacher assigned today can clock into tonight’s class
Cover is for one session. Naming someone to cover a single occurrence adds them to that session only. It never changes who the class belongs to, and the regular teacher keeps the class.
Once somebody has actually clocked hours against a session you cannot un-assign them from it. The hours worked are real.
A different teacher on a different day
Each of a class’s meeting times can carry its own teacher for that weekday. Leaving a meeting time’s teacher blank means the class’s teacher of record takes those days. A meeting-time teacher is held to the same rule: a linked employee, or a registered volunteer.
Seeing who teaches what
The Teachers tab lists each teacher once, with every class they hold and the groups each class serves. Search finds a teacher by their name, a class name or a group name.
When a teacher leaves
Press Teacher left on their row. Their classes are listed by group in one window. Pick a new teacher for each class, or pick once for a whole group. The button saves every class and then suspends their login and unregisters their time-clock phone. If a class cannot take the teacher you picked, it says why, and the others are still saved.
Nothing is deleted. Their attendance, hours and payroll history stay attached to them, and you can reactivate them from Team settings if they return. For paid staff this does not end their employment; do that from their HR record so final pay is handled.
The teacher’s own screens
Sidebar, Nonprofit, Education, My Classes is the teacher’s surface: their classes this term, today’s session, take-attendance, and their attendance trend. Opening a session gives them that session’s register.
The same teacher can clock in and out from there, and from the Muin app on their phone, including by tapping an NFC card. The clock-in control only appears for somebody who has an employee record, which is why a volunteer teacher does not see it. End my day becomes a button once their last class has ended; before that it is a “Leaving early?” confirmation.
Some schools tie a teacher’s clock-in to the specific phone they registered. A new phone, or a reinstall of the app, then locks them out of their own time clock until an admin resets the registered devices from the By teacher hours report, with a short reason. The next device they clock in from becomes the registered one.
How hours reach payroll
Hours are submitted when a class session is ended from the live board. That close-out clocks out everyone still clocked in, works out the hours, and submits them.
Two details worth knowing:
- Hours are clocked out to the class’s scheduled end time, so a teacher who forgets to clock out is not paid until midnight.
- Closing out early never invents hours that have not happened yet. The clock-out is capped at the current time.
Teacher pay is ordinary HR payroll
There is no separate teacher payroll and no pay rate on a class or a program. A paid teacher’s rate comes from their HR compensation record, and their class hours become ordinary time entries that payroll picks up.
HR, Reports carries the class-linked views: Teacher salary, Exceptions to review, Hours by employee, Hours breakdown, Tardiness and Hours by program. The Teacher salary tab shows, per teacher, sessions worked, hours, hourly rate, gross pay, approved and unapproved and backfilled hours, payable hours and tardiness, and exports to CSV.
Labor cost by program is what payroll has actually posted to the ledger, net of reversals, not a projection. Until a run is committed it stays empty, while the Teacher salary tab prices the same hours at each teacher’s rate.
Two reads, two permission levels
- By teacher shows hours given, paid and volunteer, and needs payroll access.
- Teacher attendance shows who was due, who taught, who was late, who was away and who covered, whether each teacher took student attendance in the classes they taught, and which teachers have never signed in. It needs no payroll access, so a coordinator can check staffing without seeing anyone’s pay.
What it affects
- The teacher kind decides whether a check-in mints payroll hours or volunteer hours. This cannot be changed after the fact by editing a report.
- A class with no teacher of record shows as not ready to run, and its parent alerts are dropped.
- Volunteer teaching hours appear in volunteer reporting, not in payroll.
- Teaching hours flow into the HR payroll run for the period they fall in.
When it goes wrong
| What you see | Why | What to do |
|---|---|---|
| “A paid teacher of record must be a linked employee so their Class hours post to payroll; onboard them in HR, or assign them as a volunteer teacher instead.” | The person has no employee record | Onboard them in HR, or assign them as a volunteer teacher |
| “A volunteer teacher of record must be a registered volunteer; add the volunteer role for this person first.” | The person has no volunteer role | Add the volunteer role on their person record |
| A teacher’s salary row reads Not payable, reason No hourly rate set | There is no active hourly compensation in HR | Set the hourly rate on their HR compensation record |
| A salary row reads Hours not approved | The hours exist but nobody approved them | Approve the hours in the HR time records |
| A teacher cannot clock in after changing phones | Their clock-in is bound to a registered device | Reset the registered devices from the By teacher report, with a reason |
| A teacher cannot be deleted | They are the teacher of record for a live class | Reassign the class, or merge the duplicate person rather than deleting them. Deleting a teacher who is on a roster would orphan the register |
| Hours never arrived in payroll | The session was never ended from the live board | End the session; the close-out is what submits the hours |
Next step
See how a session is actually run and closed: Attendance.