The shingles are delivered, rain has stopped tear-off, and the customer is questioning an invoice for work they cannot see. Roofing progress billing fixes that problem by tying each invoice to an agreed stage and a record that proves the stage was reached.
The payment schedule should follow the roof. Not the calendar. Define the work, set visible milestones, name the proof, and bill only when the trigger is complete.
Fix the replacement scope before setting the payment schedule
You cannot build a clean payment schedule from a vague scope. Settle what you are replacing, what stays, and what happens when the crew finds concealed damage.
Walk the property before you price it. Record the roof areas, slopes, penetrations, edges, drainage points, access limits, landscaping protection, and disposal route. Name the specified roofing system and the parts included with it.
Write whether the work includes tear-off, deck inspection, underlayment, flashings, ventilation, edge metal, penetrations, cleanup, temporary protection, and closeout documents. List exclusions beside the included work. Do not hide them in a note at the bottom.
If the quote includes an uncertain material selection or another defined allowance, state what the allowance covers and how you will reconcile it. The contractor allowance pricing guide explains how to keep an allowance visible without treating it as permission to perform unapproved extra work.
Decide who handles permits and inspections
Ask the local building department (opens in a new tab) whether the replacement needs a permit or inspection. Write down who will arrange each item and what record closes it.
Do this before you make an inspection a billing trigger. An inspection controlled by an outside office may not happen on your preferred date. The schedule should distinguish work completion from inspection status instead of pretending they are the same event.
Check the license for the exact roofing work
Construction licensing requirements differ by state, locality, and the work being performed. Use the official state and local government directory (opens in a new tab) to find the state or local authority that licenses this exact roofing work, then ask which license covers the proposed replacement and write down the answer.
Do not use a permit approval as proof that your business holds the required contractor license. The local building department handles permit and inspection questions. The authority that licenses the roofing work handles the license question.
Build roofing progress billing around proof gates
A useful milestone has four parts: included work, invoice trigger, amount due, and proof. If any part is missing, the office and crew will read the schedule differently.
Good roofing progress billing uses stages that a customer, supervisor, or project manager can identify. Possible stages include contract acceptance, an agreed deposit, material delivery, tear-off and deck review, weather-tight work, installation, approved change work, cleanup, inspection status, and closeout.
Give every milestone a clear trigger
Avoid labels such as “job started,” “substantial progress,” or “roofing work.” They do not tell the customer what has happened.
Use specific trigger language. For example:
- The agreed material items and quantities are delivered to the stated location, checked for condition, and supported by a delivery record.
- Existing roofing is removed from the agreed roof areas and the exposed deck is photographed.
- The agreed roof areas are weather-tight, with temporary or permanent protection recorded.
- The specified roofing system is installed on the agreed roof areas.
- Contracted cleanup and punch work are complete, subject to any stated inspection status.
Do not make a calendar date the only trigger. Dates help you plan deliveries and crew time. They do not prove that the roof reached a billable stage.
Use a billing map before work starts
Put the roofer payment schedule beside the production plan. The crew should know which photos, delivery records, notes, approvals, and sign-offs the office needs before it sends an invoice.
Before work starts, add every milestone amount and check that the billings reconcile to the original contract amount. Show the deposit consistently as either part of that schedule or a credit against it so the customer is not billed for it twice.
Use this copy-ready structure:
Roof replacement billing map Customer: [customer name] Property: [job address] Accepted quote or contract: [document reference] Contract amount: [amount] Milestone: [plain-language stage] Included work: [work covered by this stage] Invoice trigger: [observable event that must be complete] Amount due: [fixed amount or contract calculation] Required proof: [photos, delivery record, crew note, inspection record, sign-off] Responsible person: [name or role that checks the proof] Payment term: [term stated in the signed contract] Approved change order reference: [reference or none] Previous invoices: [references] Recorded payments or credits: [references] Remaining contract balance: [amount after this invoice] Open work before next milestone: [specific work]
Make the production lead responsible for confirming physical work. Make the office responsible for checking the contract, earlier invoices, payments, credits, and approved changes. Do not let an invoice leave because somebody said the roof was “about done.”
Keep the billing map with the quote and production records using the roofing job tools. Assign the first proof record before the crew arrives.
Write the roofing deposit invoice against the signed contract
A roofing deposit invoice should point back to an accepted quote or signed contract.
Show the customer, property address, contract reference, job description, deposit purpose, amount requested, and payment term stated in the agreement. Describe what the deposit supports using the same language as the contract. Do not add a new promise on the invoice.
Record the deposit against the job when payment arrives. Later invoices should show it as a recorded payment or credit in the account, not as an unexplained reduction to the roof price.
Before setting the deposit amount, confirm deposit restrictions, required wording, and payment timing with the state contractor regulator that governs the job. If that regulator does not handle deposits, ask the state consumer-protection authority.
Send each progress invoice after its trigger is reached
Read the milestone language before preparing the invoice. Then compare it with the job record.
If the trigger says the roof must be weather-tight, a material delivery ticket is not enough. Match the record to the exact event.
A progress invoice should identify:
- The customer, property, and contract reference.
- The current milestone and work covered by it.
- The amount billed for that milestone.
- The original contract amount.
- Approved change orders recorded to date.
- Previous invoices.
- Payments or credits recorded.
- The balance remaining after the current invoice.
Attach only useful proof. Use dated site photos, delivery records, crew notes, disposal records, signed approvals, and inspection records when they support the trigger. A folder full of unrelated images makes the invoice harder to check.
If the roof is weather-tight but the office has no photo, crew note, or other agreed proof, hold the invoice long enough to fix the record. The physical work and the billing record must agree.
Use the invoice writing guide when setting the document fields and payment record. Keep the invoice description tied to the signed milestone language.
Handle materials and weather without billing past the work
Ordered, delivered, staged, and installed are different events. Pick the event that triggers payment and put it in the contract before ordering materials.
For a delivery trigger, the contract should also state what happens to the billing record if materials are moved, damaged, or returned. Record each event against the agreed item list, quantities, delivery location, and condition.
If materials are at the property but rain has pushed tear-off back, check the signed milestone. A delivery-based milestone may be ready if the stated materials arrived and the required proof exists. An installation-based milestone is not ready.
Do not rename delivered materials as installed work to release an invoice. That creates a dispute now and a reconciliation problem later.
Record weather shutdowns with the date, roof condition, temporary protection, material condition, work stopped, and restart requirement. Keep the customer update with the job record. The roofing bad-weather plan gives the crew a practical stop, secure, and restart process.
A weather delay moves the production sequence. It does not automatically move the billing trigger. Update planned dates, protect the property, and leave the next invoice tied to completed work.
Use the same pause protocol for a permit hold, customer-requested stop, missing selection, unsafe access, or material shortage. Record the roof condition, protection in place, stored materials, incomplete milestone, restart trigger, and any written schedule revision before the crew leaves.
Put concealed deck work through a change order
Tear-off exposes conditions that were hidden during the inspection. Damaged decking, altered flashings, and concealed penetrations can sit outside the signed scope.
When the crew finds extra work, stop the affected area. Photograph the condition. Describe the extra labor and materials. Price the work. Get the customer’s approval in a change order before continuing.
If immediate work is necessary to secure the property, limit it to that purpose and follow the authorization process allowed by the contract and applicable rules. Do not assume the emergency work is billable without approval.
Keep the change order beside the original roofer payment schedule. Show whether it changes a milestone amount, creates a separate invoice, or changes the remaining balance. Do not rewrite the original contract amount and make the change disappear.
Worked example: keep the original quote and change separate
The house example is an electrical job, but the document control applies to roofing.
R. Chen at 14 Oak Street accepted quote Q-1847 for 1,105. The work covered a bathroom exhaust fan and four LED downlights. The ceiling was lined, and the quote excluded chasing.
Extra cable and chasing became an approved 160 change order. Invoice INV-1847 was 1,265. The original quote stayed at 1,105, while the approved change explained the difference.
Use the same discipline for concealed deck repairs. Keep the signed roof scope intact. Add the approved work as a change order. Carry both records into the next progress invoice and final account.
Prepare the roofing final invoice from the closeout record
Do not prepare the roofing final invoice from memory. Open the contract, change orders, earlier invoices, payment record, punch list, and promised closeout documents.
Walk the job first. Check contracted cleanup, debris removal, roof details, property protection, and open punch work. Record the status of any permit inspection without calling it complete before the local building department has completed its part.
Deliver the documents promised in the contract. These may include product records, maintenance information, photos, disposal records, approvals, or inspection records. Use only the documents named for that job.
The roofing final invoice should reconcile:
- The original contract amount.
- Each approved change order.
- Previous progress invoices.
- Recorded payments and credits.
- The current final billing amount.
- The balance due.
Do not bill an open punch item as complete. Either finish it before final billing or describe the agreed treatment in writing. A clean final account should let the customer trace the balance without reconstructing the whole job from emails.
Job-cost the replacement after billing closes
Billing tells you what you invoiced. Job costing tells you what the work consumed. They are not the same record.
Collect actual labor, materials, disposal, equipment, subcontractor, and allocated overhead costs. Use the job-costing explainer to keep cost buckets consistent from estimate to closeout.
Compare estimated and actual cost in each bucket. Separate base-scope costs from change-order costs, find unassigned receipts and labor entries, include outstanding supplier and subcontractor commitments, and explain each material variance before closing the job.
Worked example: invoice value is not profit
On the Oak Street example, the original quote was 1,105. Job cost was 850, so profit against that original quote was 255. Margin was 255 ÷ 1,105, or about 23%. Markup was 255 ÷ 850, or 30%.
The final invoice was 1,265 because it included the approved 160 change order. The costs of that change are not given, so roofing progress billing and job costing must stay in separate records. Before closing the job, assign every receipt and labor entry to the base scope or approved change and investigate anything left over.