{"id":42,"date":"2026-08-30T07:27:24","date_gmt":"2026-08-30T11:27:24","guid":{"rendered":"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-requirements\/"},"modified":"2026-10-31T00:57:26","modified_gmt":"2026-10-31T04:57:26","slug":"florida-contractor-license-requirements","status":"publish","type":"post","link":"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-requirements\/","title":{"rendered":"Florida Contractor License Requirements: The Full Checklist"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">The exam gets all the attention and the paperwork causes most of the failures. Every requirement below has to be satisfied, and several of them take weeks to assemble, so the order you tackle them in matters more than people expect.<\/p>\n\n\n\n<div class=\"msq-audio\" data-article=\"florida-contractor-license-requirements\" data-minutes=\"12\">\n<style>.msq-audio{margin:1.25em 0 1.75em;padding:16px 18px;background:#F3F1EC;border:1px solid #D9D3C7;border-radius:12px}\n.msq-audio-lead{margin:0 0 8px;font-size:.95em}.msq-audio audio{width:100%;margin:0 0 12px;display:block}\n.msq-toc-title{margin:0 0 6px;font-weight:700}.msq-toc ol{margin:0;padding:0;list-style:none}\n.msq-toc li{display:flex;gap:10px;align-items:center;padding:6px 6px;border-bottom:1px solid #D9D3C7;border-radius:8px}\n.msq-toc li:last-child{border-bottom:0}.msq-toc li.is-active{background:#fff}\n.msq-toc-play{flex:0 0 auto;width:30px;height:30px;border-radius:50%;border:0;background:#24405E;color:#fff;font:inherit;font-size:.72em;line-height:30px;padding:0;cursor:pointer}\n.msq-toc-play.is-playing{background:#C4540E}\n.msq-toc-time{flex:0 0 auto;min-width:3.1em;font-variant-numeric:tabular-nums;color:#4C5561;font-size:.9em}\n.msq-toc a{color:#1B1F24;text-decoration:none;line-height:1.35}.msq-toc li.is-active a{font-weight:700;color:#24405E}\n.msq-audio-note{margin:10px 0 0;font-size:.82em;color:#4C5561}\nh2.wp-block-heading[id]{scroll-margin-top:24px}\n.msq-hplay{display:inline-block;vertical-align:middle;width:26px;height:26px;margin:0 0 0 10px;border-radius:50%;border:0;background:#24405E;cursor:pointer;padding:0;position:relative;top:-2px}\n.msq-hplay::before{content:'\u25b6\ufe0e';display:block;color:#fff;font-size:11px;line-height:26px;text-align:center}\n.msq-hplay.is-playing{background:#C4540E}.msq-hplay.is-playing::before{content:'\u2016';font-size:13px;font-weight:700}\n.msq-bar{position:fixed;left:0;right:0;bottom:0;z-index:9000;display:flex;align-items:center;gap:10px;padding:8px 12px;padding-bottom:calc(8px + env(safe-area-inset-bottom));background:#FFFFFF;border-top:1px solid #D9D3C7;box-shadow:0 -4px 16px rgba(0,0,0,.08);font-size:.92em;color:#1B1F24;transition:transform .2s ease}\n.msq-bar.is-hidden{transform:translateY(130%)}\n.msq-bar-play{display:inline-flex;align-items:center;gap:8px;border:0;border-radius:999px;background:#24405E;color:#fff;font:inherit;font-weight:700;padding:8px 14px 8px 12px;cursor:pointer;white-space:nowrap}\n.msq-bar-play.is-playing{background:#C4540E}\n.msq-bar-icon::before{content:'\u25b6\ufe0e';font-size:12px}.msq-bar-play.is-playing .msq-bar-icon::before{content:'\u2016';font-size:14px;font-weight:700}\n.msq-bar-chapter{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.msq-bar-time{flex:0 0 auto;font-variant-numeric:tabular-nums;color:#4C5561;font-size:.9em}\n.msq-bar-rate,.msq-bar-close{flex:0 0 auto;border:1px solid #D9D3C7;background:#fff;color:#1B1F24;font:inherit;font-size:.85em;line-height:1;border-radius:8px;padding:7px 9px;cursor:pointer}\n.msq-bar-close::before{content:'\u2715'}\n.msq-bar.msq-bar-pill{left:auto;right:14px;bottom:14px;padding:6px;padding-bottom:6px;border:1px solid #D9D3C7;border-radius:999px;box-shadow:0 6px 20px rgba(0,0,0,.15)}\n.msq-bar.msq-bar-pill .msq-bar-chapter,.msq-bar.msq-bar-pill .msq-bar-time,.msq-bar.msq-bar-pill .msq-bar-rate{display:none}\nbody.msq-has-bar{padding-bottom:76px}\n@media (max-width:600px){.msq-bar-time{display:none}.msq-bar{gap:8px;padding-left:10px;padding-right:10px}}\n.msq-s.msq-now{background:#F3F1EC;box-shadow:0 2px 0 #24405E;border-radius:2px}\ntr.msq-now td,tr.msq-now th{background:#F3F1EC;box-shadow:inset 0 -2px 0 #24405E}\n@media (hover:hover){.msq-s,tr[data-i]{cursor:pointer}.msq-s:hover{background:#F3F1EC}}<\/style>\n<script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"AudioObject\",\"@id\":\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-requirements\/#audio\",\"name\":\"Florida Contractor License Requirements: The Full Checklist, read aloud\",\"description\":\"Synthetic voice reading of the article, recorded 31 October 2026.\",\"contentUrl\":\"https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/10\/florida-contractor-license-requirements-audio-202610311027.mp3\",\"encodingFormat\":\"audio\/mpeg\",\"duration\":\"PT12M24S\",\"uploadDate\":\"2026-10-31\",\"inLanguage\":\"en-US\",\"isAccessibleForFree\":true,\"mainEntityOfPage\":\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-requirements\/\",\"hasPart\":[{\"@type\":\"Clip\",\"name\":\"Florida Contractor License Requirements: The Full Checklist\",\"startOffset\":0,\"endOffset\":76},{\"@type\":\"Clip\",\"name\":\"The requirements, in full\",\"startOffset\":76,\"endOffset\":143,\"url\":\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-requirements\/#the-requirements-in-full\"},{\"@type\":\"Clip\",\"name\":\"Experience, and what actually counts\",\"startOffset\":143,\"endOffset\":219,\"url\":\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-requirements\/#experience-and-what-actually-counts\"},{\"@type\":\"Clip\",\"name\":\"Education as a substitute\",\"startOffset\":219,\"endOffset\":252,\"url\":\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-requirements\/#education-as-a-substitute\"},{\"@type\":\"Clip\",\"name\":\"What does the paperwork cost?\",\"startOffset\":252,\"endOffset\":361,\"url\":\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-requirements\/#what-does-the-paperwork-cost\"},{\"@type\":\"Clip\",\"name\":\"Financial responsibility and the credit review\",\"startOffset\":361,\"endOffset\":400,\"url\":\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-requirements\/#financial-responsibility-and-the-credit-review\"},{\"@type\":\"Clip\",\"name\":\"Insurance\",\"startOffset\":400,\"endOffset\":444,\"url\":\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-requirements\/#insurance\"},{\"@type\":\"Clip\",\"name\":\"The background check\",\"startOffset\":444,\"endOffset\":479,\"url\":\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-requirements\/#the-background-check\"},{\"@type\":\"Clip\",\"name\":\"Continuing education and renewal\",\"startOffset\":479,\"endOffset\":606,\"url\":\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-requirements\/#continuing-education-and-renewal\"},{\"@type\":\"Clip\",\"name\":\"Qualifying a business, and what that commits you to\",\"startOffset\":606,\"endOffset\":670,\"url\":\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-requirements\/#qualifying-a-business-and-what-that-commits-you-to\"},{\"@type\":\"Clip\",\"name\":\"Coming from another state\",\"startOffset\":670,\"endOffset\":702,\"url\":\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-requirements\/#coming-from-another-state\"},{\"@type\":\"Clip\",\"name\":\"The order that saves the most time\",\"startOffset\":702,\"endOffset\":744,\"url\":\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-requirements\/#the-order-that-saves-the-most-time\"}],\"contentSize\":\"5.2 MB\"}<\/script>\n<p class=\"msq-audio-lead\"><strong>Listen to this article<\/strong>, about 12 minutes. A synthetic voice reads the article and announces each section title as it begins; tables are read row by row and the questions at the end are left out.<\/p>\n<audio class=\"msq-audio-player\" controls preload=\"metadata\" src=\"https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/10\/florida-contractor-license-requirements-audio-202610311027.mp3\"><\/audio>\n<nav class=\"msq-toc\" aria-label=\"In this article\"><p class=\"msq-toc-title\">In this article<\/p>\n<ol>\n<li data-start=\"0.0\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"0.0\" aria-label=\"Play from: Florida Contractor License Requirements: The Full Checklist\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">0:00<\/span><a href=\"#top\">Florida Contractor License Requirements: The Full Checklist<\/a><\/li>\n<li data-start=\"75.9\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"75.9\" aria-label=\"Play from: The requirements, in full\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">1:16<\/span><a href=\"#the-requirements-in-full\">The requirements, in full<\/a><\/li>\n<li data-start=\"142.8\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"142.8\" aria-label=\"Play from: Experience, and what actually counts\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">2:23<\/span><a href=\"#experience-and-what-actually-counts\">Experience, and what actually counts<\/a><\/li>\n<li data-start=\"219.42\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"219.42\" aria-label=\"Play from: Education as a substitute\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">3:39<\/span><a href=\"#education-as-a-substitute\">Education as a substitute<\/a><\/li>\n<li data-start=\"251.64\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"251.64\" aria-label=\"Play from: What does the paperwork cost?\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">4:12<\/span><a href=\"#what-does-the-paperwork-cost\">What does the paperwork cost?<\/a><\/li>\n<li data-start=\"361.18\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"361.18\" aria-label=\"Play from: Financial responsibility and the credit review\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">6:01<\/span><a href=\"#financial-responsibility-and-the-credit-review\">Financial responsibility and the credit review<\/a><\/li>\n<li data-start=\"399.6\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"399.6\" aria-label=\"Play from: Insurance\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">6:40<\/span><a href=\"#insurance\">Insurance<\/a><\/li>\n<li data-start=\"444.42\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"444.42\" aria-label=\"Play from: The background check\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">7:24<\/span><a href=\"#the-background-check\">The background check<\/a><\/li>\n<li data-start=\"479.32\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"479.32\" aria-label=\"Play from: Continuing education and renewal\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">7:59<\/span><a href=\"#continuing-education-and-renewal\">Continuing education and renewal<\/a><\/li>\n<li data-start=\"605.5\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"605.5\" aria-label=\"Play from: Qualifying a business, and what that commits you to\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">10:06<\/span><a href=\"#qualifying-a-business-and-what-that-commits-you-to\">Qualifying a business, and what that commits you to<\/a><\/li>\n<li data-start=\"669.6\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"669.6\" aria-label=\"Play from: Coming from another state\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">11:10<\/span><a href=\"#coming-from-another-state\">Coming from another state<\/a><\/li>\n<li data-start=\"701.74\"><button type=\"button\" class=\"msq-toc-play\" data-start=\"701.74\" aria-label=\"Play from: The order that saves the most time\">&#x25B6;&#xFE0E;<\/button><span class=\"msq-toc-time\">11:42<\/span><a href=\"#the-order-that-saves-the-most-time\">The order that saves the most time<\/a><\/li>\n<\/ol><\/nav>\n<p class=\"msq-audio-note\">Recorded 31 October 2026 from the article as published that day. Press a chapter to jump there; the highlighted line is what is playing. A play button sits beside every section heading, and once you scroll past this player a bar at the bottom of the screen keeps the controls in reach. Tap or click any sentence to hear the reading start from there.<\/p>\n<script>var MSQ_SENT = [[0.0,\"h\",\"floridacontractorlicense\",52],[4.0,\"p\",\"theexamgetsalltheattenti\",64],[8.68,\"p\",\"everyrequirementbelowhas\",124],[18.56,\"p\",\"onthispageeveryrequireme\",263],[38.76,\"p\",\"thisisthefullpicturefora\",177],[49.6,\"p\",\"theregisteredroutethroug\",114],[57.6,\"p\",\"forthefulllistofcategori\",98],[64.16,\"p\",\"iftheworkyouhaveinmindis\",163],[75.9,\"h\",\"therequirementsinfull\",21],[78.18,\"t\",\"age\",52],[87.14,\"t\",\"experience\",112],[97.38,\"t\",\"exams\",98],[105.78,\"t\",\"financialresponsibility\",117],[115.22,\"t\",\"insurance\",99],[125.62,\"t\",\"backgroundcheck\",76],[132.82,\"t\",\"applicationandfees\",94],[142.8,\"h\",\"experienceandwhatactuall\",31],[145.4,\"p\",\"fouryearsistheheadlinenu\",28],[146.64,\"p\",\"thedetailunderneathitisw\",49],[149.4,\"p\",\"theexperiencemustbeinthe\",49],[152.8,\"p\",\"fouryearsofresidentialfr\",97],[157.96,\"p\",\"itmustalsobeatanappropri\",112],[166.6,\"p\",\"airconditioningaddsatwis\",162],[179.04,\"p\",\"theresidentialcategoryha\",180],[191.6,\"p\",\"mostimportantlyitmustbev\",33],[193.92,\"p\",\"someonecrediblehastoatte\",79],[200.56,\"p\",\"selfemploymentcountsbuty\",83],[207.12,\"p\",\"startcollectingverificat\",45],[209.52,\"p\",\"trackingdownasupervisorf\",129],[219.42,\"h\",\"educationasasubstitute\",22],[220.82,\"p\",\"accreditededucationsubst\",63],[225.7,\"p\",\"aconstructionrelateddegr\",151],[234.98,\"p\",\"howmanyyearsanygivenqual\",132],[243.1,\"p\",\"getyoursassessedratherth\",34],[245.02,\"p\",\"buildingatimelinearounda\",92],[251.64,\"h\",\"whatdoesthepaperworkcost\",24],[253.56,\"p\",\"lessthantheexampreparati\",52],[256.56,\"p\",\"thefiguresbelowaretheone\",174],[269.32,\"p\",\"thelargestlineinsideexam\",152],[278.64,\"p\",\"thepreparationsidehasits\",149],[288.6,\"t\",\"initialapplicationmayofa\",111],[299.88,\"t\",\"initialapplicationseptem\",108],[311.88,\"t\",\"renewalactivelicence\",76],[321.76,\"t\",\"renewalafterthedeadline\",79],[330.68,\"t\",\"eachexampartperattempt\",87],[339.6,\"p\",\"theproratedapplicationfe\",46],[343.32,\"p\",\"applyinginseptemberofano\",121],[350.04,\"p\",\"itisnotalargeenoughsavin\",86],[356.04,\"p\",\"currentamountsareonthede\",60],[361.18,\"h\",\"financialresponsibilitya\",41],[364.66,\"p\",\"thestatewantsevidencetha\",91],[370.9,\"p\",\"inpracticethatmeansacred\",67],[375.06,\"p\",\"theexactlineandwhathappe\",101],[383.78,\"p\",\"fallingbelowthethreshold\",37],[387.3,\"p\",\"theusualrouteforwardispo\",72],[392.94,\"p\",\"whatmattersisknowingthis\",74],[399.6,\"h\",\"insurance\",9],[400.4,\"p\",\"generalliabilityandworke\",76],[405.28,\"p\",\"theseneedtobeinplacewhen\",60],[409.68,\"p\",\"minimumschangesotakethec\",61],[414.44,\"p\",\"anyarticlequotingyouaspe\",134],[423.6,\"p\",\"forabuildingcontractorou\",183],[444.42,\"h\",\"thebackgroundcheck\",18],[445.54,\"p\",\"fingerprintinganddisclos\",27],[447.06,\"p\",\"acriminalrecorddoesnotau\",51],[450.38,\"p\",\"theboardweighsthenatureo\",73],[455.26,\"p\",\"whichninepeopleactuallyw\",185],[467.14,\"p\",\"whatdoescauseseriousprob\",43],[470.38,\"p\",\"declaringsomethingwithco\",54],[474.06,\"p\",\"havingitsurfaceafteryous\",75],[479.32,\"h\",\"continuingeducationandre\",29],[481.8,\"p\",\"thelicenseisnotpermanent\",24],[484.32,\"p\",\"floridarunscontractorlic\",103],[492.52,\"p\",\"fiveofthosehoursarepinne\",167],[505.52,\"p\",\"generalbuildingresidenti\",120],[514.64,\"p\",\"theremainderisgeneraland\",147],[523.44,\"p\",\"thedatesareworthwritingd\",74],[527.88,\"p\",\"certifiedlicencesrenewby\",113],[539.92,\"p\",\"registeredlicencesrenewb\",75],[547.92,\"p\",\"ifyouarereadingthisinsep\",127],[557.56,\"p\",\"thehoursdeadlinesandwhat\",100],[564.48,\"p\",\"thedetailthatcatchespeop\",52],[567.88,\"p\",\"getlicensedinjulyofaneve\",71],[574.0,\"p\",\"thesavinggraceisthatrule\",238],[596.48,\"p\",\"nobodytellsyouthisatthep\",35],[598.72,\"p\",\"checkwhereyousitinthecyc\",87],[605.5,\"h\",\"qualifyingabusinessandwh\",42],[608.34,\"p\",\"licensesbelongtopeoplebu\",45],[612.18,\"p\",\"aconstructioncompanyoper\",72],[617.86,\"p\",\"ifyouarelicensingyoursel\",63],[621.66,\"p\",\"thesituationworthunderst\",43],[624.1,\"p\",\"anunlicensedbusinessowne\",73],[629.3,\"p\",\"thequalifiercarrieslegal\",177],[640.94,\"p\",\"thedutiesattachedtoquali\",137],[650.94,\"p\",\"ourwalkthroughofwhataflo\",129],[659.9,\"p\",\"beingpaidtoqualifyacompa\",105],[666.46,\"p\",\"theliabilityfollowstheli\",43],[669.6,\"h\",\"comingfromanotherstate\",22],[670.96,\"p\",\"floridahasreciprocityarr\",108],[678.4,\"p\",\"itisgenuinelyworthchecki\",130],[687.84,\"p\",\"evenwherereciprocityappl\",74],[692.88,\"p\",\"floridabuildingcoderequi\",149],[701.74,\"h\",\"theorderthatsavesthemost\",28],[703.82,\"p\",\"startexperienceverificat\",30],[705.78,\"p\",\"itisthelongestleadtimeit\",58],[710.66,\"p\",\"geteducationassessedinpa\",49],[714.54,\"p\",\"pullyourowncreditandlook\",80],[719.98,\"p\",\"getinsurancequotesbutdon\",64],[723.82,\"p\",\"prepareforandsitbothexam\",25],[726.38,\"p\",\"submitwitheverythingasse\",72],[730.98,\"p\",\"forwhatthelicenseletsyou\",72],[736.06,\"p\",\"ifyourtradeiselectricalt\",92]];\n(function(){\n  function init(){\n  var root = document.querySelector('.msq-audio'); if (!root) { return; }\n  var audio = root.querySelector('audio'), items = Array.prototype.slice.call(root.querySelectorAll('.msq-toc li'));\n  var starts = items.map(function(li){ return parseFloat(li.getAttribute('data-start')) || 0; });\n  var names = items.map(function(li){ return li.querySelector('a').textContent; });\n  var anchors = items.map(function(li){ var h = li.querySelector('a').getAttribute('href') || ''; return (h.charAt(0) === '#' && h !== '#top') ? document.getElementById(h.slice(1)) : null; });\n  var article = root.getAttribute('data-article') || location.pathname, minutes = root.getAttribute('data-minutes') || '';\n  var marks = {}, started = false, pausedAt = -1, closed = false, ended = false;\n  var RATES = [1, 1.25, 1.5], rate = 1;\n  try { var saved = parseFloat(localStorage.getItem('msq-audio-rate')); if (RATES.indexOf(saved) >= 0) { rate = saved; } } catch (e) {}\n  audio.playbackRate = rate;\n  function track(name, extra){ try { if (typeof gtag === 'function') { var p = { article: article }; for (var k in extra) { p[k] = extra[k]; } gtag('event', name, p); } } catch (e) {} }\n  function current(){ var t = audio.currentTime, idx = 0; for (var i = 0; starts.length > i; i += 1) { if (t + 0.25 >= starts[i]) { idx = i; } } return idx; }\n  function onScreen(){\n    var line = window.innerHeight \/ 3, idx = 0;\n    for (var i = 0; anchors.length > i; i += 1) { var el = anchors[i]; if (el && line >= el.getBoundingClientRect().top) { idx = i; } }\n    return idx;\n  }\n  function fmt(s){ s = Math.max(0, Math.round(s || 0)); var m = Math.floor(s \/ 60), r = s % 60; return m + ':' + (10 > r ? '0' : '') + r; }\n  function play(from, source){\n    if (from !== null) { audio.currentTime = from; }\n    var p = audio.play(); if (p && p.catch) { p.catch(function(){}); }\n    track(from === null ? 'audio_resume' : 'audio_chapter', { chapter: names[current()], start: Math.round(audio.currentTime), source: source });\n  }\n  var hbtns = anchors.map(function(el, i){\n    if (!el) { return null; }\n    var b = document.createElement('button'); b.type = 'button'; b.className = 'msq-hplay'; b.setAttribute('aria-label', 'Play this section: ' + names[i]);\n    b.addEventListener('click', function(){\n      if (!audio.paused && current() === i) { audio.pause(); track('audio_pause', { source: 'heading' }); return; }\n      play(starts[i], 'heading');\n    });\n    el.appendChild(b); return b;\n  });\n  var bar = document.createElement('div'); bar.className = 'msq-bar msq-bar-pill is-hidden'; bar.setAttribute('role', 'region'); bar.setAttribute('aria-label', 'Audio player');\n  var playBtn = document.createElement('button'); playBtn.type = 'button'; playBtn.className = 'msq-bar-play';\n  var icon = document.createElement('span'); icon.className = 'msq-bar-icon'; icon.setAttribute('aria-hidden', 'true');\n  var label = document.createElement('span'); label.className = 'msq-bar-label';\n  playBtn.appendChild(icon); playBtn.appendChild(label);\n  var chap = document.createElement('span'); chap.className = 'msq-bar-chapter';\n  var clock = document.createElement('span'); clock.className = 'msq-bar-time';\n  var rateBtn = document.createElement('button'); rateBtn.type = 'button'; rateBtn.className = 'msq-bar-rate'; rateBtn.setAttribute('aria-label', 'Playback speed');\n  var closeBtn = document.createElement('button'); closeBtn.type = 'button'; closeBtn.className = 'msq-bar-close'; closeBtn.setAttribute('aria-label', 'Close the audio bar');\n  bar.appendChild(playBtn); bar.appendChild(chap); bar.appendChild(clock); bar.appendChild(rateBtn); bar.appendChild(closeBtn);\n  document.body.appendChild(bar);\n  function showRate(){ rateBtn.textContent = (rate === 1 ? '1' : String(rate)) + 'x'; }\n  showRate();\n  rateBtn.addEventListener('click', function(){\n    rate = RATES[(RATES.indexOf(rate) + 1) % RATES.length]; audio.playbackRate = rate; showRate();\n    try { localStorage.setItem('msq-audio-rate', String(rate)); } catch (e) {}\n    track('audio_rate', { rate: rate });\n  });\n  closeBtn.addEventListener('click', function(){\n    closed = true; if (!audio.paused) { audio.pause(); } paint(); track('audio_bar_close', {});\n  });\n  function mode(){\n    if (!audio.paused) { return 'pause'; }\n    if (ended) { return 'again'; }\n    if (!started) { return 'listen'; }\n    return (pausedAt === onScreen()) ? 'resume' : 'section';\n  }\n  playBtn.addEventListener('click', function(){\n    var m = mode();\n    if (m === 'pause') { audio.pause(); track('audio_pause', { source: 'bar' }); return; }\n    if (m === 'again') { ended = false; play(0, 'bar'); return; }\n    if (m === 'resume') { play(null, 'bar'); return; }\n    play(starts[onScreen()], 'bar');\n  });\n  function paint(){\n    var idx = current(), playing = !audio.paused, m = mode();\n    items.forEach(function(li, i){\n      var on = (i === idx) && playing, b = li.querySelector('.msq-toc-play'), a = li.querySelector('a');\n      li.classList.toggle('is-active', on); b.classList.toggle('is-playing', on);\n      b.textContent = on ? '\u2016' : '\u25b6\ufe0e';\n      b.setAttribute('aria-label', (on ? 'Pause: ' : 'Play from: ') + a.textContent);\n    });\n    hbtns.forEach(function(b, i){ if (b) { var on = (i === idx) && playing; b.classList.toggle('is-playing', on); b.setAttribute('aria-label', (on ? 'Pause this section: ' : 'Play this section: ') + names[i]); } });\n    playBtn.classList.toggle('is-playing', playing);\n    label.textContent = m === 'pause' ? 'Pause' : m === 'again' ? 'Play again' : m === 'resume' ? 'Resume' : m === 'section' ? 'Play this section' : 'Listen, ' + minutes + ' min';\n    playBtn.setAttribute('aria-label', label.textContent);\n    chap.textContent = started ? names[(playing || m === 'resume') ? idx : onScreen()] : '';\n    clock.textContent = started ? fmt(audio.currentTime) + ' \/ ' + fmt(audio.duration) : '';\n    bar.classList.toggle('msq-bar-pill', !started);\n    var show = !closed && (started || 0 > root.getBoundingClientRect().bottom);\n    bar.classList.toggle('is-hidden', !show);\n    document.body.classList.toggle('msq-has-bar', show);\n  }\n  root.addEventListener('click', function(e){\n    var b = e.target.closest ? e.target.closest('.msq-toc-play') : null; if (!b) { return; }\n    var li = b.parentNode, s = parseFloat(b.getAttribute('data-start')) || 0;\n    if (!audio.paused && current() === items.indexOf(li)) { audio.pause(); track('audio_pause', { source: 'index' }); return; }\n    play(s, 'index');\n  });\n  audio.addEventListener('play', function(){ ended = false; closed = false; if (!started) { started = true; track('audio_play', { minutes: Math.round((audio.duration || 0) \/ 60) }); } paint(); });\n  audio.addEventListener('pause', function(){ pausedAt = current(); paint(); });\n  audio.addEventListener('timeupdate', function(){\n    paint();\n    if (audio.duration > 0) {\n      var pct = Math.floor(audio.currentTime \/ audio.duration * 100);\n      [25, 50, 75].forEach(function(m){ if (pct >= m && !marks[m]) { marks[m] = true; track('audio_progress', { percent: m }); } });\n    }\n  });\n  audio.addEventListener('ended', function(){ ended = true; track('audio_complete', {}); paint(); });\n  var ticking = false;\n  function onScroll(){ if (ticking) { return; } ticking = true; setTimeout(function(){ ticking = false; paint(); }, 80); }\n  window.addEventListener('scroll', onScroll, { passive: true }); window.addEventListener('resize', onScroll);\n  paint();\n  }\n  if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); }\n})();\n\n(function(){\n  function start(){\n    var root = document.querySelector('.msq-audio'), audio = root ? root.querySelector('audio') : null;\n    var map = (typeof MSQ_SENT !== 'undefined') ? MSQ_SENT : [];\n    if (!root || !audio || !map.length) { return; }\n    var scope = root.closest('main') || root.closest('article') || root.closest('.entry-content') || document.body;\n    var SKIP = '.msq-audio,.msq,.msq-tool,.msq-end,.msq-bar,script,style,noscript,figcaption,#rank-math-faq,.rank-math-block,nav,header,footer';\n    function norm(s){ return s.toLowerCase().replace(\/[^a-z0-9]+\/g, ''); }\n    var nodes = [], stream = '', walker = document.createTreeWalker(scope, NodeFilter.SHOW_TEXT, null), n;\n    while ((n = walker.nextNode())) {\n      var el = n.parentElement; if (!el || el.closest(SKIP)) { continue; }\n      var raw = n.nodeValue, keep = [], norms = '';\n      for (var i = 0; raw.length > i; i += 1) { var c = raw.charAt(i).toLowerCase(); if (\/[a-z0-9]\/.test(c)) { keep.push(i); norms += c; } }\n      if (!norms) { continue; }\n      nodes.push({ node: n, a: stream.length, b: stream.length + norms.length, keep: keep });\n      stream += norms;\n    }\n    var segs = [], cursor = 0, lastRow = null;\n    map.forEach(function(m, idx){\n      var kind = m[1], f = m[2], len = m[3];\n      if (kind === 't') {\n        var rows = scope.querySelectorAll('tr'), after = !lastRow;\n        for (var r = 0; rows.length > r; r += 1) {\n          var tr = rows[r];\n          if (!after) { if (tr === lastRow) { after = true; } continue; }\n          var cell = tr.querySelector('td,th');\n          if (cell && norm(cell.textContent).indexOf(f) === 0) { tr.setAttribute('data-i', idx); lastRow = tr; break; }\n        }\n        return;\n      }\n      var p = stream.indexOf(f, cursor); if (0 > p) { return; }\n      segs.push({ i: idx, a: p, b: Math.min(p + len, stream.length) }); cursor = p + len;\n    });\n    var si = 0;\n    nodes.forEach(function(nd){\n      var frag = document.createDocumentFragment(), raw = nd.node.nodeValue, rawPos = 0, any = false;\n      for (var k = si; segs.length > k; k += 1) {\n        var sg = segs[k]; if (sg.a >= nd.b) { break; } if (nd.a >= sg.b) { continue; }\n        var s = Math.max(sg.a, nd.a), e = Math.min(sg.b, nd.b);\n        var rs = nd.keep[s - nd.a], re2 = nd.keep[e - nd.a - 1] + 1;\n        if (rs > rawPos) { frag.appendChild(document.createTextNode(raw.slice(rawPos, rs))); }\n        var span = document.createElement('span'); span.className = 'msq-s'; span.setAttribute('data-i', sg.i); span.textContent = raw.slice(rs, re2);\n        frag.appendChild(span); rawPos = re2; any = true;\n        if (sg.b > nd.b) { break; }\n      }\n      while (segs.length > si && nd.b >= segs[si].b) { si += 1; }\n      if (!any) { return; }\n      if (raw.length > rawPos) { frag.appendChild(document.createTextNode(raw.slice(rawPos))); }\n      nd.node.parentNode.replaceChild(frag, nd.node);\n    });\n    var starts = map.map(function(m){ return m[0]; }), curIdx = -1, lastUser = 0, timer = null, autoUntil = 0, dragging = false;\n    function idxAt(t){ var lo = 0, hi = starts.length; while (hi > lo + 1) { var mid = (lo + hi) >> 1; if (t + 0.15 >= starts[mid]) { lo = mid; } else { hi = mid; } } return (t + 0.15 >= starts[0]) ? lo : -1; }\n    function setNow(i){\n      if (i === curIdx) { return; }\n      Array.prototype.forEach.call(scope.querySelectorAll('.msq-now'), function(el){ el.classList.remove('msq-now'); });\n      curIdx = i; if (0 > i) { return; }\n      var els = scope.querySelectorAll('[data-i=\"' + i + '\"]'); if (!els.length) { return; }\n      Array.prototype.forEach.call(els, function(el){ el.classList.add('msq-now'); });\n      var r = els[0].getBoundingClientRect(), now = Date.now();\n      if (!dragging && now > lastUser + 2500 && (80 > r.top || r.bottom > window.innerHeight - 140)) {\n        var reduce = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n        autoUntil = now + (reduce ? 400 : 1600);\n        els[0].scrollIntoView({ block: 'center', behavior: reduce ? 'auto' : 'smooth' });\n      }\n    }\n    function tick(){ if (!audio.paused) { setNow(idxAt(audio.currentTime)); } }\n    function userScrolled(){ lastUser = Date.now(); }\n    ['wheel', 'touchmove', 'keydown'].forEach(function(ev){ window.addEventListener(ev, userScrolled, { passive: true }); });\n    window.addEventListener('scroll', function(){ if (Date.now() > autoUntil) { userScrolled(); } }, { passive: true });\n    window.addEventListener('mousedown', function(e){ if (e.clientX >= document.documentElement.clientWidth) { dragging = true; userScrolled(); } }, { passive: true });\n    window.addEventListener('mouseup', function(){ if (dragging) { dragging = false; userScrolled(); } }, { passive: true });\n    audio.addEventListener('play', function(){ if (timer) { clearInterval(timer); } timer = setInterval(tick, 150); tick(); });\n    audio.addEventListener('pause', function(){ if (timer) { clearInterval(timer); timer = null; } });\n    scope.addEventListener('click', function(e){\n      if (e.target.closest('a, button, input, select, textarea, label, summary, .msq, .msq-tool, .msq-end, .msq-audio, .msq-bar')) { return; }\n      var sel = window.getSelection ? String(window.getSelection()) : '';\n      if (sel && sel.trim()) { return; }\n      var el = e.target.closest('[data-i]'); if (!el) { return; }\n      var i = parseInt(el.getAttribute('data-i'), 10); if (isNaN(i)) { return; }\n      if (!audio.paused && i === curIdx) { return; }\n      lastUser = Date.now();\n      audio.currentTime = starts[i];\n      var p = audio.play(); if (p && p.catch) { p.catch(function(){}); }\n      try { if (typeof gtag === 'function') { gtag('event', 'audio_chapter', { article: location.pathname, source: 'sentence', start: Math.round(starts[i]) }); } } catch (err) {}\n    });\n    audio.addEventListener('seeked', tick);\n    audio.addEventListener('ended', function(){ setNow(-1); });\n  }\n  if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', start); } else { start(); }\n})();<\/script>\n<\/div>\n\n\n\n<p class=\"msq-hook wp-block-paragraph\">On this page: every requirement in one table with how long each takes, why experience verification is the item that stalls applications, the fees current in September 2026 and the hundred dollar quirk in the calendar, what falling below the credit line actually means, and the order of operations that saves the most time.<\/p>\n\n\n\n<div class=\"msq\" id=\"ms-quiz\" data-slug=\"florida-contractor-license-requirements\" data-category=\"Florida contractor licensing\" data-list=\"1\">\n<style>.msq,.msq-hook,.msq-box,.msq-end,.msq-tool{--msq-accent:#24405E;--msq-accent-text:#FFFFFF;--msq-line:#D9D3C7;--msq-warn:#C4540E;--msq-muted:#4C5561;--msq-tint:#F3F1EC;--msq-base:#FFFFFF}\n.msq{margin:1.25em 0 1.75em}\n.msq-hook{border-left:3px solid var(--msq-accent);padding:6px 14px;color:var(--msq-muted);font-size:.97em}\n.msq-box{background:var(--msq-tint);border:1px solid var(--msq-line);border-radius:12px;padding:0}\n.msq-box>summary{cursor:pointer;list-style:none;padding:14px 18px;font-weight:700;color:var(--msq-accent)}\n.msq-box>summary::-webkit-details-marker{display:none}\n.msq-box>summary::before{content:\"+\";display:inline-block;width:1.1em;font-weight:800}\n.msq-box[open]>summary::before{content:\"\\00d7\"}\n.msq-body{padding:2px 18px 18px}\n.msq-intro{margin:0 0 12px;font-size:.95em;color:var(--msq-muted)}\n.msq-list{margin:0;padding:0;list-style:none}\n.msq-q{margin:0 0 18px;padding:0}\n.msq-question{font-weight:700;margin:0 0 8px}\n.msq-options{display:flex;flex-direction:column;gap:8px}\n.msq-opt{text-align:left;background:var(--msq-base);border:1px solid var(--msq-line);border-radius:8px;padding:10px 12px;font:inherit;font-size:.95em;color:inherit;cursor:pointer;line-height:1.35}\n.msq-opt:hover{border-color:var(--msq-accent)}\n.msq-opt[disabled]{cursor:default}\n.msq-opt.is-right{border-color:var(--msq-accent);background:var(--msq-line);font-weight:700}\n.msq-opt.is-wrong{border-color:var(--msq-warn);color:var(--msq-warn)}\n.msq-explain{margin:8px 0 0;font-size:.92em;padding:10px 12px;border-left:3px solid var(--msq-accent);background:var(--msq-base);border-radius:0 8px 8px 0}\n.msq-explain[hidden]{display:none}\n.msq-verdict{font-weight:700}\n.msq-result{margin-top:14px;padding:14px 16px;background:var(--msq-base);border:1px solid var(--msq-line);border-radius:10px}\n.msq-result[hidden]{display:none}\n.msq-result h3{margin:0 0 6px;font-size:1.1em}\n.msq-result p{margin:0 0 8px}\n.msq-jump{margin:0 0 8px;padding-left:1.2em}\n.msq-form{margin-top:10px;display:flex;flex-wrap:wrap;gap:8px;align-items:center}\n.msq-form input[type=email]{flex:1 1 220px;padding:10px 12px;border:1px solid var(--msq-muted);border-radius:8px;font:inherit;background:#fff}\n.msq-btn{background:var(--msq-accent);color:var(--msq-accent-text);border:0;border-radius:8px;padding:11px 18px;font:inherit;font-weight:700;cursor:pointer}\n.msq-btn:hover{filter:brightness(.92)}\n.msq-btn[disabled]{opacity:.7;cursor:default}\n.msq-no{font-size:.9em;color:var(--msq-muted);margin-left:4px}\n.msq-privacy{margin:6px 0 0;font-size:.82em;color:var(--msq-muted);flex-basis:100%}\n.msq-hp{position:absolute;left:-5000px;width:1px;height:1px;overflow:hidden}\n.msq-msg{margin:8px 0 0;font-size:.92em}\n.msq-end{margin:1.5em 0;padding:18px;border:1px solid var(--msq-accent);border-radius:12px;text-align:center;background:var(--msq-tint)}\n.msq-end p{margin:0 0 12px}\n.msq-end .msq-body{text-align:left;padding:16px 0 0}\n.msq-end .msq-start-test[hidden]{display:none}\n.msq-tool{margin:1.5em 0;padding:18px 20px;background:var(--msq-tint);border:1px solid var(--msq-line);border-radius:12px}\n.msq-tool h3{margin:0 0 6px;font-size:1.15em}\n.msq-tool p{margin:0 0 10px}\n.msq-tool .msq-note{font-size:.85em;color:var(--msq-muted);margin:10px 0 0}\n.msq-check label{display:flex;gap:10px;align-items:flex-start;padding:9px 0;border-bottom:1px solid var(--msq-line);cursor:pointer;line-height:1.4}\n.msq-check label:last-of-type{border-bottom:0}\n.msq-check input{margin-top:5px;flex:0 0 auto;width:18px;height:18px;accent-color:var(--msq-accent)}\n.msq-check-count{font-weight:700;margin:10px 0 0}\n.msq-verdict-box{margin:12px 0 0;padding:10px 14px;border-radius:8px;background:var(--msq-base);border-left:3px solid var(--msq-warn)}\n.msq-verdict-box[hidden]{display:none}\n.msq-calc{display:grid;grid-template-columns:1fr 1fr;gap:10px 16px}\n.msq-calc label{display:flex;flex-direction:column;gap:4px;font-size:.92em}\n.msq-calc input,.msq-calc select{padding:8px 10px;border:1px solid var(--msq-muted);border-radius:8px;font:inherit;background:#fff}\n.msq-calc-out{grid-column:1 \/ -1;margin-top:6px;padding:12px 14px;background:var(--msq-base);border-radius:8px;border:1px solid var(--msq-line)}\n.msq-calc-out strong{font-size:1.15em}\n.msq-choose label{display:block;padding:9px 12px;margin:0 0 8px;background:var(--msq-base);border:1px solid var(--msq-line);border-radius:8px;cursor:pointer}\n.msq-choose input{margin-right:8px;accent-color:var(--msq-accent)}\n.msq-choice-result{margin-top:10px;padding:12px 14px;background:var(--msq-base);border-left:3px solid var(--msq-accent);border-radius:0 8px 8px 0}\n.msq-choice-result[hidden]{display:none}\n@media (max-width:600px){.msq-calc{grid-template-columns:1fr}}\nh2.wp-block-heading[id]{scroll-margin-top:24px}<\/style>\n<noscript><style>.msq-explain{display:block !important}<\/style><\/noscript>\n<details class=\"msq-box\">\n<summary>Think you already know this? Five questions, one minute.<\/summary>\n<div class=\"msq-body\">\n<p class=\"msq-intro\">Every answer is on this page. Answer from what you know now; the page fills in the rest.<\/p>\n<ol class=\"msq-list\">\n<li class=\"msq-q\" data-q=\"1\" data-answer=\"b\" data-title=\"Experience, and what actually counts\" data-section=\"#experience-and-what-actually-counts\">\n<p class=\"msq-question\">1. What does this page say is the single most common reason an application sits unfinished for months?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 1 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">Failing the exam<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">Tracking down a supervisor from years ago, who has changed companies twice, to verify experience<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">Choosing a category<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>Four years is the headline number; the experience must be in the category, at an appropriate level of responsibility, and verifiable by someone credible. Self employment counts, but you carry the burden of proof through contracts, permits and tax records. <a class=\"msq-section\" href=\"#experience-and-what-actually-counts\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"2\" data-answer=\"a\" data-title=\"What does the paperwork cost?\" data-section=\"#what-does-the-paperwork-cost\">\n<p class=\"msq-question\">2. For a certified licence in September 2026, what is the initial application fee for applications submitted between May of an even year and August of an odd year?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 2 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">245 dollars, against 145 for the shorter remainder of the cycle<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">25 dollars<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">1,000 dollars<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>Applying in September of an odd year rather than the August before it is a hundred dollars cheaper for no reason other than where the calendar fell. Each exam part is 215 dollars per attempt, 135 to Professional Testing plus 80 administration, and every figure changes without notice. <a class=\"msq-section\" href=\"#what-does-the-paperwork-cost\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"3\" data-answer=\"b\" data-title=\"Financial responsibility and the credit review\" data-section=\"#financial-responsibility-and-the-credit-review\">\n<p class=\"msq-question\">3. What happens if you fall below the credit threshold?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 3 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">Refusal<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">Not a refusal: the usual route forward is posting a bond, which costs money and is entirely survivable, and knowing in advance avoids weeks of delay<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">A criminal record<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>The state wants evidence you can run a business without leaving customers and subcontractors stranded. Pull your own credit and look at it honestly, so a bond requirement is a plan rather than a surprise at submission. <a class=\"msq-section\" href=\"#financial-responsibility-and-the-credit-review\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"4\" data-answer=\"b\" data-title=\"The background check\" data-section=\"#the-background-check\">\n<p class=\"msq-question\">4. What does this page say causes serious problems in the background check?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 4 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">Any conviction, automatically<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">Non disclosure: declaring something with context is a manageable conversation, having it surface after you said there was nothing is not<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">Fingerprinting<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span>A criminal record does not automatically disqualify anyone. The board weighs the nature of the offense, how long ago it was, and what you have done since. <a class=\"msq-section\" href=\"#the-background-check\">Read the section<\/a><\/p>\n<\/li>\n<li class=\"msq-q\" data-q=\"5\" data-answer=\"b\" data-title=\"Continuing education and renewal\" data-section=\"#continuing-education-and-renewal\">\n<p class=\"msq-question\">5. When do certified licences renew, and why does the calendar catch people?<\/p>\n<div class=\"msq-options\" role=\"group\" aria-label=\"Question 5 options\"><button type=\"button\" class=\"msq-opt\" data-opt=\"a\">Two years from the date of issue<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"b\">By 31 August of even numbered years, fixed to the calendar, so a licence issued in July of an even year faces its first renewal about six weeks later<\/button><button type=\"button\" class=\"msq-opt\" data-opt=\"c\">Every January<\/button><\/div>\n<p class=\"msq-explain\" hidden><span class=\"msq-verdict\"><\/span><a href=\"https:\/\/www.law.cornell.edu\/regulations\/florida\/Fla-Admin-Code-Ann-R-61G4-18-001\" target=\"_blank\" rel=\"noopener\">Rule 61G4-18.001<\/a> puts the continuing education at 14 hours per cycle, with five single hour topics pinned for everyone. Check where you sit in the cycle the moment you are licensed rather than assuming you have two clear years. <a class=\"msq-section\" href=\"#continuing-education-and-renewal\">Read the section<\/a><\/p>\n<\/li>\n<\/ol>\n<div class=\"msq-result\" hidden><\/div>\n<\/div>\n<\/details>\n<script>(function(){\n  if (window.__msqInit) { return; }\n  window.__msqInit = true;\n  var root = document.getElementById('ms-quiz');\n  if (!root) { return; }\n  var meta = { slug: root.getAttribute('data-slug'), category: root.getAttribute('data-category'),\n               list: root.getAttribute('data-list') || '1' };\n  function qs(el, s){ return el.querySelector(s); }\n  function qsa(el, s){ return Array.prototype.slice.call(el.querySelectorAll(s)); }\n  function track(name, params){\n    try { if (typeof gtag === 'function') { var p = params || {}; p.article = meta.slug; gtag('event', name, p); } } catch (e) {}\n  }\n  function jumpList(missed){\n    if (!missed.length) { return ''; }\n    return '<ul class=\"msq-jump\">' + missed.map(function(q){\n      return '<li><a href=\"' + q.getAttribute('data-section') + '\">' + q.getAttribute('data-title') + '<\/a><\/li>';\n    }).join('') + '<\/ul>';\n  }\n  function emailForm(){\n    return '<div class=\"msq-sub\"><p><strong>Get the next one.<\/strong> We publish new articles on ' + meta.category\n      + ' most weeks and recheck this page on Sundays. Email me when a new article goes up or this page changes.<\/p>'\n      + '<form class=\"msq-form\" method=\"post\" action=\"\/mail\/form.php\" novalidate>'\n      + '<input type=\"hidden\" name=\"list\" value=\"' + meta.list + '\">'\n      + '<input type=\"hidden\" name=\"name\" value=\"\">'\n      + '<label class=\"msq-hp\" aria-hidden=\"true\">Leave this empty<input type=\"text\" name=\"website\" tabindex=\"-1\" autocomplete=\"off\"><\/label>'\n      + '<input type=\"email\" name=\"email\" placeholder=\"you@example.com\" required aria-label=\"Email address\" autocomplete=\"email\">'\n      + '<button type=\"submit\" class=\"msq-btn\">Email me the updates<\/button>'\n      + '<a href=\"#\" class=\"msq-no\">No thanks<\/a>'\n      + '<p class=\"msq-privacy\">We store your email and this page\\'s topic, nothing else. Unsubscribe any time.<\/p>'\n      + '<\/form><p class=\"msq-msg\" aria-live=\"polite\"><\/p><\/div>';\n  }\n  \/* The autoresponder always answers 200 with its own page. A \".msg.err\" box means the\n     address was rejected, \"You're subscribed\" means accepted, and a redirect only happens\n     after a successful subscribe. Same reading as the landing pages on the other sites. *\/\n  function sendForm(form){\n    return fetch(form.getAttribute('action'), { method: 'POST', body: new FormData(form), credentials: 'same-origin', redirect: 'manual' })\n      .then(function(res){\n        if (res.type === 'opaqueredirect') { return { status: 'ok' }; }\n        if (res.status === 404) { return { status: 'notlive' }; }\n        if (!res.ok) { throw new Error('HTTP ' + res.status); }\n        return res.text().then(function(t){\n          var doc = new DOMParser().parseFromString(t, 'text\/html');\n          var err = doc.querySelector('.msg.err');\n          if (err) {\n            var m = err.textContent.trim();\n            if (\/something went wrong\/i.test(m)) { throw new Error(m); }\n            return { status: 'rejected', message: m };\n          }\n          if (\/you.re subscribed\/i.test(doc.body.textContent)) { return { status: 'ok' }; }\n          return { status: 'unknown' };\n        });\n      });\n  }\n  function wireForm(sub){\n    var form = qs(sub, '.msq-form'), msg = qs(sub, '.msq-msg');\n    qs(form, '.msq-no').addEventListener('click', function(e){\n      e.preventDefault();\n      sub.innerHTML = '<p class=\"msq-msg\">No problem. The Sunday refresh keeps this page current either way.<\/p>';\n      track('quiz_email', { result: 'declined' });\n    });\n    form.addEventListener('submit', function(e){\n      e.preventDefault();\n      var input = qs(form, 'input[name=email]'), btn = qs(form, '.msq-btn');\n      var email = input.value.trim(); input.value = email;\n      if (!\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(email)) { msg.textContent = 'That email does not look right.'; return; }\n      btn.disabled = true; btn.textContent = 'Sending';\n      function reset(){ btn.disabled = false; btn.textContent = 'Email me the updates'; }\n      sendForm(form).then(function(r){\n        if (r.status === 'ok' || r.status === 'unknown') {\n          sub.innerHTML = '<p class=\"msq-msg\"><strong>Done.<\/strong> We will email you when the next article on ' + meta.category\n            + ' goes up and when this page changes. If a confirmation email arrives, click it.<\/p>';\n          track('quiz_email', { result: r.status });\n          if (r.status === 'ok') { track('generate_lead', { method: 'quiz' }); }\n        } else if (r.status === 'notlive') {\n          msg.textContent = 'Sign up is not switched on yet for this site. Nothing was stored.'; reset();\n          track('quiz_email', { result: 'notlive' });\n        } else {\n          msg.textContent = r.message || 'Please check the email address and try again.'; reset();\n          track('quiz_email', { result: 'rejected' });\n        }\n      }).catch(function(){\n        msg.textContent = 'Could not reach the sign up service just now. Nothing was stored.'; reset();\n        track('quiz_email', { result: 'error' });\n      });\n    });\n  }\n  function finish(container, mode, score, total, missed){\n    var result = qs(container, '.msq-result');\n    track('quiz_complete', { mode: mode, score: score, total: total });\n    var h;\n    if (mode === 'pre') {\n      h = '<h3>You knew ' + score + ' of ' + total + ' before reading.<\/h3>';\n      h += (score === total) ? '<p>All of them. Read on anyway; the sections below carry the detail behind each answer.<\/p>'\n                             : '<p>The rest is below. Jump straight to what you missed:<\/p>' + jumpList(missed);\n      try { sessionStorage.setItem('msq-pre-' + meta.slug, String(score)); } catch (e) {}\n    } else {\n      var pre = null;\n      try { pre = sessionStorage.getItem('msq-pre-' + meta.slug); } catch (e) {}\n      h = '<h3>You got ' + score + ' of ' + total + '.<\/h3>';\n      if (pre !== null) { h += '<p>Before reading you had ' + pre + ' of ' + total + '.<\/p>'; }\n      if (missed.length) { h += '<p>Worth a second look:<\/p>' + jumpList(missed); }\n      h += emailForm();\n    }\n    result.innerHTML = h; result.hidden = false;\n    if (mode !== 'pre') { wireForm(qs(result, '.msq-sub')); }\n    result.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n  }\n  function setup(container, mode){\n    var qEls = qsa(container, '.msq-q'), answered = 0, score = 0, missed = [];\n    qEls.forEach(function(q){\n      var answer = q.getAttribute('data-answer'), opts = qsa(q, '.msq-opt'), explain = qs(q, '.msq-explain');\n      q.removeAttribute('data-done'); explain.hidden = true; qs(explain, '.msq-verdict').textContent = '';\n      opts.forEach(function(b){ b.disabled = false; b.classList.remove('is-right', 'is-wrong'); });\n      opts.forEach(function(b){\n        b.addEventListener('click', function(){\n          if (q.getAttribute('data-done')) { return; }\n          q.setAttribute('data-done', '1');\n          var ok = b.getAttribute('data-opt') === answer;\n          opts.forEach(function(o){ o.disabled = true; if (o.getAttribute('data-opt') === answer) { o.classList.add('is-right'); } });\n          if (ok) { score += 1; } else { b.classList.add('is-wrong'); missed.push(q); }\n          qs(explain, '.msq-verdict').textContent = ok ? 'Right. ' : 'Not quite. ';\n          explain.hidden = false;\n          answered += 1;\n          track('quiz_answer', { mode: mode, question: q.getAttribute('data-q'), correct: ok ? 1 : 0 });\n          if (answered === qEls.length) { finish(container, mode, score, qEls.length, missed); }\n        });\n      });\n    });\n  }\n  var box = qs(root, '.msq-box');\n  setup(root, 'pre');\n  if (box) { box.addEventListener('toggle', function(){ if (box.open) { track('quiz_open', { mode: 'pre' }); } }); }\n  \/* The end block sits far below this script, so it does not exist yet while this runs\n     during parsing. A delegated listener finds it at click time. *\/\n  document.addEventListener('click', function(e){\n    var startBtn = (e.target && e.target.closest) ? e.target.closest('.msq-start-test') : null;\n    if (!startBtn) { return; }\n    var end = startBtn.closest('.msq-end');\n    if (!end) { return; }\n    var mount = qs(end, '.msq-mount');\n    var clone = qs(root, '.msq-body').cloneNode(true);\n    var intro = qs(clone, '.msq-intro');\n    if (intro) { intro.textContent = 'The same five questions, now that you have read the page.'; }\n    var res = qs(clone, '.msq-result'); if (res) { res.hidden = true; res.innerHTML = ''; }\n    mount.innerHTML = ''; mount.appendChild(clone);\n    setup(mount, 'test');\n    startBtn.hidden = true;\n    track('quiz_open', { mode: 'test' });\n    mount.scrollIntoView({ behavior: 'smooth', block: 'start' });\n    var first = qs(mount, '.msq-opt'); if (first) { first.focus({ preventScroll: true }); }\n  });\n  \/* Shared tool behaviour: checklists remember their ticks on this device, and a chooser\n     shows the result for the option picked. Calculators carry their own small script. *\/\n  function initTools(){\n    qsa(document, '.msq-check').forEach(function(box){\n      var key = 'msq-check-' + meta.slug + '-' + (box.getAttribute('data-id') || 'x');\n      var boxes = qsa(box, 'input[type=checkbox]'), count = qs(box, '.msq-check-count');\n      var yes = qs(box, '.msq-verdict-yes'), no = qs(box, '.msq-verdict-no');\n      var saved = {};\n      try { saved = JSON.parse(localStorage.getItem(key) || '{}'); } catch (e) {}\n      boxes.forEach(function(cb, i){ if (saved[i]) { cb.checked = true; } });\n      function refresh(){\n        var n = boxes.filter(function(cb){ return cb.checked; }).length, state = {};\n        boxes.forEach(function(cb, i){ if (cb.checked) { state[i] = 1; } });\n        try { localStorage.setItem(key, JSON.stringify(state)); } catch (e) {}\n        if (count) { count.textContent = n + ' of ' + boxes.length + (box.getAttribute('data-verb') || ' done'); }\n        if (yes && no) { yes.hidden = n === 0; no.hidden = n !== 0; }\n      }\n      boxes.forEach(function(cb){ cb.addEventListener('change', function(){ refresh(); track('tool_check', { tool: box.getAttribute('data-id') }); }); });\n      refresh();\n    });\n    qsa(document, '.msq-choose').forEach(function(box){\n      var results = qsa(box, '.msq-choice-result');\n      qsa(box, 'input[type=radio]').forEach(function(r){\n        r.addEventListener('change', function(){\n          results.forEach(function(el){ el.hidden = el.getAttribute('data-for') !== r.value; });\n          track('tool_choose', { tool: box.getAttribute('data-id'), choice: r.value });\n        });\n      });\n    });\n  }\n  \/\/ read progress: how far down the article the reader has scrolled, fired once per quarter\n  (function(){\n    var art = root.closest('article') || root.parentNode, fired = {};\n    function check(){\n      var top = art.getBoundingClientRect().top + window.pageYOffset, h = art.offsetHeight || 1;\n      var seen = (window.pageYOffset + window.innerHeight - top) \/ h * 100;\n      [25, 50, 75, 100].forEach(function(m){ if (seen >= m && !fired[m]) { fired[m] = true; track('read_progress', { percent: m }); } });\n    }\n    window.addEventListener('scroll', check, { passive: true }); window.addEventListener('load', check);\n  })();\n  if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initTools); } else { initTools(); }\n})();<\/script>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">This is the full picture for a certified license, the statewide one issued by the Construction Industry Licensing Board, and it applies the same way whichever of Florida&#8217;s license categories you are qualifying for. The registered route through a local authority replaces the state exam with a local certificate of competency but keeps most of the rest. For the full list of categories this checklist applies to, see our breakdown of <a href=\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-types\/\">every Florida contractor license type<\/a>. If the work you have in mind is small repairs, check first whether it needs a license at all, because <a href=\"https:\/\/passcontractorexam.com\/articles\/florida-handyman-requirements\/\">Florida handyman license requirements turn on a $2,500 exemption<\/a> that most websites still misquote.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"the-requirements-in-full\">The requirements, in full<\/h2>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><thead><tr><th>Requirement<\/th><th>What it means<\/th><th>How long it takes to sort<\/th><\/tr><\/thead><tbody><tr><td>Age<\/td><td>At least 18<\/td><td>Immediate<\/td><\/tr><tr><td>Experience<\/td><td>Four years in the category, or an approved education blend<\/td><td>Weeks, verification is slow<\/td><\/tr><tr><td>Exams<\/td><td>Trade knowledge plus Business and Finance<\/td><td>Months if you prepare properly<\/td><\/tr><tr><td>Financial responsibility<\/td><td>Credit review and financial documentation<\/td><td>Weeks, longer if a bond is needed<\/td><\/tr><tr><td>Insurance<\/td><td>General liability and workers compensation<\/td><td>Days once you have quotes<\/td><\/tr><tr><td>Background check<\/td><td>Fingerprints and disclosure<\/td><td>Weeks<\/td><\/tr><tr><td>Application and fees<\/td><td>Submitted to DBPR<\/td><td>Review takes time after submission<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"experience-and-what-actually-counts\">Experience, and what actually counts<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Four years is the headline number. The detail underneath it is where applications get held up.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The experience must be in the category you are applying for. Four years of residential framing does not automatically qualify you for a general license covering high rise work. It must also be at an appropriate level of responsibility, which is why time as a laborer is treated differently from time running crews. Air conditioning adds a twist, because the same experience qualifies you for either class and <a href=\"https:\/\/passcontractorexam.com\/articles\/florida-air-conditioning-contractor-license\/\">choosing between a Class A and Class B air conditioning license<\/a> turns on a 25 ton capacity cap instead. The residential category has its own version of that test too: our guide to <a href=\"https:\/\/passcontractorexam.com\/articles\/residential-contractor-license-florida\/\">the Florida residential contractor license<\/a> covers the specific structural categories the board wants, not just years in the trade generally.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Most importantly it must be <strong>verifiable<\/strong>. Someone credible has to attest to it, usually a licensed contractor, a supervisor or an employer. Self employment counts, but you carry the burden of proof through contracts, permits and tax records.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Start collecting verification before anything else. Tracking down a supervisor from five years ago, who has changed companies twice, is the single most common reason an application sits unfinished for months.<\/p>\n<\/blockquote>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"627\" src=\"https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/08\/florida-contractor-license-requirements-2.jpg\" alt=\"Financial documents and calculator used for a contractor license application\" class=\"wp-image-41\" srcset=\"https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/08\/florida-contractor-license-requirements-2.jpg 1200w, https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/08\/florida-contractor-license-requirements-2-300x157.jpg 300w, https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/08\/florida-contractor-license-requirements-2-1024x535.jpg 1024w, https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/08\/florida-contractor-license-requirements-2-768x401.jpg 768w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><figcaption class=\"wp-block-image__caption\">Credit and financial documentation stop more applications than exams do.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"education-as-a-substitute\">Education as a substitute<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Accredited education substitutes for part of the experience requirement. A construction related degree carries the most weight, and college level coursework in construction management, engineering or architecture carries less but is still recognized.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">How many years any given qualification is worth depends on assessment of your specific credits, and published sources disagree with each other on the numbers. Get yours assessed rather than assuming. Building a timeline around a figure from a blog post is how people discover they are a year short at application.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-does-the-paperwork-cost\">What does the paperwork cost?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Less than the exam preparation and more than people budget for. The figures below are the ones current in September 2026 for a certified licence, and every one of them is set by the department and changes without notice, so treat them as an order of magnitude rather than a quote. The largest line inside exam preparation is usually the reference books, and <a href=\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-exam-approved-books\/\">the approved book list for each Florida contractor exam<\/a> shows which titles you actually need on which day. The preparation side has its own arithmetic, and our <a href=\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-exam-prep\/\">comparison of Florida contractor exam prep courses with self study<\/a> adds the state exam fees to every route so the totals line up.<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><thead><tr><th>Item<\/th><th>Amount<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Initial application, May of an even year to August of an odd year<\/td><td>245 dollars<\/td><td>Covers the longer remaining part of the cycle<\/td><\/tr><tr><td>Initial application, September of an odd year to April of an even year<\/td><td>145 dollars<\/td><td>Prorated for the shorter remainder<\/td><\/tr><tr><td>Renewal, active licence<\/td><td>205 dollars<\/td><td>255 dollars where a business is qualified<\/td><\/tr><tr><td>Renewal after the deadline<\/td><td>230 dollars<\/td><td>280 dollars where a business is qualified<\/td><\/tr><tr><td>Each exam part, per attempt<\/td><td>215 dollars<\/td><td>135 to Professional Testing plus 80 administration<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The prorated application fee is the one worth noticing. Applying in September of an odd year rather than the August before it is a hundred dollars cheaper for no reason other than where the calendar fell. It is not a large enough saving to delay a career, and it is free money if your timeline was flexible anyway. Current amounts are on the department <a href=\"https:\/\/www2.myfloridalicense.com\/construction-industry\/faqs\/\" target=\"_blank\" rel=\"noopener\">construction industry FAQ pages<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"900\" src=\"https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/09\/florida-contractor-license-requirements-chart.png\" alt=\"Chart of Florida contractor license requirements fees: application 145 or 245 dollars, renewal 205, late renewal 230, each exam part 215.\" class=\"wp-image-306\" srcset=\"https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/09\/florida-contractor-license-requirements-chart.png 1600w, https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/09\/florida-contractor-license-requirements-chart-300x169.png 300w, https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/09\/florida-contractor-license-requirements-chart-1024x576.png 1024w, https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/09\/florida-contractor-license-requirements-chart-768x432.png 768w, https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/09\/florida-contractor-license-requirements-chart-1536x864.png 1536w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\" \/><figcaption class=\"wp-block-image__caption\">Fees for a certified licence as published in September 2026. They are set by the department and change without notice, so treat them as an order of magnitude rather than a quote.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"financial-responsibility-and-the-credit-review\">Financial responsibility and the credit review<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The state wants evidence that you can run a business without leaving customers and subcontractors stranded. In practice that means a credit review and supporting financial documentation. The exact line and what happens below it are set out in our guide to <a href=\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-credit-score\/\">the 660 FICO score rule for a Florida contractor license<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Falling below the threshold is not a refusal. The usual route forward is posting a bond, which costs money and is entirely survivable. What matters is knowing this in advance, because discovering it at submission adds weeks.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"insurance\">Insurance<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">General liability and workers compensation, at the levels the state sets for your category. These need to be in place when you apply rather than arranged afterwards.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Minimums change, so take the current figures from <a href=\"https:\/\/www2.myfloridalicense.com\/construction-industry\/\" rel=\"nofollow noopener\" target=\"_blank\">DBPR<\/a> and not from a guide. Any article quoting you a specific dollar amount for insurance minimums, including a figure that was correct when it was written, is a liability rather than a help. For a building contractor, our breakdown of <a href=\"https:\/\/passcontractorexam.com\/articles\/florida-building-contractor-license\/#what-does-the-board-need-from-you-after-the-exams\">what the board needs from you after the CBC exams<\/a> takes the $300,000 and $50,000 minimums straight from rule 61G4-15.003 and the July 2024 application form, dated the day it was checked.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1376\" height=\"768\" src=\"https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/09\/florida-contractor-license-requirements-insurance.jpg\" alt=\"White work van outside a home renovation at golden hour, the business that Florida contractor license requirements for insurance sit behind.\" class=\"wp-image-307\" srcset=\"https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/09\/florida-contractor-license-requirements-insurance.jpg 1376w, https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/09\/florida-contractor-license-requirements-insurance-300x167.jpg 300w, https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/09\/florida-contractor-license-requirements-insurance-1024x572.jpg 1024w, https:\/\/passcontractorexam.com\/articles\/wp-content\/uploads\/2026\/09\/florida-contractor-license-requirements-insurance-768x429.jpg 768w\" sizes=\"auto, (max-width: 1376px) 100vw, 1376px\" \/><figcaption class=\"wp-block-image__caption\">General liability and workers compensation have to be in place when you apply, at levels set for your category. Take the current minimums from the department, not from a guide, this one included.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"the-background-check\">The background check<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Fingerprinting and disclosure. A criminal record does not automatically disqualify anyone. The board weighs the nature of the offense, how long ago it was, and what you have done since. Which nine people actually weigh it, and why a disclosed conviction sends a file to a scheduled meeting rather than a staff desk, is set out in our explainer on <a href=\"https:\/\/passcontractorexam.com\/articles\/florida-state-contractors-board\/\">who sits on the Florida state contractors board and what it decides<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">What does cause serious problems is non disclosure. Declaring something with context is a manageable conversation. Having it surface after you said there was nothing is a different and much worse situation.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"continuing-education-and-renewal\">Continuing education and renewal<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The license is not permanent. Florida runs contractor licenses on a two year renewal cycle with 14 hours of continuing education required in each period. Five of those hours are pinned to named subjects, at least one hour each in workplace safety, workers compensation, business practices, laws and rules, and the advanced module of the Florida Building Code. General, building, residential, roofing, specialty structure and glass and glazing contractors also owe an hour of wind mitigation methodology. The remainder is general, and it has to come from a provider the Construction Industry Licensing Board has approved, which is not the same thing as a course that says it is approved.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The dates are worth writing down, because they are fixed to the calendar rather than to you. Certified licences renew by 31 August of even numbered years, so the most recent deadline was 31 August 2026 and the next is 31 August 2028. Registered licences renew by 31 August of odd numbered years, the next being 31 August 2027. If you are reading this in September 2026 with a certified licence you have not renewed, you are already into late fee territory rather than merely behind. <a href=\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-continuing-education\/\">The hours, deadlines and what counts<\/a> goes through the cycle in detail, including what happens to a licence left unrenewed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The detail that catches people is exactly that fixed calendar. Get licensed in July of an even year and your first renewal lands about six weeks later. The saving grace is that <a href=\"https:\/\/flrules.org\/gateway\/ruleNo.asp?id=61G4-18.001\" target=\"_blank\" rel=\"noopener\">rule 61G4-18.001(9)<\/a> asks no continuing education for the year a licence is first issued, so that renewal is a fee and a form rather than a course binge, and our <a href=\"https:\/\/passcontractorexam.com\/articles\/florida-contractor-license-renewal\/\">breakdown of renewal dates, fees and first renewal hours<\/a> works out who owes none, who owes seven and who owes all 14. Nobody tells you this at the point you pass. Check where you sit in the cycle the moment you are licensed rather than assuming you have two clear years.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"qualifying-a-business-and-what-that-commits-you-to\">Qualifying a business, and what that commits you to<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Licenses belong to people, businesses do not hold them. A construction company operates by having a licensed qualifying agent attached to it. If you are licensing yourself for your own company, this is straightforward.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The situation worth understanding is the other one. An unlicensed business owner can engage a licensed qualifier, which is legal and common. The qualifier carries legal responsibility for work done under their license regardless of their day to day involvement, and if they leave, the business loses its authority to operate until someone replaces them. The duties attached to qualifying a business are set out in <a href=\"https:\/\/www.leg.state.fl.us\/statutes\/index.cfm?App_mode=Display_Statute&#038;URL=0400-0499\/0489\/0489.html\" target=\"_blank\" rel=\"noopener\">chapter 489 of the Florida Statutes<\/a>, which is the text a disciplinary case is argued from, not a summary of it. Our walkthrough of <a href=\"https:\/\/passcontractorexam.com\/articles\/qualifying-agent-florida-contractor-license\/\">what a Florida qualifying agent is actually responsible for<\/a> sets out the split between primary and secondary agents and the 60 day exit.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Being paid to qualify a company you do not actually run is one of the more reliable ways to lose a license you spent years earning. The liability follows the license, not the paycheck.<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"coming-from-another-state\">Coming from another state<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Florida has reciprocity arrangements with some states for some license categories, and the terms differ by state and by category. It is genuinely worth checking rather than assuming either way, because the answer ranges from a straightforward transfer to sitting the full Florida exam.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Even where reciprocity applies, the Florida specific content generally does not go away. Florida Building Code requirements around wind loading and coastal construction have no equivalent in most states, and the state has a clear interest in candidates knowing them.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"the-order-that-saves-the-most-time\">The order that saves the most time<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n\n<li>Start experience verification now. It is the longest lead time item and it does not depend on anything else.<\/li>\n\n\n<li>Get education assessed in parallel if you are relying on it.<\/li>\n\n\n<li>Pull your own credit and look at it honestly, so a bond requirement is a plan rather than a surprise.<\/li>\n\n\n<li>Get insurance quotes, but do not bind coverage until your timeline is clearer.<\/li>\n\n\n<li>Prepare for and sit both exams.<\/li>\n\n\n<li>Submit with everything assembled, rather than submitting and then chasing documents.<\/li>\n\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">For what the license lets you build once you have it, see <a href=\"https:\/\/passcontractorexam.com\/articles\/florida-general-contractor-license\/\">the general contractor license<\/a>. If your trade is electrical, <a href=\"https:\/\/passcontractorexam.com\/articles\/florida-electrical-contractor-license\/\">the electrical contractor license<\/a> covers a different board and a different route.<\/p>\n\n\n\n<div class=\"msq-tool msq-check\" data-id=\"app-order\" data-verb=\" started\">\n<h3>The order that saves the most time<\/h3>\n<p>Six steps from this page, in the order that keeps the slow items moving first. Tick each as it starts, not as it finishes.<\/p>\n<label><input type=\"checkbox\">Experience verification requested from every attester<\/label>\n<label><input type=\"checkbox\">Education sent for assessment, if you are relying on it<\/label>\n<label><input type=\"checkbox\">Own credit report pulled and read honestly<\/label>\n<label><input type=\"checkbox\">Insurance quotes in hand, coverage not yet bound<\/label>\n<label><input type=\"checkbox\">Both exams prepared for and sat<\/label>\n<label><input type=\"checkbox\">Application submitted with everything assembled<\/label>\n<p class=\"msq-check-count\"><\/p>\n<p class=\"msq-note\">Ticks are saved on this device only. Fees, minimums and forms change without notice, and the department&#8217;s own pages are the authority for all of them.<\/p>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"frequently-asked-questions\">Frequently asked questions<\/h2>\n\n\n<div id=\"rank-math-faq\" class=\"rank-math-block\">\n<div class=\"rank-math-list \">\n<div id=\"faq-q-1\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">What are the basic eligibility requirements?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>You must be at least 18, have four years of qualifying experience or an approved combination of experience and education, pass the required exams, demonstrate financial responsibility, carry the required insurance, and clear a background check. Each of those has detail behind it worth understanding before you apply.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-2\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">Does a felony conviction disqualify me?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Not automatically. The board considers the nature of the offense, how long ago it was, and evidence of rehabilitation. What causes real problems is failing to disclose it. Disclosure with an explanation is survivable. A discovered omission generally is not.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-3\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">What insurance do I need?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>General liability and workers compensation coverage, at levels set by the state for your license category. Exact minimums change, so take the current figures from the DBPR rather than from any guide. You need this in place at application, not after.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-4\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">What does financial responsibility mean in practice?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>The state wants evidence you can run a business without leaving customers stranded. That means a credit review and financial documentation. Applicants below the threshold can generally still proceed by posting a bond, which costs money but is not a dead end.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-5\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">How long is the license valid?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Licenses run on a two year renewal cycle with continuing education required each period. Note that the renewal cycle is fixed by date rather than by when you were licensed, so a license issued late in a cycle comes up for renewal sooner than you might expect.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-6\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">When does a Florida contractor license have to be renewed?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Certified licences renew by 31 August of even numbered years, so the most recent deadline was 31 August 2026 and the next falls on 31 August 2028. Registered licences renew by 31 August of odd numbered years, next on 31 August 2027. The cycle is fixed to the calendar rather than to your licensing date, so a licence issued shortly before a deadline still needs renewing at it.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-7\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">How many continuing education hours are required?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Fourteen hours per two year cycle. At least one hour each must cover workplace safety, workers compensation, business practices, laws and rules, and the advanced module of the Florida Building Code, with an additional wind mitigation hour for several categories including general, building, residential and roofing. The rest is general, taken from a provider approved by the Construction Industry Licensing Board.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-q-8\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">What does the application itself cost?<\/h3>\n<div class=\"rank-math-answer \">\n\n<p>For a certified licence in September 2026, the initial application fee is 245 dollars for applications submitted between May of an even year and August of an odd year, and 145 dollars for those submitted between September of an odd year and April of an even year, because the second window buys a shorter remaining cycle. Renewal is 205 dollars active, or 230 dollars once late. Fees change without notice, so confirm the current amount before you send anything.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n<div class=\"msq-end\" id=\"ms-quiz-end\">\n<p><strong>Finished the page?<\/strong> The same five questions from the top, to see what stuck.<\/p>\n<button type=\"button\" class=\"msq-btn msq-start-test\">Test Your Understanding of This Article<\/button>\n<div class=\"msq-mount\"><\/div>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Rules and fees change without notice. This page was last rechecked on 6 September 2026. We are independent and not affiliated with, endorsed by or approved by the Florida DBPR. If you hit something different, tell us in the comments.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Experience, education, finances, insurance and the background check, plus the parts that actually delay applications.<\/p>\n","protected":false},"author":1,"featured_media":40,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","rank_math_title":"Florida Contractor License Requirements: The Full Checklist","rank_math_description":"Every requirement for a Florida contractor license: experience, education, age, financial responsibility, insurance and the background check, plus what trips applicants up.","rank_math_focus_keyword":"florida contractor license requirements","rank_math_canonical_url":"","rank_math_breadcrumb_title":"","rank_math_facebook_title":"","rank_math_facebook_description":"","rank_math_facebook_image":"","rank_math_twitter_title":"","rank_math_twitter_description":"","rank_math_twitter_image":"","rank_math_pillar_content":"","rank_math_robots":[],"rank_math_advanced_robots":[]},"categories":[4],"tags":[],"class_list":["post-42","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-licensing"],"_links":{"self":[{"href":"https:\/\/passcontractorexam.com\/articles\/wp-json\/wp\/v2\/posts\/42","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/passcontractorexam.com\/articles\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/passcontractorexam.com\/articles\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/passcontractorexam.com\/articles\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/passcontractorexam.com\/articles\/wp-json\/wp\/v2\/comments?post=42"}],"version-history":[{"count":24,"href":"https:\/\/passcontractorexam.com\/articles\/wp-json\/wp\/v2\/posts\/42\/revisions"}],"predecessor-version":[{"id":799,"href":"https:\/\/passcontractorexam.com\/articles\/wp-json\/wp\/v2\/posts\/42\/revisions\/799"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/passcontractorexam.com\/articles\/wp-json\/wp\/v2\/media\/40"}],"wp:attachment":[{"href":"https:\/\/passcontractorexam.com\/articles\/wp-json\/wp\/v2\/media?parent=42"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/passcontractorexam.com\/articles\/wp-json\/wp\/v2\/categories?post=42"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/passcontractorexam.com\/articles\/wp-json\/wp\/v2\/tags?post=42"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}