Skip to main content

HR & Payroll

The HR & Payroll module manages your employee register, records daily attendance, runs monthly payroll with Tanzania statutory compliance built in, tracks leave requests and staff loans, and produces printable payslips — all inside the same ERP as your Accounting and Logistics data, so payroll's GL entries land in the same General Ledger as everything else.

Included free in the Full Suite — Premium package. With Accounting, Transport & Clearing Combined or Point of Sale it's a paid add-on at TZS 2,500 per employee per month (employees on payroll, not system users). It's also available on its own as the HR & Payroll plan (see Billing →).

The HR & Payroll menu holds: Dashboard, Employees, Leave, Payroll, Attendance, Staff Loans (when enabled for your company), Reports, and HR Settings. Each entry only appears if you have the permission for it.

Employees​

Register every employee with:

  • Employee number — auto-assigned sequentially (EMP-0001, EMP-0002, …)
  • Name, phone, email, national ID, TIN, NSSF number
  • Department and job title — department reuses the same tenant-editable department list Requisitions' Head-of-Department approval stage already uses
  • Employment type — Permanent, Fixed-Term, Probation, Casual, or Consultant
  • Status — Active, On Leave, Suspended, or Terminated
  • Hire date and, once applicable, termination date
  • Store / location (optional) — shown when your company has stores or properties; pick the one this person works at
  • Profile photo (optional)
  • Bank name and account number — for reference; the platform does not initiate bank transfers
  • Basic salary
  • Social security fund — NSSF or PSSSF, with NSSF's employer/employee contribution split configurable per employee (see Statutory compliance below)
  • NHIF registration and student loan (HESLB) flags — both drive optional per-employee payroll deductions
  • Link to Driver (optional) — if your tenant also has the Fleet module, an employee record can be linked to an existing Driver record so the same person's operational and payroll data can be cross-referenced. This is a plain reference only — linking does not flow a driver's pay through payroll automatically

Department, store and driver are searchable lookups — type part of the name to find it.

Allowances & deductions​

Each employee can carry compensation items that feed straight into every payroll run:

  • Allowances — Transport, Housing, Airtime, Meal, Responsibility, or Other, each independently marked taxable or non-taxable
  • Deductions — Loan, Advance, Disciplinary, Uniform, or Other

Every item applies to each payroll run until you remove it. One-off adjustments (e.g. a single bonus) aren't supported yet — add the item, then remove it after that month's run.

If Staff Loans is switched on for your company, record loans there instead of as a Loan deduction: payroll then stops deducting automatically once the loan is repaid.

Leave balance​

An employee's detail page shows their current-year annual leave balance, computed live from your tenant's configured annual leave entitlement (see Statutory compliance) minus their Approved 'Annual' leave requests for the year — never a stored, potentially stale number.

Payroll runs​

Go to HR & Payroll → Payroll and click + New Payroll Run. Pick the period (month) and pay date, then Save as Draft. Runs are numbered PR-0001, PR-0002, … and there can only be one run per month (a voided run doesn't count). A run moves through a fixed lifecycle:

StatusMeaning
DraftJust created, not yet calculated — click Calculate
CalculatedEvery active employee's payslip has been computed for the period. Re-calculate fully replaces its payslips rather than accumulating duplicates
ApprovedLocked against further recalculation — the figures are final
PostedPosted to the General Ledger with Post to GL (only shown if your company has the Accounting module — see GL posting below)
VoidReversed — only possible from Approved or Posted, needs a reason, and reverses the GL entries too if the run had been posted

Only Active employees are included in a run — On Leave, Suspended and Terminated employees are left out. Click a run to expand it and review each employee's gross pay, PAYE, NSSF and net pay before approving. A posted run has a GL Entries → link.

Unpaid leave​

An employee's Unpaid leave days for the period reduce their basic salary before tax — not a flat deduction bolted on afterward, so PAYE and NSSF are correctly computed on what they actually earned that period. Every other leave type (Annual, Sick, Maternity, Paternity, Compassionate) is treated as a paid entitlement and does not affect the payslip.

Payslips​

Each payslip shows basic salary, allowances, gross pay, PAYE-taxable income, employee NSSF contribution, PAYE, other deductions (NHIF, HESLB, loans/advances), and net pay — plus the employer-side cost (employer NSSF, SDL, WCF) for the business's own records. In an expanded payroll run, click View → on an employee's row to open their payslip, then 🖨 Print / PDF to print it on A4 or save it as a PDF. Viewing payslips needs payslip.view.all.

Leave management​

Log a leave request against an employee — Annual, Sick, Maternity, Paternity, Compassionate, or Unpaid — with a date range and reason. Requests move through Pending → Approved/Rejected, and a rejected request can carry a reason. A pending request can also be Cancelled. Filter the list by status. Leave is logged on an employee's behalf by HR or a manager — there is no employee self-service leave-request submission yet.

Attendance​

HR & Payroll → Attendance keeps a daily register of who came to work.

  • Daily Register — pick a date to see every active employee. Set each person's status (Present, Absent, Late, Half Day, or On Leave) and their clock-in and clock-out times; hours worked are calculated for you. A summary shows how many are present, absent and on leave. Export ↓ downloads that day's register to Excel.
  • Import Biometric — upload the raw ATTLOG file from a ZKTeco fingerprint device (.csv, .txt or .dat, comma- or tab-separated). Each punch is matched to an employee by Employee #, so the number on the device must match the one in the ERP. The earliest clock-in and latest clock-out per day are kept; anyone clocking in after 08:30 is marked Late. Importing again for the same employee and date replaces that day's record. Numbers the ERP doesn't recognise are listed and skipped.

Attendance is a record only — it doesn't change payslips. Unpaid absences still need to be logged as Unpaid leave to reduce pay.

Staff loans​

When Staff Loans is switched on for your company (ask your provider), HR & Payroll → Staff Loans tracks money lent to employees and recovers it through payroll.

  1. Click + Issue Loan and choose the employee, the loan amount, the monthly deduction, the issue date, the first month to deduct, and an optional reason.
  2. Every payroll run from that month on adds the monthly deduction to the employee's payslip as a Loan deduction. The last deduction is reduced to whatever is left, and a deduction never takes net pay below zero.
  3. Once the balance reaches zero the loan shows Paid Off and deductions stop.

Repayments are counted only from Approved or Posted payroll runs, so voiding a run gives its deductions back to the loan balance. Each loan's page shows its repayment history (deductions in runs not yet approved show as Pending). The employee's profile lists their loans too.

  • Edit — the employee, loan amount and issue date lock once payroll has deducted from the loan or it has been posted to the GL.
  • Write Off — stops further deductions (a reason is required). A write-off posts nothing to the GL.
  • Delete — only possible while a loan has no deductions and no GL posting.
  • Export to Excel from the list.

If your company has Accounting and a Staff Loans Receivable account is set in Posting Setup, issuing a loan can also post it to the GL (debit Staff Loans Receivable, credit your default bank / cash account), and payroll credits that account with each run's loan repayments.

Statutory compliance​

Every statutory rate driving payroll calculations is tenant-editable under HR & Payroll → HR Settings (needs payroll.settings.manage or settings.manage), not hardcoded — a tenant that has never opened that screen gets the platform's verified default rates automatically:

ItemDefaultNotes
PAYE5 progressive monthly bands (0%, 8%, 20%, 25%, 30%)Applied to taxable income (gross pay minus the employee's NSSF contribution)
NSSF20% of wage total, split 10% employee / 10% employer by defaultPer-employee configurable split: 10/10, 5% employee / 15% employer, or the employer remitting the full 20% itself
PSSSF5% employee / 15% employer, fixedThe public-sector equivalent of NSSF — set via an employee's Social Security Fund field
SDL (Skills Development Levy)3.5% of gross emoluments, employer-onlyOnly applies once your active employee count reaches a configurable threshold (default 10)
WCF (Workers Compensation Fund)0.5% of gross income, employer-onlyApplies uniformly regardless of sector
NHIF3% employee / 3% employerOpt-in per employee (NHIF Registered flag) — not a blanket tenant setting
HESLB (student loan)15% of basic salaryOnly applies to employees flagged as having an outstanding student loan
Annual leave entitlement28 days/yearFeeds every employee's leave balance calculation

HR Settings also lets you edit the 5 PAYE bands directly — each band's floor is derived automatically from the previous band's ceiling, so an edit can never accidentally open a gap or overlap in the tax calculation. A ↺ Reset to Verified Defaults button is always available if you want to revert to the platform's own TRA/NSSF/WCF/HESLB-sourced figures.

GL posting​

Posting needs the Accounting module. Clicking Post to GL on an Approved run creates a balanced journal entry in your General Ledger, using the account mapping configured under Accounting → Posting Setup → Payroll Account Mapping:

GL lineAccountRequired?
DebitSalaries & Wages Expense (gross pay)Required — payroll cannot post without this
DebitEmployer NSSF Contribution ExpenseOptional — folds into Salaries & Wages Expense if unset
DebitSDL ExpenseOptional — folds into Salaries & Wages Expense if unset
DebitWCF ExpenseOptional — folds into Salaries & Wages Expense if unset
CreditPAYE PayableOptional — folds into Salaries Payable if unset
CreditNSSF PayableOptional — folds into Salaries Payable if unset
CreditSDL PayableOptional — folds into Salaries Payable if unset
CreditWCF PayableOptional — folds into Salaries Payable if unset
CreditOther Deductions PayableOptional — folds into Salaries Payable if unset
CreditStaff Loans Receivable (staff loan repayments)Optional, Staff Loans only — if unset, loan repayments fold into Other Deductions Payable
CreditSalaries Payable (net pay owed)Required — payroll cannot post without this

Only the two required accounts need to be configured for a run to post — every optional line simply folds into whichever required account is on the matching debit/credit side. Voiding a Posted run reverses its GL entries automatically.

Dashboard & Reports​

HR & Payroll Dashboard — the module's landing page: quick actions (Add Employee, Log Leave, New Payroll Run, HR Reports), stat tiles (Active Employees, Pending Leave, On Leave Today, Latest Payroll Run), a Pending Leave Approvals list, an On Leave Today list, and the latest payroll run's headline figures.

HR & Payroll → Reports, each exportable to Excel with ⇩ Export:

  • Payroll Register — every payslip for a chosen period
  • Statutory Remittance — PAYE/NSSF/SDL/WCF totals owed for a period
  • Headcount — active employee counts by department, employment type, and status
  • Journal Export (needs payroll.export) — downloads posted payroll GL entries for a range of months as a CSV for QuickBooks Online, Xero, or Microsoft Business Central. An Account Mapping table lets you give each payroll account its code in the other system; unmapped accounts export with their own account number.

Permissions​

PermissionWhat it allows
employee.viewView the employee register and profiles
employee.createAdd new employee records
employee.editEdit employee profile and compensation details
employee.deleteArchive (soft-delete) an employee record
leave.viewView the leave request list and each employee's leave balance
leave.createLog a leave request on behalf of an employee
leave.editEdit or cancel a leave request while it is still Pending
leave.approveApprove or reject a pending leave request
payroll.viewSee the payroll run history and its payslips
payroll.runCreate a new payroll run and calculate it for the period
payroll.approveApprove a calculated payroll run, locking it against further edits — also required to post an approved run to the General Ledger
payroll.voidVoid an approved or posted payroll run, reversing its General Ledger entries if any
payslip.view.allView and print any employee's payslip
payroll.settings.manageAccess HR Settings — edit PAYE bands, SDL/WCF/NHIF/HESLB rates, and annual leave days
payroll.reports.viewAccess HR Reports — Payroll Register, Statutory Remittance, and Headcount
payroll.exportUse the Journal Export tab and edit its account mapping
attendance.viewView the attendance register
attendance.createLog attendance and import biometric files
attendance.editCorrect a logged attendance record
loan.viewView staff loans, balances, and repayment history
loan.manageIssue, edit, write off, and delete staff loans

The default HR Officer role holds every permission above except employee.delete and payroll.void, which stay Tenant Admin-only — the same "narrower role, admin retains the consequential action" pattern used elsewhere in the platform (e.g. gl.void, asset.dispose).