Research by DoINeedAPermit Research Team · Updated May 2026
The Short Answer
A full roof tear-off and replacement almost always requires a permit in Columbia Heights. Repairs under 25% of roof area or patch work under 10 squares may be exempt, but a material change (shingles to metal), any three-layer situation, or structural deck work triggers permit requirements.
Columbia Heights enforces the 2020 Minnesota State Building Code, which adopts the IRC with state amendments. The city's key distinction: it requires submission through the online permit portal (via the city website) with detailed documentation, including manufacturer spec sheets and underlayment details — not all suburban Minnesota jurisdictions require this level of pre-filing specificity. If you're doing a tear-off-and-replace on anything larger than a small patch, or changing materials, you will need a permit. The city typically issues roof permits over-the-counter (same-day or next business day) for like-for-like shingle replacements with complete submittal; plan review can stretch to 2-3 weeks if underlayment specs are missing or if your roof has a third layer (which triggers mandatory tear-off per IRC R907.4, and the city catches this at inspection if not disclosed upfront). Permit fees run $125–$300 depending on roof area and material type. The city is strict about ice-and-water-shield placement in the Zone 6A/7 climate: underlayment must extend at least 24 inches up from the eave line and 6 feet beyond any valley per Minnesota amendments to IRC R905. This is not optional in Columbia Heights, and inspectors mark it on the final.

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

Columbia Heights roof replacement permits — the key details

Owner-builder work is allowed in Columbia Heights for owner-occupied residential. If you're pulling the permit yourself (not the roofer), you can do so, and you do not need a contractor's license. However, you are responsible for coordinating inspections, ensuring code compliance, and obtaining any required sign-offs. Most homeowners hire a licensed roofing contractor and have the contractor pull the permit; the contractor is then the permit holder and responsible for inspection coordination. If you hire a contractor and pull the permit yourself, ensure the contractor is willing to work under your permit — some aren't, because it shifts liability. Secondly, verify that your roofing contractor carries Workers' Compensation insurance (required in Minnesota for employees) and liability insurance. Ask for a copy of the insurance card before work starts; this protects you if a worker is injured on your property. The city does not require proof of insurance at permit issuance, but your mortgage lender or homeowners insurance may require it, and it's a smart business move. One more practical note: if you live in a federally backed flood zone (FEMA flood map), your roof replacement may trigger elevation or flood mitigation requirements — not a roofing code issue, but a compliance issue worth checking early. Use the FEMA Flood Map tool (msc.fema.gov) to verify your property before submitting the permit.

Three Columbia Heights roof replacement scenarios

Scenario A
Full tear-off and shingle replacement, two existing layers, no structural issues — typical single-story ranch in Riverview Heights neighborhood
You have a 1,600-square-foot single-story ranch with a roof comprising two layers of asphalt shingles (installed 1995 and 2008). You want to tear off both layers and install new 30-year architectural shingles. Roof area: approximately 2,000 sq. ft. (20 squares). You hire a licensed roofer (ABC Roofing, licensed in Minnesota). The roofer submits a permit application online through the city portal, including the scope (tear-off, two layers, new 30-year shingles, brand X), underlayment spec (synthetic felt Type II, 24-inch ice-and-water-shield from eaves per Minnesota code), and fastening schedule (manufacturer spec, 6 fasteners per shingle in zone 7). The city plan reviewer approves the permit the same day (no red flags); permit fee is $175. Work begins a week later. The roofer tears off the roof, inspects the deck (solid, no rot), and calls for the in-progress inspection. The city inspector arrives 2 days later and checks underlayment placement, ice-and-water-shield extent (verifies 24 inches up from eaves and 6 feet into valleys), and deck nailing pattern. All passes. Shingles go on over the next 3 days. Flashing at the one roof vent and the chimney is sealed per manufacturer spec. The roofer calls for final inspection. Final inspection 2 days later: all shingles fastened correctly, ridge cap properly sealed, gutters clean, no sealant where fasteners should be. Permit closed. Timeline: 10 calendar days from permit issuance to final sign-off. Cost: Permit fee $175 + roofer labor and materials (typically $8,000–$15,000 for a 20-square tear-off-and-replace in the Twin Cities, depending on roof complexity and shingle grade).
Permit required | Tear-off mandatory (2 existing layers) | Synthetic underlayment required | Ice-and-water-shield 24 in. from eaves | Two inspections (in-progress + final) | Permit fee $175 | Total project cost $8,200–$15,200
Scenario B
Overlay (no tear-off), existing two-layer roof, same shingle material and weight — residential home in Eagle Lake area
Your two-story home has a roof with two existing layers of standard 25-year shingles, installed 1998 and 2010. The roof is 2,400 sq. ft. (24 squares). You want to overlay with the same 25-year shingles (no material upgrade) and avoid a tear-off to save money. You contact a roofer. The roofer advises that overlay is technically allowed under IRC R907 (for two-layer roofs with a compliant deck), but Columbia Heights requires a written deck-condition assessment as part of the permit application if you overlay. The roofer inspects the roof and confirms no visible deck rot or water staining on the attic underside. The permit application includes: scope (overlay, no tear-off), deck certification (inspector or roofer statement that deck is sound), underlayment plan (new synthetic felt will be laid, but old shingles will not be removed — the new felt goes over old shingles, which is acceptable), and ice-and-water-shield specification (24 inches from eaves, 6 feet in valleys, as with tear-off). Permit fee for overlay is the same as tear-off: $200 (based on 24 squares). The city approves it in one day. However, the plan reviewer includes a note: 'Verify deck condition at in-progress inspection; if deck is compromised, permit is void and tear-off required.' This is a common caveat for overlays in Columbia Heights — the city is cautious about hidden deck rot. Work begins. The roofer lays underlayment over the existing shingles (this is allowed; mechanical fastening through old shingles into the deck), then installs new shingles. At in-progress inspection, the inspector climbs the roof and checks the deck from underneath (attic access) and the mechanical fasteners through the old shingles. Deck is sound; underlayment is in place and ice-and-water-shield is correct. Shingles installed; final inspection passed 3 days later. Timeline: 12 calendar days (slightly longer because the city's caution about overlay adds one extra inspection step). Cost: Permit fee $200 + roofer cost (overlay is cheaper than tear-off, typically $6,000–$11,000 for 24 squares because no tear-off labor). Gotcha: If the inspector finds rot at the in-progress inspection, you're ordered to stop, pay for a tear-off (adds 2–4 days and $1,500–$3,000), and re-permit; total project delay: 1–2 weeks.
Permit required for overlay | Deck-condition assessment required | No tear-off; two layers remain | Ice-and-water-shield 24 in. from eaves | In-progress + final inspections | Permit fee $200 | Total project cost $6,200–$11,200 (overlay) vs $8,200–$15,200 (tear-off)
Scenario C
Material change: shingles-to-metal standing-seam roof, full replacement with deck reinforcement — Ridgewood area two-story with heavy snow loads
Your 30-year-old home has a 2,200-sq.-ft. roof (22 squares) with two layers of asphalt shingles. You want to switch to a metal standing-seam roof because of longevity and snow-shedding performance in Columbia Heights' zone 7 climate (heavy snow, 48–60 inch frost depth). Metal roofing is significantly lighter than asphalt shingles, but standing-seam installation requires specific fastening and deck prep. You hire a metal roofing specialist (licensed in Minnesota). The roofer submits a detailed permit application: scope (tear-off, two asphalt layers, new standing-seam metal), underlayment (synthetic felt + ice-and-water-shield per Minnesota code), fastening schedule (manufacturer spec sheet for the metal roof system, typically 1.5-inch clips spaced per design load), and structural notes (metal roof is lighter, no reinforcement required, but fastening pattern is critical for wind resistance). Permit fee for material-change roof is $275 (higher because of plan-review intensity). The city plan reviewer spends 3–4 business days reviewing the manufacturer specs and fastening schedule; metal roofing has caused problems in other jurisdictions when installers don't follow the clip-spacing and fastening spec, so the city is thorough. Permit approved with conditions: 'Fastening schedule per manufacturer spec sheet XYZ, dated [date]; deviation requires pre-approval.' Work begins. Tear-off proceeds normally. The new underlayment and ice-and-water-shield are installed (24-inch requirement still applies, even though metal roofing handles snow differently than shingles). The standing-seam metal panels are fastened per the manufacturer spec; the roofer's crew confirms clip spacing and fastening torque. In-progress inspection: the inspector (or a third-party if the city doesn't have metal-roofing expertise) checks fastening pattern and fastening count, verifies ice-and-water-shield placement, and reviews the manufacturer documentation on-site. This inspection may take longer (1 hour vs. 30 minutes for shingle roof) because fastening verification is meticulous. Approved. Final inspection: the roofer has installed ridge cap and seal tape per the system. All fasteners are in place and secure. Flashing at vents and skylights is sealed with the metal-roof-compatible sealant (not standard roofing sealant; this trips up some installers). Final approved. Timeline: 14 calendar days (permit issuance + plan review takes longer, and inspections are more involved). Cost: Permit fee $275 + roofer cost for metal (significantly higher material cost, $12,000–$22,000 for 22 squares, depending on metal grade and standing-seam system, but longer lifespan — 40–50 years vs. 20–30 for shingles). Planning tip: If you're in a wind-prone area (not specific to Columbia Heights, but relevant to Minnesota generally), the metal roof fastening spec is your insurance that high winds won't lift it; getting that spec right at the permit stage is worth the effort.
Permit required for material change | Tear-off mandatory | Manufacturer fastening spec required | Ice-and-water-shield 24 in. from eaves | In-progress inspection includes fastening verification | Final inspection with sealant review | Permit fee $275 | Total project cost $12,300–$22,300

Every project is different.

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

Ice-and-water-shield in Columbia Heights: why the 24-inch rule matters in zone 7

The shield itself must meet ASTM D1970 (the standard for self-adhering synthetic membranes). Common brands include Titanium UDL, Grace Ice & Water Shield, Certainteed WinterGuard, and others. The permit application should specify the brand and product; some low-cost products do not meet ASTM D1970 and the city will reject them (this has happened; a contractor once specified a generic 'synthetic barrier' without a product name, and the city asked for documentation). The roofer can purchase the product and bring the product data sheet (available on the manufacturer's website) to the permit office, or include it with the initial permit application. Cost: ice-and-water-shield is roughly $0.50–$1.00 per sq. ft. (depending on brand and thickness); for a 2,000-sq.-ft. roof with 24 inches of shield on all eaves, plus extended valleys and intersections, the shield cost is typically $400–$800, a small fraction of the total roof cost, but critical.

Overlay vs. tear-off in Columbia Heights: why the city is cautious about hidden deck rot

The pre-assessment can be done informally by the roofer (a walk through the attic with a moisture meter and a careful look for stains, soft spots, or visible mold) or formally by a structural inspector ($300–$500 for a dedicated inspection). Many roofers include this as a free pre-bid walkthrough; ask your roofer if they'll inspect the attic and provide a brief written summary (photo documentation is helpful). If rot is found, the roofer will advise tear-off; if the deck is clear, the roofer will proceed with the overlay and note in the permit that the deck was assessed and found sound. This documentation protects you if there are later disputes, and it aligns with Columbia Heights' permit requirements. For a 2,000-sq.-ft. roof, the difference in cost between overlay and tear-off is roughly $1,500–$3,000 (labor; materials are similar); if a deck assessment reveals rot requiring a $2,000–$5,000 deck replacement, the overlay suddenly becomes more expensive than a tear-off anyway, so the assessment saves money by identifying problems upfront.

City of Columbia Heights Building Department
3800 Main Street, Columbia Heights, MN 55421
Phone: (763) 706-3700 (Building and Zoning) | https://www.colheightsmn.gov (navigate to Permits/Building or search 'Columbia Heights permit portal')
Monday–Friday, 8:00 AM–5:00 PM (closed Saturdays, Sundays, and city holidays)

Common questions

Do I need a permit if I'm just re-shingling my roof with the same shingle type and no tear-off?

If you have fewer than two existing layers and the deck is sound, an overlay with the same shingle type is permitted in Columbia Heights. However, if your roof currently has two or more layers, or if you're tearing off the old shingles (even one layer), you must pull a permit. A permit is also required if you're changing shingle type or grade. Contact the city building department or use the online portal to pre-check your specific roof before deciding; most roofers will help you determine layer count during a free estimate.

What if my roof has three layers of shingles? Can I still overlay?

No. IRC R907.4 (adopted by Columbia Heights via the Minnesota State Building Code) prohibits overlays on roofs with more than two layers. If you have three layers, you must do a complete tear-off. The city inspector will catch this if it's not disclosed on the permit application, and work will be stopped. If you're unsure how many layers you have, hire a roofer to do a tear-off assessment (pulling back shingles in an inconspicuous area, like the back corner of the roof); this costs $100–$200 and will confirm layer count.

How long does the permit review take in Columbia Heights?

For a like-for-like residential roof replacement (same shingle type, standard underlayment, no material change), permits are typically issued same-day or the next business day if the application is complete. For material-change roofs (shingles to metal, tile, etc.) or if the application is missing details (underlayment spec, fastening schedule, ice-and-water-shield plan), plan review can take 3–5 business days. Once the permit is issued, inspections are scheduled on your request and typically occur within 2–3 business days.

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 Columbia Heights Building Department before starting your project.