---
title: Approve timesheets and run payroll
description: Clear the time board, lock the period, then walk a payroll run from draft to paid, with exceptions, advances and reversals.
order: 14
updated: 2026-09-16
keywords: payroll, timesheets, time board, punches, statutory, bank file, payslip
---

Payroll in ChowChirp is a stepped run built from approved time. It records; it does not pay or file.

**Before you start:** team write access. Locking a period and approving a run ask for your authenticator code.

## Step 1. Clear the time board

1. Open **Team › Time & attendance**.
2. Work the flags: late, geofence and no-show. Edit a punch with a reason of at least eight characters, classify an absence, force a clock-out where someone forgot, or reject a geofence punch.
3. Use **Bulk approve** for clean timesheets.
4. Resolve any dispute a staff member raised on their own punches.

## Step 2. Lock the period

Choose **Lock period** for the payroll cutoff. No punches in the period can change after this.

## Step 3. Run payroll

Open **Team › Payroll** and start a run for the period. The step tracker walks you through:

1. **Draft.** Lines are built from approved time, pay rates and leave.
2. **Review exceptions.** Not-started employees, leavers needing final pay, minor checks and foreign-worker statutory items are listed. Resolve each one.
3. **Approve run.** Enter your authenticator code.
4. **Release bank.** Download the bank-file preview as CSV and upload it to your bank yourself.
5. **Statutory filings.** Record when EPF, SOCSO, EIS and PCB have been filed through their own portals.
6. **Paid.** Mark the run paid once the bank confirms.

> **Note:** The bank file and payslips are previews you download. ChowChirp does not transfer money and is not connected to EPF i-Akaun, PERKESO ASSIST or LHDN MyTax.

## Advances and adjustments

Record an advance or an adjustment against a person before the run is approved. They appear as lines on the run.

## Reverse a run

If a run was approved in error, choose **Reverse run** with a reason of at least eight characters. The reversal is recorded and a new run can be started.

## Related

- [Distribute service charge](/docs/how-to/distribute-service-charge)
- [Build and publish the weekly roster](/docs/how-to/build-the-weekly-roster)
