When the numbers are right, keep them right
Payroll has an uncomfortable failure mode: someone changes a setting, a rate or a formula, the system recalculates, and an employee's net pay shifts after it has already been checked and approved. June's main feature, the net pay guard, is there to stop that.
Payroll officers can now lock an employee's net pay for a period, either from a dialog or straight from a lock icon in the payroll grid. Locked pay is protected from recalculation, every lock and unlock is recorded in a change history, and closed periods are locked automatically. We back-filled a baseline for existing data so past periods are protected too.
Rebuilding the engine without moving a cent
The larger engineering effort this month was internal. We reorganised how PAYE and NIS rules are stored and identified, so the engine no longer depends on hard-coded class names and can support rules from more than one jurisdiction in future. A change like that is risky in payroll, so we built tooling that takes a snapshot of stored results, rebuilds them with the new code and compares the two, along with a matching comparison for exported reports. Only once those matched did the work merge.
We also separated the calculation layer from the database and worked through a series of performance fixes, so rebuilding a payroll now makes far fewer database reads and writes.
Also in June
A new WhatsApp page shows payslip delivery and employees' replies. The payroll grid gained a master-detail view and derived fields, which are columns calculated from other fields. Form 2A personal allowances were corrected for bimonthly and fortnightly payrolls, a monthly NIS CS3 export arrived, and our build pipeline now scans dependencies for known security issues. June came to 398 commits.
This article was written from Mintage Payroll’s commit history for June 2026. See Mintage Payroll today