Deductions, bonuses and reimbursements
These are the amounts that land on a payslip outside the statutory calculation: loans and other custom deductions taken off, bonuses added on, and expense claims paid back. Each has its own page, and each behaves differently at payroll time.
Nothing here is retroactive. A payslip that has already been generated does not pick up a deduction, bonus or setting you change afterwards.
Custom employee deductions
Payroll → Employee Deductions (/employee-deductions), permission
payroll.deduction.manage.
Statutory deductions — SSS, PhilHealth, Pag-IBIG, withholding tax — are computed by the engine and are not managed here. This page is for everything else: company loans, HMO premiums, salary advances, garnishments.
Define the types first
A deduction is an assignment of a deduction type to an employee, so the types
have to exist before you can assign anything. They are maintained in Payroll
Settings (/payroll-settings) under the Deduction Types section, in a card
headed Custom Deduction Types. Each type carries a code, a name, a category —
Loan, Insurance, Company, Voluntary or Legal — and a
description. The category is what the coloured badge in the deductions grid
shows.
There is also a master switch. In Payroll Settings under Computation Settings, Custom employee deductions enabled gates the whole feature: with it off, no custom deduction applies to any payroll run, even one that is individually assigned and marked active. Check it before investigating why a deduction did not appear on a payslip.
Assign a deduction
- Open Payroll → Employee Deductions and select Add Deduction.
- Pick the Employee and the Deduction Type.
- Enter the Amount. What that figure means depends on the next field.
- Set the Recurring switch. Recurring applies to every payroll run until it ends; a one-time deduction applies once and then deactivates itself.
- For a recurring deduction, choose the Amount Basis:
- Per payslip — full amount every run. The figure is deducted in full on every payroll run whose period overlaps the assignment. This is the default, and how every deduction created before the setting existed behaves. The figure means "per cutoff", so it has to be re-entered if the pay frequency changes.
- Per month — split across the month's cutoffs. The figure is a monthly obligation: it is divided across the month's cutoffs and trued up on the last one, the same way statutory contributions are handled. The month's total stays correct whatever the pay frequency.
- Set a Start Date — the first payroll period the deduction can apply to — and, for a recurring deduction, an optional End Date. Leave the end date blank for an open-ended deduction.
- Add Notes if useful, and save.
The Amount Basis field only appears for recurring deductions, because a one-time deduction deactivates after its single application: a monthly figure split across cutoffs would never collect the remainder.
Work with the grid
Columns: Employee #, Employee Name, Deduction Type, Category, Amount, Amount Basis, Frequency, Start Date, End Date and Status. Frequency and Status render as badges — Recurring/One-time and Active/Inactive — and their column filters match on those displayed labels. Amount Basis is display-only: it neither sorts nor filters.
The row menu offers Edit and Delete. Edit also exposes an Active switch, which is how you suspend a deduction without deleting it. Selecting rows with the checkboxes reveals a bulk bar with Delete Selected.
Bonuses
Payroll → Bonuses (/bonuses), permission payroll.bonus.manage.
One-off amounts paid to an employee: performance awards, 13th month pay, project completion payments.
- Select Add Bonus.
- Pick the Employee and enter the Bonus Amount in pesos.
- A tax preview appears as soon as the amount is entered. It splits the bonus into a Non-taxable and a Taxable portion and explains the split: how much of the year's tax-exempt cap the employee's earlier bonuses have already consumed, and how much remains. When the cap is exhausted it says so.
- Set the Bonus Date and a Description, then save.
The preview is worth reading rather than skipping. The annual cap covers 13th month pay and all other bonuses combined for the calendar year — 13th month pay counts against it once recorded here — and de minimis benefits such as rice or clothing allowances are separate and not part of it. The cap value itself is configurable in Payroll Settings as 13th Month Non-Taxable Cap; the rule behind it is in Business Rules.
The grid shows Employee #, Employee Name, Bonus Amount, Bonus Date and Description, with Edit and Delete row actions and bulk delete on selected rows.
Reimbursements
Reimbursements are two pages, because a claim and its payout are separate records.
Decide the claims
Payroll → Reimbursement Requests (/reimbursement-requests), permission
payroll.reimbursement.manage.
Employees file claims from /my-reimbursements; they arrive here as Pending.
The page has tabs for All, Pending, Approved, Rejected and
Processed, each showing a count, and columns Employee #, Employee
Name, Request Date, Amount, Description, Status and Decided
By.
- Decide one at a time from the row menu: Approve or Reject, both offered
only while the request is
Pending. The row menu also has Activity History, which opens a drawer of the record's audit trail. - Decide in bulk by ticking rows and using Approve or Reject in the bar
that appears. Bulk decisions skip any selected row that is not
Pending. - The table/card toggle at the top right switches the grid for a card layout of the same tab, which some people find easier for a queue of pending claims.
Record the payout
Payroll → Reimbursement Transactions (/reimbursement-transactions).
payroll.reimbursement.transactions.view opens the page read-only;
payroll.reimbursement.transactions.manage adds the Record Transaction
button and the Edit, Delete and bulk actions.
Approving a claim does not pay it. This page is the ledger of money actually sent, one row per payment:
- Select Record Transaction.
- Pick the Reimbursement Request the payment settles.
- Enter the Transaction Date, the Amount paid, and Paid To — the employee receiving it.
- Choose a Payment Method from the list, and put reference numbers or transaction IDs in Details.
Columns are ID, Request #, Employee #, Employee Name, Amount, Date, Paid To, Payment Method and Details.
Payroll Transactions
Payroll → Payroll Transactions (/payroll-transactions),
payroll.transactions.view to read and payroll.transactions.manage to change.
A separate ledger of bonuses, deductions and adjustments recorded against payslips, with columns ID, Payroll #, Payslip #, Employee #, Employee Name, Type, Amount, Date and Description. With the manage permission it offers Add Transaction, Edit and Delete.
This is a record of what was applied, not a place to change what a payslip pays.
A payslip's figures are fixed once its run leaves Draft — see
Run a payroll.
Working with these grids
All four pages use the same grid. Worth knowing:
- The search box searches one field at a time, named in its placeholder. The View menu's Search In group switches which one.
- The View menu also controls which columns are shown, row density, and saved views — Save Current View… stores the current columns, filters and density under a name, and saved views are per user.
- The Table menu holds Export CSV, Export PDF, Refresh and Reset View. Both exports cover every row the current filters select, not just the page on screen.
- Column filters are constrained to what each API can actually express, so a column may offer fewer filter options than you expect, or none at all.