1. Define the job you are measuring
Use a consistent customer or project record for the work. Keep a roof replacement, later repair, and separate interior work distinguishable when they are separate jobs. Agree with the bookkeeper on the naming convention before records split across several versions of the same customer.
QuickBooks Online Plus and Advanced support Projects for tracking project income and costs. The setup and available reports depend on your subscription. See Intuit’s Projects setup guide for the current product workflow.
2. Match income and costs to the same scope
Review the transactions behind the total, not just the summary. Use the same reporting period and basis when comparing jobs, and flag unfinished work so it is not confused with a fully recorded, completed job.
| Record | What to check | Common gap |
|---|---|---|
| Customer invoices and credits | Correct customer, job, scope, and amount | Approved work not yet invoiced |
| Materials | Supplier bills, returns, and credits assigned consistently | Delivery billed after the initial review |
| Subcontractors and labor | Costs assigned using the company’s documented method | Labor recorded only at company level |
| Permits, disposal, and other direct costs | Job assignment and duplicate checks | Small costs spread across uncategorized transactions |
Do not invent allocations to make a margin appear complete. Keep unassigned costs visible and have the person responsible for the books resolve them.
3. Calculate profit and margin from complete inputs
Job gross profit = job revenue − direct job costs. Job gross margin = job gross profit ÷ job revenue × 100. This is not company net profit after all overhead.
Illustrative example, not a customer result: a job has $30,000 of revenue and $21,000 of recorded direct costs. The initial gross profit is $9,000 and gross margin is 30%.
If a $4,000 subcontractor bill was missing, actual direct costs become $25,000. Gross profit falls to $5,000 and gross margin becomes about 16.7%. The job did not suddenly become worse when the bill was entered; the earlier report was incomplete.
Check the denominator as well. A percentage with zero revenue is undefined, and a partially billed job can give a misleading comparison. Keep markup, gross margin, and company net margin clearly labeled.
4. Keep collections separate from profitability
An open invoice affects cash availability, while the job’s revenue and costs explain profitability under the selected accounting basis. A strong margin does not tell you when an insurance payment will clear.
Pair job reviews with the QuickBooks aging review and a weekly roofing cash flow forecast. If an approved supplement has no matching invoice, investigate the billing gap rather than simply adding the requested amount to revenue.
5. Review exceptions before ranking jobs
- Confirm the revenue and direct cost records belong to the same job.
- Check for missing bills, credits, duplicates, and unassigned transactions.
- Label whether the job and its accounting records are complete.
- Separate actual recorded results from budgets and estimates.
- Assign an owner to each unresolved issue before using the margin for a decision.
Keep a short exception list with the job, missing record, responsible person, and review date. This makes the next conversation with the bookkeeper specific.
How Odyssey Apex handles incomplete data
Odyssey Apex Insight reads the QuickBooks financial record and uses Trust Score together with customer-level invoice and cost tagging checks. Revenue can remain visible while costs and margin are limited when the data is not ready.
Odyssey does not currently compare actual job costs with the original estimating-system budget. Your roofing CRM remains responsible for production and estimating; QuickBooks remains the accounting record. Read the financial methodology to understand the reliability checks.
Roofing job costing questions
Does QuickBooks replace a roofing production CRM?
The workflows serve different purposes. Keep estimating, crews, and schedules in the production system while maintaining a consistent accounting record for job income and costs.
Why does a job show an unusually high margin?
Check missing or unassigned costs and the reporting basis before treating it as exceptional performance. The percentage alone does not prove the underlying records are complete.
Should I compare open and completed jobs together?
Label their status and record completeness first. An open job may still have substantial costs or billing to come, making an unqualified comparison misleading.
See roofing job costing software or review the complete platform and pricing.