Making a WH-347 from an Excel or CSV payroll export
Most contractors already have the numbers a WH-347 needs. They are sitting in a payroll system or a spreadsheet. The work is getting them into the right boxes without retyping. This guide covers what your export needs to contain, how the rows can be shaped, and how the WH-347 Layout Tool maps and checks them. It is practical guidance, not payroll or legal advice.
Columns your export should have
The WH-347 layout has worker columns 1A through 9 (see how to fill out the WH-347 for each one). In export terms, you will generally want:
- Worker identity: last name, first name, middle initial, and an identifier. If the export has a full SSN, that is fine as input; the tool prints the last four only. The DOL instructions say full Social Security numbers must not be included on the payroll.
- Journeyworker or apprentice (J or RA) and the labor classification as it appears in the wage determination.
- Hours: straight time and overtime, by day if you have them, plus the weekly total.
- Rates: the hourly rate paid for ST and for OT.
- Fringe amounts for 6B and 6C, if your export has them. The tool does not calculate these.
- Money: gross earned on this project, gross for all work, FICA, tax withholding, other deductions, and net pay.
Project-level details — project name and number, business name and address, project location, wage determination number, week ending date — are entered once per project rather than per row.
Row shape: one row per worker, or one row per day
Exports usually come in one of two shapes:
- One row per worker per week, with day columns (for example a column of ST hours and a column of OT hours for each day). This is closest to the form itself.
- One row per worker per day, typical of time-tracking exports, where each line is a date with ST and OT hours.
Either can feed the layout; what matters is that the mapping knows which columns are which. If a worker performed two classifications, the DOL instructions call for a separate row for each classification under the same worker entry number, so keep classification as its own column rather than burying it in a note.
Mapping columns
When you load a file, you match each of your column headers to a WH-347 field. The mapping is saved, so next week's export from the same system maps the same way. Practical advice: keep your export's column headers stable from week to week, and avoid merged header cells or totals rows in the middle of the sheet; they make any mapping fragile.
There are no built-in payroll-provider templates. The payroll providers we checked (QuickBooks, Gusto, ADP and Paychex) do not publish fixed column headers for their exports, so the tool does not guess: a column is pre-selected only if its header is exactly one of the tool's own field keys (as in a normalized CSV from this tool). Everything else you match yourself, once. For provider-specific notes, see the guides for QuickBooks and Gusto.
Validation before you export
Once mapped, the tool checks each worker:
- daily ST + OT hours add up to the weekly total;
- straight time over 40 for the week is flagged;
- gross is close to ST hours x rate plus OT hours x OT rate;
- net equals gross minus FICA, withholding and other deductions;
- required fields are present: worker name, classification, week ending date, contractor and project;
- optionally, the rate paid against a prevailing-wage reference you type in.
Money and hours are rounded to two decimals (half-up) and compared with a tolerance of 0.01. A flag is a prompt to look, not a ruling: a mismatch can be a data problem in the export or a real payroll issue you need to sort out with your payroll provider.
Done in the browser
CSV, .xlsx and .xls files are read inside your browser tab. The payroll is not uploaded and there is no account. You get a free watermarked preview PDF marked "do not file" to check the layout. A paid project unlocks the clean PDF and a normalized CSV: $39 one-time for one project for 31 days, or $29/month for one project, renewing monthly. Continuation sheets are added automatically when you have more than eight workers, and the payroll number increments per project.
Page 2 is filled with the project header, the certifying official's name and title, the boxes you tick and any remarks. Signature, date, phone and email are left blank for a real signature. See the Statement of Compliance guide for what that page certifies.
Frequently asked questions
Is my payroll file uploaded anywhere?
No. The WH-347 Layout Tool reads CSV, .xlsx and .xls files inside your browser tab. The payroll data is not uploaded and no account is needed.
Does the tool work with my payroll system's export?
It works with any CSV or Excel export: map your columns once, save the mapping, reuse it every week. There are no built-in payroll-provider templates, because the payroll providers we checked do not publish fixed column headers for their exports, and the tool does not guess.
What if my export has full Social Security numbers?
The tool prints only the last four digits. The DOL instructions say full Social Security numbers must not be included on the certified payroll.
About the WH-347 Layout Tool
- Browser-only: your CSV or Excel payroll export is read and laid out in your browser. Payroll is never uploaded. No account.
- Optional layout: it produces the WH-347 layout (Rev. January 2025, OMB 1235-0008). Use of Form WH-347 itself is optional; the weekly payroll information and a signed Statement of Compliance are what you submit.
- Price: free watermarked preview. Clean PDF + normalized CSV: $39 one-time for one project (31 days) or $29/month for one project.
- Not legal, payroll or tax advice. You review the output and the certifying official signs page 2.