Service Contract Act wage floors, explained
On almost every federal cleaning, grounds, and guard contract there's a legal minimum you must pay — and it's higher than the headline wage. Here's the math.
The short version
- The Service Contract Act (SCA) sets a legal minimum you must pay workers on most federal service contracts — you cannot legally bid below it.
- The applicable wage determination (WD) is attached to the solicitation and lists an hourly rate plus a health & welfare (H&W) fringe for each labor category, by county.
- Your real labor cost is the base rate plus H&W plus payroll taxes and insurance — always well above the headline wage.
- Bidding under the floor gets you found non-responsive or, worse, in wage-compliance trouble after award. This is the number-one rookie mistake.
What the SCA is and why it exists
The Service Contract Act (formally the McNamara-O'Hara Service Contract Act) requires contractors on most federal service contracts over $2,500 to pay their service employees at least the prevailing wage and benefits for that job in that locality, as determined by the U.S. Department of Labor. The purpose is to stop contractors from winning federal work by underpaying the cleaners, groundskeepers, and guards who actually do it. For you as a bidder, the SCA is not red tape to resent — it's a floor that applies to every competitor equally, which means the winner is decided on efficiency and overhead, not on who is willing to pay people the least.
Where to find the wage determination
The government tells you which wage determination applies — you don't guess. Look in two places:
- The solicitation itself. The applicable WD is almost always attached to the RFP (often referenced under clause FAR 52.222-41 and listed in the attachments). This is the authoritative version for that contract.
- SAM.gov Wage Determinations. You can look up the current SCA determination for a county and service type directly at SAM.gov (the wage-determination search that replaced the old wdol.gov).
Use the WD number and revision date the solicitation names — determinations get revised, and pricing against an old revision can leave you under the current floor.
How to read a wage determination
A WD is a list of labor categories with, for each, an hourly wage. Above and around that list you'll find the benefit amounts. The parts that hit your cost estimate:
- The base hourly rate for the exact labor category you'll staff — "Janitor," "Cleaner," "Groundskeeper," "Guard I," and so on. Categories matter; a "Guard II" rate is higher than "Guard I."
- Health & Welfare (H&W) — a per-hour fringe benefit amount you must provide as bona fide benefits or pay out as cash. It's added on top of the base wage.
- Paid holidays and vacation — the WD specifies a number of paid holidays and a vacation schedule that scales with years of service.
- The federal contract minimum wage — a separate executive-order minimum that can apply on top; if it's higher than the WD base rate for a category, the higher one governs.
The math that actually matters: loaded labor cost
The headline wage is never your real cost. Your loaded (or "fully burdened") labor rate is what one hour of that worker truly costs you once you add everything the law and reality require on top of the base wage:
- Base hourly wage (from the WD)
- + Health & Welfare fringe (from the WD)
- + Employer payroll taxes — Social Security and Medicare (FICA, 7.65%), plus federal and state unemployment (FUTA/SUTA)
- + Workers' compensation insurance and general liability, which for cleaning/grounds work is a meaningful percentage of wages
- + Your overhead and profit margin, applied after the burdened labor cost
Say a WD lists a Janitor at $18.00/hr base with $5.00/hr H&W. Watch the number climb:
| Component | Per hour | Note |
|---|---|---|
| Base wage (WD) | $18.00 | The legal minimum for this category/county |
| Health & Welfare | + $5.00 | Paid as benefits or cash |
| Payroll taxes (~10%) | + $1.80 | FICA + unemployment, on the wage |
| Workers' comp + liability (~8%) | + $1.44 | Varies a lot by state and trade |
| Loaded labor cost | ≈ $26.24 | Before overhead and profit |
An owner who bids "$18 an hour plus a little" has already lost money — the true cost of that hour is over $26 before a dollar of overhead or profit. Add overhead and margin and a realistic billed rate might land around $30–34/hr. These figures are a made-up illustration to show the shape of the math; always run it with the actual WD rates and your own real insurance and tax percentages.
Why bidding below the floor gets you rejected
There are two ways this bites, and both are bad:
- Before award — non-responsive or price-realism failure. If your priced labor is visibly below what the SCA wage plus H&W would cost, a contracting officer can find your offer unrealistic or non-compliant and set it aside, even if it's the lowest number.
- After award — wage compliance enforcement. If you win on an impossible price and then actually underpay to survive, DOL can pursue back wages, penalties, and debarment. "I bid too low" is not a defense; you're still on the hook for the lawful wage.
The takeaway: the wage floor isn't the number to beat — it's the number to build up from. Start at the WD, load it honestly, add your overhead and margin, and only then compare to the historical award price. If a compliant price isn't competitive, that's not a pricing puzzle to solve — it's a no-bid signal.
Don't forget option-year escalation
Wage determinations get revised over a multi-year contract, and rates generally rise. When you price a base year plus option years, build in reasonable escalation for each option period so a WD update two years in doesn't quietly erase your margin. Pricing every year flat is a common and costly mistake.
Put it together
The wage floor is the foundation of every cleaning, grounds, and guard bid. Once you can read a WD and load the labor cost honestly, the rest of the bid/no-bid decision gets much clearer — and you can see it in action in our sample brief, where the wage math is what turns a vague solicitation into a confident number range.
Stop reading RFPs to find out they weren't worth it.
Every morning, BidBrief reads the new federal solicitations in your trade and states and sends you one page each: scope, the wage floor, who won it last, and a straight BID or SKIP. $249/month, cancel anytime.
See how it works →