Skip to content
Configure and run monthly payroll

Configure and run monthly payroll

You are going to configure Payroll Admin for GadgetSphere Sdn Bhd and complete one monthly pay run — from company employer numbers through Calculate, bank file, Post GL, and statutory downloads. The first company takes about 90 minutes if employees and the chart of accounts already exist. Later months are mostly Steps 8–12 and take far less time.

Read this before you start, because it changes what this guide is for. Payroll Admin has no row in the applet registry (checked again 2026-10-25), so it is not in the Applet Store and cannot be installed. This walkthrough is written from the applet’s source and describes screens you cannot open yet. Read it to judge what the module will do when it ships; do not plan a Malaysian go-live against it.

Three things it will not do when you follow it, each covered in the step where it bites: the statutory amounts it computes are placeholders, not the gazetted schedules; the per-employee and per-allowance statutory flags change nothing; and Post GL does not reach the general ledger. For what to do about payroll this month, see Posting the month’s payroll journal.

Your pay run at a glance

The job runs across four pages, in this order. This one carries Step 1 and the whole run’s success check and troubleshooting table; each link names the page that carries the step:

  1. Step 1: open Payroll Admin and set the default company.
  2. Steps 2 to 8: save the employer numbers, enter one Statutory Rates header per scheme, create the pay calendar and period, the salary structure, the pay group and the roster, and map payroll to the chart of accounts.
  3. Steps 9 to 12: create the pay run and Calculate, Approve and Finalize, generate the bank file and Post GL, and download the statutory files — then post the manual journal and check every file yourself.
  4. Payroll figures, what breaks elsewhere, and the parts of the job that stay with a person: which figures are stored at Calculate, what a recalculation or a back-dated run changes, and who approves, checks and posts.

Meet GadgetSphere

GadgetSphere Sdn Bhd (company code GS) is a Malaysian consumer electronics retailer. For this walkthrough you pay the HQ retail staff on a monthly cycle: salary cutoff around the 25th, payment on the 28th, MYR, with EPF, SOCSO, EIS and PCB. Sister companies (GSO, GSD) are out of scope until GS is stable.

Payroll Admin is not the employee master. Create or update people in Employee Maintenance first (name, ID, employment status, bank payment config). This guide only assigns them to a pay group with salary and runs payroll.

Payroll concepts you need once

Pay calendar vs pay period. The calendar stores the rules (cutoff day, payment day, MONTHLY). A pay period is one concrete month (1–30 Sep, payment 28 Sep).

Pay group. Employees who share the same company rhythm. GadgetSphere uses one group GS-HQ-MONTHLY for HQ staff.

Pay run. One execution of payroll for a pay group and period. Status moves DRAFT → CALCULATED → APPROVED → FINALIZED → bank file → posted.

Default GL mapping. Post GL looks up the company’s default mapping to know which Chart of Account codes to debit/credit. Only one default mapping per company.

Statutory rates. Configuration headers (EPF / SOCSO / EIS / PCB) with the percentages your company must use. This guide never invents gazette rates — enter the rates your payroll owner approved.

    flowchart LR
  NOTE["Written from the applet's source:<br/>Payroll Admin cannot be installed today"]
  EM["Employee Maintenance<br/>people, bank details"] --> RO["Payroll roster<br/>pay group, salary"]
  RO --> RUN["Pay run<br/>DRAFT"]
  RUN -->|"Calculate"| CA["CALCULATED<br/>payslips stored"]
  CA -->|"Approve"| AP["APPROVED"]
  AP -->|"Finalize"| FI["FINALIZED<br/>locked"]
  FI -->|"Generate Bank File"| BF["Bank file: you download it<br/>and upload it in your bank portal"]
  FI -->|"Post GL"| PG["Payroll module's own journal tables<br/>not the general ledger"]
  FI -->|"Reports"| SF["Statutory TXT files<br/>check before you upload"]
  FI -->|"a person, by manual journal"| GL["General ledger"]
  

Payroll prerequisites

Check these off; do not skip them.

  • Payroll Admin can be opened from your login. Today it cannot — it has no registry row and nothing installs it (HR & Payroll is a planned module, not yet offered), so treat this list as what a go-live will need, not something you can tick now.
  • Company GS exists in Organisation with currency MYR.
  • Chart of accounts for GS includes codes you will use for payroll expense, net-pay liability, and statutory liability (see Chart of Accounts Setup if the chart is empty).
  • At least one ACTIVE employee exists for GS in Employee Maintenance, with bank payment details.
  • You have the company’s EPF / SOCSO / EIS / PCB employer numbers on paper.
  • You have approved statutory rate % for the default tiers you will enter.

Step 1: Open Payroll Admin and set defaults

Payroll Admin applet → Settings (gear) → Default Selection

Set Default Company to GadgetSphere (GS), optionally a default currency MYR. Save. This only pre-fills forms; it does not create payroll data.

Also open Application Settings if you want to hide noisy listing columns later — you can leave defaults for the first run.

Step 12: Download statutory and payroll reports

Steps 2 to 8 are on Set up and Steps 9 to 11 on Run and file. On the finalized run, Reports gives the CP39 / e-Data PCB, EPF Form A and SOCSO + EIS TXT files. Check every file before you upload it: the generators write a file even when the employer number on Company Setup is blank, padding it with zeros, and the run reads FILED even when all three files failed to generate. The full step is on Run and file.

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. A payslip’s gross, contributions and net are stored at Calculate, and the amounts on the payroll journal are a snapshot of the last Calculate; the full table, figure by figure, is on Figures and people.

What breaks elsewhere when a run is redone or back-dated

A recalculation deletes the payslips it replaces, and nothing links the run to the general journal, so a correction is a second journal, posted by a person. The rest of the list is on Figures and people.

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), who checks the statutory figures, who posts the journal and when, and when not to post: each, with its check, is on Figures and people.

Payroll success looks like this (30-second check)

  • Company Setup listing shows GS with EPF/SOCSO/EIS/PCB numbers.
  • Exactly one GL Mapping row for GS has Default checked.
  • Pay run status is past Finalize, bank file downloaded, Post GL completed without error.
  • Statutory TXT files open and show the employer numbers you entered in Step 2 — check, rather than assume: a blank employer number produces a file of zeros instead of an error.
  • Open one employee’s payslip and read its calculation trace. The EPF, SOCSO and EIS rows carry a label saying where the rate came from. If any of them reads fallback, the run used the built-in placeholders and not your Statutory Rates, and the payslip is wrong. The trace is not on any screen; read it through the payroll API.
  • The one that is not on the screen at all: the general ledger has not moved. Wages expense in the trial balance is unchanged until somebody posts the manual journal.

Troubleshooting payroll

MistakeWhat you seeFix
Skipped Employee Maintenance bank setupBank file empty / employee errorsFix payment config on the employee, update roster, recalculate if still allowed
No default GL mappingPost GL fails or posts nothing usefulTick Default on one mapping for the company
Multiple defaults for one companyWrong accounts on Post GLUse the listing Default checkbox — only one remains
No Statutory Rates headers at allNot zero contributions — plausible, wrong ones. Calculate falls back silently to built-in placeholders: EPF 11% / 13% with no ceiling, SOCSO and EIS capped at 4,000.00, PCB a flat 1% above 34,000 a yearCreate the headers before the first live run, recalculate, and confirm on the calculation trace that the label no longer says fallback
A Statutory Rates header exists with 0% tiersZero EPF/SOCSO on payslipsRe-enter the approved figures, recalculate if allowed
Relying on the allowance or employee statutory flagsContributions computed on the whole gross for everybody, whatever you tickedNothing in the applet fixes this. Decide component applicability outside the system and key the salary lines to match
Company Setup emptyStatutory TXT missing employer identifiersComplete Step 2, regenerate reports
Tried to recalculate after FinalizeUI blocks / error toastCreate a correction process with support; do not force status
Used invented bank format codesGenerate bank file failsPick only formats listed in the dropdown

Related documentation

Last updated on