Who is doing this
Kyle Evans — a practising structural engineer in Fort Worth who spends his working life on the reviewing end of construction paperwork, which is why the failure modes above are catalogued rather than guessed at.
New York prevailing wage · certified payroll e-filing
If you run twelve active prevailing wage projects, you are hand-building twelve separate XML files every week — including for the projects where nobody swung a hammer. Then the portal bounces one for a work category that is off by a character.
Below is every rejection cause we have catalogued from the state's published schema, and how to fix each one. No signup to read it.
The math nobody mentions
The NYSDOL schema holds one prcNumber and one weekEndingDate per file. There is no multi-project file. There is no multi-week file. There is no CSV, and the state's own bulk upload guide confirms there is currently no API.
A contractor with 30 active projects files roughly 30 XML documents a week, every week, for the life of those projects.
Rejection causes
Pulled from the state's published XSD and sample files. If your upload failed, it is almost certainly on this list.
This is the big one. The schema accepts the field as free text, so your file looks valid — then the portal rejects it because the value has to match the NYSDOL classification exactly as it appears in their dropdown. "Laborer Group 1" and "Laborer — Group 1" are not the same string. Your payroll system's internal trade names almost never match out of the box.
Fix: build a mapping table once, from each payroll classification you use to the state's exact wording, and validate against it before every upload rather than after.
The schema wants one identifier or the other for an employee, not both. Payroll exports that carry both fields will happily produce a file containing each, and the upload fails.
Fix: pick one identifier and strip the other during the export-to-XML step.
The PRC number must be exactly ten characters and must match the project the filing is being posted against. Leading zeros stripped by Excel are a common culprit — a PRC number that lost its zero is nine characters and fails validation.
Fix: treat PRC numbers as text everywhere, never as a number, and confirm the PRC belongs to the project before you build the file.
The date has to arrive as yyyy-mm-ddThh:mm:ss.000Z. A plain 2026-08-09 will not do, and neither will a US-style date. Most spreadsheet exports produce the wrong shape.
Fix: format the timestamp explicitly during generation instead of relying on whatever your export produces.
Supplemental payments are enumerated — health and welfare, vacation and holiday, apprenticeship and training, pension, and other benefit. If you use "other benefit" you must supply an explanation, and following a schema revision it also needs its own work category attached.
Fix: map your fringe benefit codes to the enumerated types, and never leave an "other" without its explanation.
The schema caps deductions at ten per employee work week and constrains the amount format, which tops out below $10,000. Garnishments plus benefits plus union dues on a high-earning week can trip both.
Fix: consolidate deduction lines where legitimate and check for any single amount that exceeds the field's format.
Each file holds a maximum of 500 employee work week records. Larger crews, or a catch-up filing covering several weeks at once, will exceed it.
Fix: split into multiple files by week — which the one-week-per-file rule was already going to force you into anyway.
If you work in the five boroughs
State law requires the NYSDOL portal filing on Article 8 work regardless of who awarded the contract. City contracts solicited on or after December 31, 2025 additionally require submission through New York City's eComply database.
Two systems, two formats, same underlying payroll. The state takes XML built to its schema. eComply takes a payroll provider import file — it recognises formats from the major payroll systems, which is a different export entirely.
Practically: if you are on City work, your weekly file count is not your project count. It is roughly double.
Worth knowing
The statute provides for penalties of $100 per day after a 14-day grace period, along with withheld payments and debarment exposure.
We will be straight with you about where that stands: as of this writing the Department of Labor's own guidance says it is exercising discretion and not issuing those fines yet, and that a public announcement will come before enforcement begins.
So this is not a five-alarm fire today. It is a thing that is coming, on a date the state has promised to announce, while the filings themselves are already mandatory and already eating your Friday afternoons. That is the honest version.
The offer
Free, no card, no signup. Send one week of payroll for one project — a QuickBooks, ADP, Gusto, Paychex or Foundation export is fine, or a PDF register if that is what you have.
You get back a portal-ready XML file built against the state's schema, plus a short written list of anything in your data that would have been rejected and why. Upload it yourself and see what the portal says.
Kyle Evans — a practising structural engineer in Fort Worth who spends his working life on the reviewing end of construction paperwork, which is why the failure modes above are catalogued rather than guessed at.
Because we are building the tool that does this automatically and we would rather learn the edge cases on real payroll than on invented examples. Your file teaches us something. That is the trade.
A tool that takes one payroll export and produces every project's file at once, validated before upload. It is not finished. When it is, it will be somewhere around $99 to $499 a month depending on how many active projects you carry.
Email kyle.evans@redriverdigitaltx.com with one project's payroll for one week. Turnaround is 24 to 48 hours. If you would rather just tell us what is broken on your end without sending anything, that is genuinely useful too.
We will not share your payroll data with anyone, we will not add you to a mailing list, and if you would like the file deleted once you have it, say so and it is deleted.
Questions we get
Not currently. The state's own bulk upload formatting guide says an API is not available at this time and that only XML is supported. Anyone claiming direct API filing to the state portal is describing something that does not exist yet.
The state has not defined a preparer or agent role — portal access is through NY.gov accounts. So the honest answer is that we build the file and you upload it. You keep control of your own credentials, which is where it should stay anyway.
No. That is rather the point. The platforms that handle NY XML well generally want you to move your entire payroll onto them. This works off an export from whatever you already run.
Michigan has required online certified payroll submission since April 2026 through the state's own portal instance. Minnesota has legislation directing a portal by July 2027, which as of now has not been enacted. We are building New York first because that is where the format problem is worst today.
Red River Digital is a two-page answer: a small Fort Worth company, run by one person on this product, with a real address at the bottom of this page. We are early and we are not pretending otherwise. Send one project's data, judge the work, and decide from there — that is why the first one is free.