NYSDOL certified payroll · upload error
Upload rejected: Duplicate employees
This is the one that catches almost everybody, and it is not your mistake — it is the shape of your payroll export.
NYSDOL rejects any file containing the same employee more than once. But most payroll systems export one row per employee per work classification. A labourer who spent Tuesday doing cement work comes out as two rows. Map those rows straight to XML and you have written the same person twice.
The fix
One employee element, several work weeks inside it.
The schema expects a worker who did two trades to appear once, with two <workWeek> blocks nested under them — one per classification, each with its own rate and its own days.
In the state's own words: "Multiple work classifications/categories can be added to the same employee, but the employee must not be duplicated in the same file."
So before you build the file, group your payroll rows by person. Merge the identity and address once, then attach each classification as its own work week underneath.
Worth checking too
Near-duplicates that are not obvious.
The portal matches on the employee data itself, so these will also collide: the same person entered once with a middle name and once without; a name spelled differently between two payroll runs; or the same worker under two employee numbers after a rehire.
Want the file built for you?
Send one project's payroll export for one week and we'll send back a portal-ready XML file, plus a written list of anything else that would have been rejected. Free, no signup — we're building the tool that does this automatically and we would rather learn the edge cases on real payroll.