Gross profit percentage is the single most important number in a painting contractor's business — and it's also the number most often calculated wrong. If you're checking your GP% at the end of a job and finding surprises, the problem isn't the math. It's what you're including in the calculation.
This guide walks through exactly how to calculate gross profit percentage for a painting contractor, what to include in cost of goods sold, and how to track it by job rather than just company-wide.
The formula
Gross profit percentage is straightforward:
Gross Profit % = (Revenue − Cost of Goods Sold) ÷ Revenue × 100
If you invoiced $85,000 on a job and spent $58,000 producing it, your gross profit is $27,000 and your GP% is 31.8%.
The formula is simple. The hard part is knowing exactly what belongs in "Cost of Goods Sold" — and getting consistent about tracking it.
What counts as Cost of Goods Sold for a painting contractor
COGS for a painting contractor includes every direct cost tied to producing the job — everything that wouldn't exist if the job didn't exist. Specifically:
- Direct labor — wages, payroll taxes, and workers' comp for painters and crew working on the job. This is usually the largest cost category and the one most often mishandled.
- Materials — paint, primer, caulk, tape, sandpaper, drop cloths, and any other materials consumed on the job.
- Subcontractors — any work subbed out to another company (pressure washing, drywall repair, scaffolding rental if subcontracted).
- Equipment costs directly tied to the job — equipment rental, lifts, sprayer rental for a specific project.
- Job-specific overhead — dump fees, parking, travel reimbursement for crew getting to the site.
What does NOT belong in COGS:
- Owner salary or management salaries not doing field work
- Office rent, utilities, insurance
- Marketing and advertising
- Company vehicles (unless directly tied to a specific job)
- Accounting, legal, software subscriptions
Those belong in fixed overhead (operating expenses), which affects net profit but not gross profit.
The most common mistake painting contractors make: not including direct labor burden (payroll taxes and workers' comp) in their job cost. Labor burden adds 20–30% to raw wages. If you're only tracking hourly wages, your GP% is overstated.
What GP% should a painting contractor be hitting?
Benchmarks vary by company size and market, but as a general guide:
- Below 30% — Danger zone. Fixed overhead will likely eat all gross profit leaving little or no net.
- 30–35% — Average for most painting contractors. Profitable if overhead is managed tightly.
- 35–42% — Strong. Indicates good estimating discipline and cost control.
- 42%+ — Excellent, typically achieved through specialization, premium positioning, or strong subcontractor management.
These are company-wide benchmarks. Individual job GP% will vary widely — commercial repaint jobs often run lower margins than new construction or specialty coating work.
Why tracking GP% by job matters more than company average
A company average GP% of 33% can hide serious problems. If 3 jobs are running at 42% and 2 jobs are at 18%, your average looks fine but two jobs are killing you. By the time you calculate the average, it's too late to fix the underperforming jobs.
Tracking GP% by job, updated as costs come in, lets you catch problems while the job is still active. If a job is tracking at 22% in week 3 of a 6-week project, you can take action — talk to the GC about change orders, adjust crew hours, or at minimum understand what went wrong so you don't repeat it on the next bid.
How to track job-level GP% in real time
If you're on JobTread, the platform tracks budget vs. actual costs per job. The key is making sure your cost entries are accurate and timely — labor logged daily, materials entered as they're purchased, subcontractor invoices recorded when received.
The gap most contractors have isn't the platform — it's that job costs in JobTread and revenue in QuickBooks aren't connected in a single view. You have to flip between two systems and do the math manually.
A live financial dashboard connected to both JobTread and QuickBooks shows your job-level GP% updated in real time — no exports, no manual calculations. You can see every active job ranked by margin and get alerted when a job drops below your target before the job closes.
Improving your GP%: where to focus
Three levers move GP% for a painting contractor:
- Estimating accuracy — most GP% problems start at the bid. If your estimates consistently undercount labor hours or materials, no amount of field efficiency will save the job. Tracking actual vs. estimated hours per job type, over time, is what tells you where your estimates are off.
- Labor efficiency — the ratio of billable hours (hours producing revenue) to total hours paid. If crew is on the clock for 40 hours but only 32 are producing revenue, you're absorbing 8 hours of unproductive time per person per week.
- Materials waste — paint overbuy is common and rarely tracked. Knowing your actual material cost as a percentage of contract value by job type tells you where waste is happening.
Want to track GP% by job in real time?
I build live financial dashboards for painting contractors — connected to JobTread and QuickBooks, showing job-level GP%, cost burn, and AR in one view. Starting from $3,500.