California DIR eCPR Submission Guide
A practical, contractor-focused walkthrough for submitting electronic certified payroll through the California Department of Industrial Relations — without the usual friction.
Get your eCPR submissions right the first time.
Certified payroll reporting is one of the most technical compliance burdens California contractors face. One wrong classification code, one mismatched name, or one missed Friday upload can turn a routine pay period into a DIR audit, a project freeze, or a penalty.
This guide covers what eCPR is, who must file, the exact submission steps, and the friction points that trip contractors up most often. Use it to train your office, tighten your process, or decide when it's time to bring in backup.
Annual registration is mandatory. Expired registration blocks payroll submission and can freeze project payments.
The prime must notify DIR of the project, contractors, and estimated value before certified payrolls are accepted.
Payrolls are due weekly for all workers on the project, even if your normal pay period is biweekly. No exceptions.
Manual entry is possible for tiny jobs, but XML batch upload is the only realistic path for crews with more than a handful of employees.
Five steps to a clean eCPR submission.
Follow this sequence every week and you'll cut rejections, avoid late fees, and keep the project office happy.
Confirm the project is covered
California public works projects — state, county, municipal, and any project funded with public money — trigger prevailing wage and certified payroll rules. If the prime contract is over $25,000 (or $5,000 for some state-aided local projects), assume eCPR applies.
Register with DIR and file the PWC-100
Every contractor and subcontractor must hold a current DIR public works contractor registration. The prime must file a PWC-100 project notification within 30 days of award. Subcontractors are listed on that filing, so confirm your license and registration match exactly.
Collect clean payroll data before Friday
For each worker, capture legal name, address, SSN last four, classification, work classification, straight-time and overtime hours, total wages, fringe benefits, and any deductions. Garbage in is the #1 reason uploads fail.
Build the XML in the DIR format
The eCPR portal accepts only the official California DIR XML schema. Most payroll systems export this, but the mapping must match craft, classification, and prevailing wage determination codes exactly. A single bad code rejects the whole file.
Log in and submit through the eCPR portal
Use the DIR eCPR login at the California Department of Industrial Relations website. Upload the XML, review the validation report, fix any errors, and resubmit. Keep the confirmation number and a dated screenshot for your records.
Pro tip: Run a parallel payroll reconciliation every Monday. Compare last week's timecards, the eCPR validation report, and the project wage determination side by side. Catching mismatches early is cheaper than fixing them after a DIR inquiry.
Common eCPR friction points.
These are the errors we clean up most often for contractors who thought their payroll system had it handled.
Name mismatches
A worker's name on the payroll doesn't match DIR or the PWC-100. Use the exact legal name from the I-9 and license records.
Wrong classification codes
Each craft has a specific prevailing wage determination. Picking 'Laborer' when the work is 'Carpenter' triggers an underpayment flag.
Fringe math errors
Health, pension, and training fringes must be credited correctly. Misapplied fringes are a common audit target.
Late submissions
Missing the weekly window creates a compliance gap. Back-dated or bulk-uploaded late payrolls draw extra scrutiny.
Apprenticeship ratios
Public works projects require approved apprentices at set ratios. Missing or non-registered apprentices show up as violations.
Portal lockouts
DIR credentials expire, multi-factor authentication fails, and browser sessions time out. Keep admin access current before deadline day.
Build a system, not a scramble.
The contractors who stay out of trouble treat eCPR like a production line, not a last-minute task.
- Assign one eCPR owner per project — no shared passwords, no guessing who uploaded what.
- Maintain a master classification sheet tied to the current wage determination for each job.
- Reconcile timecards, payroll, and eCPR every Monday before the Friday deadline pressure builds.
- Store confirmation numbers, validation reports, and wage determinations in one project folder.
- Review DIR registration expiration dates quarterly; renew 30 days before they lapse.
- Train field supervisors to flag apprentice hours and shift classifications in real time.
Quick answers on eCPR.
What does eCPR stand for?
eCPR stands for electronic Certified Payroll Report. It is California's online system for submitting weekly certified payroll records on public works projects subject to prevailing wage law.
Who has to submit certified payroll in California?
Any contractor or subcontractor performing work on a California public works project must submit weekly certified payrolls. This includes primes, subs, and any lower-tier contractors performing labor on the job.
How do I access the DIR eCPR system?
Go to the California Department of Industrial Relations eCPR portal. You will need a DIR account, current contractor registration, and the project information from the filed PWC-100.
What happens if my eCPR submission is rejected?
The portal returns a validation report listing errors. Fix the underlying payroll records, regenerate the XML, and resubmit. Do not alter the file timestamp or backdate the submission.
Can I submit certified payroll manually?
Manual entry exists for very small projects, but it is error-prone and slow. Most contractors use payroll software that exports the official DIR XML format.
Need help with certified payroll?
If eCPR rejections, late filings, or DIR audits are eating into your week, we can take it off your plate. We'll audit your current process, fix the gaps, and handle weekly submissions so you can get back to the build.