Certified Payroll Kit

Certified Payroll Kit › California eCPR XML V2

California eCPR XML V2: what changes before January 13, 2027

California contractors on public works report certified payroll to the Labor Commissioner through DIR's eCPR system, either by typing it in or by uploading an XML file. DIR has published a new XML format, V2, and says it supports V1 uploads only until January 13, 2027. If your payroll software or spreadsheet produces V1 XML, you need V2 before then. You can check a file right now with the free checker below.

Free eCPR XML V2 checker

Validates your file against DIR's official V2 schema, then checks totals, dates and the other mistakes DIR's FAQ warns about. Runs in your browser: the file isn't uploaded anywhere.

Who has to submit eCPR

Contractors and subcontractors on most California public works projects must furnish certified payroll records electronically to the Labor Commissioner (Labor Code § 1771.4), at least monthly or more often if the contract says so. A few categories of projects are exempt from online reporting; DIR lists them on its exemptions page. DIR's system gives you two ways in:

The V1 to V2 switch

DIR's V2 FAQ says V1 submissions are supported until January 13, 2027 and that DIR will remind registered contractors before the cutover. V2 is a different schema, not an edit of V1: V1 templates won't validate against it. If your software vendor hasn't confirmed V2 support, test a file now. DIR lets you upload a draft and review it before submitting (for files under 250 employees), and the checker on this page validates against the same schema DIR publishes.

What a V2 file contains

The file starts with <CPR:eCPR xmlns:CPR="https://www.dir.ca.gov/Public-Works/CPR/eCPR-v2.xsd"> and <CPR:version>2.0</CPR:version>. Elements must appear in the order the schema defines. In outline:

contractorInfo
contractorName (up to 56 characters) and contractorPWCR: your public works contractor registration number, exactly 10 digits, matching DIR's records. A missing or mismatched PWCR fails the submission.
projectInfo
awardingBody (optional) and projectID: the numeric project ID registered with DIR. A mismatch also fails the submission.
payrollInfo
statementOfNP (true for a week with no work, otherwise false), forWeekEnding as YYYY-MM-DD, and the employees list. Leave payrollNum and amendmentNum out: DIR assigns them.
employee
Name, address (state as two capital letters, ZIP as 12345 or 12345-6789), ssn or itin as nine digits with no dashes (unique in the file), optional notes, then classifications, payments, deductions and earnings.
classification
One per classification worked, with the classification in the name attribute, the craft, employeeLevel (journeyman or apprentice) and apprenticeLevel 1–10 for apprentices. Then exactly seven day elements with ids 1–7, where day 7 is the week ending date, each with straight-time, overtime and double-time hours.
fringe and rates
Whether fringes were paid to the employee and/or to a plan (at least one must be true), fringe per hour in five categories (health and welfare, vacation/holiday, pension, training, other), total hours by type, base hourly rates and total hourly rates (base plus fringe).
payments, deductions, earnings
travelSubs; eight deduction fields plus totalDeductions; grossThisProject, grossAllWork, netWagePaidWeek and checkNum ("CASH" for cash payments).

Errors DIR warns about

DIR's FAQ points out that schema validation checks structure, not accuracy. These pass the schema but are still wrong, and the checker above looks for each one:

Large crews

One submission can hold up to 500 employees. DIR offers the draft preview only for files with fewer than 250 employees; larger files go straight to submission even if you choose the draft option, so check them carefully first.

If your payroll system doesn't make V2 XML

Many small-business payroll systems don't produce DIR XML at all. QuickBooks Online's certified payroll feature is built around the federal WH-347, and Gusto has no certified payroll report. Your options are to type each week into DIR's online forms, ask your vendor about V2, or generate the file from a payroll export. Our paid plan builds V2 XML from the same export you use for the free WH-347 generator. It's in final testing; leave your email and we'll tell you when it's ready.

Questions

When does DIR stop accepting V1 XML?

DIR's V2 FAQ says V1 submissions are supported until January 13, 2027.

Where do I get the V2 schema?

From DIR: https://www.dir.ca.gov/Public-Works/CPR/eCPR-v2.xsd. DIR also publishes a filled sample and a commented blank template on its certified payroll reporting page.

Does passing the schema mean the payroll is right?

No. It means the structure is valid. Totals, rates and classifications can still be wrong, which is why the checker also runs arithmetic checks. DIR also checks your PWCR and project ID against its records when you upload.

Is my file uploaded when I check it?

No. Your browser downloads DIR's schema from our site and validates the file locally.

Do I still need a WH-347 on a California job?

On a project with federal funding, the federal weekly certified payroll rules apply too, so you may need both: DIR's eCPR and a WH-347 for the federal agency. See how to fill out the WH-347.