Payroll Integrations
QuickBooks, Xero, Gusto, ADP, and Paychex — direct sync plus a CSV fallback for any other provider. How Klees gets approved time into payroll cleanly.
Updated May 29, 2026
Klees makes payroll fast. Approved time entries flow into your provider with worker, job, cost code, regular hours, OT hours, and the wage rate — coded and split by state where needed. The goal: a close measured in hours, not days. For the report side, see Reports and Exports.
Supported direct integrations
Direct sync means Klees pushes approved time into the payroll provider via API, no spreadsheets, no copy-paste.
| Provider | Direct sync | CSV fallback | Notes |
|---|---|---|---|
| QuickBooks Online | Yes | Yes | QuickBooks Time-compatible mapping |
| QuickBooks Desktop | Via IIF | Yes | IIF export; direct sync on roadmap |
| Xero | Yes | Yes | Timesheet API |
| Gusto | Yes | Yes | Hours by code |
| ADP RUN | Yes | Yes | RUN-format CSV plus direct |
| ADP Workforce Now | CSV | Yes | Direct sync on Enterprise |
| Paychex Flex | Yes | Yes | Hours import |
| Rippling | CSV | Yes | Custom column mapping |
| Justworks | CSV | Yes | Custom column mapping |
If your provider isn’t listed, the CSV fallback covers almost any importer — you configure the column mapping once and Klees produces a clean file every payroll cycle.
Connecting a provider
From Settings → Integrations, pick your provider and follow the OAuth flow. Klees asks for the minimum scope needed: read employees and write timesheet entries. You can revoke access at any time and switch back to CSV.
Once connected:
- Map Klees workers to provider employees (usually auto-matched by email)
- Map Klees cost codes to provider job codes or GL accounts
- Pick how OT is split — by Klees rules or by provider rules
- Run a test sync against a small date range
The test sync writes nothing to payroll until you confirm. Once confirmed, future syncs run on the schedule you set.
GL mapping
Cost codes are the lever that makes labor hit the right line on your P&L. Common mappings:
- Construction —
01-LABOR→ 5000 Direct Labor;09-OFFICE→ 6010 Indirect Labor - Cleaning —
OFFICES→ 5000 Service Labor;DRIVE→ 6020 Non-Billable Drive - Delivery —
ROUTE-A→ 5000 Route Labor;LOAD→ 5010 Warehouse Labor
The mapping is an editable table. Existing time entries are not re-coded — the mapping applies to future exports, protecting historical reports.
A typical payroll close
A weekly close on Klees runs like this:
- Manager opens the timesheet queue Monday morning
- Bulk-approves clean entries; reviews flagged ones
- Resolves disputes (missed clock-out, wrong cost code) with the worker
- Runs the Payroll Preview — total hours, OT, dollars by worker
- Triggers the sync to QuickBooks / Gusto / ADP / Paychex
- Provider receives the time; payroll runs on its normal cadence
For multi-state operators, Klees splits OT and applies the right state rule per worker per day before pushing. The Alta Janitorial team moved from a 3.5-day multi-state close to a sub-day close on this exact flow.
CSV fallback
If direct sync isn’t supported (or you prefer file-based for control reasons), the CSV export is full-featured:
worker_id,worker_name,worker_email,job_id,job_name,cost_code,date,regular_hours,ot_hours,double_hours,wage_rate,state
W001,Maria Santos,[email protected],J412,Maple St,01-LABOR,2026-05-26,8.00,0.00,0.00,28.00,CA
W001,Maria Santos,[email protected],J412,Maple St,01-LABOR,2026-05-27,8.00,1.50,0.00,28.00,CA
You can pick which columns appear and in what order, add custom columns (union code, department), save named profiles per provider, and schedule weekly email delivery at a fixed time.
Multi-state payroll
For multi-state operators, Klees applies the right state’s OT rule per worker per day (CA daily-OT, NV weekly-OT), splits hours by work-state if a worker crossed state lines, exports a state column on every row, and supports per-state wage overrides for prevailing-wage jobs. This is the single biggest pain Klees removes for multi-state field-ops teams.
Wage rates and prevailing wage
Wage rates live on the worker record by default. You can also set per-job overrides (prevailing-wage contracts), per-cost-code premiums (hazard pay), and per-state rate adjustments. The Payroll Preview shows which rate applied to which hour so the close manager can sanity-check before pushing.
Troubleshooting and audit
Every sync is logged. If a sync fails (provider down, broken employee mapping, OT rule conflict), Klees reverts server-side, shows the error inline, and notifies the configured admin. Once fixed, re-run from the same screen — no risk of duplicate hours.
For pricing on direct integrations, see pricing. Every export and sync is also available on the REST API for custom payroll workflows.