Klees

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.

ProviderDirect syncCSV fallbackNotes
QuickBooks OnlineYesYesQuickBooks Time-compatible mapping
QuickBooks DesktopVia IIFYesIIF export; direct sync on roadmap
XeroYesYesTimesheet API
GustoYesYesHours by code
ADP RUNYesYesRUN-format CSV plus direct
ADP Workforce NowCSVYesDirect sync on Enterprise
Paychex FlexYesYesHours import
RipplingCSVYesCustom column mapping
JustworksCSVYesCustom 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:

  1. Map Klees workers to provider employees (usually auto-matched by email)
  2. Map Klees cost codes to provider job codes or GL accounts
  3. Pick how OT is split — by Klees rules or by provider rules
  4. 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:

  • Construction01-LABOR → 5000 Direct Labor; 09-OFFICE → 6010 Indirect Labor
  • CleaningOFFICES → 5000 Service Labor; DRIVE → 6020 Non-Billable Drive
  • DeliveryROUTE-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:

  1. Manager opens the timesheet queue Monday morning
  2. Bulk-approves clean entries; reviews flagged ones
  3. Resolves disputes (missed clock-out, wrong cost code) with the worker
  4. Runs the Payroll Preview — total hours, OT, dollars by worker
  5. Triggers the sync to QuickBooks / Gusto / ADP / Paychex
  6. 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.