Payroll

Philippine statutory payroll — pay periods, SSS, PhilHealth, Pag-IBIG and withholding tax, payslips, and what the module deliberately does not compute.

16 min read · Updated 10 Sep 2026

On this page

Payroll turns a cutoff into a set of payslips: gross pay from attendance or from a monthly rate, the four statutory deductions, any staff loan repayment, and the net figure you actually hand over. It keeps each payslip as a record of what was paid, and it books the cost to your accounts.

It is also the module with the most law in it, so this page is long and the warnings in it are not decoration. Read The government rate tables before you run your first cutoff.

Needs the Payroll add-on (₱300 per branch each month). It is not in any bundle, including the Everything Bundle — it is bought on its own. An Owner can start a 30-day free trial from the Payroll page itself. See Plans & add-ons.

Payroll is web only. There is no payslip, payroll or pay-amount screen anywhere in the mobile app — not for owners, not for staff. The tablet carries attendance history and leave requests, and nothing about money. Everything on this page happens in a browser.

Finding it

Screen Where For
Payroll /app/payroll The list of runs, and the New Run button
Run detail /app/payroll/runs/{id} One cutoff: its payslips and its lifecycle buttons
Employee Payroll /app/staff?tab=payroll Pay rates, schedules and government IDs
My Payslips /app/my-payslips A staff member's own payslips

MANAGEMENT → Payroll in the sidebar. Employee setup is a tab on the Staff page rather than a page of its own; the Employee Setup button on the Payroll page takes you straight there, and the old /app/payroll/employees address redirects to the same place.

Before you buy: the free gross-pay estimate

Without the add-on, an Owner opening /app/payroll gets a free gross-pay estimate instead of a paywall: pick a date range and a branch, and Kassly multiplies each person's clocked hours by their hourly rate. You can type the hourly rate straight into the table, and download the result as a CSV.

The page states its own limits: "Estimate only. This excludes SSS, PhilHealth, Pag-IBIG and withholding tax, and is not a payslip."

A Manager without the add-on sees a locked notice with no rates in it — pay rates are Owner-only until Payroll is active.

Buying Payroll replaces this page with the runs list, and the inline hourly-rate editor goes with it. From then on, the rate that matters is the basic rate on each employee's payroll profile. Set those up before your first cutoff.

Setting each employee up

Open Staff → Payroll and click a person. Everybody on your team is listed, including anybody with no profile yet — those are badged Needs setup, and a banner counts them.

Field Notes
Employment status Active, On Leave, Resigned or Terminated
Pay schedule Semi-Monthly, Monthly or Weekly
Rate type Hourly, Daily or Monthly
Hourly / Daily / Monthly rate The label changes to match the rate type
Date hired Optional
Date separated Optional
Statutory deductions Computed, Fixed amount per cutoff, or Exempt
SSS number, PhilHealth number, Pag-IBIG MID, TIN Printed on the payslip. Nothing validates the format, because each agency uses its own
Bank, Account number Reference only — Kassly does not send payments to a bank

Two notes the dialog itself makes:

  • "These drive every payslip, so changes only affect runs computed afterwards — an existing payslip is a record of what was paid." Raising somebody's rate does not restate last month.
  • Government IDs are for printing. What gets deducted does not depend on them being filled in, so a blank TIN still has tax withheld.

Only Active and On Leave staff are paid. Resigned and Terminated people stay on file so their old payslips remain readable, and stop appearing in new runs.

Somebody with no profile can still be paid if they have an hourly rate from the free estimate — Kassly falls back to it and treats them as hourly and semi-monthly. Somebody with neither a profile nor a rate is skipped entirely, which is deliberate: a ₱0 payslip for a person who is not on payroll is noise.

How each rate type is paid

Rate type Gross pay for the cutoff Depends on attendance
Hourly Rate × hours clocked, breaks deducted Yes
Daily Rate × days with a complete clock-in and clock-out Yes
Monthly The monthly rate divided by the number of cutoffs in a month No

The number of cutoffs in a month is 1 for Monthly, 2 for Semi-Monthly, and 4.33 for Weekly — the same 52/12 figure the BIR uses to derive its own weekly table.

An unfinished shift pays nothing on an hourly or daily rate. A clock-in with no clock-out contributes zero hours and does not count as a day worked, and punches cannot be corrected afterwards. This is the single biggest source of a wrong payslip — see Attendance and timesheets.

A monthly-rate employee is paid whether they turned up or not. Absence and undertime deductions are not implemented, so a monthly employee who missed three days still draws their full period pay. Deduct it by hand as a manual line if you need to.

Statutory deductions, and the three modes

Each employee's profile chooses how their statutory deductions are worked out:

Mode Behaviour
Computed from rate tables The default and the only exact one. SSS, PhilHealth, Pag-IBIG and withholding tax are all resolved from the published schedules, and the employer's share is computed alongside
Fixed amount per cutoff You type the peso amount per agency. No schedule is read and no employer share is computed
Exempt — no deductions Nothing is withheld and no employer share is computed

Two things about Fixed amount the dialog is explicit about, and they are worth repeating:

  • The amount is per cutoff, used exactly as typed. ₱500 against a semi-monthly employee is ₱500 withheld twice a month, not ₱250 each time.
  • Leaving an agency blank withholds nothing for that agency. It does not fall back to the rate table.

And the trade-off: "these payslips won't reconcile against an R-3/RF-1 remittance." Fixed amounts are common practice in small Philippine businesses, and Kassly supports them — but if your bookkeeper has to tie the payslips to a filed return, use Computed.

Exempt is for people the business does not remit for at all, typically contractors billing gross. Expanded withholding for professionals is not modelled anywhere in Kassly; that is not a payroll line.

Drafting a cutoff

Press New Run. The form opens on the semi-monthly cutoff today falls in, with a pay date five days after it closes.

Field Notes
Period start
Period end Cannot be before the start
Pay date Cannot be before the period end. This decides which statutory rates apply
Pay schedule Only staff on this schedule are included
Branch All branches by default
Notes Optional, for the approver

Press Create Draft. Nothing is computed yet — "Drafts a cutoff. Payslips are generated when you compute it, and no money moves until the run is approved and posted."

All branches is usually the right answer. Contribution ceilings are per employee per month, not per branch. Splitting one person across two branch runs in the same month under-deducts their contributions, because each run resolves their brackets against only part of their pay.

Only Regular runs exist. 13th month pay and final pay are not implemented and are refused.

Who a run includes

A person is in the run when all of these are true:

  • They are a member of your store, and — if the run names a branch — assigned to that branch.
  • Their employment status is Active or On Leave.
  • Their pay schedule matches the run's.
  • They were not separated before the period started.
  • They were not hired after the period ended.
  • They have a basic rate, or an hourly rate to fall back on.

Mixed pay schedules mean two runs. A store with monthly office staff and semi-monthly crew runs payroll twice each month — once per schedule. If a compute produces no payslips at all, this is almost always why; Kassly says "No staff matched this cutoff — check pay schedules and rates on Staff → Payroll".

Note the fallback for staff with no profile is pinned to semi-monthly, so those people never appear in a monthly run.

What Compute does

Press Compute on the run. Kassly generates one payslip per included employee, then queues the run for approval. For each person, in this order:

  1. Gross pay, from the rate type and the attendance in the period.
  2. A monthly-equivalent basis for the statutory brackets. A monthly-rate employee's basis is their monthly rate; an hourly or daily employee's basis is this cutoff's earnings scaled up to a month.
  3. SSS, PhilHealth and Pag-IBIG, resolved monthly against that basis, then divided by the number of cutoffs in the month.
  4. Taxable pay — gross less the employee's statutory contributions, which the tax code excludes from taxable compensation.
  5. Withholding tax on the taxable figure, using the same annualise-then-divide method the BIR uses for its own per-period tables.
  6. Loan repayments, then manual deductions, each taken only out of what is left.
  7. Net pay, floored at zero.

Recomputing a computed run is normal and expected — a corrected attendance record is the usual reason. "Every payslip is regenerated from current attendance, pay rates and statutory rates. Manual deduction lines are kept."

Two rules protect the arithmetic:

  • Statutory contributions can never exceed the cutoff's gross pay. Somebody who worked two hours in a period would otherwise be charged the schedules' floor amounts, which are more than they earned. The three agency lines are scaled down proportionally so they add up to the gross exactly.
  • A zero-earnings cutoff has zero basis. An hourly employee with no attendance is not charged the floor bands, because those bands exist for low earners, not for people with no earnings.

Which also means: net pay never goes negative. If pay cannot absorb everything, the deductions stop at zero rather than creating a debt.

A worked example

An employee on ₱30,000 a month, semi-monthly, statutory mode Computed, with the rate versions currently seeded in Kassly:

Line Working Amount
Basic pay ₱30,000 ÷ 2 cutoffs ₱15,000.00
Monthly basis The monthly rate ₱30,000.00
SSS ₱1,500 a month ÷ 2 ₱750.00
PhilHealth 2.5% of ₱30,000 = ₱750 a month ÷ 2 ₱375.00
Pag-IBIG ₱200 a month ÷ 2 ₱100.00
Taxable pay ₱15,000 − ₱1,225 ₱13,775.00
Withholding tax 15% of (₱27,550 − ₱20,833), then ÷ 2 ₱503.78
Net pay ₱15,000 − ₱1,728.78 ₱13,271.22

The employer's own share on top — ₱1,515 SSS, ₱375 PhilHealth, ₱100 Pag-IBIG — is shown on the run's Employer Cost & Rates card, along with the total cost of the cutoff.

These figures are what the tables shipped with Kassly produce. They are an illustration of the method, not advice about your own obligations.

The government rate tables

The four schedules are published centrally, the same for every store, and resolved by the run's pay date — so re-reading a payroll run from last year still shows the rates that were in force when it was paid. The versions used are listed on the run under Rate schedules used, and printed in the footnote of every payslip.

The versions currently shipped:

Agency Version In force from
SSS SSS 2025 (15%) 1 January 2025
PhilHealth PhilHealth 2024+ (5%) 1 January 2024
Pag-IBIG Pag-IBIG 2024+ (₱10k ceiling) 1 February 2024
BIR withholding BIR RR 11-2018 (2023 onwards) 1 January 2023

Check the effective rates for your own period before you rely on them. Kassly does not promise these tables are current. Contribution rates, ceilings and the withholding table change by circular, sometimes in the middle of a year, and a version that was right when your account was created may not be right for the cutoff you are running now. Compare the version named on the payslip against the current SSS, PhilHealth, HDMF and BIR issuances, and against what your accountant files. If a version is out of date, contact support — a new version has to be published centrally; there is no screen for you to edit rates yourself.

If no published version covers your pay date, the run refuses to compute rather than quietly deducting nothing:

"No active SSS rate table covers 2027-01-20. Payroll cannot be computed until a rate version effective on that date is published."

That is the right failure. A payslip that silently skipped SSS would be a compliance problem you had no way of noticing.

Note also what TRAIN removed: there is no civil status or dependents input anywhere in Kassly, because personal and additional exemptions were abolished. That is not a missing field.

Manual deductions

Statutory and loan lines are computed. Anything else — a cash bond, a uniform, a cooperative share, an HMO contribution — is added by hand on the payslip:

  • Add a line with a label and an amount. The payslip and the run's totals recompute immediately.
  • Manual lines survive a recompute. They are your input, not derived data, so a corrected attendance record does not throw them away.
  • Only manual lines can be removed. Trying to delete a statutory or loan line is refused: "Only manual deduction lines can be removed. Statutory and loan lines are computed."
  • A manual line is capped by what is left of the person's pay, like every other deduction.

Money withheld from an employee for somebody else — a cooperative, an HMO — is booked as a payable rather than as your income. See Chart of accounts.

Approving, posting and paying

Five states, and the last two are the ones that touch your books:

State Means
Draft Created, nothing computed
Computed Payslips exist and are waiting for approval. Nothing booked, and staff cannot see their payslips yet
Approved Signed off, ready to post
Posted The cost is on your books, and loan deductions have been applied. Immutable
Paid The cash disbursement is recorded

Approval goes through the shared Approvals queue — see Approvals — and two trust rules apply there:

  • A Manager cannot approve a run they computed themselves.
  • A Manager-computed run needs an Owner's approval.

An Owner still gets a queue row for their own run, which they can approve themselves. Rejecting a run sends it back to Draft rather than killing it, because a rejected cutoff still has to be paid once it is corrected. The payslips stay in place meanwhile so the approver's objection can be checked against what they actually saw.

Post to Books is the point of no return: "This books the accrual to your books and applies any loan deductions to the staff loans. Posted runs cannot be edited or recomputed." At that moment the wages expense, the statutory payables, the withholding payable and the net wages payable all land on your accounts, and every loan deduction on the run becomes a real repayment against that loan's schedule.

Mark Paid — Owner only — records the cash going out. It is separate from posting on purpose: a cutoff that ends on the 15th and is paid on the 20th should accrue on one date and disburse on another.

There is no un-post. A posted run cannot be edited, recomputed or reversed from the interface. If a posted cutoff is wrong, the correction is a manual accounting entry, and a conversation with your bookkeeper. Check the payslips at Computed, when recomputing is still free.

A run can be deleted only while it is Draft or Computed — "The draft and all of its payslips are discarded. This cannot be undone."

The payslip

Every payslip carries, whether the figure is zero or not:

  • The employer's name, address and TIN, and the employee's name and government ID numbers.
  • The period, the pay date, the rate type, the pay schedule, the days and hours worked.
  • Earnings, and every deduction line — the four statutory lines print even at zero, so nobody has to wonder whether SSS was forgotten.
  • Taxable compensation, total deductions and net pay.
  • The employer's own contributions, for information.
  • A footnote saying how the statutory figures were arrived at, naming the rate versions for a Computed employee, or saying plainly that fixed amounts or an exemption were used.
  • A line reading "This run has not been marked paid yet." until the run is marked Paid.

Download PDF gives an A4 payslip named for the period and the person — payslip-2026-09-15-Ana-Cruz.pdf — because these get emailed and filed by hand.

A payslip is an employee entitlement under the Labour Code, not a BIR document, so nothing about it is gated on BIR accreditation and no permit numbers are printed on it.

What staff can see

My Payslips, at /app/my-payslips, shows a staff member their own payslips, newest first, with a PDF download for each. It is available to every role, including the Staff role, and it shows only their own.

Only Posted and Paid runs are visible to staff. A Draft or Computed run is a proposal that might still be recomputed, and showing somebody a figure that later changes is worse than showing nothing.

Nothing notifies them. No email and no push goes out when a payslip is published, so telling your team that pay is ready is still on you.

What payroll does not do

Everything in this list is genuinely absent, not hidden behind a setting:

  • Overtime pay, holiday pay and night differential. There is nowhere to record them and they always compute to zero.
  • 13th month pay, and final pay for somebody leaving.
  • Absence and undertime deductions for monthly staff.
  • Paid leave. Approved leave creates no pay line.
  • BIR filing output — no 1601-C, no Alphalist, no Form 2316.
  • Remittance files or reports for SSS, PhilHealth or Pag-IBIG. The payslips and the run totals are what you have.
  • A bank payroll file. The bank fields on a profile are a note to yourself; Kassly sends nothing to a bank.
  • Anything at all on mobile.

For anything on that list, the run's figures are your starting point and the rest is manual.

Who can do what

Payroll uses three separate permissions on top of the add-on:

Permission Covers Default holders
View payroll Read runs, payslips and employee profiles Owner, Manager
Run payroll Create, compute, post, mark paid, delete Owner, Manager
Manage payroll Edit pay rates, government IDs and manual deductions Owner
Action Owner Manager
See runs and payslips Yes Yes
Draft and compute a run Yes Yes
Approve a run Yes Only one somebody else computed
Post to books Yes Yes
Mark paid Yes No
Delete a draft Yes Yes
Edit an employee's pay rate Yes No
Add or remove a manual deduction Yes No
See their own payslips Yes Yes

Cashiers and Staff see My Payslips and nothing else. Custom roles can be given any of the three payroll permissions individually — see Custom roles.