Research by DoINeedAPermit Research Team · Updated May 2026
The Short Answer
Most roof replacements in Madison Heights require a permit from the City of Madison Heights Building Department. Full tear-offs and material changes always need permits; partial repairs under 25% of roof area may be exempt.
Madison Heights enforces Michigan's Residential Code (based on the 2015 and 2021 IRC editions) with no significant local amendments that loosen roof-replacement rules. What matters here is the city's actual enforcement of the three-layer maximum and its specific documentation portal. Madison Heights building inspectors are thorough on underlayment specs and fastening patterns — they will reject submittals that lack detail on ice-water-shield placement, which is critical in climate zones 5A (south Madison Heights) and 6A (north, toward Pontiac). The city building department has moved toward online plan-review for residential roofing, so submittals should include roof measurement, existing layer count, material spec, and fastening pattern upfront. Unlike some Michigan suburbs that allow over-the-counter reroofing permits for like-for-like tear-offs, Madison Heights typically requests a quick review before issuance — usually 1-2 business days for straightforward projects. If your roof currently has two layers of shingles, a tear-off-and-replace will trigger a permit and a deck inspection. If you're doing an overlay (no tear-off) and staying under 25% of roof area, you may skip the permit, but the city's definition of 'area' is based on plan-view square footage, not number of shingles — so verify your square count before claiming exemption.

What happens if you skip the permit (and you needed one)

Madison Heights roof replacement permits — the key details

The Michigan Residential Code, adopted by Madison Heights, requires a permit for any roof replacement that involves a tear-off-and-replace or a material change (shingles to metal, tile, etc.). The code specifically enforces IRC R907.4: 'If there are already two layers of roof covering on the structure, the existing roof coverings shall be removed before a new roof covering is applied.' This means if your inspection reveals three layers, the city will not issue a permit for overlay — you must tear off. Madison Heights building inspectors are trained to identify layer count during the permit review stage, often asking for a photo of a nail hole or section of the roof taken down to the deck. If you misrepresent the layer count on your application and the inspector discovers three layers on-site, the permit will be revoked and work must stop. Partial replacements — for instance, a new section of roof over a dormer or an addition — that do not exceed 25% of the total roof area are typically exempt from permitting in Madison Heights, provided they are like-for-like material. However, the 25% threshold is measured as a percentage of the entire roof's plan-view square footage (not just the affected section), so a 500-square-foot partial on a 2,000-square-foot roof (25% exactly) hits the line. Document your roof dimensions and existing square footage before claiming exemption.

Ice-water shield and underlayment specifications are non-negotiable in Madison Heights because of climate zones 5A and 6A, where freeze-thaw cycles and ice dams are common. The city enforces IRC R905.1.1, which requires underlayment beneath all roof coverings, and IRC R905.1.2 requires ice-water shield (a type of self-adhering synthetic underlayment) to extend from the eave line to a point at least 24 inches beyond the interior wall line of the building (or, in practice, at least 24 inches up the roof slope from the eave). Many rejected permit applications in Madison Heights lack this detail — contractors submit roofing specs without mentioning underlayment product name and placement. On your permit application or contractor's submittal, explicitly state: 'Ice-water shield: [brand and grade] extending 24 inches minimum from eave.' The city will also ask about fastening pattern (typically 8-12 nails per shingle in high-wind zones, 6 nails in standard zones). Madison Heights does not have a documented hurricane zone or special wind uplift requirement like Florida or coastal areas, so standard asphalt-shingle fastening is acceptable — but provide the pattern on the permit form anyway.

Madison Heights allows owner-builder permits for owner-occupied residential properties, which means you can pull a roof-replacement permit yourself without hiring a licensed roofing contractor. However, the city still requires an approved roofer or the homeowner to perform the work; you cannot hire unlicensed labor. If you hire a contractor, confirm they have a Michigan roofing license and current liability insurance before work starts. The permit application will ask for the contractor's license number and insurance card copy. If the contractor pulls the permit on your behalf (which is common), they are responsible for submitting the correct spec sheet and paying the permit fee — verify this before signing a contract, because a missed deadline or incomplete submittal will delay the project and potentially void the contractor's timeline guarantee. Madison Heights does not charge extra for owner-builder permits, but the city will schedule a deck inspection before the roofing work begins (to verify deck fastening and condition) and a final inspection after all work is complete. Both inspections typically occur within 2-5 business days of a request.

The permit fee in Madison Heights is typically calculated as a flat amount or a per-square charge. Based on recent city fee schedules, roof-replacement permits run $150–$350, depending on the roof size and whether deck repairs are identified during inspection. A 2,000-square-foot roof replacement (approximately 20 squares) with no deck work runs roughly $200–$250; if deck nailing or rotten boards are found, the fee may increase $50–$100. The city does not charge a separate fee for the inspection — it is included in the permit. Payment is due at the time of permit issuance, and the city accepts checks, credit cards, and in some cases online payment via their portal. Permit validity in Madison Heights is typically 12 months, meaning you have one year to start and complete the roof work. If work extends beyond 12 months, a one-time extension request (usually $25–$50) can be filed.

Timeline expectations: After you submit a complete application (with photos of existing layers, roof dimensions, material spec, and fastening pattern), Madison Heights typically issues a permit decision within 3-5 business days. For straightforward like-for-like tear-off-and-replace projects, the review is often same-day or next-day. Once the permit is issued, you can begin work immediately. The deck inspection is called in a few days before you lay new shingles — the inspector verifies that all deck fasteners are spaced per code (typically 12-16 inches on center in high-wind areas) and checks for rot or structural issues. If the deck passes, work continues. The final inspection occurs after all shingles are laid and flashing is sealed. Both inspections take 15-30 minutes. Do not install gutters or trim until final inspection is complete, as the inspector needs clear roof line visibility. The entire permitting and inspection sequence typically runs 2-4 weeks from application to final signoff.

Three Madison Heights roof replacement scenarios

Scenario A
Full tear-off, two existing layers, 2,100 sq. ft. ranch in south Madison Heights (5A climate zone), asphalt shingles to asphalt shingles
Your 1970s ranch has a standard gable roof with two layers of aged asphalt shingles (verified by lifting a corner and counting to the deck). You want to tear off both layers and install new architectural asphalt shingles with ice-water shield and standard underlayment. This is a full permit project. You measure the roof at roughly 2,100 square feet (approximately 21 squares). The permit application requires you to provide: (1) roof dimensions and square footage; (2) confirmation of two existing layers; (3) new material spec (e.g., 'CertainTeed Landmark Pro, class A fire rating'); (4) ice-water shield product ('Synthetic ice-water shield, 24 inches up roof slope from eave'); and (5) fastening pattern ('6 nails per shingle, 12 inches on center'). Madison Heights building department will issue a permit within 2-3 business days, typically for $200–$250. Once issued, you (or your contractor) have 12 months to complete the work. A deck inspection is called 2-3 days before shingle installation — the inspector checks for proper deck fastening (12-16 inches on center, hot-dipped galvanized or stainless fasteners) and any rot or unevenness. If the deck passes, work proceeds. Typical timeline: permit to final inspection is 3-4 weeks. Final cost, including permit and inspections, is zero permit-related charges beyond the initial $200–$250 fee; inspections are included. Material and labor will be $8,000–$12,000 depending on contractor and shingle grade.
Full tear-off required | Two existing layers confirmed | Permit issued in 2-3 days | Permit fee $200–$250 | Deck inspection required before shingles | Final inspection required | Ice-water shield to 24 inches mandatory in 5A zone | Standard asphalt shingles, no uplift requirement | Total project cost $8,200–$12,250
Scenario B
Material change: two layers asphalt to standing-seam metal, north Madison Heights (6A zone), 1,800 sq. ft. colonial
Your colonial-style home currently has asphalt shingles (two confirmed layers) and you want to switch to standing-seam metal roofing. A material change (from asphalt to metal) always requires a permit, even if you plan to overlay without a tear-off. However, Madison Heights strictly enforces the three-layer rule: if the deck beneath the asphalt is clear, a metal overlay over two asphalt layers is technically allowable (three layers total, per IRC R907.4 'no more than three layers'). But most inspectors recommend a tear-off anyway because metal's weight and fastening pattern differ from asphalt, and the deck nailing must meet the metal roof's spec. Assume you decide to tear off (safer, cleaner). Your application must specify: (1) existing asphalt, two layers; (2) tear-off complete; (3) new material 'Standing-seam metal, steel, 24-gauge, Kynar 500 finish'; (4) ice-water shield ('Synthetic self-adhering underlayment, 24 inches up slope from eave, 6A climate requirement'); (5) fastening ('Metal roof cleats, stainless steel, 24 inches on center, with polyester washers'). Madison Heights will require an initial plan review (2-3 days) plus a structural evaluation if the metal roof adds significant load or changes the roof slope (unlikely for a standard re-roof). Permit fee: $250–$350 (material change and deck inspection included). Deck inspection is critical because metal roofing reveals any rotted areas that asphalt covered. If rot is found, a structural-repair permit addendum may be required ($50–$150 extra). Final inspection verifies fastening pattern and sealing. Timeline: 4-6 weeks from application to final. Material and labor will be $12,000–$18,000 depending on roof complexity. In the 6A zone, the inspector will specifically verify ice-water shield coverage to protect against ice dam damage and wind-driven rain infiltration.
Material change (asphalt to metal) requires permit | Full tear-off assumed | Permit fee $250–$350 | Deck inspection mandatory | Structural evaluation may be required (add $75–$150) | Ice-water shield to 24 inches in 6A zone | Metal fastening pattern verified (stainless steel cleats) | Final inspection of sealing and seams | Timeline 4-6 weeks | Total project cost $12,250–$18,500
Scenario C
Partial repair under 25%, 1,500 sq. ft. ranch, rotten section above bathroom (north side), patch shingles to match existing
Your ranch has a 1,500-square-foot roof. A storm has damaged one section above the bathroom (approximately 250 square feet) with rotted decking and curled shingles. You want to cut out the bad section, replace the deck boards, and re-shingle with matching asphalt shingles. At 250 square feet out of 1,500, this is roughly 17% of the total roof — well under the 25% exemption threshold. However, because this involves deck repair (structural work), Madison Heights typically requires a permit. Here's the gray area: if your work is limited to 'like-for-like shingle patching' (no deck touch) and stays under 25% area, you might skip the permit. But the moment you involve deck replacement, the rules change — you enter building-structural-work territory, which always needs a permit. In this scenario, assume you get a permit ($150–$200, quick review, 1-2 days). The inspector will verify the deck repair (checking fastener spacing, wood species compatibility, and whether the repair is bolted or sistered to existing framing). If the decay extends into the rafter or truss, a structural engineer's report may be required ($300–$500). Timeline: 2-3 weeks from permit to final. Material and labor: $2,500–$4,500 for the repair alone. Key learning: any repair that touches the structural deck — even if the roof area is small — requires a permit in Madison Heights. Shingle-only patching under 25% area with no deck work can be done unpermitted, but document it in writing if you sell the house, or disclose it via the TDS.
Partial repair 17% of roof area | Deck replacement triggers permit requirement | Permit fee $150–$200 | Deck inspection required | Possible structural engineer report ($300–$500) | Like-for-like shingle material | Timeline 2-3 weeks | Total project cost $2,650–$5,200

Every project is different.

Get your exact answer →
Takes 60 seconds · Personalized to your address

Madison Heights climate zones 5A and 6A: ice-water shield and freeze-thaw protection

Madison Heights straddles two climate zones — 5A in the south (near I-696) and 6A in the north (toward Pontiac). Both zones experience freeze-thaw cycles, ice dams, and wind-driven rain, which the 2015 and 2021 Michigan Residential Codes address through ice-water-shield mandates. Ice-water shield is a self-adhering synthetic underlayment that seals around nail penetrations and provides a second water barrier in the event of ice dam backup or wind-driven rain. The IRC R905.1.2 requirement to extend ice-water shield 24 inches beyond the interior wall line is not optional in Madison Heights — the city's building inspectors will flag any submittal that skips this detail. Many roofing contractors from warmer climates (or those working across multiple states) forget this requirement or use it sparingly. In Madison Heights, ice-water shield must cover the entire eave overhang plus at least 24 inches up the roof slope (measured vertically along the slope). For a typical eave overhang of 12-18 inches, this means ice-water shield starts about 3-6 feet up the roof from the eave line. On a two-story home with a steep roof, this can add 300-500 square feet of ice-water shield, or $150–$300 in material. It is not optional.

Madison Heights online portal and permit submittal workflow

Madison Heights has migrated to an online permit-submission portal (accessible via the city website) that reduces in-person trips to City Hall. You can submit a roof-replacement permit application, attach photos, and pay the fee electronically. The portal logs your application and assigns a case number, which you use for all future correspondence. For roof replacements, the city requires: (1) a completed permit form (available on the portal); (2) roof dimensions and square footage (blueprint or measurement sketch); (3) photo(s) of existing roof layers (showing nail-penetration count, shingle condition, or visible layers at a corner or vent penetration); (4) new roofing material spec sheet (manufacturer name, product name, grade, fire rating); (5) underlayment and ice-water-shield details (product name, placement); and (6) fastening pattern (nails per shingle, spacing). Submittals without photos of existing layers or incomplete material specs are rejected within 1-2 days, delaying the permit. Many contractor-pulled permits are rejected on the first round because the contractor did not include underlayment details or misrepresented the existing layer count. If you pull the permit yourself, be thorough and include these details upfront to avoid a re-submission cycle. The portal also allows you to track inspection requests and view inspection reports. Once your permit is issued, you log into the portal and request a deck inspection (typically 2-3 days out). The inspector schedules a date and time, and you receive an email confirmation. Same process for the final inspection. This electronic workflow keeps Madison Heights permits on schedule and transparent.

City of Madison Heights Building Department
Madison Heights City Hall, Madison Heights, MI 48071 (confirm via city website)
Phone: (248) 541-3500 or local building permit line (verify current number) | https://www.madisonheightsmichigan.org (search 'building permits' or 'permit portal')
Monday–Friday, 8:00 AM–5:00 PM, Eastern Time (closed holidays)

Common questions

Can I reroof over existing asphalt shingles without tearing them off, or do I have to remove them?

You can overlay (install new shingles over existing) if you have only one or two layers and your roof area is under 25% of replacement (per Michigan Residential Code). However, Madison Heights building inspectors strongly recommend a tear-off even if overlay is allowed, because an overlay can hide deck rot and complicates future inspections. If you choose to overlay, you still need a permit to declare the material and fastening pattern, and the inspector will require photographic evidence that you have no more than two existing layers. A tear-off avoids ambiguity and typically costs $1,000–$2,000 more in labor but gives you a clean deck and longer-term roof performance.

How do I know if I have two or three layers of shingles?

Climb to the attic and look at the underside of the roof deck — you'll see nail heads from each layer. Or, go to the roof edge (gutter line) and carefully lift the corner of the top shingle; look at the cut edges and count distinct layers. If you see three distinct shingle layers or three rows of nails, you have three layers and you must tear off before re-roofing — Madison Heights will not issue an overlay permit for three layers. If you're unsure, a professional roofer can inspect during a free estimate. When you submit your permit application, include a photo of the layer count — this preempts rejection.

What happens if the deck inspection finds rot or structural issues?

If the inspector finds rotted wood or inadequate deck fastening, the permit is placed on hold pending deck repair. You'll be issued a structural-repair work order (typically $75–$150 extra permit fee) that must be completed and re-inspected before roofing begins. Rotten wood must be replaced with grade-stamped lumber of the same dimension and species; fastening must meet code (typically 12–16 inches on center with galvanized or stainless fasteners). Once the deck repair is inspected and signed off, the roof permit resumes. This adds 1–2 weeks to the timeline, but it prevents future leaks and structural failure.

Do I need ice-water shield everywhere on my roof, or just the eaves?

Ice-water shield is required at the eave (extending 24 inches up the roof slope in climate zones 5A and 6A), at valleys, and at any penetration (vent, chimney, skylight). The eave requirement is the most common and the one Madison Heights inspectors verify first. Standard underlayment (felt or synthetic) can cover the rest of the roof, but the ice-water-shield zones must be protected with that self-adhering product. Ask your contractor to specify which product is being used in which zones on the submittal.

If I do unpermitted roofing work and later sell the house, am I required to disclose it?

Yes. Michigan's Property Condition Disclosure Statement (TDS) requires you to disclose any known unpermitted or non-code-compliant work. Failing to disclose can expose you to civil liability and rescission of the sale. If a buyer or their inspector discovers unpermitted roofing after purchase, they can sue for the cost of removal and re-permit. It is far cheaper to pull a permit upfront ($150–$350) than to face a $5,000–$15,000 liability dispute at closing.

Can I install a metal roof over my existing asphalt shingles without tearing off?

Technically, if you have only one asphalt layer, a metal-roof overlay over that asphalt counts as two layers (acceptable under code). However, Madison Heights strongly encourages tear-offs for metal roofing because the metal roof's fastening pattern and load are very different from asphalt, and the asphalt layer underneath can trap moisture and heat, shortening the metal roof's life. Additionally, the inspector will have difficulty verifying the condition of the asphalt underneath during the inspection. A tear-off is recommended and will result in a longer-lasting, more inspectable installation. Your permit application can request an overlay if you wish, but the city may require a structural evaluation.

What is the owner-builder permit process in Madison Heights?

Madison Heights allows owner-builders to pull permits for owner-occupied residential properties. You fill out the standard permit form, provide the same documentation (roof dimensions, material spec, ice-water-shield detail, fastening pattern) as a contractor would, and pay the permit fee. You can hire a licensed roofing contractor to perform the work, or you can do it yourself if you are the owner and the property is your primary residence. The city will still conduct deck and final inspections. No additional licensing or bonding is required for owner-builders, but the city may require proof of ownership (deed or mortgage statement) if questioned.

How long is my permit valid, and can I extend it?

Madison Heights permits are valid for 12 months from issuance. If you do not start work within 12 months, the permit expires and you must reapply (and pay the fee again). If you start work within 12 months but do not finish, you can request a one-time 6-month extension (typically $25–$50 fee) by submitting a form to the building department before the original permit expires. If you need a second extension, you may need to reapply. Plan your project timeline accordingly, and alert the city if you anticipate delays.

Can I hire an out-of-state roofing contractor to work in Madison Heights?

Yes, but the contractor must hold a current Michigan roofing license (or a reciprocal license recognized by Michigan). At permit issuance, the city will verify the contractor's license number and current liability insurance (minimum $1 million coverage is standard). If the contractor is unlicensed or the insurance has lapsed, the permit will be denied or placed on hold until corrected. Always request a copy of the contractor's Michigan license and insurance certificate before signing a contract. Many out-of-state contractors have reciprocal licenses, but some do not — verify before hiring.

What is the difference between a permit fee and an inspection fee in Madison Heights?

Madison Heights combines the permit fee and inspection fee into a single charge ($150–$350 for most residential roof replacements). You pay this fee once at permit issuance, and it covers both the plan review (if required) and up to two inspections (deck and final). If additional inspections are required (e.g., for deck repair or engineering review), those may carry extra fees ($50–$150 per inspection). Always ask the building department for the total fee upfront so there are no surprises.

Disclaimer: This guide is based on research conducted in May 2026 using publicly available sources. Always verify current roof replacement permit requirements with the City of Madison Heights Building Department before starting your project.