Free Contractor Estimate Template
An estimate is a written price you are offering before the work starts. The two things that decide whether it wins the job are how clearly it describes the scope and how obviously it expires.
Fill it in online Type your details in and download it already filled in.Download the blank template
Print it, fill it in by hand, or open it and type. Nothing to sign up for.
Free, no signup, no email, no watermark.
What a contractor estimate should contain
- Your business details and license number where required
- The customer name and the job address
- An estimate number and the date you wrote it
- A valid until date, because prices move and you should not be held to a number from six months ago
- Scope in plain language, line by line, so the customer knows what is and is not included
- What is explicitly excluded, which is the line that prevents most disputes
- Subtotal, tax, any deposit required to book the work, and the total
A finished contractor estimate, filled in
The same blank template above, with a real job in it. Read it next to the invoice example and the differences are the whole point: an estimate is an offer with an expiry date, and an invoice is a demand for money.
- It says ESTIMATE at the top, in that wordNot "quote", not "proposal", unless that is what you mean. In most states an estimate is a good faith price that can move and a quote is a fixed one you are offering to be held to. If you write quote on a document and the job comes in higher, you are arguing about the word.
- Valid until 20 October 2026The single most important field on the sheet and the one most estimates leave off. Shingle prices move. Without an expiry you have written an open ended offer, and the homeowner who calls in March holding a September price is not being unreasonable, they are reading what you gave them.
- Prepared for, not bill toSame block, different word, because nobody owes anything yet. Small thing, and it is the difference between a document that reads as an offer and one that reads as a demand.
- Twenty eight squares, priced three separate timesTear off, material and install labor are three different lines at the same quantity. That is not padding, it is what lets a homeowner compare your estimate against the other two they got. A single "roof replacement, $12,680" cannot be compared against anything, which is usually why it loses.
- A decking allowance, with the unit price printedYou cannot see rotten decking until the old roof is off, so you price the sheets you expect and print what an extra one costs. This line is the reason the job does not stop on day two for a phone call about money. It turns a surprise into a number that was already agreed.
- The assumption written in the notes"Price assumes one existing layer" is the clause that pays for itself the first time there are two. An estimate is only as firm as the conditions written under it, and the conditions have to be on the sheet the customer keeps, not in the conversation you had in the driveway.
- Deposit at signing, not deposit paidThe invoice example subtracts money already received. This one names money that will be due when they say yes. Same row in the template, opposite meaning, and the label is the only thing carrying it, which is why the generator lets you set it.
- On completion, in the shaded bandWhat they will owe at the end, so the deposit does not read as an extra charge on top. A homeowner comparing three estimates is comparing bottom lines, and yours should be the one where the bottom line needs no explanation.
- Nothing is due until the work is scheduledWritten on the document, not implied. It removes the only real fear a homeowner has about signing an estimate, which is that signing it is the same as owing it.
Do not price a roof off this. Shingle cost, tear off labor and dump fees vary by region and by the week, and the only number on this sheet that is true everywhere is that a second layer of shingles is a change order.
Estimate versus quote versus bid
In everyday use these three words overlap, and customers use them interchangeably. The practical difference is how firm the number is. A quote usually means a fixed price. An estimate usually means a considered approximation that can move if the scope moves. A bid is a price submitted in a competitive process, often to a general contractor or a public body.
Whichever word you use, write on the document what happens if the scope changes. One sentence saying that changes are priced in writing before the work is done saves an enormous amount of trouble.
Write an exclusions line, it wins arguments before they start
Most disputes are not about the price, they are about whether something was included. Permits, disposal, painting after drywall, moving furniture, parking, after hours work, unforeseen rot behind a wall. Name them.
"Excludes permit fees, asbestos or mold remediation, and any repair to structure found behind existing finishes" is a single line that has saved contractors thousands.
Put an expiry on every price you send
Material prices move. An estimate with no valid until date is an open ended offer that a customer can accept next spring at last summer's lumber price.
Thirty days is the usual default. If your material is volatile, say 14 days and say why.
Questions people ask
What is the difference between an estimate and a quote?
A quote is normally a fixed price you are committing to. An estimate is a considered approximation that can change if the scope changes. Customers use both words loosely, so what matters is that your document says what happens when the scope moves.
Should an estimate include a deposit?
If the job needs materials bought up front, yes. Many contractors ask for a deposit covering materials plus a small margin, then bill progress payments. Some states cap how much a residential deposit can be, so check your own.
How long should an estimate stay valid?
Thirty days is the common default. Shorten it when material prices are moving. Always put an actual date on it, not a number of days.
Can I turn this estimate into an invoice later?
Yes. The invoice generator uses the same line item structure, so you can retype or copy the accepted scope across and change the header.