Skip to content

Payroll

3 screens.

Enter Payslip

Payroll → Enter Payslip

How the month's payroll, run in WhyzeHR, reaches the accounts. Without this step the ledger has no salary cost in it at all — and nothing else says so, because the books still balance perfectly with the largest expense missing.

What you see

Four stages down the page: paste, check the columns, read the totals, post. Nothing is written until the last button.

Stage one is a large box. Copy the payroll detail out of Whyze — one row per employee, with a heading row — and paste it in. A block of Excel cells works; so does the text of a downloaded CSV.

Stage two lists every column it found and what it thinks each is for. The first time, these are guessed from the headings and the screen says so. Afterwards it remembers the mapping you accepted and re-offers it, so you are only checking what has moved.

Stage three is either the totals — employee count, gross, deductions, net, employer cost, and the exact journal that will be posted — or, if any employee row does not add up, a warning listing the offenders and how much each is out by.

At the foot, a running history of every month entered, with a link to its journal.

Fields

Field What goes in it
The paste box Required. One row per employee, with a heading row.
Means (per column) ignore this column · Employee (name/number) · Gross pay · Net pay · Deducted FROM the employee · Employer cost (on top).
Statutory scheme Appears only on the two deduction/cost settings. Set it too.
Company, Period, Pay date All three required to post. The period is typed, in the form 2026-08.
Currency, Source Pre-filled with SGD and WhyzeHR.
Note Optional. Appears against the month in the history.

Buttons

Button When you can use it What it does
Check it Once something is pasted. Reads the columns, checks every row adds up, and shows the journal it would post. It writes nothing.
Post the journal Only once the check has run, every row adds up, and company, period and pay date are filled in. Hovering it while greyed says which of those is missing. Asks first, reading back the period, the employee count, the gross and the net. On confirming it writes one journal.

Rules this screen enforces

  • Read the columns carefully. A column mapped to the wrong role produces a journal that posts, balances, and is wrong — and nothing downstream can tell.
  • Every change to a column re-checks the whole thing at once. There is no "apply mapping" button.
  • A row fails when gross less every deduction does not equal net. That means a column has been missed, mapped twice, or mapped to the wrong role. Nothing can be posted until it is clear.
  • Check the five totals against the Whyze payroll summary before posting. That is the last point at which a wrong column is free to fix.
  • One journal per company per month. A month already entered is refused — booking payroll twice doubles the largest expense in the accounts.
  • The per-employee rows are used to check the totals and are then discarded. Whyze stays the record of what each person was paid; a second copy here would be sensitive personal data owned by nobody, and wrong the moment Whyze corrected anything.
  • If nothing has been entered yet the history row is itself a warning, because that is exactly the situation nothing else would flag.

Pay Runs, and paying the bank

Payroll → Pay Runs

The internal payroll engine, kept as history. Payroll moved to WhyzeHR; this is what was paid before the switch, and it stays readable.

What you see

A banner explains that payroll is run in WhyzeHR and that everything below is history. The engine is switched off, not deleted, so a past payslip can still be reprinted.

A monthly calendar of the payroll milestones — salary review opens on the 23rd, approved on the 24th, in the bank on the 25th for Singapore staff and the 26th–27th for the rest.

Then the runs, with their status, employee count, gross, net and employer cost.

Opening a run lists its payslips, each with a Payslip button; opening a person shows their line-by-line breakdown.

Buttons

Button When you can use it What it does
Create pay run Permanently greyed while payroll is external. Hovering says Payroll is run in WhyzeHR. Use Payroll → Enter Payslip. Asks first when it is available, then creates the run.
Calculate On a draft run. Asks first, then recalculates every payslip on the run and reports anybody skipped for missing data.
Submit On a draft run. Asks first, warning that it cannot be edited afterwards, then sends it for approval.
Approve On a run awaiting approval. Asks first, then clears it to be posted.
Post to GL On an approved run. Asks first, warning it cannot be undone from here, then writes the salary journal. The confirm button is red.
Payslip On every person on an opened run. Opens the printable itemised payslip in a new tab.
Check who can be paid On an opened run. Answers whether the run can be paid without opening anybody's account number, and lists every person who could not be paid and why.
Generate the payment file Only once the check reported no unresolved problems and you have ticked the box confirming the layout. Decrypts every payee's account in one deliberate, logged operation and downloads a file to this computer.
Close On any opened panel. Dismisses it.

Rules this screen enforces

  • Run the payable check on the day the payslips exist, not on pay day. Every problem it finds is one person who would otherwise discover it when their salary did not arrive.
  • The column order of the payment file has not been checked against any bank's specification. DBS, OCBC and UOB each define and version their own. A wrong layout is either rejected — costing a pay run — or accepted and paid wrongly. That is why the tick box exists and why the columns are listed for checking.
  • The file downloads to this computer rather than appearing on screen, because full account numbers on a screen end up in screenshots. Do not leave it on a shared drive, and delete it once the bank has confirmed the run.
  • Singapore requires an itemised payslip with twelve prescribed items, issued with salary or within three working days. A screen an administrator can look at does not discharge that — the payslip must be given to the employee, which is what the print button is for.

People, Components, Statutory Rates, Access Log

Payroll → People & Salary · Allowances & Deductions · Statutory Rates · Access Log

Each person's residency, date of birth and salary history; the catalogue of pay components and who has which; the statutory rates; and who looked at any of it.

What you see

On People: a readiness banner — an employee can only be paid once they have both a salary and a statutory profile with a date of birth, which drives every age band. Then one row per person with a ready or incomplete badge. Clicking a name opens their profile, salary history and bank account.

On Components: who has what, with a live count; the catalogue of components with four independent liability flags; and a form to create or edit one.

On Statutory Rates: every rate, effective-dated, read-only.

On Access Log: the last three hundred reads, changes and reveals.

Fields

Field What goes in it
Residency, Date of birth, Work pass The statutory profile. Residency is decisive — CPF is prohibited for foreign pass holders rather than optional.
Amount, Effective from A salary record. Currency is not asked for; it follows the employee's country.
Component, Amount, Effective from Attaching a component to a person.
Code, Name, Kind, Country, Wage class, Sequence A component in the catalogue.
CPF · EPF · SOCSO/EIS · Taxable Four independent tick boxes, each captioned with why it differs from the others.

Buttons

Button When you can use it What it does
Save profile Always. Saves the statutory profile. A blank box is not sent, so it cannot wipe an existing value.
Add salary record Once an amount and a date are filled in. Adds a new dated salary record.
Reveal On a stored bank account. Shows the full number, and says in the confirmation that the reveal has been logged.
Attach Once an employee, a component and an amount are chosen. Attaches it.
End today On any live attachment. Asks first, then sets the end date to today and switches it off. It is never deleted.
Edit On any component in the catalogue. Loads it into the form.
Create Once a code and a name are filled in. Reads Save when editing. Creates or updates the component.
Clear Always. Resets the form to a new blank component.

Rules this screen enforces

  • A pay change is a new effective-dated record, never an edit — otherwise reprinting an old payslip would use today's salary.
  • Ending an attachment sets an end date and switches it off; it is never deleted. A pay run already posted was computed from that row, and removing it would make that payslip unexplainable.
  • The four liability flags are independent, and wage class matters separately again — "additional" is what splits an annual bonus out of the CPF ordinary-wage ceiling. Setting them together because they look alike is how an underpayment reaches a statutory board.
  • Statutory rates are read-only on purpose: editing an existing row would silently recompute historical payslips. A change is a new row with a new effective date.
  • The rates are researched, not professionally verified, and the Malaysian schemes use percentages rather than the official contribution tables. Have them confirmed before relying on them for a live payroll.
  • Restricting access answers who may see pay data; the access log answers who did, which is the half that matters after the fact.