Certified payroll — weekly cadence

On a California public works job, every contractor and subcontractor must file a Certified Payroll Report (CPR) for every week any covered work is performed. The submission goes through DIR's eCPR system or the awarding body's portal (often LCPtracker).

The cadence

  • The reporting week is your payroll week, not the calendar week. STrOp uses Monday–Sunday by default; adjust under Settings → Payroll → Workweek.
  • CPRs are due to DIR within 10 calendar days of the end of the reporting week (Labor Code §1776). Many awarding agencies require sooner — Caltrans wants them within 7 days.
  • File a "No Work" CPR for any week where the project was active but you performed no covered work. Skipping the week is not the same as filing a No Work — auditors treat a missing week as non-compliance.

What counts as "work performed"

Hours on the project site, including:

  • Direct labor at the project address
  • On-site material handling, layout, demolition, cleanup
  • On-site supervision (foreman, lead) if they're touching tools or directing crew

Excluded:

  • Shop fabrication off-site (unless the awarding body's special conditions sweep it in — check your contract's prevailing-wage rider)
  • Office/admin time
  • Travel to and from the shop

STrOp's export

Field → Timecards → Export CPR for week of [date] produces:

  1. The DIR XML for direct eCPR upload, OR
  2. A LCPtracker-compatible CSV (if the project is tagged for LCPtracker under Setup → Compliance)

Both formats include the worker classification, hours by day, fringe rates pulled from your active CBA, and the cumulative project-to-date totals required on the cover sheet.

Common errors

  • Apprentice ratio violation. Submitting CPRs with too-few journey workers for the apprentice hours logged. STrOp flags this at timecard approval.
  • Wrong classification. Filing as Inside Wireman when the work is Sound & Communications. The classification picker on the timecard line uses your CBA's job-class list.
  • Missing fringes. If the fringe rate column is blank, DIR rejects the CPR. The fringe rate must come from a labor agreement linked to the project.

See also

This is how STrOp works

The data flows you read about here are how the platform threads bid, execution, billing, and closeout. Single pipeline. No re-keying.

Request beta access →

Last updated 2026-05-29.