Payroll XML
Start from the file your payroll system already exports. Match its columns once and get the XML your state DOT imports, or the bulk upload file for the New York State DOL.
Your files stay on this computer. The page runs in your browser and uploads nothing, SSNs included.
Already have a CSV in this tool's own layout, or an XML file to check? Use the converter page.
These are not in a payroll export. They come from your contract and your state's system.
Fill in what the export does not carry. Anything you type here wins over the file. Your state says which ID it wants: the full SSN, the last 4, or your own ID.
Craft codes and labor classes come from your state's own list. This tool cannot tell you if a code is wrong.
Type each work category the way the prevailing rate schedule names it, and the supplement (fringe) rates per hour paid to a fund or plan for it. Leave a box blank for 0. This tool cannot tell you if a rate is wrong for the schedule.
A saved setup holds your column picks, the payroll facts, and what you typed about workers and classifications. Next week, load it with the new export.
Worth a look before you upload
What the page left out or filled in
Show the XML
This page does not check the full schema. Before you upload, run the file through the official online validator.This page checks New York's rules but not the full schema. To check the schema, run the file through the Python tool in the repo.
What this page reads
A CSV file with one row of column names. The names can be anything. Title rows above the names are fine. Commas, tabs or semicolons between cells all work. For an Excel file, use File, Save As, CSV UTF-8 first.
- Days down the page or across it.
- Straight time and overtime in their own columns, or on their own rows with a pay type column.
- Hours as 7.75 or as 7:45.
- Names in one column, like Garcia, Luis A or Luis A Garcia, or split into first and last.
- Pay totals in the same file, or in a second file with one row per worker.
- Rows for other jobs and for leave pay, which it leaves out and counts for you. Rows for other weeks too, when each row carries a date or a week ending date.
What it does not do
It does not know your state's codes, so you type the craft code and labor class for each classification once and save the setup. For a state DOT file it does not write fringe benefit programs or fringe rates. For New York you type the work category and the supplement rates for each classification once, and the home address and the last 4 of the SSN or the birth date for any worker the export leaves them out for. It handles one contract per file. It does not read Excel workbooks, only CSV.
It tells workers apart by ID, or by name when the file has no ID. Two workers with the same name need a worker ID column. Check how each name was split in the workers table; a name like Mary Ann Smith can split in the wrong place.