Posting the month's payroll journal
By the end of this guide the month’s payroll is in your books: one general journal per company, in the month the work was done, with each branch’s wages on its own line. It is for whoever keeps the books of a company whose payroll is computed somewhere else — a bureau, an HR system or a spreadsheet. The first month takes about 30 minutes per company; after that, about ten.
Why there is a journal to post at all. BigLedger calculates no salary today. The Payroll Admin applet has no row in the applet registry, so nobody can install it, and even its Post GL writes only into the payroll module’s own tables, never the general ledger (What Post GL actually posts). So the wages line in your trial balance moves only when a person posts a journal.
The steps at a glance.
- Agree once with the payroll owner what the summary carries, when it arrives and how much detail goes in.
- Check that the summary adds up before you key anything.
- Build the journal: date, one wages line per branch, the claims, the credits.
- Key it or import it, knowing that either one posts at once.
- Check it in the trial balance.
- Watch the payables clear on pay day and the liabilities on the 15th.
Meet GadgetSphere
GadgetSphere Sdn Bhd (GS) has its March payroll computed by a bureau. The summary arrives on 27 March:
gross pay RM 512,400, employees’ statutory deductions RM 78,950, employer’s contributions RM 70,180, net
pay RM 433,450. Salaries leave the primary bank on 1 April and the contributions go by 15 April.
GSO and GSD each get their own summary and their own journal, because each company keeps its own
ledger. The figures are illustrative.
Before you start
- The accounts exist for the company you are posting:
EXPENSE-WAGES, a net-pay payable, and one liability account for each statutory scheme the summary names (Chart of Accounts Setup). - You have the right to create journals in Ledger And Journal for that company.
- If payslips carry expense claims, the month’s claims file has been handed over and totalled (Handing salary-paid claims to payroll).
Step 1: Agree the summary with the payroll owner, once
Who: you and whoever runs payroll. When: before the first month, and again whenever payroll changes hands.
Write down three things and keep the note with the payroll file.
- What the summary carries, per company: gross pay, each employee deduction, each employer contribution, net pay, and the claims added to pay. Ask for it split by branch.
- When it arrives. A day early enough for you to post before the month is closed.
- How much detail goes into the ledger. Employee-level lines make reconciliation easy, and they put individual salaries into a ledger that many people can read. Many businesses post one line per branch for that reason, and an organisation may be required to: no employee names and no individual amounts in a journal narrative is a condition some work under.
You know this step is done when nobody can read a person’s salary off the general ledger, and the payroll owner knows the day you need the summary.
Step 2: Check the summary adds up
Who: you. When: the day it arrives.
Three sums, before you open BigLedger. For GS in March:
| Check | Sum | Result |
|---|---|---|
| Net pay | 512,400 gross − 78,950 employees’ deductions | RM 433,450, which matches the summary |
| Wages expense | 512,400 gross + 70,180 employer’s contributions | RM 582,580 |
| Owed to the statutory schemes | 78,950 + 70,180 | RM 149,130 |
A summary whose net pay does not come out of its own gross is a summary to send back. Posting it anyway puts the bureau’s error into your accounts, and you are the only person checking.
Step 3: Build the journal
Who: you.
- Date it the last day of the month the work was done, here 31 March, even though the money moves in April. A December run paid on 3 January is a December cost. The journal is dated whatever you type, so nothing will warn you if you date it the day you post it.
- Debit wages one line per branch, each line carrying its branch.
GShas 22 branches, so 22 debit lines toEXPENSE-WAGESthat add up to RM 582,580. A line’s branch is optional on the screen and in the import file, and a report run for one branch leaves out a line with none. A branch whose line was keyed without one then shows no wages at all. - Debit the claims on their own lines, to the accounts the claim items are coded to, not to wages.
If March’s payslips also carried RM 9,870.40 of salary-paid claims, add debit lines for them, for
mileage say
EXPENSE-TRAVEL, adding to RM 9,870.40. - Credit net pay to the net-pay payable: RM 433,450, or RM 443,320.40 with the claims (433,450 + 9,870.40).
- Credit each statutory scheme’s liability with what the summary says is owed to it, the employee’s share and the employer’s where the scheme has both: RM 149,130 between them.
Debits RM 582,580 + RM 9,870.40 = RM 592,450.40. Credits RM 443,320.40 + RM 149,130 = RM 592,450.40. The server refuses a journal whose debits and credits differ by more than half a sen, with Journal not balanced: debit … != credit …. A deduction the summary leaves out of net pay, such as a staff loan, therefore needs its own credit line, or the journal will not save.
Step 4: Key it, or import it
Menu: Ledger And Journal › Journal Transaction › Create, or › Import Journal.
Keyed: enter the header, then the lines, setting a Branch on every line. The header’s branch is not copied onto the lines. Press Create once. The journal is posted, numbered and in the balances at once.
Imported: use the template from Import Journal, one row per line, with the same reference number,
company and date on every row of one journal, and LINE_BRANCH_CODE filled on every row. A single bad
code fails the whole file before anything posts. Once the rows pass, though, a journal the server
refuses is skipped while the rest post, and the file ends FAILED. A FAILED file may have posted
most of its journals. Look in the listing before you upload it again, or the good ones post twice.
A closed month. If the month is locked in the chart of accounts, a keyed journal dated into it is refused, and an imported one is not. Posting into a month whose figures have gone out is a decision for whoever signed them off, not a way round the lock.
Step 5: Check it in the trial balance
Who: you, the same day. Time: two minutes per company.
- Find the journal in the journal listing by its reference and date, with the Type filter left empty. An imported journal shows as MANUAL, but a search for either type misses it.
- Run the trial balance for the month.
EXPENSE-WAGESequals the summary’s gross plus employer contributions, RM 582,580. - Run the profit and loss for one branch. Its wages are that branch’s line. A branch with no wages has a line with no branch: edit the journal and set it.
Step 6: Watch the payables and liabilities clear
Who: whoever pays salaries and whoever remits the contributions. When: pay day, and the 15th.
When salaries leave the bank on 1 April, the net-pay payable returns to nil, if you record the salary payment against it (Paying the salary batch: two shapes). Every Malaysian monthly contribution and PCB is due by the 15th of the month after the wage month, and each liability returns to nil when it is remitted. Nothing in BigLedger keeps that diary, so whoever remits keeps it. The rates come from KWSP, PERKESO and LHDN, not from this wiki.
What success looks like
Each company’s trial balance for the month shows wages equal to the payroll’s gross plus employer contributions, and every journal line names a branch. After pay day the net-pay payable is nil, and after the 15th of the next month each statutory liability is nil. If one of these fails, start from Wages in the trial balance do not match the payroll.
Common mistakes
| What you see | Why | What to do |
|---|---|---|
| Wages are nil in March and doubled in April | The journal was dated the day it was posted, or the day salaries were paid | Date it the last day of the month the work was done. Correct the posted one as Wages in the trial balance do not match the payroll says: an edit is not stopped by a period lock, and once the month is reported, reverse rather than edit |
| A branch reads nil wages in a per-branch report | Its line has no branch | Set the branch on every line, or fill LINE_BRANCH_CODE on every imported row |
| Wages are double for the month | A FAILED file was uploaded again, or the month was keyed and imported | Find both in the listing with Type left empty; remove or reverse the second, as the same page says |
| The journal will not save, Journal not balanced | A deduction the summary keeps out of net pay has no credit line | Credit it to the account it belongs to |
| Mileage and meals sit inside wages | The claims were added into the wages line | Debit them to the claim items’ accounts |
The run reads POSTED in Payroll Admin and the trial balance did not move | Post GL writes only payroll’s own tables | Post this journal; Post GL is not a ledger posting |
Related documentation
- Handing salary-paid claims to payroll: the claims file that goes into the same payslips
- Wages in the trial balance do not match the payroll: when the check in Step 5 fails
- Ledger And Journal: the journal screen, the import template and the listing
- What happens behind the people screens: why payroll arrives as a journal, and what the module does not do
- Journal entries: correcting a posted journal