How to charge for permit fees: pass the permit fee itself through to the customer at actual cost, then bill permit handling as its own priced line item. The fee is the small number. The labor to fill out the application, pay it, schedule the inspection, wait around and meet the inspector is the expensive part — commonly $150 to $300 per permit at loaded field rates. Most shops recover the first number and quietly eat the second.
Permit fees are a pass-through. Permit handling is a service.
Those are two different things, and collapsing them into one line is why permits feel like a loss on every job that needs one.
The permit fee is money you hand to a building department. It varies enormously by jurisdiction. According to 2026 permit cost data from HomeGuide, the national average building permit runs about $1,688, with most homeowners paying between $525 and $3,114. For the routine trade permits field-service shops pull, the numbers are much smaller: Angi's 2026 figures put HVAC permits at roughly $250 to $400, plumbing permits anywhere from $50 to $500, and electrical permits from $40 to $500. ServiceTitan's estimating guidance puts permit and inspection fees at 0.5% to 2% of total project cost on residential work.
Permit handling is your people's time. That time has a fully burdened cost, the same as any other hour you sell, and unlike the permit fee it never shows up on a receipt you can staple to the invoice. So it disappears.
If a permit line on your quote shows the exact dollar amount the city charged, you are billing the cheap half of the job and donating the expensive half.
What pulling a permit actually costs you
Break it into the four costs that are real on every permitted job. These are the ones shops routinely fail to price:
- Application and submission time. Portal login, scope description, equipment specs, load calcs, uploading documents, paying the fee. Twenty minutes on a water heater swap, two hours on anything with plan review.
- Scheduling and coordination. Booking the inspection window, calling the homeowner to confirm access, rescheduling when the inspector slips a day.
- Inspection attendance. A tech standing on site inside a four-hour window instead of running the next call. This is the single largest cost and the one almost nobody bills.
- Rework risk. Corrections, resubmittals and re-inspections. Re-inspection fees commonly run $50 to $150 — Goochland County, Virginia, for example, charges $100 once an inspection fails twice for the same task — and a rejected application adds roughly $75 to $200 of rework time on top.
Put real numbers on it. Assume a fully burdened office rate of $55/hour and a fully burdened field rate of $95/hour. If you have never calculated those, start with your labor burden rate — using a raw wage here will understate every figure below by 25% to 40%.
| Cost component | Simple permit | Standard permit | Complex permit |
|---|---|---|---|
| Office time | 0.5 hr = $28 | 0.75 hr = $41 | 2.0 hr = $110 |
| Field time at inspection | none | 1.0 hr = $95 | 2.5 hr = $238 |
| Rework risk (probability x cost) | 10% x $100 = $10 | 20% x $120 = $24 | 40% x $150 = $60 |
| True handling cost | $38 | $160 | $408 |
A "simple" permit is a same-day online pull with no inspection meet — a like-for-like water heater replacement in a permissive jurisdiction. "Standard" is an online application plus one inspection you attend: most HVAC changeouts and panel swaps. "Complex" means plan review, multiple inspections, or coordination with a utility: new installs, repipes, service upgrades.
Should you mark up permit fees?
Short answer: no, and you do not need to. Marking up a number the customer can look up on the city website invites an argument you cannot win, and on any cost-plus or government contract the markup may be restricted by the contract terms outright. Check your own agreement language and your state licensing board before adding a percentage to a government fee.
You do not need the markup because the handling line does the work. A 25% bump on a $185 permit is $46. A properly priced handling line on the same job is $265. The markup is a rounding error next to the labor you are already giving away.
The contractors who get this right say it plainly on the quote: the permit fee is listed at cost, and permit handling is listed as a service with a price. Customers argue with markup. They rarely argue with a service line that has an obvious deliverable attached to it.
Build a permit handling item in your price book
Take the true handling cost from the table above and price it to your target margin, exactly as you would any other service. At a 40% gross margin target, the math is cost divided by 0.60 — not cost times 1.40, which is the single most expensive arithmetic mistake in the trades. If that distinction is fuzzy, read markup vs margin for contractors or run the numbers through the free margin and markup calculator.
| Price book item | Typical jobs | Handling cost | Price at 40% margin |
|---|---|---|---|
| Permit handling - simple | Water heater swap, like-for-like fixture replacement | $38 | $65 |
| Permit handling - standard | HVAC changeout, panel swap, single-trade repair permit | $160 | $265 |
| Permit handling - complex | New install, whole-home repipe, service upgrade | $408 | $675 |
| Permit fee (pass-through) | All permitted work | Actual | Actual, at cost |
| Re-inspection - customer caused | No access, work not ready, homeowner-supplied part | $95 | $160 |
Two details that matter more than the numbers themselves.
Make the permit fee a zero-margin item, not a typed-in number. If your team retypes the fee on every quote, someone will eventually type it wrong or forget it. A dedicated pass-through line with a cost field that gets updated per job keeps it visible and keeps it out of your margin reporting, where a $185 zero-margin item would otherwise drag your blended numbers down for no reason.
Split customer-caused re-inspections from your own. If your work failed, you eat it — that is warranty, and it belongs in your callback loading, not on the customer's invoice. If the inspector could not get in, or the homeowner's own part was the problem, that is a billable trip. Having the item already in the price book is what makes the conversation easy on the day.
Four permit mistakes that quietly cost real money
- Quoting a permit fee from memory. Fee schedules change and they are valuation-based in many jurisdictions, so the same equipment costs more to permit this year than last. Pull the current schedule from the building department before the quote goes out, not after the job is sold.
- Burying permits in overhead. If permits are "covered by our markup," they are covered by every customer including the ones who never needed a permit — which means you are overcharging simple jobs and underpricing permitted ones. Same failure mode as burying consumables instead of running a real shop supplies fee.
- Not billing inspection attendance. A four-hour inspection window costs you a half day of a technician's capacity. That is the most expensive hour on the job and the one that almost never appears on an invoice.
- Letting the customer pull the permit to save money. In most jurisdictions, whoever pulls the permit is the responsible party of record. A homeowner-pulled permit can shift liability onto someone with no license and no insurance, and it can void your workmanship warranty. The savings are not worth the exposure.
Keeping it current
Permit handling prices go stale the same way every other price does — quietly, and all at once. Two triggers should send you back to these items: your burdened labor rates changed, or a jurisdiction you work in republished its fee schedule. Both usually happen at the start of a calendar year, which makes permit items a natural addition to whatever repricing pass you already run. A master price book like Pricebookr lets you update the labor assumption behind a group of items once and push the new prices out rather than editing them one at a time.
FAQ
Should contractors mark up permit fees?
Generally no. The permit fee is a public number the customer can verify, so marking it up invites a dispute over a small amount of money, and cost-plus or public contracts often restrict markup on government fees. Pass the fee through at actual cost and recover your time through a separate, properly priced permit handling line instead.
How much do contractors charge to pull a permit?
Most shops charge somewhere between $65 and $675 for permit handling, on top of the permit fee itself, depending on complexity. A same-day online pull with no inspection to attend sits near the low end. A permit requiring plan review and multiple inspections sits at the high end. Price it from your own burdened labor cost rather than copying a competitor's number, since inspection wait times vary hugely by jurisdiction.
Who pays for a re-inspection fee?
If the work failed inspection, the contractor almost always absorbs both the re-inspection fee and the cost of correcting the deficiency — that is a warranty cost and belongs in your callback loading. If the failure was outside your control, such as the inspector being unable to access the property or a customer-supplied part not meeting code, that is a legitimate billable return trip.
Can I let the customer pull their own permit?
You can in many jurisdictions, but it is usually a bad trade. The permit holder is typically the responsible party of record, so a homeowner-pulled permit can place liability on an unlicensed, uninsured person and may complicate your warranty and your insurance coverage if something goes wrong. Check your state licensing rules — some states prohibit it for work performed by a licensed contractor.
Do permit fees need to be itemized separately on an invoice?
Requirements vary by state and by contract type, but itemizing is the better practice regardless. A separate at-cost permit line plus a separate permit handling line shows the customer exactly what went to the city and what they paid you for, which reduces disputes and makes the handling charge defensible. Confirm the disclosure rules that apply to your license and contract form in your state.