How to run monthly payroll
Process attendance/leave deductions and generate payslips for a pay period.
Running a month in FEMS is a sequence, not a button. The payslip is calculated from attendance, leave and holidays as they stand at the moment you generate, so anything settled afterwards is missing from the figures. This guide is the order a payroll officer works in, with a link to the module page behind each step.
Prerequisites
Your role needs access to Payroll in Human Resources. Creating a pay period, running the generation, managing adjustments and printing payslips are separate accesses, so you may see the screen without seeing every button.
Go to Human Resources > Payroll. You will use two of its four tabs: Payroll Assign and Payroll Process. Check the result from the employee's side under Self Care > Salary & Payslips, because the Employee Payslip tab does not list the period you just generated.
Before your first ever run, finish the one-time setup in Setting up payroll.
Why the order matters
The generation reads attendance, approved leave and the working-day calendar once, at the moment it runs. Nothing recalculates on its own afterwards.
So a leave approval on the 3rd and the same approval on the 2nd produce different payslips, and the only repair is to run the month again. Work down the list in order and you run once.
The month-end checklist
1. Clear the applications queue
Go to Human Resources > Applications and empty both queues for the period.
- Attendance Application tab: manual attendance, late arrival and early departure corrections.
- Leave Application tab: every leave request covering days in the period.
This is the step that changes the most money. Only approved attendance counts as a day worked, and only approved leave protects an employee from being counted absent or is charged as unpaid. Approving a late arrival is also what removes that late mark from the deduction.
Deciding a request after the payslips exist has no effect until you reprocess. See How to approve a leave request and Handling leave and staff applications.
2. Check the month's holidays and extra working days
Go to Human Resources > Schedule Override and confirm every date exception for the period is recorded: the public holidays the school closed for, and any Friday or Saturday everyone came in.
A missing holiday is expensive. Payroll still counts that day as a working day, nobody punched in because the school was shut, and every member of staff loses a day's pay for it.
Open each override with the eye icon and read the Assigned To tree back. An override with a campus switched on but no department under it saves without an error, looks correct in the list, and applies to nobody. See Setting holidays and extra working days.
3. Check who is on payroll
Open the Payroll Assign tab and scan the GROUP and GROSS columns.
- A blank gross means no payslip. Generation passes over that person with no error and no row anywhere. New starters are the usual cause.
- Leavers should be off their payroll group, or they generate a payslip for a month they did not work.
- Any raise that takes effect this month should be entered before you generate. Use Increment on the row rather than retyping the gross.
Details are on Setting up payroll.
4. Settle the one-off amounts outside FEMS
Adjustments do not reach the payslip. The Adjustment tab saves a bonus or an allowance and lists it, and then the amount adds nothing to OTHER, nothing to EARNING, and nothing to NET PAY. Reprocessing does not change that. This is a known defect, tracked as issue #2458.
So pay festival bonuses and allowances outside FEMS this month, and do not tell staff the amount will show on their payslip. See Generating monthly payslips.
If you record adjustments on the tab anyway so the amounts sit in one place, confirm the row is really in the list and its employee count is not zero. The form shows a success message even when the save did not go through, so a green message on its own is not proof.
5. Create or select the pay period
On the Payroll Process tab, pick the session in Select Session, then click Add New if the month does not exist yet.
Fill in Payroll Name, Sorting, From Date, To Date and Campus, and set the Payroll radio to Current if you intend to generate this month. A period left as Upcoming is skipped.
Three checks before you move on:
- Confirm the campuses stored on the period. Click the eye icon on the row and read the CAMPUS value. Generation only reaches employees at those campuses, so a wrong campus means missing payslips or none at all.
- If no new row appears after you submit, do not submit again. A period with the same dates in the same session already exists, and the screen shows the same success message either way. Find the existing period in the list and use it.
- If the row reads Upcoming, fix it now. An Upcoming row has no Process and no Reprocess button, so you cannot generate from it. Click the edit pencil, set the Payroll radio to Current, and save. Process then appears on the row.
6. Generate
Only one of the two buttons on the row shows at a time, and which one you get depends on where the period is.
| Button | Shows when the row reads | What it does |
|---|---|---|
| Process | Current | Marks the period Ready to Generate. No payslip is produced at that moment. Generation happens on the nightly run at 02:00. |
| Reprocess | Ready to Generate | Saves the same information and starts generation straight away. It also sets the period to Current as it starts. |
So a period you have just created takes two clicks to generate today. Click Process, fill in the Update Info drawer, and click Submit. The row moves to Ready to Generate and Reprocess appears on it. Click Reprocess, submit the drawer again, and generation starts. If you are happy to wait for the overnight run, stop after Process.
Generation runs one employee at a time in the background, so nothing appears the instant you click. There is no progress bar. Give it a few minutes, then check one employee under Self Care > Salary & Payslips.
Four fields in that drawer look like they drive the calculation and do not: Will Attendance be Calculated?, Will Late be Calculated?, Acceptable Delay (Minutes), and Salary deduct on late arrival days. They are saved with the period. The late-arrival deduction comes from an institution-wide threshold set outside these screens instead.
7. Spot-check before you tell anyone
Spot-check from the employee's side, not from the Employee Payslip tab. That tab is wired to a period whose Payroll setting is Upcoming, and generation only ever runs on a period set to Current, so the month you just produced is never the month the tab is showing. Filtering by Payslip Month narrows within that one anchored period rather than choosing another, so it returns nothing instead of the month you asked for. An empty tab after a successful run is expected. Do not reprocess again because of it.
Open Self Care > Salary & Payslips for a handful of people and read their payslips before staff do.
| What to scan | What a bad result looks like |
|---|---|
| Absent days | Large absent counts across many people. Attendance for the period was never approved, or a holiday override is missing. |
| Net payable | Net pay near zero across the board. Same cause. |
| Late arrival days | Zero when you expected deductions. The institution-wide late threshold is missing, so nothing is charged for lateness. |
| Who is missing | Someone you pay has no payslip at all. They have no salary structure, are inactive, or are at a campus not on the period. |
| The attendance grid | Check the day-by-day grid on two or three payslips against what you know happened. |
Also check the new starters and the leavers by hand. A mid-month starter can carry a large absent count for the days before they joined. Check anyone whose leave crossed the start or end of the period too, because a leave request is charged at its whole length to both months it touches.
Check the net figure against your own expectation before you pay anyone. The payslip's net payable starts from the gross and takes off only absence, unpaid leave, and late arrival. Tax, provident fund, loans, advances, and fines print in the breakdown and are not subtracted, so the breakdown and the net disagree on any payslip carrying one. This is a known defect, tracked as issue #2461. Do not release a payslip whose breakdown and net you cannot reconcile.
If you find something wrong
Fix the cause, then reprocess the same period. Reprocessing recalculates every employee on the period and overwrites the previous figures. It does not create duplicate payslips.
Reprocess after any of these:
- Attendance was corrected or approved after the run.
- A leave request was approved after the run.
- A salary structure was assigned or changed after the run.
- A holiday or working-day override was added after the run.
A second reprocess is only dropped while the first one is still running. Each employee's generation refuses a duplicate for as long as the identical job is queued or in flight. Once the batch has drained, reprocessing works immediately. So figures that do not move on a quick second attempt usually mean the first batch is still working through the queue. Let it finish, then check one employee's payslip.
What payroll does not do
Know these before staff ask.
- Nothing locks or closes a period. There is no finalize step and no approval on a run.
- The STATUS column on the payslip list reads Unpaid on every row. There is nowhere for a paid state to be stored, so it is not a record of who has been paid.
- Adjustments add nothing to a payslip. Pay bonuses and allowances outside FEMS. This is a known defect, tracked as issue #2458.
- FEMS does not post salaries to the accounts ledger. Payroll calculates and prints. Disbursement happens elsewhere.
- FEMS does not email payslips. Staff read their own under Self Care > Salary & Payslips as soon as the run finishes, and print from there. See Salary and payslips in Self Care.
FAQ
I clicked Process and no payslips appeared. Process only marks the period ready. Generation runs overnight at 02:00. For payslips today, look at the row again: it now reads Ready to Generate and carries a Reprocess button. Click that and submit the drawer a second time.
Everyone is showing as fully absent. Attendance for the period was almost certainly never approved, or a holiday the school closed for is missing from Schedule Override. Fix the cause and reprocess the period.
One teacher has no payslip at all. Check, in this order: they have a group and a gross on the Payroll Assign tab, they are active, and their campus is one of the campuses stored on the pay period. Administrator accounts are a separate case. They never appear on the Payroll Assign tab, so they cannot be given a gross and never get a payslip.
The Employee Payslip tab is empty after a run that reported success. Expected. That tab is anchored to a period that generation never runs on. Check the same employee under Self Care > Salary & Payslips before you conclude anything, and do not reprocess again.
I approved a leave request after I generated. Do I have to start again? No. Reprocess the same period. The figures are rewritten from scratch and no duplicate payslip is created.
Can I generate for one employee only? No. Generation always covers every employee at every campus on the period.
Nobody is being charged for late arrivals. The late-arrival threshold is an institution-wide setting with no screen in this console, and if it is missing no late deduction is taken at all. The late fields on the pay period do not drive it. Ask your FEMS administrator.