If you do public works in California — schools, roads, anything funded with public money over the statutory threshold — you’re required to pay prevailing wages and report them every week. That reporting is “certified payroll,” and it trips up good contractors constantly. The rules aren’t complicated so much as unforgiving: one misclassified worker or a late filing can hold up payment or trigger penalties. Here’s the whole picture, start to finish.
What certified payroll actually is
Certified payroll is a weekly report you submit on a public works job. For every worker, it shows their craft classification, the hours they worked, the wage rate paid, and the fringe benefits provided. It ends with a signed statement of compliance — you’re certifying, under penalty, that everyone on the job was paid at least the prevailing wage for their classification. It’s not optional, and it’s not once-a-month. It’s every week the job is active.
Prevailing wage, briefly
Prevailing wage is the minimum hourly rate — base pay plus fringe benefits — set by the state for each worker classification in each locality. In California, the Department of Industrial Relations (DIR) publishes these rates. The catch is that the right rate depends on the worker’s actual classification and the project’s location, and rates change. Paying a laborer rate for work that’s really an operating engineer’s scope is one of the most common — and most expensive — mistakes.
The WH-347 form
The WH-347 is the standard certified-payroll form from the U.S. Department of Labor. It’s the format most awarding bodies expect: a row per worker per week with hours by day, gross pay, deductions, net pay, and the classification, followed by the statement of compliance. Even when you file electronically in California, the WH-347 is the underlying record everyone recognizes.
The DIR eCPR e-filing requirement
California doesn’t want a stack of paper. Contractors on public works generally must submit their certified payroll records to the DIR electronically through its eCPR (electronic Certified Payroll Records) system. You can enter records by hand in the online portal, but for any real volume you upload an XML file that matches the DIR’s schema. If the XML is malformed or a field is wrong, the upload is rejected — which is where a lot of contractors lose hours.
Common mistakes
- •Wrong classification. Paying the wrong craft rate for the work performed.
- •Fringe-benefit math. Miscounting employer-paid benefits toward the prevailing-wage total.
- •Missing weeks. Forgetting to file for a week with no work, when a “no work” record is still expected.
- •Re-keying errors. Hand-typing payroll into the eCPR portal and fat-fingering hours or rates.
- •Late filing. Certified payroll is weekly — falling behind stacks up fast and can hold your payment.
How software automates it
Most of these mistakes come from doing the same work twice — once to pay your crew and again to report it. Payroll software built for California public works closes that gap. It runs payroll with the correct overtime and labor burden, applies the right prevailing-wage classification, generates the WH-347, and produces a schema-valid eCPR XML file you can upload in one step — instead of re-keying every line.
That’s exactly how Bullwork handles it: native California payroll with overtime and burden, an approve → fund → pay chain that posts to your ledger, pay stubs, the WH-347, and one-click DIR eCPR XML — all on the same platform that runs the job and the books. Public works compliance stops being a separate service and becomes a button.
