{
  "slug": "retainage-cash-flow",
  "title": "Retainage Cash Flow Calculator",
  "heading": "Retainage Cash Flow Calculator",
  "category": "financial",
  "url": "https://www.revenuelab.fyi/toolbox/retainage-cash-flow",
  "summary": "See how much cash retainage ties up and when it comes back.",
  "description": "Retainage — typically 5-10% withheld from every progress payment until substantial completion or final closeout — is one of the biggest cash flow drains in construction because you pay your subs and suppliers in full while the owner holds back a slice of what's owed to you. On a $3M job with 10% retainage held over a 12-month schedule, you can have $200,000-$300,000 of your own money tied up at any given point, financed out of your working capital or line of credit. This calculator models retainage withheld per pay application, tracks the cumulative held balance across the schedule, and estimates the financing cost of carrying that balance at your line-of-credit rate, so you can see the real cost of a retainage rate before you agree to it in contract negotiations or push back for a reduced rate after 50% completion.",
  "formula": "Retainage held per pay app = Billing × Retainage%. Financing cost ≈ Average held balance × Rate × (Duration ÷ 12).",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=retainage-cash-flow",
  "inputs": [
    {
      "id": "contractValue",
      "label": "Contract value",
      "kind": "number",
      "hint": null,
      "default": 3000000,
      "unit": "$",
      "min": 1,
      "max": null
    },
    {
      "id": "retainagePct",
      "label": "Retainage rate",
      "kind": "number",
      "hint": null,
      "default": 10,
      "unit": "%",
      "min": 0,
      "max": 20
    },
    {
      "id": "duration",
      "label": "Project duration",
      "kind": "number",
      "hint": null,
      "default": 12,
      "unit": "months",
      "min": 1,
      "max": null
    },
    {
      "id": "lineRate",
      "label": "Line of credit rate",
      "kind": "number",
      "hint": null,
      "default": 9,
      "unit": "%",
      "min": 0,
      "max": 25
    }
  ],
  "outputs": [
    {
      "id": "held",
      "label": "Total retainage held at completion",
      "format": "currency",
      "hint": null,
      "primary": true
    },
    {
      "id": "financingCost",
      "label": "Estimated financing cost of retainage",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "avgBalance",
      "label": "Average balance held during job",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "monthlyHeldPace",
      "label": "Retainage accruing per month",
      "format": "currency",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Contract value: 3000000 $",
      "Retainage rate: 10 %",
      "Project duration: 12 months",
      "Line of credit rate: 9 %"
    ],
    "outputs": [
      "Total retainage held at completion: $300,000.00",
      "Estimated financing cost of retainage: $13,500.00",
      "Average balance held during job: $150,000.00",
      "Retainage accruing per month: $25,000.00"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter contract value ($).",
      "Enter retainage rate (%).",
      "Enter project duration (months).",
      "Enter line of credit rate (%).",
      "Read your total retainage held at completion on the right — it updates as you type.",
      "Hit Share to keep the scenario or send it to someone."
    ]
  },
  "scenarios": [
    {
      "name": "Conservative",
      "description": "Lower-end numbers — what if things land soft?",
      "values": {
        "contractValue": 1800000,
        "retainagePct": 6,
        "duration": 7,
        "lineRate": 5.3999999999999995
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "contractValue": 3000000,
        "retainagePct": 10,
        "duration": 12,
        "lineRate": 9
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "contractValue": 4800000,
        "retainagePct": 16,
        "duration": 19,
        "lineRate": 14.4
      }
    }
  ],
  "limitations": [
    "Results are estimates before tax, fees, and inflation unless an input explicitly covers them.",
    "Rates are treated as fixed for the whole period — variable-rate products will drift from this projection.",
    "This is educational maths, not financial advice. Check anything contractual with the lender or your accountant."
  ],
  "faq": [
    {
      "q": "Why does average balance use half the total held amount?",
      "a": "Retainage builds gradually as you bill progress payments — near zero at the start, maxing out at final completion. Assuming roughly linear billing, the average outstanding balance across the job is close to half the final held amount, which is the standard simplification estimators use to approximate financing cost without building a full S-curve billing model."
    },
    {
      "q": "Can I negotiate a reduced retainage rate mid-project?",
      "a": "Yes, and many states have statutes requiring it: several states cap retainage at 5% or require reduction to 50% of the original rate once the project reaches 50% completion, provided performance has been satisfactory. Check your state's prompt payment and retainage statutes before assuming the contract rate is fixed for the full duration."
    },
    {
      "q": "How does retainage on subcontractors differ from what the owner holds from the GC?",
      "a": "GCs commonly pass through the same or a slightly higher retainage percentage to subs, meaning the GC can end up net-neutral on the retainage itself, but the GC still fronts the financing cost timing gap since sub retainage typically releases faster (at sub completion) while owner retainage releases at overall project closeout, which can lag months longer."
    },
    {
      "q": "Does retainage affect bonding capacity?",
      "a": "Yes — sureties count uncollected retainage as a receivable that reduces working capital available for new work if it's aged too long. A large retainage balance sitting uncollected past substantial completion is a red flag in a bonding review and can shrink the aggregate bonding capacity a surety is willing to extend."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/construction-draw-schedule",
    "https://www.revenuelab.fyi/toolbox/bonding-capacity",
    "https://www.revenuelab.fyi/toolbox/jobsite-overhead-per-day"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Retainage Cash Flow Calculator (https://www.revenuelab.fyi/toolbox/retainage-cash-flow)"
}