Certified Payroll Kit

WH-347 generator › Gusto

WH-347 from Gusto payroll

Gusto doesn't have a WH-347 report. You can still do certified payroll with it: download the payroll journal, export daily hours, put both in one sheet and drop it below. The generator recognises Gusto's column names and fills the official 2025 form in your browser.

Can Gusto do certified payroll?

Partly. Gusto pays employees at different rates for different jobs, which is what prevailing wage work needs. What it doesn't do is look up wage determinations or produce the WH-347 itself. The usual approach is to keep Gusto for payroll and fill the WH-347 from its exports, by hand or with a tool like this one.

Set up Gusto so the export is usable

Which Gusto reports to export

  1. Pay: Payroll Journal. In Gusto go to Reports and download the Payroll Journal for the pay date that covers the week. Gusto describes it as detailed payroll information for each pay period and employee: gross earnings, taxes, deductions and net pay.
  2. Hours by day. The payroll journal has hours per pay period, not per day. Export daily hours from Gusto's time tracking if you use it, or from your timekeeping app (Workyard, ClockShark, Busybusy and similar all export CSV). Filter to the public works project.
  3. Combine. Use the hours export as the base: one row per worker per day. Add the pay columns from the journal to one row per worker. You don't need to repeat them on every row.

Columns the generator recognises

WH-347 needsTypical Gusto-style columnRequired?
Worker name (1B–1D)first_name, last_nameYes
Identifying number (1E)ssn or employee_id; only the last 4 digits are printedRecommended
Labor classification (3)job_title (your job name per classification)Yes
Apprentice level (2)apprentice_level (blank = journeyworker)If any apprentices
Day and hours (4, 5)work_date, regular_hours, overtime_hours, double_overtime_hoursYes
Hourly rate (6A)rateYes
Fringe credit per hour (6B, page 2)health_welfare, pension, vacation_holiday, trainingIf claiming fringe credit
Gross for all work (7B)gross_earningsRecommended
Deductions (8)federal_income_tax, social_security_medicare, state_income_tax, sdi, union_duesRecommended
Net pay (9)net_pay, check_numberRecommended

Your headers can be different. Match them once in step 2 and they're remembered for files with the same columns.

Fringe benefits with Gusto

If you pay part of the prevailing wage as benefits, the WH-347 needs the hourly credit for each plan. Gusto records benefit contributions per payroll, not per hour, so work out the hourly credit for each plan and add it as a column (for example pension 9.80). DOL generally requires credits for contributions to be annualized: the yearly contribution for the worker divided by the total hours they work in the year on all jobs, so you can't take the whole credit only in prevailing wage weeks. Any shortfall between the fringe rate and your plan credits is paid as cash and shows in column 6C.

A worked example

Ana works 40 hours as a carpenter in the week ending November 7: eight hours a day Monday to Friday, plus two hours of overtime on Thursday. Her Gusto job "Carpenter" pays $52.10 an hour, and you contribute $11.20 health, $9.80 pension and $4.10 vacation per hour to plans. Her WH-347 line shows 8 hours on each weekday in the ST row, 2 on Thursday in the OT row, 40 and 2 in column 5, $52.10 and $78.15 in column 6A, and $1,054.20 in column 6B (42 hours × $25.10). Page 2 lists the three plans and her $25.10 total hourly credit. The first worker in our Gusto sample file is set up like this, plus a four-hour Saturday overtime shift and two small extra fringe items.

Common mistakes

Questions

Can Gusto do certified payroll?

Gusto handles the payroll itself, including different rates per job, but it doesn't offer a built-in WH-347 report. Export and use a separate tool to fill the form.

Does this connect to my Gusto account?

No. It reads only the file you choose, in your browser. Nothing is uploaded to us or to Gusto.

Does Gusto make the California DIR XML?

Not that we know of. For California public works you can check an XML file with our free eCPR V2 checker, and our paid plan builds the XML from the same file you use for the WH-347.