How to write a contractor estimate
A good estimate does two jobs: it helps the customer say yes, and it settles arguments before they start. Here's what to put on one, in the order customers read it.
This is general guidance, not legal advice. Many states have their own rules for home improvement estimates and contracts (for example, showing a license number or including specific cancellation wording). Check with your state's contractor licensing board.
1. Your details and theirs
Put your business name, phone, email, and license number (if your trade and state require one) at the top. Then the customer's name, the job address, and the date. Give every estimate its own number so you can find it later and turn it into an invoice without retyping.
2. Scope of work, in plain words
Describe what you'll do the way the customer would say it: "Replace the kitchen faucet and both supply lines," not "R&R fixture." One or two sentences is enough. If the customer can't picture the finished job from this paragraph, rewrite it.
3. Line items
Break the job into a few lines the customer can follow. Most trades do well with one of these patterns:
- By task: demo, install, haul-away, cleanup. Easy to read and easy to drop a line if they want a lower price.
- Labor and materials: useful when material prices move a lot. Say whether materials are an allowance (for example, "fixture allowance up to $X; customer pays the difference").
- Options: good, better, best on the same estimate. Customers pick a line instead of deciding yes or no.
Avoid one lump sum for a big job. A single number invites haggling, and it makes it hard to show what changed later.
4. What's not included
This is the line that saves the most arguments. List the things a customer might assume are included but aren't: permits, patching and painting after the work, hauling old materials, work hidden behind walls, or moving furniture. If something might be needed but you can't tell yet, say how you'll price it ("Rotten subfloor, if found: $X per sq ft, approved before work").
5. Photos
A photo of the current condition on the estimate shows exactly what you looked at. It helps when the customer compares quotes, and it helps you if there's a dispute about what was there before.
6. Valid-until date
Material and labor prices change. Put a date on the estimate, such as 30 days out, after which you'll re-quote. It also gives a gentle reason to decide.
7. Deposit and payment terms
Say how much is due before you start, when the rest is due, and how they can pay. If you take card or app payments, put your business's own payment link or handle on the estimate so the deposit can be paid on the spot. Some states limit how large a deposit can be on home improvement jobs, so check your state's rules before you set one.
8. Changes and sign-off
Add one line on changes: "Changes to the scope will be priced and approved in writing before the work is done." Then a signature and date line for the customer. A signed estimate (or a written "yes" by text or email) is your record of what was agreed.
A short example
Example only: the business, job, and numbers are made up to show the layout.
| Item | Amount |
|---|---|
| Remove old vanity and faucet, cap lines, haul away | $180.00 |
| Install customer-supplied 36" vanity and top, new faucet and supply lines | $420.00 |
| Faucet allowance (up to $150; customer pays any difference) | $150.00 |
| Total | $750.00 |
Not included: wall repair or painting behind the old vanity, permits, flooring. Deposit $250 to book; balance due on completion. Valid for 30 days.
Write one now
Our free printable estimate template has every section above: fill it in on screen, then print it or save it as a PDF. Nothing is uploaded or stored. When the job's done, the free invoice template works the same way. Moving off Joist? Start with exporting your Joist data.
Want this on your phone?
Pencilslip is an estimates and invoices app for solo tradespeople that we're building now. It's planned to include photos on estimates, your own payment links, and estimates that turn into invoices without retyping. Join the list to hear when it's ready.