What an roofing invoice is for
An invoice is not a quote with the word changed. It is a payment demand, and it needs the things that actually get you paid: a due date, accepted payment methods, a reference back to the approved quote, and late terms you are prepared to enforce.
For roofers selling to homeowners, HOAs, and commercial building owners, the invoice is usually the only thing the customer compares side by side against two competitors. It is doing sales work whether you designed it to or not.
The unit that trips this trade up: Roofing prices per square (100 sq ft) — quoting per square foot by accident is a 100x error, and it happens.
What every roofing invoice must have
- An invoice number and issue date, distinct from the quote it came from
- Payment terms and a specific due date, not just "net 30"
- Accepted payment methods and a link or QR code that lets them pay now
- A reference to the approved quote or work order it came from
- Late fee terms, stated before they are needed
What roofers bill for
These are the lines that show up on most roofing invoices, with the unit each is normally priced in. Ranges are illustrative planning figures, not market data — your own costs, region, and margin decide the real number.
| Line item | Unit | Typical range |
|---|---|---|
| Tear-off — per layer | square | $75–$200 |
| Asphalt shingle, supplied and installed | square | $400–$750 |
| Concrete or clay tile, installed | square | $900–$2,200 |
| Flat / TPO / modified bitumen | square | $550–$1,200 |
| Underlayment and ice-and-water shield | square | $60–$180 |
| Decking replacement (as needed) | sheet | $75–$180 |
| Flashing, vents, and pipe boots | each | $45–$350 |
| Dumpster and disposal | each | $400–$1,200 |
Typical deposit convention: Materials deposit at scheduling, balance on completion and final inspection.
Roofing invoice example
A realistic job, priced line by line, with the arithmetic shown the way a customer sees it:
| Description | Qty | Unit price | Line total |
|---|---|---|---|
| Tear-off — one layer, 22 squares | 22 | $110.00 | $2,420.00 |
| Architectural asphalt shingles installed — 30-yr | 22 | $545.00 | $11,990.00 |
| Synthetic underlayment and ice-and-water shield | 22 | $95.00 | $2,090.00 |
| Ridge vent, pipe boots and flashing | 1 | $780.00 | $780.00 |
| Dumpster, disposal and magnetic nail sweep | 1 | $850.00 | $850.00 |
| Subtotal | $18,130.00 | ||
| Tax (7.75%) | $1,405.08 | ||
| Total | $19,535.08 | ||
Notice that every assumption is a line rather than a conversation. That is the whole difference between an invoice that holds up and one that gets renegotiated in a driveway.
Three mistakes that cost roofers money
No decking allowance
You cannot see rotten decking until the old roof is off. Every roofing quote should carry a per-sheet decking price and a stated number of sheets included, so replacement is arithmetic instead of an argument on the driveway.
Not stating layer count
Tear-off price doubles on a second layer. If you quoted assuming one layer, say so on the document — 'price assumes one existing layer' is a single sentence that protects thousands of dollars.
Vague warranty language
Manufacturer material warranty and your workmanship warranty are different things with different terms. Customers hear '30-year roof.' Write both out separately.
How to send an roofing invoice in about a minute
A template is only half the job — the invoice still has to reach the customer in a form they can act on. With SendQuoteNow you add the customer, add your line items, and hit send. Your customer gets a branded PDF plus a link where they approve or decline with one click, and you get an email the moment they do.
- Your branding, not ours — your logo, business name, contact details, and terms on every document.
- From your phone — build and send the invoice before you leave the customer's property.
- One-click approval — no login or account needed on your customer's side.
- Automatic math — subtotal, tax, and discounts calculated as you type.
- Invoice → invoice — convert accepted work into an invoice without retyping it.