HandbookPeople & money19

Payroll & tax.

Payroll is the one number every staff member checks and no school can afford to get wrong. YESS computes it from the data the platform already holds — the contract, the logbook, attendance, approved bonuses, conduct penalties, and statutory deductions — and walks each run through a clear path from draft to paid. Staff preview their own payslip and can contest a figure before payday; the logbook gates teaching pay, and the salary budget watches the run. This handbook follows one month's run, end to end.

  • 5run states
  • 6calculation inputs
  • 7-daypreview window
  • ≈12 minto read

Prologue

The number everyone checks#

A wrong payslip is expensive twice — once in the correction, and once in the trust it costs. YESS payroll is built to keep both costs low: it computes pay from records the school already keeps (the contract, the logbook, attendance, leave, the conduct register), shows the result line by line, and gives the staff member a chance to challenge a figure before the money moves.

The payroll hub lives at /dashboard/payroll. It is organised around the run — one payroll cycle for one group of staff in one month — and everything in this handbook hangs off that single object: the calculation, the preview, the disputes, the approval, and the payment.

Chapter one

The run lifecycle#

A payroll run moves through three deliberate actions: Draft → (Auto Calculate) → Preview → (Approve Payroll) → Approved → (Mark Paid) → Processed. A run can also be Cancelled. Each transition has a named actor behind it, so the run carries its own audit trail — who prepared it, who approved it, and who executed the payment.

Draft. You open a run for a month and a pay group. Clicking Auto Calculate runs the engine across every member of the group, writes a payslip for each, and moves the run straight to Preview. Immediately after the calculation, the school's auto-applied conduct and infringement rules are layered onto the slips as penalty lines.

Preview. While a run sits here, each staff member can open their pre-payslip and either acknowledge it or raise a revendication — the dispute flow in Chapter three. Approve Payroll locks the figures once the review window closes; Mark Paid records who executed the payment and when, and moves the run to Processed — its terminal state.

Chapter two

Inside a payslip#

Every payslip is a small ledger with three blocks. The engine draws on six inputs to build it: the base salary from the contract (for salaried and hybrid staff), logbook-gated hours pay (for hourly and hybrid staff), approved bonuses, attendance deductions for unjustified absence and unpaid leave, conduct and infringement penalties applied by the school's rules, and statutory deductions. The slip schema also itemises allowances, substitution pay, and period-level lines (early departure, missed periods) which fill in where the data exists.

The earnings block lists base salary, allowances, bonuses, substitution pay, and extra hours such as invigilation. The deductions block lists the absence deduction, the lateness deduction, penalty deductions from conduct rules (itemised by rule), early-departure and missed-period deductions, and statutory contributions — each statutory line marked with an asterisk so it is unmistakable. The summary resolves the three into gross pay, total deductions, and net pay.

Statutory deductions are configured through a tax pack — a named set of components (income tax, social security, pension, health, a training levy, or other) the school assigns once, or a flat income-tax rate (15% by default) where no pack is set. YESS ships starter templates for several jurisdictions — Cameroon CNPS, Senegal IPRES/CSS, Côte d'Ivoire CNPS, RDC INSS — each to be confirmed with your accountant.

The slip also shows the attendance picture behind the numbers: days worked versus expected, unjustified absences, the late count, and paid hours — marked verified when there is real clock data and estimated when there is not — plus periods taught and missed. A slip can carry a pay-blocked flag with a reason, so a single problem holds one person's payment (an “On hold” badge on their slip) without stopping the whole run.

Chapter three

The preview, and the right to contest it#

Pay should never be a surprise. While a run sits in Preview, every staff member sees their pre-payslip at /teacher/my-payslip — the full ledger of what would land, badged Draft — preview. The window stays open for the number of days the school configures (seven by default). Each person opens it, checks the figures, and either acknowledges the slip or raises a revendication.

A revendication is a formal claim against one figure. The staff member picks the type — hours, absence, late, deduction, bonus, or other — gives a summary, a description, and (optionally) the value they believe is correct against the value the system recorded. The claim opens in the payroll office's Disputes queue and moves through Open → Under review → Resolved (accepted or rejected), or is withdrawn. If accepted, the office corrects the slip; either way the staff member gets an answer with a resolution note, and the whole exchange is recorded against the run.

Chapter four

Different people, different pay dates#

Not everyone is paid on the same rhythm. A pay group captures one — a name, a frequency, and a pay-day rule — and every staff member belongs to one. Manage them at /dashboard/payroll/pay-groups. The frequency can be weekly, biweekly, monthly, termly, semesterly, or per-course; the pay-day rule can be a day of the month (the 25th), the last working day, a specific date, or an nth weekday (the last Friday). An optional offset advances or delays the actual payment by a few days.

Every school has one default group, named All staff and materialised automatically the first time you need it, so payroll works before you configure a thing. When you open a run you pick the group, and only its members are computed, on its calendar. The upcoming pay-date preview reads from the rule, so the office — and the owner — can see who gets paid next and when, without holding it in their head.

Chapter five

The two gates before release#

Two checks stand between a calculated run and a paid one.

The logbook-compliance gate. Teaching pay should follow teaching that was actually logged. The compliance view at /dashboard/payroll-compliance compares each teacher's expected logbook entries against their actual entries for the month, computes a completion percentage, and marks anyone below 80% non-compliant. A non-compliant teacher's pay is blocked at release until either the logbook is completed or a manager records an Override with a written reason — which is itself logged. This gate is enforced at the database when a run is marked paid.

The salary-budget panel. On the run, a panel compares the salary budget, the amount already released this year, and the cost of this run, then shows the headroom after it would settle. A run that would break the salary budget turns the panel red. By default this is awareness, not a hard stop — the office can still release. A school can switch on salary-budget enforcement, after which the database blocks an over-budget release until a manager records a reasoned override.

Chapter six

What every staff member sees for themselves#

Every staff member — teaching or non-teaching — has their own payslip surface at /teacher/my-payslip (leadership roles reach the same screen from the dashboard). The header shows the four numbers they care about: total payslips, how many are to review, how many revendications are still open, and their year-to-date net (summed from processed slips only). Each slip carries a badge — Draft — preview while the run is open, or Final — paid once it is processed — and amounts are shown in the currency of the staff member's active contract.

During the preview window the slip is interactive: acknowledge it, or raise a revendication from a short dialog (type, a summary, the value you believe is correct, and the detail). After payment it is a permanent record. A My revendications section lists every claim the person has filed, with its status and the resolution note when it closes — so a question raised in March is still answerable in November.

The staff self-service surface: four header stats, a Draft — preview slip, and the revendication dialog open beside it.

What makes payroll elite

  1. 1

    Computed from the platform, not re-typed

    The same contract, logbook, attendance, and conduct records the school already keeps feed the payslip directly. There is no spreadsheet to reconcile and no second entry to get wrong.

  2. 2

    Disputes settled before money moves

    The preview window plus the revendication flow move every disagreement to the cheap side of payday. A wrong figure is a click to fix, not a reversal to chase.

  3. 3

    Two checks before release

    Logbook compliance hard-blocks a non-compliant teacher's pay, and the salary-budget panel — optionally a hard gate — watches the spend. Either way an override leaves a named, reasoned audit trail.

  4. 4

    One engine, many rhythms

    Pay groups let salaried, hourly, and seasonal staff be paid on their own frequencies and pay-day rules from a single payroll engine.

  5. 5

    Privacy at the row level

    Salary figures are visible only to the payroll permission and to the individual viewing their own slip — enforced by the database, so no screen or shortcut can leak a colleague's pay.

Adjacent modules

Where payroll connects#

Tutorial

Do it step by step#

Run one month's payroll end to end — from the empty draft to the acknowledged payslip. Six steps, in the order the office actually works.

  1. 1

    Open the run and calculate

    On /dashboard/payroll, open a run for the month and a pay group, then click Auto Calculate. The engine writes a payslip for every member — base salary or logbook-gated hours pay, approved bonuses, attendance deductions, conduct penalties, and statutory deductions — and moves the run to Preview.

    The figures are computed from the contract, the logbook, attendance, and conduct — so check those modules are current before you calculate, not after.

  2. 2

    Staff review their pre-payslip

    While the run is in Preview, each staff member opens their pre-payslip at /teacher/my-payslip, badged Draft — preview, and either acknowledges it or files a revendication. The review window runs for seven days by default.
  3. 3

    Clear the gates

    Open /dashboard/payroll-compliance and lift any teacher below 80% logbook completion — complete the log or record an override with a reason. Check the salary-budget panel on the run: red means the run would break the salary budget, and where enforcement is on, the release is blocked until overridden.

    An override is always written down — who did it and why — so a blocked payment that is released anyway stays fully accountable.

  4. 4

    Resolve revendications

    Work the Disputes tab. Each revendication shows the staff member's claimed value against the system value; accept it and correct the slip, or reject it with a note. Move each from Open through Under review to Resolved before you approve.
  5. 5

    Approve and pay

    When the window closes and the queue is clear, click Approve Payroll to lock the figures, then Mark Paid. YESS records who executed the payment and when, and the run moves to Processed — its permanent state.
  6. 6

    Staff acknowledge their slip

    Each person reviews the final payslip at /teacher/my-payslip, where it now reads Final — paid and counts toward their year-to-date net. Their filed revendications, with resolution notes, stay on the record for good.

One month, fully run — every figure shown, every dispute settled, both gates cleared, and a clean audit trail from draft to paid.