Construction retainage limits by US state — maximum withholding percentages, release deadlines, escrow requirements, and public vs private distinctions with statutory citations
State-by-state comparison of the statutory rules governing retainage (retention) on construction contracts. Each record is one state with the maximum retainage percentage for public and private projects, the deadline for releasing retained funds after substantial completion, whether retainage must be held in an interest-bearing escrow account, whether the cap is reduced after a completion milestone (e.g. 50% complete), and the statutory citation. Caps range from 0% (New Mexico) to 10%, with a strong trend toward 5%. Answers 'how much retainage can be withheld on my project in [state]', 'when must retainage be released', and 'does my state require retainage escrow'.
The data
| State | Public project retainage cap (%) | Private project retainage cap (%) | Release deadline | Escrow required | Milestone reduction | Statutory citation |
|---|---|---|---|---|---|---|
| Arizona | 10% before 50% complete; 5% after 50% complete | no statutory cap in this section | within 60 days after final completion and acceptance | no (substitute security option available) | at 50% completion, half of retained amount returned and rate drops to 5% | Ariz. Rev. Stat. § 41-2576 |
| California | 5% | not addressed in this statute | upon final completion and acceptance of the project | not addressed in this statute | after 95% of the work has been completed, the department may reduce the funds withheld to an amount not less than 125 percent of the estimated value of the work yet to be completed | Cal. Pub. Cont. Code § 10261 |
| Colorado | 5% | 5% | not specified in this section | no | none | C.R.S. § 38-46-103 |
| Connecticut | not specified on this page | not specified on this page | not specified on this page | public only | not specified on this page | not specified on this page |
| Florida | 5% | no statutory cap | same time limits for payment of a payment request apply regardless of whether the payment request is for, or includes, retainage | no | none | Fla. Stat. § 255.078 |
| Georgia | 5% | no statutory cap | within 30 days after invoice at substantial completion | no | none | Ga. Code Ann. § 13-10-80 |
| Illinois | 10% before 50% complete; 5% after 50% complete | 10% before 50% complete; 5% after 50% complete | not specified in this section | no | at 50% completion, retainage reduced to no more than 5% | 815 ILCS 603/20 |
| Indiana | per contract terms (escrow required when withheld) | no statutory cap | per contract terms | yes | none | Ind. Code § 5-16-5-5.3 |
| Iowa | 5% | no statutory cap in this section | per section 573.14 | no | none | Iowa Code § 573.12 |
| Kentucky | 10% until 50% complete, then 5% | 10% until 50% complete, then 5% | 30 days after substantial completion | no | retainage held after fifty-one percent (51%) of the construction project has been completed shall not be more than five percent (5%) | KRS 371.410 |
| Louisiana | not specified on this page | not specified on this page | not specified on this page | yes | not specified on this page | not specified on this page |
| Maryland | 5% | 5% | 90 days after the date of substantial completion | no | none | Md. Code, Real Prop. § 9-304 |
| Massachusetts | 5% | 5% (contracts ≥$3M, excluding residential 1–4 units) | not later than 14 days after substantial completion, notice submitted; retainage due per contract terms | no | none | Mass. Gen. Laws ch. 149, § 29F |
| Michigan | not specified on this page | not specified on this page | not specified on this page | public only | not specified on this page | not specified on this page |
| Minnesota | 5% | 5% | 60 days after substantial completion | no | owner may reduce or eliminate retainage if work is progressing satisfactorily | Minn. Stat. § 337.10 |
| Missouri | 5% | no statutory cap | 30 days after acceptance and receipt of required documentation | no | public owner may reduce or eliminate retainage if work is proceeding satisfactorily | RSMo § 34.057 |
| Nebraska | 10% before 50% complete; 5% after 50% complete | 10% before 50% complete; 5% after 50% complete | after substantial completion, withholding capped at 125% of estimated remaining cost | no | at 50% completion, retainage reduced to no more than 5% | Neb. Rev. Stat. § 45-1204 |
| Nevada | 5% | no statutory cap | within 30 days after occupancy, use, or recording of notice of completion, whichever occurs first | no | after 50% of the work has been completed, the public body may pay remaining progress payments without withholding additional retainage | NRS 338.515 |
| New Mexico | 0% | 0% | not specified on this page | not specified on this page | not specified on this page | not specified on this page |
| New York | 5% | 5% | 30 days after final approval of the work | no | none | N.Y. Gen. Bus. Law § 756-C |
| North Carolina | 5% | no statutory cap | 60 days after substantial completion or beneficial occupancy | no | retainage eliminated after 50% complete with surety consent | N.C. Gen. Stat. § 143-134.1 |
| Ohio | 4% (payments at not less than 96%) | no statutory cap | governed by sections 153.13 and 153.14 | no | none | Ohio Rev. Code § 153.12 |
| Oregon | 5% | 5% | interest commences 30 days after completion and acceptance | yes (contracts exceeding $500,000) | none | ORS 701.420 |
| Pennsylvania | no statutory percentage cap | no statutory percentage cap | 30 days after final acceptance of the work | no | contractor or subcontractor may post a maintenance bond for 120% of retainage upon reaching substantial completion to facilitate release | 73 P.S. § 509 (Contractor and Subcontractor Payment Act, Section 9) |
| South Carolina | no statutory cap | no statutory cap | 21 days for owner to contractor; 7 days for contractor to subcontractor after receipt | no | none | S.C. Code Ann. § 29-6-40 |
| Tennessee | 5% | 5% | 90 days after completion of the work or 90 days after substantial completion | yes | none | Tenn. Code Ann. § 66-34-103 |
| Texas | 10% (contracts <$5M); 5% (contracts ≥$5M) | no statutory cap | upon completion of the work required to be performed under the contract | optional (contracts ≥$10M, by agreement) | none | Tex. Gov't Code § 2252.032 |
| Virginia | 5% | no statutory cap | included in the final payment | no | none | Va. Code § 2.2-4333 |
| Washington | 5% | no statutory cap | 60 days after completion of all contract work | optional | contractor may request retainage be reduced to 100% of the value of work remaining | RCW 60.28.011 |
| Wisconsin | 5% until 50% complete; 0% after 50% complete (unless unsatisfactory progress) | no statutory cap in this section | upon substantial completion | no | at 50% completion, no further retainage withheld (full payments resume) | Wis. Stat. § 66.0901(9)(b) |
Where this came from
Every record above links the page it was taken from and quotes the sentence that states it. These are the 27 sources this dataset was assembled from.
- codes.findlaw.comhttps://codes.findlaw.com/az/title-41-state-government/az-rev-st-sect-41-2576.html
- leginfo.legislature.ca.govhttps://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?sectionNum=10261.&lawCode=PCC
- colorado.public.lawhttps://colorado.public.law/statutes/crs_38-46-103
- constructioncoverage.comhttps://constructioncoverage.com/glossary/retainage
- leg.state.fl.ushttp://www.leg.state.fl.us/statutes/index.cfm?App_mode=Display_Statute&URL=0200-0299/0255/Sections/0255.078.html
- codes.findlaw.comhttps://codes.findlaw.com/ga/title-13-contracts/ga-code-sect-13-10-80.html
- ilga.govhttps://www.ilga.gov/legislation/ilcs/fulltext.asp?DocName=081506030K20
- codes.findlaw.comhttps://codes.findlaw.com/in/title-5-state-and-local-administration/in-code-sect-5-16-5-5-3.html
- legis.iowa.govhttps://www.legis.iowa.gov/docs/iacode/2001/573/12.html
- apps.legislature.ky.govhttps://apps.legislature.ky.gov/law/statutes/statute.aspx?id=35259
- codes.findlaw.comhttps://codes.findlaw.com/md/real-property/md-code-real-prop-sect-9-304.html
- codes.findlaw.comhttps://codes.findlaw.com/ma/part-i-administration-of-the-government-ch-1-182/ma-gen-laws-ch-149-sect-29f/
- revisor.mn.govhttps://www.revisor.mn.gov/statutes/cite/337.10
- revisor.mo.govhttps://revisor.mo.gov/main/OneSection.aspx?bid=905&hl=§ion=34.057
- codes.findlaw.comhttps://codes.findlaw.com/ne/chapter-45-interest-loans-and-debt/ne-rev-st-sect-45-1204.html
- leg.state.nv.ushttps://www.leg.state.nv.us/nrs/nrs-338.html
- newyork.public.lawhttps://newyork.public.law/laws/n.y._general_business_law_section_756-c
- ncleg.govhttps://www.ncleg.gov/EnactedLegislation/Statutes/HTML/BySection/Chapter_143/GS_143-134.1.html
- codes.ohio.govhttps://codes.ohio.gov/ohio-revised-code/section-153.12
- oregon.public.lawhttps://oregon.public.law/statutes/ors_701.420
- legis.state.pa.ushttps://legis.state.pa.us/WU01/LI/LI/US/HTM/1994/0/0007..HTM?1=
- scstatehouse.govhttps://www.scstatehouse.gov/code/t29c006.php
- law.justia.comhttps://law.justia.com/codes/tennessee/title-66/chapter-34/part-1/section-66-34-103/
- tcss.legis.texas.govhttps://tcss.legis.texas.gov/resources/GV/htm/GV.2252.htm
- law.lis.virginia.govhttps://law.lis.virginia.gov/vacode/2.2-4333/
- app.leg.wa.govhttps://app.leg.wa.gov/rcw/default.aspx?cite=60.28.011
- docs.legis.wisconsin.govhttps://docs.legis.wisconsin.gov/document/statutes/66.0901
Machine-readable
- data.jsonThe whole dataset — every record with its source URL and source quote.
- Open Knowledge Format bundleOne JSON object per line — every record's frontmatter and quoted span exactly as it is held here, in one fetch.
- data.csvThe same records as one flat table, for a spreadsheet or a dataframe. The last four columns are the source URL, the quoted sentence it was read from, the date we last checked it, and which columns are our reading rather than the page's words.
- How this is made and checkedWhat "verified against source" does and does not mean.
From your own code
Same records, same quotes, without scraping the page: refsource is on PyPI and npm. Each value comes back carrying the URL it was read from and the sentence on that page that states it — .source and .quote sit on the value itself rather than in a side channel, so the checking step is available instead of skipped.
pip install refsource
refsource lookup construction-retainage-limits-by-state state=Arizona
npx -y refsource lookup construction-retainage-limits-by-state state=Arizona
Set your AI assistant up to use this
Two files and no account. Put this in .mcp.json at the root of your project — Claude Code, Cursor, Windsurf, VS Code and Codex all read that file — and your assistant can look this dataset up instead of recalling it. The server is remote, keyless and read-only.
{
"mcpServers": {
"referencesource": {
"type": "http",
"url": "https://referencesource.org/mcp"
}
}
}Add to Cursor · or, on the command line: claude mcp add --transport http referencesource https://referencesource.org/mcp --scope project
Then one line in the project's CLAUDE.md or AGENTS.md, so the assistant knows when to reach for it:
When a question needs "Construction retainage limits by US state — maximum withholding percentages, release deadlines, escrow requirements, and public vs private distinctions with statutory citations", call the referencesource MCP server at https://referencesource.org/mcp (tool `search_records`, dataset_slug `construction-retainage-limits-by-state`) instead of answering from memory — every record it returns carries its source URL and a verbatim quote from that page.What each tool does, and the servers built over single registers: Connect your AI assistant.