Monthly payroll: stored figures, knock-on effects and the checks that stay with a person
The explanation behind Configure and run monthly payroll: where each payroll figure comes from, what a redone run changes elsewhere, and the parts of the job that stay with a person. Read it alongside Steps 9 to 12, and first when a payslip, a journal or a statutory file shows a number you did not expect. Payroll Admin is not in the Applet Store yet, so what follows is read from the applet’s source and the payroll backend (why).
Payroll figures: stored once, or worked out again
When a payroll number looks wrong, first find out whether it was stored at some earlier moment or is read fresh each time. That tells you where to look.
| Figure | Taken from | Stored, or recomputed |
|---|---|---|
| A payslip’s gross, contributions and net | The salary lines and the Statutory Rates master | Stored at Calculate. Changing a rate later changes nothing until you recalculate, and the recalculation replaces the payslips |
| The rate behind each contribution | The Statutory Rates header for that scheme. The lookup takes the first header it finds and does not read Effective Date. With no header, it uses built-in placeholders and the trace says fallback | Read at the time of Calculate. Keep one header per scheme |
| SOCSO and EIS amounts | A rate times the wage. The master’s fixed-amount columns are not read, so a wage-band table keyed in as fixed amounts calculates to RM 0.00 | Read at the time of Calculate |
| The amounts on the payroll journal | The run’s stored totals | A snapshot of the last Calculate. Post GL does not recompute |
| The accounts on the payroll journal | The default GL mapping for the company | Read at Post GL. A missing mapping row writes the line anyway, under the component code, with no GL code |
| Bank account numbers on the bank file | Employee Maintenance, Payment Config | Read when you generate the file |
| Employer and member numbers on the statutory files | Company Setup, and each employee’s statutory record | Read when you generate the file. A blank employer number becomes a run of zeros |
| Salary-paid expense claims to add to pay | The Claim Cycle’s Payroll Payment Report | Recomputed every time you run the report |
| Wages in the trial balance | The general journals you posted | A live figure, worked out from the journals each time |
What breaks elsewhere when a run is redone or back-dated
- A recalculation deletes the payslips it replaces. If a payslip has already gone to staff, the copy they hold no longer matches anything stored. Approved is not final, because Reject sends an approved run back to draft. Only Finalize locks it.
- Nothing links the run to the general journal. A recalculated run changes no ledger figure, so the correction is a second journal, posted by a person.
- A payroll journal dated into a month you have already reported changes that month’s books after the fact. Your accountant decides whether the correction goes there or into the current month.
- Changing an employee’s AR/AP type changes the next posting to them, including a repost of an old document.
- A journal file whose import ended
FAILEDmay have posted some of its journals. Uploading it again doubles those wages.
The parts of the job that stay with a person
- Who approves the run. Someone other than the person who calculated it. Nothing in the run enforces that, so it is a written rule. The check is that the approver recorded on the run is a different person from the one who calculated it.
- Who checks the statutory figures. The payroll owner, against the schedules published by KWSP, PERKESO and LHDN. This wiki publishes no rate table. The check is that one employee’s EPF, SOCSO, EIS and PCB match the published schedule for that wage.
- Who posts the journal, and when. Whoever keeps the books posts it in the month the work was done, not the month it was paid. The statutory liabilities clear when you remit on the 15th of the following month.
- When not to post. Before the run is finalised, while salary changes for the month are still coming in, and never by uploading a failed import again without first reading the journal listing.
What success looks like for this part
For any payroll figure you are asked about, you can say whether it was stored at Calculate or is read fresh, and where to look; before you redo or back-date a run you know which journal a person must post to correct the books; and each of the four jobs that stay with a person has a named owner and a check.
Common mistakes in this part
The mistakes table for the whole run is on the front page. The ones this page explains: no Statutory Rates header at all (Calculate falls back silently to built-in placeholders, and the trace says fallback), and relying on the allowance or employee statutory flags.
Related documentation
- Payroll Admin applet reference — screens and field map
- HR & Payroll Module — module overview
- Troubleshooting payroll — the mistakes table for the whole run