How to submit certified payroll to the DIR by XML upload (2026)

If you work on a California public-works project, Labor Code 1771.4 requires you to submit certified payroll records (CPRs) electronically to the DIR — usually every week you work. You have two options on the DIR Public Works Portal:

  1. Type everything into the online eCPR form — every worker, every day's hours, every deduction, every week. For a crew of five this commonly takes an hour or more per week.
  2. Upload an XML file — the portal validates it, loads it into the form for you, and you just review, sign, and submit.

The XML route is far faster — if you can produce a valid file. The DIR's official suggestion is editing the sample file by hand in a text editor, which is where most people give up. (Our free generator produces the file from a simple form instead.)

What the XML file must contain

The file must conform to the DIR's CPR.xsd schema. In practice that means, in this exact structure:

Critical details that cause rejections

Submitting corrections

You can't edit a submitted record. To correct one, re-upload a fixed XML where the FEIN/SSN, DIR Project ID, contract agency name, week ending date, craft, and base hourly rate all match the original exactly — the system then files it as Amendment 1 (then 2, and so on). If the error is in one of those key fields, it becomes a brand-new report; explain the situation in the Notes field.

Non-performance weeks

Weeks with no work on the project still need a record: a statement of non-performance (statementOfNP = true, no employee records). Skipping these is one of the most common compliance gaps.

The fast way

eCPR Express generates a schema-valid eCPR XML (and the federal WH-347 PDF) from a simple web form, remembers your crew and projects between weeks, and runs entirely in your browser — names, SSNs, and wages never touch a server. It's free during launch.

Generate this week's eCPR XML free →