Certified Payroll: Matching Stubs to WH-347
The WH-347 is a weekly summary. The pay stub is the record an auditor checks it against. Here's which columns tie out, and which ones don't.
This article is general information, not legal advice. It covers how a certified payroll report relates to the payroll records behind it. Classification questions specific to your contract go to the contracting officer, who owns the wage determination incorporated into it.
A first federal job usually goes the same way. You win the bid, you read the contract clauses, and somewhere in there is a line about submitting certified payrolls weekly. You find Form WH-347, you find a dozen guides explaining how to fill it out cell by cell, and you fill it out.
Then, sometimes a year later, an investigator asks for the payroll records behind the reports. That’s the moment the form stops being a form.
A certified payroll summarizes records you were already required to keep, and you sign it under a certification that carries federal false-statement and false-claims exposure. The report is not the record itself. An audit puts the two side by side: certified payrolls against the underlying payroll records and the actual pay stubs. Most of the job is knowing which columns are supposed to match and which ones are supposed to differ.
Certified payroll is a weekly statement, not a DOL filing
Davis-Bacon applies to federally funded or assisted contracts in excess of $2,000 for construction, alteration, or repair of public buildings and public works. On those jobs, laborers and mechanics are owed no less than the locally prevailing wage and fringe benefits, set by a wage determination incorporated into the contract. That is the Wage and Hour Division’s own summary of the coverage rule.
The Copeland Act, 40 U.S.C. § 3145, adds the reporting layer: a weekly statement of the wages paid to each employee during the preceding week. 29 CFR 5.5(a)(3)(ii) is the contract clause that makes it operational, requiring a certified payroll for every week in which covered work is performed.
Two things get turned around constantly.
The form itself is optional. Form WH-347 exists as a convenience, and any document carrying identical Statement of Compliance wording satisfies the requirement. That’s how a state agency or a general contractor can hand you their own template, or a portal to upload into. The weekly report and the signed certification behind it are what you actually owe.
The report also doesn’t go to the Department of Labor. It goes to the contracting federal agency when that agency is a party to the contract. Where the agency isn’t a party, as on federally assisted work, the certified payrolls go to the applicant, sponsor, or owner that maintains the records, and they transmit to the agency. Guides describing a DOL filing, or claiming DOL now mandates electronic submission, are describing a state program or an agency portal, not the federal form.
The form’s own paperwork burden estimate is 55 minutes per report, and that’s achievable only if the record underneath already carries the breakdown the form asks for. Most of the pain in certified payroll comes from discovering that the payroll behind it stored one blended rate and one aggregate hours figure.
Classification belongs to the row, not to the worker
Column 3 asks for the work classification, and the DOL instructions are precise about it: the classification for the work actually performed, taken from the wage determination in the contract. Your internal job titles don’t matter. “Field tech II” is not a classification.
Wage determinations are published on SAM.gov by locality and by craft, each classification carrying its own basic hourly rate and its own separate fringe rate. There is no national number to memorize. Any article that quotes you a prevailing rate is quoting a rate for somebody else’s job.
That leads to the rule first-timers miss. A worker who performs two classifications during the week gets two rows, not one. Each row carries its own classification, its own hours, and its own rate, and the hours have to be split accurately between them.
The consequence lands on the payroll record. If your system stores a single “regular hours” line for the week, you can’t produce that split after the fact without going back to daily time records and reconstructing it. Hours have to be captured by craft as the week happens. On the stub, that means separate earnings lines, one per classification at its own rate, rather than one line at a blended average.
The revised form also adds Column 2: a designation of J for journeyworker or RA for registered apprentice. Apprentice status isn’t a discount you can apply informally. The worker has to be enrolled in a program registered with the Office of Apprenticeship or a state apprenticeship agency, and the revised form asks you to name that program on page 2. No program detail, no supported apprentice rate.
One wage obligation, three columns
The prevailing wage obligation has two parts: a basic hourly rate and a fringe benefit amount. Both come from the wage determination. What varies is how you discharge the fringe half.
You can contribute to bona fide fringe benefit plans, funds, or programs and take credit for what you contribute. You can pay the fringe amount to the worker in cash instead, or do a mix, crediting part and paying the balance as cash. The revised WH-347 gives each of those its own column, which is a genuine improvement over the old slash notation that crammed a rate and a fringe figure into a single cell.
| Form column | What it holds | Where it lives on the pay stub |
|---|---|---|
| 6A Hourly wage rate paid | The cash rate actually paid per hour, with separate straight-time and overtime rows | The rate on the earnings line for that classification |
| 6B Total fringe benefit credit claimed | Contributions to, or reasonably anticipated costs of, bona fide plans, funds, or programs | An employer contribution line. It prints, but it doesn’t reduce net pay and isn’t employee earnings |
| 6C Payment in lieu of fringe benefits | The fringe amount paid to the worker as cash during the workweek | A taxable earnings line, treated like any other wages |
That last distinction is where stubs most often contradict their own certified payroll. Money in 6C is wages: it runs through gross pay, it’s subject to withholding, and it lands in net pay. Money in 6B never touches the worker’s net pay at all, because it’s employer-side spending shown on the stub for transparency. Blend the two into one figure and you get a stub that either overstates gross or understates the fringe credit, and neither version survives a line-by-line comparison.
Page 2 of the revised form pushes harder still. It asks for per-worker fringe plan detail: plan name, plan type, plan number, whether the plan is funded or unfunded, and the hourly credit claimed against it. A single lumped “fringes” number no longer satisfies the form. Claim credit for four plans and four plans get named.
Overtime, where the fringe rules stop being intuitive
CWHSSA overtime provisions attach where the prime contract exceeds $100,000, requiring not less than time and one-half the basic or regular rate for hours over 40 in a workweek.
The half-time premium is computed on the basic rate. It is not computed on cash paid in lieu of fringes. So an overtime hour is the basic predetermined rate, plus the half-time premium on that basic rate, plus the cash-in-lieu amount at its straight-time value.
Fringes, meanwhile, are owed for every hour worked, overtime hours included, but at the straight-time fringe amount. No premium on fringes, and no fringes skipped on overtime hours. Most guides state half of that pair and explain neither half, and the gap produces both underpayment findings and accidental overpayment.
The deduction column, and the trap of the wrong denominator
The most common certified payroll error lives in Column 8, and it’s the column the field walkthroughs hurry past.
The revised form splits gross into two columns. Column 7A is gross earned on this project. Column 7B is gross earned for all work during the week, covered and non-covered alike. Two different numbers, deliberately.
Now read the instruction for Column 8: deductions are those made from the worker’s total gross earned for all work, meaning Column 7B. And Column 9, net pay, is the actual dollar amount paid to the worker for all hours worked across all projects that week, including projects with no Davis-Bacon coverage at all.
So the right side of a WH-347 describes the worker’s week, not the project.
| Column | Reconciles to |
|---|---|
| 7A, project gross | The earnings lines on the stub tied to covered classifications, this project only |
| 7B, gross for all work | The stub’s gross pay for the week |
| 8, deductions | The stub’s total deductions for the week |
| 9, net pay | The stub’s net pay for the week |
Say a worker spent Monday and Tuesday on a federal job and the rest of the week on private work. Only 7A is project-scoped. Everything to the right of it is the whole paycheck. Contractors who force the deduction block to reconcile against project-only gross end up reporting a net pay that matches no check they actually wrote, and an investigator spots that on the first pass.
It’s also why a certified payroll ties out against a pay stub rather than a job cost report. The job cost report knows the project; only the pay record knows the week.
The sub-columns, and the Copeland Act test
Column 8 on the revised form breaks into Tax Withholdings, FICA, Other (must specify), and Total Deductions. “Other” is not a wastebasket. Anything landing there needs a description under Additional Remarks on page 2, or itemizing documentation attached if it bundles more than one deduction.
Then comes the legal layer. Except for the deductions listed in 29 CFR 3.5, every deduction requires prior approval from the Department of Labor, and the Statement of Compliance you sign attests that no rebates were taken and no deductions made other than those permissible under 29 CFR part 3.
The 3.5 list is short enough to print, and printing it beats the usual advice to “comply with the Copeland Act”:
| 29 CFR 3.5 | Permissible without approval |
|---|---|
| (a) | Deductions required by law, including federal and state income tax withholding and federal social security taxes |
| (b) | Recovery of sums already paid to the worker as a bona fide prepayment of wages, made without discount or interest |
| (c) | Payments to a third party required by court process, provided no part is returned to the employer |
| (d) | Contributions to funds providing medical or hospital care, pensions or annuities, death benefits, disability or sickness compensation, insurance, unemployment benefits, vacation pay, or savings, subject to the stated conditions |
| (e) | Credit union loan repayments and share purchases, at the worker’s request |
| (f) | Voluntary contributions to governmental or quasi-governmental agencies, such as the American Red Cross |
| (g) | Voluntary charitable contributions to 501(c)(3) organizations |
| (h) | Regular union initiation fees and membership dues under a collective bargaining agreement, not including fines or special assessments |
| (i) | Board, lodging, or other facilities at reasonable cost under FLSA standards |
| (j) | Safety equipment of nominal value bought by the worker for personal protection and not required by law to be furnished, with the worker’s consent or under a CBA |
Anything not on that list, including familiar items like a uniform charge or a tool deduction, needs an application to and approval from the Secretary of Labor before it belongs in Column 8.
The deduction categories on the stub start earning their keep here. A stub that separates tax withholding from pre-tax benefit deductions from after-tax deductions maps onto Column 8 directly. A stub with one undifferentiated “deductions” total does not, and if you’re unsure which side of that line an item falls on, pre-tax versus post-tax deductions is the ordering to settle first. Court-ordered payments deserve their own note: they sit in 3.5(c), they’re permissible without approval, and how a garnishment should appear on a stub covers the presentation.
The revised form, and why half the guides describe the old one
Search results for certified payroll are full of confidently outdated instructions right now.
The current form is marked Rev. January 2025, OMB Control No. 1235-0008, and it expires 01/31/2028. The prior version’s instructions print the same OMB number with an expiration of 09/30/2026, which is where the widely repeated “old form sunsets in September 2026” claim comes from.
What actually changed:
- The standalone signature page folded into the form itself
- Column 2 changed from number of withholding exemptions (which the old instructions described as a convenience field, not a Part 3 or Part 5 requirement) to the J / RA designation
- The worker’s name split into separate last name, first name, and middle initial fields
- The old slash notation, one cell holding a rate over a fringe figure and another holding project gross over total gross, gave way to discrete columns 6A / 6B / 6C and 7A / 7B
- Page 2 gained the per-worker fringe plan detail grid
And the change that most reliably exposes a stale guide: the Statement of Compliance no longer has paragraphs 4(a), 4(b), and 4(c). It’s a set of checkbox certifications now. If an article tells you to check box 4(a) when fringes go to approved plans, it was written for the pre-2025 form and nobody revisited it.
The penalty language is worth reading once, slowly. Willful falsification may be prosecuted under 18 U.S.C. § 1001 and 31 U.S.C. § 3729, the False Claims Act, and can support debarment from future federal contracts. The form also notes that certified payroll information may be disclosable under FOIA.
On that theme: DOL runs its own browser-based WH-347 generator, and the page states plainly that your data is processed in your browser and never leaves your computer. Keeping worker wage detail and identifying numbers on the machine that produced them is the government’s own posture on this form, not a vendor talking point.
What an audit compares, and the records behind the form
29 CFR 5.5(a)(3)(i) lists the basic records you have to maintain for every covered worker:
- Name, social security number, last known address, telephone number, and email address
- Correct work classification
- Hourly rates of wages paid, including rates of contributions or anticipated costs for bona fide fringe benefits or their cash equivalents
- Daily and weekly hours actually worked, in total and on each covered contract
- Deductions made
- Actual wages paid
Every column on the form is a projection of something in that list. An audit is the reverse operation, run line by line.
One asymmetry deserves care. Full Social Security numbers must not appear on the submitted form, which asks instead for a worker identifying number such as the last four digits. The full number does belong in the retained basic records. Certified payrolls travel by email, get uploaded into third-party portals, and may be FOIA-disclosable, so that split is a privacy control rather than a formality.
Retention runs on an unusual clock. Regular payrolls and other basic records must be preserved at least 3 years after all the work on the prime contract is completed, and 5.5(a)(3)(ii)(G) puts the certified payrolls themselves on the same timeline. The clock starts when the entire prime contract closes, not at the pay date and not when your own scope wrapped. A subcontractor who finished early can be sitting on those records far longer than expected.
A weekly tie-out you can run in five minutes
Before you sign:
- Does every row’s classification appear in the wage determination incorporated into this contract?
- Does any worker who changed crafts this week have a separate row per classification, with hours split accurately?
- Is every RA row backed by a registered program named on page 2?
- Does 6A plus 6B plus 6C for each classification meet or beat the determination’s rate plus fringe?
- Do the overtime rows apply the premium to the basic rate only, with cash in lieu at straight time?
- Does 7B equal the worker’s gross pay on the stub for the week, not just this project?
- Does Column 8 equal total deductions on the stub, and is every “Other” item on the 29 CFR 3.5 list or separately approved?
- Does Column 9 equal the net pay actually paid?
If steps 6 through 8 fail, the number almost certainly came out of a project report instead of the payroll record. And if a report is already submitted and wrong, correct the underlying record first and resubmit the week, the same sequence described in how to correct a pay stub.
The record the form is derived from
No tool certifies on your behalf. The signature on page 2 is yours, and Payslip44 doesn’t file certified payrolls. It builds the per-worker record the form is derived from and audited against.
Separate earnings lines keep a base rate and a cash-in-lieu-of-fringes line distinct instead of collapsing them into one blended rate. Employer contribution lines print without reducing net pay, the natural home for a fringe credit claimed in 6B. Deductions carry tax, pre-tax, and after-tax categories, which is the split Column 8 asks for. Year-to-date columns carry across periods, decimal money math keeps totals from drifting a cent at a time, and reusable employer and employee templates mean the same crew details aren’t retyped every Friday. All of it stays on device.
The export side matters more than it sounds. A weekly certified payroll worksheet gets assembled in a spreadsheet, not a PDF viewer, so CSV of the line items is what saves the hour, while the PDF is what goes in the audit file. Which export format goes where walks through the choice.
The part worth remembering
Field walkthroughs go stale the week the form is revised. The version of this skill that survives a revision is a much smaller thing.
The left side of the form describes a project, the right side describes a paycheck, and the whole document is a claim about records you have to be able to produce three years after the prime contract closes.
Get the underlying record right, week by week, and the form is 55 minutes of transcription. Get it wrong and it’s a signed statement about numbers you can’t back up.
Frequently Asked Questions
What is Form WH-347 certified payroll?
It's a weekly report of the wages paid to each laborer and mechanic on Davis-Bacon covered work, signed with a Statement of Compliance. The Copeland Act (40 U.S.C. 3145) requires the weekly statement, and 29 CFR 5.5(a)(3)(ii) makes it a contract clause. Use of the WH-347 form itself is optional, since any document with identical certification wording works, but the weekly submission is not optional.
Do certified payroll reports have to match employee pay stubs?
Yes, but not every column matches the same thing. Column 7A is gross earned on the covered project only, so it ties to a slice of the stub. Columns 7B, 8, and 9 (gross for all work, deductions, and net pay) are whole-week figures across every project, so they tie to the pay stub's gross, total deductions, and net pay. Reconciling the deduction column against project-only gross is the most common certified payroll error.
How do fringe benefits get reported on prevailing wage jobs?
The revised form splits them across two columns. Column 6B is the total credit claimed for contributions to, or anticipated costs of, bona fide fringe benefit plans, funds, or programs. Column 6C is cash paid to the worker in lieu of fringes. Page 2 also asks for per-worker plan detail: plan name, type, number, funded or unfunded status, and the hourly credit claimed.
Who do you send certified payroll to, the DOL or the contracting agency?
The contracting federal agency, when that agency is a party to the contract. On federally assisted work where the agency isn't a party, the certified payrolls go to the applicant, sponsor, or owner that maintains the records, and they transmit to the agency. Certified payrolls are not filed with the Department of Labor by default, despite what several vendor guides say.
Do I have to put full Social Security numbers on the WH-347?
No. The submitted form asks for a worker identifying number, such as the last four digits, and full Social Security numbers must not appear on it. The full number does belong in the basic records you retain under 29 CFR 5.5(a)(3)(i). That split matters because certified payrolls get emailed to general contractors, uploaded to portals, and may be disclosable under FOIA.
What deductions are allowed on certified payroll without DOL approval?
Only the ones listed in 29 CFR 3.5: deductions required by law (income tax withholding, Social Security), recovery of a bona fide prepayment of wages, court-ordered payments to third parties, contributions to qualifying benefit funds, credit union loans and shares, voluntary contributions to governmental or quasi-governmental agencies, voluntary charitable contributions to 501(c)(3) organizations, union dues and initiation fees under a CBA (not fines or special assessments), board and lodging at reasonable cost, and nominal-value safety equipment not required by law. Everything else needs prior approval from the Secretary of Labor.
Is overtime on a prevailing wage job calculated on the fringe amount too?
No. The half-time premium is computed on the basic or regular rate only. Cash paid in lieu of fringes is paid at its straight-time value for every hour, including overtime hours, and fringe obligations are owed for all hours worked but never at a premium. CWHSSA overtime provisions attach where the prime contract exceeds $100,000.
What happens if a worker performs two classifications in the same week?
That worker gets a separate row per classification, each with its own rate and its own accurate hours breakdown. Internal job titles are irrelevant; the classification comes from the wage determination incorporated into the contract. The practical consequence is that the underlying payroll record has to track hours by craft as the week happens, not as one aggregate regular-hours figure.