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:
- Enter payroll online in DIR's Public Works website services, worker by worker. Fine for small crews, slow for large ones.
- Upload XML produced by your payroll software or a tool. One file per weekly payroll, up to 500 employees. Only this route is affected by the V2 change.
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) andcontractorPWCR: your public works contractor registration number, exactly 10 digits, matching DIR's records. A missing or mismatched PWCR fails the submission.- projectInfo
awardingBody(optional) andprojectID: the numeric project ID registered with DIR. A mismatch also fails the submission.- payrollInfo
statementOfNP(truefor a week with no work, otherwisefalse),forWeekEndingas YYYY-MM-DD, and theemployeeslist. LeavepayrollNumandamendmentNumout: DIR assigns them.- employee
- Name, address (state as two capital letters, ZIP as 12345 or 12345-6789),
ssnoritinas 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
nameattribute, thecraft,employeeLevel(journeymanorapprentice) andapprenticeLevel1–10 for apprentices. Then exactly sevendayelements 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 plustotalDeductions;grossThisProject,grossAllWork,netWagePaidWeekandcheckNum("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:
- Totals that don't add up.
totalDeductionsmust equal the eight deductions; total hours must equal the daily hours. - Rates in the wrong field. If
totalHrlyPayRateStraightTimeequalsgrossThisProject, a pay total was probably mapped into a rate field. - Copied deductions. Identical deduction breakdowns for workers with different pay usually mean values were copied instead of mapped per worker.
- Missing classification names. An empty
nameattribute fails validation. Names DIR doesn't recognise are changed to "Other"; DIR has no public list, so use the names from your certified payroll records. - Day 7 not the week ending. Days must run in order with id 7 on the week ending date, all inside that week, and no more than 24 hours a day across classifications.
- Same worker twice. List each worker once, with all their classifications inside that employee entry.
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.