GroundworkGroundwork
People & Payroll

Generate certified payroll (WH-347)

Who can do this: Payroll or Compliance

Before you begin

Certified payroll only works if the inputs are right, so confirm three things first. Every employee on the job has a craft classification on their employee record. The project is flagged as prevailing-wage work and carries the correct wage determination (the federal Davis-Bacon determination for the county and construction type, plus any state schedule that applies). Time for the week is entered and approved, since the WH-347 is generated from entries rather than typed.

Steps

  1. Go to Compliance → Certified Payroll → New Payroll Report and select the project and the payroll week ending date.
  2. Groundwork resolves the applicable wage floor per craft. Where a federal Davis-Bacon determination and a state schedule both apply, the higher of the two governs per craft, checked craft by craft rather than as a blanket rate for the job.
  3. Review each employee's line: hours by day, straight time and overtime, base rate, and fringe benefits. Fringes are tracked separately from base rate, which is what a DOL audit actually examines.
  4. Resolve any flagged underpayment. An employee paid below the resolved floor for their craft is flagged before the report generates, not after it's been filed.
  5. Enter the deductions and net pay figures for the week.
  6. Add the Statement of Compliance, signed by an authorized officer of the company. The statement is part of the filing, not an optional cover page.
  7. Generate the WH-347 PDF and submit it to the contracting agency on their required schedule (weekly, for most federally funded work).

What happens next

Each week's report is sequenced, so a gap in the numbering is visible. On work where you hold lower-tier subcontracts, wage flowdown tracking shows which subs owe you their own certified payroll for the same week, which is your exposure if they don't produce it. Missing sub payrolls on a federal job land on the prime, so the register is worth watching weekly rather than at closeout.

Where the record lives

Every generated WH-347, its underlying time entries, the wage determination in effect at the time, and the signed statement of compliance are retained under Compliance → Certified Payroll. Retention matters here: federal record-keeping requirements run years past project completion, and the retention schedule handles the disposition timing rather than leaving it to memory.

Troubleshooting

An employee shows a wage underpayment flag but was paid correctly: check the craft classification on their employee record first. A laborer classified as a carpenter gets checked against the carpenter floor and will flag every week until the classification is fixed.

Fringe amounts look wrong: confirm whether fringes are paid in cash or to an approved plan. Both satisfy the requirement, but they report on different lines, and combining them into the base rate is the error that most often triggers a finding.

Hours don't match the job cost report for the same week: both read the same time entries, so a mismatch almost always means the payroll week ending date and the job cost period boundary don't line up rather than that either number is wrong.

Still stuck?

Send this straight to support (it goes directly to support@groundworkai.io).