Who must submit electronically
Under Labor Code section 1771.4, contractors and subcontractors on California public works submit certified payroll records directly to the Labor Commissioner, at least monthly unless the contract requires more often, in the format the Labor Commissioner prescribes. DIR phased this in from 2014; since January 1, 2016 it applies to all contractors except those on exempt projects (DIR eCPR FAQ).
DIR's FAQ lists two exemptions: projects monitored by the legacy labor compliance programs of Caltrans, the City of Los Angeles, Los Angeles Unified School District and the County of Sacramento, and projects under qualifying project labor agreements, at the Labor Commissioner's discretion. The FAQ is dated October 2015, so confirm current rules with DIR.
The 2024 system change and the enforcement pause
DIR launched a new public works website in June 2024. Payroll software makers reported problems with it, including XML uploads, during the months after launch (Quantum Software Solutions). DIR paused enforcement of contractor registration and of electronic certified payroll submission through June 22, 2025; contractors still had to keep certified payroll records (Dannis Woliver Kelley, February 2025). A June 30, 2025 notice published by a builders' exchange says enforcement has resumed and that contractors are not required to submit eCPRs retroactively for the pause (Bay Area Builders Exchange).
Two ways to submit
- The online form. Enter each worker's payroll in DIR's form at services.dir.ca.gov/pw.
- An XML upload. Upload a file built to DIR's schema. DIR validates it, then loads it into the same online form, where you review every record before you sign and submit (DIR XML upload user guide).
What the XML file must contain
DIR publishes an XML schema for electronic California payroll records (CPR.xsd, version 1.3), written guidelines and a sample file (DIR certified payroll reporting). The schema sets these rules:
- Contractor: name (up to 56 characters), license type (CSLB, PL or OTHER) and number, the 10-digit DIR registration (PWCR) number or NA, the 9-digit FEIN, address, workers' compensation policy number (or NA) and email.
- Project: who you contract with, and the DIR project ID. Several other project fields must be left empty because DIR fills them from the project's registration.
- Payroll: the week ending date, and whether this is a statement of non-performance (a week with no work, which must have no worker entries). The payroll and amendment numbers stay empty; DIR assigns them.
- Each worker: name with an id of the form
SSN::NAME(name in capitals), home address, the full 9-digit SSN, number of withholding exemptions and one work classification. - Each worker's week: all seven days with straight-time, overtime and double-time hours, weekly totals, the three hourly rates, gross for this project and for all work, deductions and contributions, net pay and the check number.
- Limits: up to 500 workers per file, hours and amounts to 2 decimal places, and DIR's file name pattern: last 4 digits of the FEIN, project ID and week ending date.
What DIR has not documented
Fringe benefits: hourly or weekly? The schema and guidelines do not say whether the vacation/holiday, health and welfare, pension and training fields hold hourly rates or weekly totals. After the 2024 launch, one payroll software maker reported that DIR now wants hourly rates (Sunburst Software Solutions); DIR has not published this. Check how DIR's online form shows the values after your upload.
Total deductions. DIR's online form user guide says the "Total" field was renamed "Total Deductions" and is no longer calculated for you (DIR eCPR user guide). PrevailReady adds up the withholdings for it, not the employer's fringe contributions.
One worker, two classifications. Each worker entry has one classification, and DIR has not published how to split one worker's deductions and net pay across entries. PrevailReady does not guess: a worker in two classifications in the same week goes in through the online form.
Creating the XML from your payroll
Most small-business payroll systems do not create DIR's XML. The free PrevailReady California XML converter builds the file from a spreadsheet and validates it against CPR.xsd in your browser, so Social Security numbers never leave your computer. The PrevailReady app makes the same file from your weekly payroll export and timesheet, next to the WH-347, with underpayment checks against the rates you enter.
This guide summarizes public DIR materials and published reports as of October 2026 and is not legal advice. Always check DIR's current guidance.