Pricing

How Much Should You Charge for Pressure Washing?

Build a price from your own costs, time and target margin instead of copying the cheapest quote in town.

Wamina Loop Team9 min readUpdated
Pressure washing contractor cleaning a concrete driveway, showing the priced result.

The $80 driveway that lost money

Jason started pressure washing driveways for $80 flat, matching a number he saw a competitor post online. The job took him two and a half hours once he accounted for loading the trailer, driving, setup, the wash itself, and cleanup. After gas, water, chemicals and wear on the surface cleaner, he cleared maybe $18 an hour — less than he'd make at a retail job, with none of the benefits.

He wasn't undercharging because customers demanded it. He was undercharging because he never actually calculated what the job cost him to run, and copied a number instead of building one.

This is the most common pricing mistake across every trade, not just pressure washing: owners set prices by looking sideways at competitors instead of looking down at their own cost structure. Two businesses with different overhead, equipment age and travel distances should almost never charge the same price for the 'same' job.

Why this is a profit problem, not just a pricing one

At $80 a job and 3 jobs a day, Jason's revenue looks fine on paper — $240/day, over $1,200 a week. But once true costs are subtracted, his actual take-home might be closer to $450 a week for full-time hours, which isn't sustainable once he needs to replace equipment or hire help.

Pricing from cost up, instead of copying competitors, is the single biggest lever in a business like this — a $30 pricing correction per job, applied across 12 jobs a week, is over $18,000 a year in recovered margin with zero extra jobs booked.

Underpricing also quietly caps growth. At $18/hour effective pay, Jason can't afford to hire a second person without losing money on every job that employee runs — the business is structurally stuck as a one-person operation until pricing is fixed, regardless of how much demand exists.

Build the number from the ground up

Work through this in order, and don't skip the true-cost step — it's the one most owners guess at.

  1. 1Calculate your true hourly cost: fuel, water, chemicals, equipment wear, insurance and travel time, divided into a target hourly rate.
  2. 2Find the time gap: track actual time per job type (small driveway, large driveway, house wash) instead of guessing.
  3. 3Decide your price: multiply true hourly cost by expected hours, then add your target margin — don't just match the lowest local quote.
  4. 4Monitor monthly: track average job value and adjust once you can see which job types are actually profitable.

Know your true hourly cost

Add fuel, water, chemicals, equipment wear, insurance and unpaid travel time before you decide what an hour is worth. Most pressure washers forget to price in surface cleaner replacement, hose wear, and the drive between jobs — all real costs that eat into the number on the invoice.

Cost itemAmount
Fuel + water$12
Chemicals$8
Equipment wear (allocated)$10
Insurance (allocated)$6
Labor at target $35/hr x 2.5 hrs$87.50
Total true cost$123.50
Sample cost breakdown — 2.5 hour driveway job

Price the job, quote the outcome

Customers buy a clean driveway, not an hourly rate. Quote a fixed number for a defined scope, based on the true cost above plus your margin — in Jason's case, that driveway needed to be priced closer to $150, not $80.

Charge for the hard parts

Height, access, heavy staining, oil spots, and disposal all add time. Price them explicitly as add-ons rather than absorbing them into the base price, so a stained or hard-to-access job doesn't quietly become unprofitable.

  • Second-story or ladder work: add a flat access fee
  • Heavy oil stains or rust: quote a separate treatment charge
  • Long driveways or large square footage: price per square foot above a base size

What to say when a job turns out bigger than quoted

This happens constantly in pressure washing — a driveway that looked lightly stained turns out to have years of set-in oil that needs a second treatment pass. Stop before doing the extra work and say it plainly: "This oil staining is heavier than what the quote covered — I can do a deep treatment pass for an extra $45, or leave it as-is after the standard wash. Your call." Naming the extra cost before doing the work, not after, is what keeps this from becoming a dispute.

For jobs that are meaningfully bigger across the board — a 'driveway' that's actually a driveway plus a full patio and walkway — requote before starting rather than eating the difference. A five-minute walk-around at arrival, before equipment comes off the trailer, catches almost all of these before they become a problem.

How other trades apply the same logic

The true-cost-up method isn't unique to pressure washing. A handyman pricing a $300 quoted job that runs long due to an unexpected wall condition should flag it mid-job the same way. An HVAC tech quoting a tune-up that turns into a part replacement should stop and requote before ordering the part. A painter who quoted two coats but finds the surface needs a primer coat first should explain the extra coat's cost before starting it, not fold it silently into unpaid overtime.

In every case, the pattern is identical: calculate true cost first, quote a fixed price for a defined scope, and treat anything outside that scope as a explicit, named add-on rather than something absorbed quietly into thinner margin.

Review your numbers each season

Track your average job value and adjust once you can see what actually pays. Fuel and chemical costs shift seasonally, and a price that worked in spring can quietly lose money by late summer if it's never revisited.

Common mistakes to avoid

  • Copying a competitor's price instead of calculating your own true cost
  • Forgetting to price in equipment wear, chemicals and unpaid travel time
  • Absorbing hard, time-consuming jobs into a flat base price
  • Never tracking actual time per job type versus estimated time
  • Leaving prices unchanged season after season despite rising fuel and chemical costs
  • Doing extra work first and explaining the extra cost only on the final invoice
  • Quoting from a quick look instead of walking the full property before starting

Common questions

How do I know if my pressure washing prices are too low?
Calculate your true hourly cost including equipment wear and travel time — if your quoted price divided by actual job hours is below your target hourly rate, you're underpriced.
Should I price pressure washing by square foot or flat rate?
Flat rate works well for standard driveways and walkways; square-foot pricing is better for larger or highly variable jobs like commercial lots or large houses.
How do I raise prices without losing all my current customers?
Raise prices on new bookings first, give existing customers advance notice, and lead with the value — most stay if the work quality is consistent.
What if a job turns out much bigger than what I quoted?
Stop and name the extra cost before doing the extra work — a mid-job requote, explained plainly, is far better received than a surprise on the final invoice.

Try this today

  • Calculate your true hourly cost this week, including all overhead and travel time
  • Time your next five jobs accurately instead of estimating
  • Add explicit access and staining fees to your quote template
  • Recalculate your standard driveway and house-wash prices from cost up
  • Set a quarterly reminder to review pricing against current fuel and chemical costs
  • Build a 5-minute arrival walk-around into every job before equipment comes off the trailer
  • Write a short script for flagging extra work mid-job so every technician uses the same wording

Price every job with real numbers, not guesswork

Calculate your true cost per job and see the margin before you send the quote.

Try the job pricing calculator
Where this happens in Wamina Loop
  • Revenue engine

    See booked revenue against your weekly goal and what's still on the table.

You may also find this useful