Archdesk

Avoid Cash Flow Pitfalls in Construction Projects

Archdesk6/29/2026 25 minutes read

Most construction firms don’t go broke on bad margins. They go broke funding the gap between work-in-place and money-in-bank. Retainage, pay app timing, and front-loaded spend mean a “profitable” job can still pull six figures out of your account at the exact point you’re busiest. You’ll leave with a simple way to map your pay app calendar, calculate days-to-cash, and pull the levers that move real money into the bank sooner.

A 5-day late pay app can cost you a full month of cash. Miss the cutoff and you don’t get “paid a bit later”. You drop into the next billing cycle, and the whole review and funding chain starts again.

Quick answer

Fix cash flow by managing the calendar, not the margin. Build a weekly forecast that shifts receipts to the week they actually hit the bank, then attack three drivers: submit pay apps within 24 hours of cutoff, bill stored materials with backup as early as the contract allows, and convert change work into signed, billable backup within 24 hours. Exception: if you’re stuck with net 45 upstream and net 15 downstream, you must re-trade terms or hold payouts, because process fixes alone won’t close that gap.

  • Map your pay app cycle from install date to cash-in date, then track “days-to-cash” like a production KPI.
  • Stop funding procurement out of your line, bill allowed stored materials early with delivery tickets and insured storage proof.
  • Run a 13-week forecast weekly, and move receipts to the right week so you see cash holes before payroll does.

In this guide

Profit Isn’t Cash

A job can show a healthy margin and still drain your bank account. The reason is simple: cash goes out weeks before it comes back in. Your crews get paid every Friday. The GC or Owner pays once a month, after review, and they hold back a slice until the end. You can be "making money" on paper and still miss Friday payroll.

Think of it like a farmer selling crops. You buy seed, fertilizer, and fuel in March. You plant and tend through summer. The harvest check arrives in October. Every month between March and October, you're profitable on paper but cash-poor in reality. Construction works the same way, just on a tighter, repeating cycle.

Profit
The difference between your contract value and your total cost to deliver the work, measured over the full job. A $1.2M contract that costs $1.08M to build has $120k profit, or a 10% margin.
Days-to-cash
The number of calendar days between spending a dollar on labor, materials, or equipment, and receiving payment for the work that dollar produced. Lower is better.
Retainage
The percentage (commonly 5% or 10%) withheld from each pay application and released at Substantial Completion or later. It's your money, but you can't touch it until closeout.

Three structural forces create the squeeze, even on clean AIA jobs with a good PM and a cooperative GC. Each one is measurable in dollars and days.

Reason 1: Front-loaded spend

Costs spike before revenue starts. Mobilization, material deposits, equipment delivery, and the early labor ramp all happen in weeks 1 and 2. Your first pay application doesn't go out until week 4 at the earliest.

Take a worked example: a $1.2M interior fit-out over 12 weeks. Labor and supervision cost $55k per week. You place $120k in material and equipment deposits in week 1. By the end of week 4, you've spent $340k ($55k × 4 weeks + $120k deposits). Cash collected: $0. That $340k is pure front-loaded exposure.

Reason 2: Back-loaded billing and payment terms

Even after you submit a pay app, weeks pass before cash lands. The GC reviews quantities, gets their own certification, then the net-30 clock starts. A typical cycle: submit at week 4, certified by week 6, paid at week 8. That's 28 days from submission to cash, on top of the 28 days you already worked before submitting.

For work done in week 1, the gap is 49 days. For work done in week 4, it's 28 days. The weighted average on this first billing cycle is roughly 38 days. During those 38 days, you're funding $55k per week of labor from your own cash.

Reason 3: Retainage withholds your profit (and then some)

At 10% retainage on a 10% gross-margin job, the Owner is holding back your entire gross profit every billing cycle. Each $400k monthly billing releases only $360k. The $40k held equals one month's gross profit exactly. Over 12 weeks, retainage accumulates to $120k. That's the same number as total job profit. You don't see it until punch list closeout and final paperwork, often 60 to 90 days after the last worker leaves site.

Cash position at mid-job

Here's the logic. Cash position at any point = total cash received minus total cash spent. At week 8, you've spent roughly $560k (8 weeks × $55k labor, plus the $120k in early deposits). You've received one pay app of $360k (the $400k billing minus 10% retainage). Cash position: $360k in minus $560k out = $200k cash-negative. The job is tracking at a clean 10% margin. Your bank account doesn't care.

flowchart LR subgraph A["Front-loaded spend"] A1["$340k exposure"] A2["Starts: Week 1"] A3["Relieves: Week 8 first payment"] A4["Control: negotiate deposit splits, stage material orders"] end subgraph B["Billing-cycle drag"] B1["$300k working capital tied"] B2["Starts: Week 1 work performed"] B3["Relieves: Week 8 + each subsequent pay cycle"] B4["Control: submit pay apps on day 1 of the window, pre-agree SOV line items"] end subgraph C["Retainage hold"] C1["$120k = 100% of gross profit"] C2["Starts: First certified payment"] C3["Relieves: 60-90 days after Substantial Completion"] C4["Control: negotiate 5% rate, push for early release at 50% complete"] end

Cash Lag Math

Days-to-cash is the number of calendar days between the moment work is installed on site and the moment cash hits your bank account. It's the single number that tells you how long you're acting as an unpaid lender on every SOV line.

Think of the billing cycle like a commuter train. Miss the 5:00 PM train by five minutes and you don't arrive five minutes late. You wait for the 6:00 PM and get home an hour late. A pay app cutoff (the last date that counts for this month's billing) works the same way.

Billing cutoff date
The last date in the billing period that counts for this month's pay app. Work installed after this date drops into next month's cycle.
Billing-cycle slip
The extra delay added when you miss the cutoff or submit late. Usually a full monthly cycle, not a few days.
Pay-when-paid
A subcontract clause that says the GC's obligation to pay you arises only when the GC receives payment from the owner. It sets a timing condition: you get paid, but only after the owner pays.
Pay-if-paid
A subcontract clause that says the GC's obligation to pay you exists only if the owner actually pays. If the owner never pays, the GC owes you nothing. This shifts the owner's credit risk onto you.

The formula, step by step

Days-to-cash = A + B + C + D + E, where:

StepComponentWhat drives it
AInstall-to-cutoff gapDays from work completion to the next billing cutoff. Miss cutoff by 1 day and this resets to ~30.
BCutoff-to-submission lagDays you take after cutoff to assemble and submit the pay app.
CGC review + certificationDays the GC takes to review, approve, and certify your application.
DOwner funding runDays from the GC's certified application to the owner releasing funds to the GC.
EGC-to-sub paymentDays from the GC receiving owner funds to wiring your payment per subcontract terms.

Worked example: SOV Line 04, mechanical rough-in

Suppose you're the mechanical sub on a $4.8M office build. SOV Line 04 is $320,000 of rough-in ductwork. Your crew finishes an $80,000 chunk on January 28. The billing cutoff is January 25.

StepDaysDetail
A: Install-to-cutoff28Missed the Jan 25 cutoff by 3 days. Next cutoff is Feb 25, so the work sits 28 days before it enters a pay app.
B: Submission lag5You submit the Feb pay app on March 2.
C: GC review10GC approves and certifies by March 12.
D: Owner funding30Owner pays GC on April 11 per AIA A201 terms.
E: GC-to-sub7Subcontract says net 7 from receipt of owner funds.
Total days-to-cash80Work done Jan 28, cash received April 18.

Your 10% retainage ($8,000 of that $80,000) isn't part of that 80-day timeline. It follows its own, much longer path.

Retainage: the second timeline

Suppose your subcontract releases 50% of accrued retainage at Substantial Completion and 50% at final closeout. The project reaches Substantial Completion 8 months after the rough-in was installed. Closeout takes another 4 months.

Retainage portionAmountDays from install to receipt
50% at Substantial Completion$4,000~240 days (8 months)
50% at final closeout$4,000~365 days (12 months)

Your blended days-to-cash for the full $80,000 isn't 80 days. Weight each tranche: $72,000 at 80 days, $4,000 at 240 days, $4,000 at 365 days. That gives you ~102 days. Over 22 extra days of hidden financing cost buried in a 10% retainage clause.

Pay-when-paid vs pay-if-paid: quantifying your exposure

Both clauses add days. Only one adds default risk. Using the same $80,000 SOV line:

Clause typeOwner pays GC 60 days lateOwner never pays
Pay-when-paidYour 80-day timeline stretches to 140 days. You still get $72,000 (net of retainage), but 60 days later. Your cash-out on labor and materials ($56,000) was due at day 14. You've been the bank for 126 days on $56,000.Courts in most states treat this as a timing mechanism. The GC must still pay within a "reasonable time." You carry risk for months, not forever.
Pay-if-paidSame 140-day stretch. Same $56,000 cash-out at day 14.The GC may owe you nothing. Your $56,000 of costs is a write-off. Enforceability varies by state, but in states that uphold these clauses (Texas, Georgia, Florida among others), the owner's credit risk sits entirely on your books.

The dollar exposure is identical when the owner eventually pays. The difference only shows up when they don't. On that $80,000 SOV line, a pay-if-paid clause means your real exposure is $56,000 (your sunk cost in labor and materials), not the $80,000 billed amount. Multiply that across every open SOV line and you get your true credit exposure to the owner. Most subs never calculate that figure until it's too late.

flowchart TD T["SOV Line Days-to-CashDecision Path"] ~~~ A A[Work installed] --> B{Before cutoff?} B -->|Yes| C[Enters this month's pay app] B -->|No| D[Next month cycle +28 days] C --> E[Submit pay app] D --> E E --> F[GC review + certification] F --> G[Owner funding run] G --> H{Pay clause type?} H -->|Net terms| I["GC pays per subcontracte.g. net 7"] H -->|Pay-when-paid| J["GC pays when owner payscould add 30-90 days"] H -->|Pay-if-paid| K["GC pays IF owner payscould be never"] I --> L[Cash in bank] J --> L K --> L

tightening to address the gap

Pay App Calendar Map

You've already done the days-to-cash math. Now you're going to pin it to actual dates and build a repeatable process you can hand to a project accountant on day one. A pay app moves on the calendar, not in your head. It only moves if every piece ships together.

Scenario: $1.2M interior tenant fit-out in Dallas, 14-week schedule. Monthly AIA billing in this example contract uses G702 (the one-page pay app summary) and G703 (the continuation sheet with your Schedule of Values, line by line). Billing cutoff is the 25th, submission on the 26th, retainage (the percentage the owner holds back until project close) is 10%, and the owner pays Net 30 after certification in this example contract.

Guardrail: Waiver rules and statutory forms vary by state and by contract. Texas, California, and Georgia each use different mandatory waiver language. Always follow the project's executed waiver exhibit and your state statute. The waiver types and timing below reflect this example contract's terms, not a universal default.

Step-by-step: build the dated pay-app timeline

Follow these eight steps every billing cycle. Miss one and the whole package stalls.

  1. Step 1, Day –5 (Oct 20): collect sub progress and validate % complete. Five days before cutoff, walk the job. Collect each sub's reported percent complete against their SOV line. Validate each claim against three things: daily reports showing labor and work completed, dated site photos, and inspection sign-offs. If a sub claims 62% on drywall but your daily reports only support 55%, mark it down to 55%. The G703 "Work Completed This Period" column is the difference between your validated cumulative % complete and what was already billed last month. For the drywall line below, last month's cumulative was $68,192 (approved in September). This month's validated cumulative is $115,568, so "This Period" is $47,376.

  2. Step 2, Day –3 (Oct 22): confirm stored materials eligibility. For any materials delivered to site or insured off-site storage but not yet installed, check three requirements in this example contract: (a) the contract explicitly allows billing stored materials, (b) you have the supplier's delivery ticket with a date, and (c) you have proof of insurance naming the owner as loss payee. Custom millwork delivered Oct 19 to insured storage qualifies. Materials sitting in a sub's yard without insurance do not. Stored materials go on their own G703 line or as a separate column entry. Never blend them into "work completed."

  3. Step 3, Oct 25, 5:00 PM: cutoff hits. October work stops counting. You've got $127,400 of work in place plus $18,600 of stored millwork.

  4. Step 4, Oct 26 morning: build the G703 continuation sheet. Fill in every column for each SOV line. Here's the logic for each column in this example contract:

    G703 column What goes in it Validation rule
    A: Item number SOV line number matching the original contract breakdown Must match the contract exhibit exactly; no new lines without an approved change order
    C: Scheduled value Original contract value per line, adjusted only by approved change orders Sum of Column C must equal the contract sum on G702 Line 1
    D: Prior completed Cumulative work billed through the previous pay app (from last month's approved G703) Must match the owner's last certified G703 exactly, not your submitted version
    E: This period New work completed between prior cutoff and this cutoff Backed by daily reports, photos, inspection records
    F: Materials stored Delivered but not installed, with delivery tickets and insurance proof Only if contract permits; insurance certificate required
    G: Total completed (D + E + F) Cumulative total to date Cannot exceed Column C without an approved change order
    I: Retainage (G × 10%) Amount held Rate per this example contract, applied to total completed and stored

    Sample October G703 lines:

    SOV line Scheduled value Prior completed (D) This period (E) Stored (F) Total to date (G) Retainage (I)
    06 10 00 Drywall $186,400 $68,192 $47,376 $0 $115,568 $11,557
    23 00 00 Mechanical $312,750 $62,550 $56,295 $0 $118,845 $11,885
    26 00 00 Electrical $268,900 $53,780 $56,469 $0 $110,249 $11,025
    Stored materials (millwork) $0 $0 $0 $18,600 $18,600 $1,860
  5. Step 5, Oct 26: assemble lien waivers by tier. This is where most pay apps stall. You need four waiver documents, and each has a conditional and unconditional version. The rule in this example contract: conditional waivers travel WITH the current pay app. Unconditional waivers for the PRIOR month's payment travel with it too, proving last month's money actually landed.

    Waiver type Who signs it When it's due What it covers
    Conditional waiver, progress payment You (GC) and every sub/supplier billing this period Submitted WITH this pay app (Oct 26) Waives lien rights for this month's amount, conditioned on actually receiving payment
    Unconditional waiver, progress payment You (GC) and every sub/supplier who billed last period Submitted WITH this pay app (Oct 26), proving Sept payment cleared Confirms last month's payment was received, lien rights irrevocably waived for that amount
    Conditional waiver, final payment Each sub/supplier at project close With the final pay app only Waives all remaining lien rights, conditioned on receiving final payment
    Unconditional waiver, final payment Each sub/supplier after final payment clears After final check clears Irrevocable release of all lien rights on the project

    Texas uses statutory waiver forms (Texas Property Code Chapter 53). One missing conditional waiver from a $6,000 tile supplier holds up a $127,400 pay app. Start chasing waivers on Day –5, not on submission day.

  6. Step 6, Oct 26 afternoon: submit G702/G703 package. The G702 summary page pulls totals from the G703. Attach: conditional waivers (this month), unconditional waivers (last month), stored-material delivery tickets, insurance certificate for stored materials, and daily report backup for any line where % complete jumped more than 15 points.

  7. Step 7, Oct 27 to Nov 5: review and certification. In this example contract, the GC/CM review runs about 7 calendar days. If they can't tie your percentages back to daily reports and photos, they haircut your % complete. You carry the gap into next month. Certification by the owner's rep follows, typically 2 to 3 days. Certification triggers the payment clock, not your submission date.

  8. Step 8, Nov 6 to Dec 8: payment clock runs. In this example contract, Net 30 starts from certification, not from cutoff or submission. Payment due Dec 5. Add 1 to 3 business days for ACH. Cash lands around Dec 8, roughly 44 calendar days after you stopped counting progress.

gantt title Oct 25 Cutoff – Full Pay-App Timeline dateFormat YYYY-MM-DD axisFormat %b %d section Preparation Validate sub % complete + chase waivers :done, prep1, 2024-10-20, 2024-10-22 Confirm stored materials eligibility :done, prep2, 2024-10-22, 2024-10-23 section Submission Billing cutoff (Oct 25) :milestone, cut, 2024-10-25, 0d Build G703 + assemble package :sub1, 2024-10-26, 1d section Review GC/CM review (7 days) :review, 2024-10-27, 2024-11-02 Owner certification (3 days) :cert, 2024-11-03, 2024-11-05 section Payment Certification date :milestone, certdate, 2024-11-05, 0d Net 30 payment clock :pay, 2024-11-06, 2024-12-05 Payment due :milestone, due, 2024-12-05, 0d ACH processing (1-3 days) :ach, 2024-12-06, 2024-12-08 Cash received :milestone, cash, 2024-12-08, 0d

The two things that actually blow your timeline

First: missing waivers. A three-day slip chasing a sub's conditional waiver doesn't cost you three days. It pushes you past the GC's review window and adds a full month of float. Start collecting waivers five days before cutoff, not the morning of submission. In Archdesk, subcontractor payment applications track waiver status alongside each sub's valuation, so you can see which of your 14 subs hasn't returned their conditional waiver before the cutoff date hits, not after the package bounces back.

Second: unbacked % complete. If your drywall sub claims 62% but your daily diaries only show 55% of area boarded, the GC will haircut the line. That $13,000 gap doesn't disappear. It sits in your WIP as unbilled revenue for a month while you fund the labor out of working capital. Validate every line against field records before you build the G703, not after the reviewer flags it.

Fit-Out S-Curve Walkthrough

You've mapped the pay app calendar. Now put real numbers against it week by week, build the cost curve from scratch, and find the exact week your bank account hits its lowest point.

Scenario: a 16-week, $2.4M tenant fit-out in Dallas. Monthly AIA G702/G703 billing with a cutoff on the 25th, 10% retainage, and the Owner pays 45 days after cutoff.

Step 1: Build the weekly cost-out profile

Three cost streams run in parallel. Write each one out week by week, then total them. All figures below are illustrative, built to match how a typical fit-out actually spends.

WeekMaterialsGen. Conditions / MobilizationDirect LaborWeekly TotalCumulative Cost
1$162,600$30,450$30,200$223,250$223,250
2$162,600$30,450$45,600$238,650$461,900
3$162,600$30,450$60,900$253,950$715,850
4$162,600$30,450$75,400$268,450$984,300
5–8$0$0$90,300/wk$90,300/wkWk 5: $1,074,600
Wk 6: $1,164,900
Wk 7: $1,255,200
Wk 8: $1,345,500
9–12$0$0$90,300/wk$90,300/wkWk 9: $1,435,800
Wk 10: $1,526,100
Wk 11: $1,616,400
Wk 12: $1,706,700
13–16$0$0$60,700/wk$60,700/wkWk 13: $1,767,400
Wk 14: $1,828,100
Wk 15: $1,888,800
Wk 16: $1,949,500

Materials and mobilization front-load weeks 1–4. Labor ramps to $90,300/week by week 5 and holds through week 12. That's your cost S-curve: steep left side, plateau in the middle, gentle tail.

Step 2: Map each pay app to the week cash actually arrives

Monthly billing cuts off on the 25th. The Owner then has 45 days to pay. Here's how that maps to real calendar weeks on a job that starts at the top of Month 1.

Pay AppCutoffCoversGross Earned (% × $2.4M)Less 10% RetainageNet CheckCash Arrives
#1End of wk 4Weeks 1–4 (12.4%)$297,600$29,760$267,840~Week 10
#2End of wk 8Weeks 5–8 (27.6%)$662,400$66,240$596,160~Week 14
#3End of wk 12Weeks 9–12 (32.1%)$770,400$77,040$693,360~Week 18 (post-completion)
#4End of wk 16Weeks 13–16 (27.9%)$669,600$66,960$602,640~Week 22 (post-completion)

Notice: only two checks clear before Substantial Completion. Pay Apps #3 and #4, totaling $1,296,000 net, land weeks after you've left the site.

Step 3: Plot the cash gap week by week

Now subtract cumulative cash received from cumulative cost paid. This is the number your line of credit has to cover.

End of WeekCumulative Cost OutCumulative Cash InNet Cash Position
4$984,300$0-$984,300
6$1,164,900$0-$1,164,900
8$1,345,500$0-$1,345,500
10 (Pay App #1 clears)$1,526,100$267,840-$1,258,260
12$1,706,700$267,840-$1,438,860
14 (Pay App #2 clears)$1,828,100$864,000-$964,100
16 (Substantial Completion)$1,949,500$864,000-$1,085,500
flowchart LR A["Wk 1-4: Costs surgeCash in = $0"] --> B["Wk 5-8: Labor plateauCash in = $0PEAK HOLE: -$1,345,500"] B --> C["Wk 9-10: Pay App #1clears $267,840"] C --> D["Wk 11-14: Pay App #2clears $596,160"] D --> E["Wk 15-16: Job endsTwo pay apps still outstanding"]

Takeaway

The peak negative cash position is -$1,345,500 at the end of week 8. That's 56% of the contract value you've funded yourself before a single dollar clears your bank. It happens because materials and mobilization front-load weeks 1–4, labor holds steady through week 8, and Pay App #1 doesn't clear until week 10.

The non-obvious bit: the cash low point sits after the labor ramp-up and before the first payment clears. Missing a cutoff or getting a haircut on percent complete doesn't just "delay cash a bit." It pushes every receipt to the right and deepens the hole you already had. On this job, slipping Pay App #1 by even two weeks would push the trough past -$1.4M and into week 12, where it collides with your week 12 payroll.

Cash Trap Scorecard

A profitable project can still starve you of cash. This scorecard tests whether your billing process is trapping money that should already be in your bank account. Score each of the 12 checks as PASS (1 point) or FAIL (0 points). Total your score and read the band at the bottom.

How to score

Pick one live project. Walk through every check. Apply the threshold exactly. If the project meets or beats it, score 1. If it falls short, score 0. No partial credit. Add all 12 for a total between 0 and 12.

The 12 checks

The scorecard groups into three areas: Measurement (checks 1–5) tests whether your pay app numbers are defensible. Process Speed (checks 6–10) tests whether you are billing fast enough. Terms & Exposure (checks 11–12) tests whether your contract terms are bleeding cash silently.

# Check Threshold (PASS if you meet this) Why it matters If FAIL, do this this week Owner
1 SOV measurement rules written and agreed with the GC for every line 100% of SOV lines have a written measurement basis before the first pay app Without a written rule, the GC's PM uses gut feel to cut your percentages. On a $2.4M job, a 5% haircut across 6 lines is $72k delayed by a full billing cycle. Export your Schedule of Values (SOV, the line-by-line breakdown of your contract price). Mark every line missing a written rule. Draft a one-page measurement protocol per line and send it to the GC PM for sign-off before the next cutoff. Project Manager
2 Joint walkdown with GC before every cutoff, quantities recorded by SOV line Joint walkdown completed and documented for 100% of the last 3 pay cycles A walkdown locks in agreed quantities before you submit. Without it, the GC marks down your pay app after submission, and you lose 30 days arguing. Email the GC PM today to schedule a standing walkdown 2 days before every cutoff. Create a one-page form listing every active SOV line with blanks for agreed quantity and both signatures. Project Manager
3 Every percent-complete claim has same-day backup ready by Day -3 (3 days before cutoff) ≥ 90% of SOV lines have dated photos, daily reports, and marked-up plans by Day -3 Backup assembled after the fact looks fabricated. Pre-staged backup survives GC scrutiny and keeps your pay app from being kicked back. Assign one field person per zone to capture photos and mark up plans at end of shift on Day -3. Build a checklist: photo, daily report, marked-up plan. No line enters the pay app without all three attached. Project Engineer
4 SOV is clean: each line maps to one scope, no mixed labor Zero SOV lines contain mixed scopes (e.g., labor for two systems on one line) Blended lines let the GC argue your percentages are inflated. Splitting a $2.4M SOV from 18 lines to 30+ removes that argument entirely. Export your SOV and highlight every line covering more than one deliverable. Split each into separate lines before the next pay app. Get GC sign-off on the revised SOV. Project Manager / QS
5 Stored materials billed only with full proof: supplier invoice, dated photo of tagged material, and warehouse or laydown record 100% of stored-material claims in the last pay app have all 3 documents attached One unbacked $40k ductwork claim that gets rejected delays $40k of cash by at least 30 days. Multiply that across a few line items and you are funding the GC's project. Stop billing stored materials that lack all three documents. Pull last month's stored-material claims and fill the gaps before the next submission. Project Engineer
6 Change order (CO) log updated within 24 hours of any field direction Zero field directions older than 24 hours without a log entry in the last 30 days Unlogged field directions become free work. You lose the contemporaneous record needed to price and defend the CO. On a $2.4M fit-out, $50k–$80k of change order value commonly evaporates this way. Make it the superintendent's job to text or email a one-line COR (Change Order Request) to the PM within the same shift. The PM logs it by next morning. No exceptions. Superintendent
7 Pay app submitted within 24 hours of the cutoff date Avg days from cutoff to submission ≤ 1 across the last 3 pay apps A 48-hour late submission on a net-30 contract pushes your cash receipt by 48 hours. On a $2.4M job, that costs roughly $3k–$5k in working-capital cost per late cycle. Pre-populate the pay app template 5 days before cutoff with every SOV line and last-cycle figures. On cutoff day, the only task is entering new percentages from the walkdown and attaching backup. Project Manager
8 Every late submission is logged with a named owner and corrective action Written log entry exists for every late submission in the last 6 months, with named owner and fix No log means no accountability. Late submission becomes the norm, and every late cycle compounds lost interest and delayed receipts. Add a row to your monthly project review: pay app on time? Yes/no. If no, who owns the fix? Start this month. Commercial Manager
9 Pay app with all conditional lien waivers attached at submission ≥ 95% of pay apps submitted with all required conditional waivers included A missing waiver gives the GC a reason to hold your entire payment. One missing sub waiver on a $180k monthly draw can freeze the full amount for another 30 days. Build a waiver checklist by sub and supplier. Send waiver requests 5 days before cutoff. No pay app goes out without the checklist fully signed off. Project Administrator
10 GC reviewer comments turned around within 48 hours with documented resolution 100% of GC comments on the last pay app responded to within 48 hours Every open comment stalls certification. A 7-day response time on 3 comments can push your payment date by a full week, costing $2k–$4k in financing on a $200k monthly draw. Create a comment tracker: columns for comment, response, backup added, date closed. Assign it to your project engineer. Any comment open past 48 hours escalates to the PM at the next morning standup. Project Engineer
11 No downstream sub or supplier payments fall due before the matching upstream receipt $0 in payments due before corresponding inflow, unless a written exception exists If you pay your drywall sub net-20 but the GC pays you net-45, you fund a 25-day gap out of pocket. On $600k of monthly sub payments, that gap costs roughly $2,300/month at current rates, or about $6,800 over a 3-month fit-out phase. Pull your subcontracts and PO payment terms side by side with your prime contract terms. Renegotiate downstream terms to net-45 or net-GC-payment-plus-7 before the next pay cycle. Document any intentional mismatches as written exceptions with a business reason. Commercial Manager
12 Retainage (the percentage withheld from each payment until project completion) tracked per project, with written payment notices issued on time for every past-due receivable Change orders older than 30 days unresolved: < $25k or < 2% of contract. Retainage tracker updated monthly. All contractual payment notices issued within required timeframes in the last 90 days. A $2.4M project at 5% retainage has $120k sitting with the GC. Getting it released 30 days earlier saves $1,500–$2,000 in financing cost alone. Missing a notice deadline can convert a pay-when-paid clause into a permanent hold. Build a one-tab retainage tracker: project name, cumulative retainage held, release trigger (substantial completion or earlier if negotiated), and next action date. Calendar every contractual notice deadline. Send written demand on the due date. Do not let a $120k balance sit untracked past substantial completion. Commercial Manager

Scoring bands

0 – 4
RED. Your cash is getting trapped by your own process. Fix checks 1–5 first so the GC cannot haircut the pay app. Then hit the 24-hour submit target (check 7) for the next two cycles. Expect to recover 15–30 days of trapped cash within two billing cycles once measurement gaps close.
5 – 8
AMBER. Your system works most months, but one miss cascades into a 30-day cash delay. Pick your three worst-scoring checks and fix them this month. The highest-impact trio for most subs: joint walkdown before cutoff (check 2), 48-hour comment turnaround (check 10), and aligning downstream pay dates to upstream cash-in (check 11).
9 – 12
GREEN. Your billing cycle is predictable and defended. Push hard on CO logging speed (check 6) and retainage release timing (check 12). Those are where cash hides in the final 20% of the job. A $2.4M project with 5% retainage has $120k sitting with the GC. Getting it released 30 days earlier saves $1,500–$2,000 in financing cost alone.

Re-score the same project every billing cycle. Any check that flips from PASS to FAIL gets a named owner and a deadline before the next cutoff. Archdesk flags several of these triggers automatically: when a subcontractor valuation is entered or a PO commitment posts, the CVR view updates cost-to-date against value earned in real time, so a funding gap between downstream payments and upstream receipts shows up the same week it opens rather than surfacing at quarter-end reconciliation.

Fix the $180k Hole

Try this: The scorecard just told you the job is a cash trap. Now you have to fix it. You're the commercial lead for a drywall subcontractor. End of month 3, you're -$180,000 cash on this project, even though the cost report shows 12% gross margin on a $1.1M package. Build a revised 30-day cash forecast with specific dates. Then show the dollar impact of four levers you will pull this week.

Input Numbers you must use
Retainage (the % the GC withholds from each pay app until project closeout) 10% held back on every pay app
Billing cycle Cutoff is the 25th. You've been submitting 5 days late (30th).
Payment chain Owner pays GC Net 45 from cutoff. GC pays you Net 15 after GC is paid (pay-when-paid clause).
Lien waivers (conditional releases the GC requires before issuing your check) Required for payment. Your team takes 3 days to return them after request.
Materials buy $300k bought early and already paid out of pocket
Stored materials you can bill now $60k sitting in a bonded yard with full backup (invoice, delivery ticket, photos, storage location)
Pending change orders Two pending, total $95k. Work was directed by email. Nothing signed as a change order yet.
Work installed since last cutoff $200k of SOV (Schedule of Values) progress you can fully support
Next 30 days cash costs $140k labor, $25k equipment, $15k small tools/consumables, $0 new material buys
Prior pay app still in transit $126k submitted on time last cycle (cutoff May 25). Owner has not yet paid GC.
Subcontract terms AIA A401 subcontract. No mobilization payment clause. Stored materials billing is permitted with GC approval and proper documentation.
Supplier relationship Your drywall supplier (the one who sold you the $300k material package) bills you Net 30, and you've been a customer for 6 years. You have a current $60k invoice from them due July 5.
Today's date June 18

Put every dollar on a date. Your baseline forecast should show exact receipt and disbursement dates for the next 30 days (June 18 – July 17). Then your revised forecast should show the dollar improvement from four fixes that land inside that window.

Show the worked solution

Step 1: Map the payment chain to real calendar dates.

Start with the prior pay app already in the pipeline. You submitted it on time for the May 25 cutoff.

  • Owner pays GC Net 45 from May 25 cutoff = July 9.
  • GC pays you Net 15 after GC is paid = July 24.
  • Lien waiver turnaround adds 3 days = July 27.

That $126k receipt lands July 27. That's outside your 30-day window (June 18 – July 17). Under the baseline, zero dollars arrive.

Step 2: Build the baseline 30-day forecast (no fixes).

DateItemInOutRunning total
Jun 20Weekly labor payroll$35,000-$35,000
Jun 25Equipment rental (monthly)$25,000-$60,000
Jun 27Weekly labor payroll$35,000-$95,000
Jun 30Small tools and consumables$15,000-$110,000
Jul 4Weekly labor payroll$35,000-$145,000
Jul 5Supplier invoice due (drywall materials)$60,000-$205,000
Jul 11Weekly labor payroll$35,000-$240,000
Total cash in (30 days)$0
Total cash out (30 days)$240,000
Baseline net (Jun 18 – Jul 17)-$240,000

This is the truth if you change nothing. The prior pay app lands July 27, ten days too late to help. And the $60k supplier invoice makes the hole even deeper than you thought.

Step 3: Pick four fixes that move cash in or reduce cash out inside the 30-day window.

Fix 1: Accelerate the prior pay app into the 30-day window.

Your team takes 3 days to return conditional lien waivers after the GC requests them. If you prepare and pre-sign conditional waivers now and deliver them to the GC before July 9 (the date the owner pays the GC), the GC has no reason to wait for waivers after receiving funds.

Call the GC's AP team and negotiate an accelerated release. The lien waivers are already in hand. Ask for Net 10 instead of Net 15. Many GC AP departments will agree on a per-project basis if the waiver is sitting in their file.

  • Owner pays GC: July 9.
  • GC pays you Net 10: July 19. Still two days outside.

Push one step further: submit the pay app package directly to the GC's project manager by July 7, two days before the owner pays, with waivers attached and a polite note that everything is clear for immediate release. GC's AP logs the invoice pre-receipt of funds. Realistic revised payment: July 14–16. Use July 15 as the forecast date.

  • 30-day impact: +$126,000 cash in on July 15.

Fix 2: Negotiate a 30-day extension on the $60k supplier invoice.

You've been a customer for 6 years. You have a $60k invoice due July 5. Call your sales rep today. Ask them to extend terms from Net 30 to Net 60 on this one invoice, moving the due date from July 5 to August 4. Offer something in return: commit to ordering the next phase materials through them, or agree to pay the remaining balance on the day your August pay app lands. Suppliers almost always prefer extending terms over chasing a late payment from a long-standing customer.

If they won't extend the full amount, ask for a credit memo (a document that reduces the current amount due) tied to proof of billing. You can show them the June 25 pay app with the $60k stored materials line. That proves the $60k is in the payment pipeline. Most suppliers will grant Net 60 against documented proof of billing.

  • 30-day impact: -$60,000 cash out removed from the window. The $60k payment moves from July 5 to August 4.

Fix 3: Bill $60k of stored materials on the June 25 cutoff.

You have $60k of paid-for materials sitting in a bonded yard with full backup. Add a stored-materials line to the June 25 pay app. Submit on the cutoff date, not 5 days late. Payment timeline for this pay app:

  • Cutoff: June 25. Owner pays GC Net 45: August 9. Outside the 30-day window.

The stored materials payment doesn't land inside 30 days. But here is the lever: by submitting on time on June 25 instead of late on June 30, you stop the current pay app ($200k of installed work plus $60k stored materials) from slipping an entire cycle. The June 25 pay app, after 10% retainage, will generate ($200k + $60k) × 0.9 = $234,000 when it lands August 9.

The 30-day cash impact is $0 directly. The real value: you convert $60k of sunk cost into a billable line that's now in the payment pipeline. That reduces the cumulative cash hole by $54k (after retainage) when the August 9 receipt arrives.

  • 30-day impact: $0 cash in. Pipeline impact: +$54,000 on August 9.

Fix 4: Convert $60k of the $95k pending change orders into a signed field work directive and bill it June 25.

You have email-directed work but no signed change order. Get in front of the GC superintendent this week. Bring the emails, the daily reports showing crew hours, and the material receipts. Ask for a signed Construction Change Directive (CCD, a written instruction from the GC authorizing extra work before price is finalized) or a field work order for the $60k you can prove. Do it by June 23, two days before cutoff. Add the $60k as a separate SOV line on the June 25 pay app.

  • Same payment train as Fix 3: lands August 9. $60k × 0.9 = $54k (after retainage).
  • 30-day impact: $0 cash in. Pipeline impact: +$54,000 on August 9.

Revised 30-day forecast (all four fixes applied).

DateItemInOutRunning total
Jun 20Weekly labor payroll$35,000-$35,000
Jun 25Equipment rental$25,000-$60,000
Jun 27Weekly labor payroll$35,000-$95,000
Jun 30Small tools and consumables$15,000-$110,000
Jul 4Weekly labor payroll$35,000-$145,000
Jul 5Supplier invoice (deferred to Aug 4)$0-$145,000
Jul 11Weekly labor payroll$35,000-$180,000
Jul 15Prior pay app (accelerated)$126,000-$54,000
Total cash in (30 days)$126,000
Total cash out (30 days)$180,000
Revised net (Jun 18 – Jul 17)-$54,000

Summary of four levers and their dollar impact:

LeverAction30-day cash impactPipeline impact (beyond 30 days)
1. Accelerate prior pay appPre-stage waivers, negotiate Net 10, pre-submit package+$126,000$0 (pulled forward)
2. Defer supplier invoiceNegotiate Net 60 on $60k drywall invoice due Jul 5+$60,000 (cash out removed)-$60,000 (payment moves to Aug 4)
3. Bill stored materialsAdd $60k stored materials line to Jun 25 pay app$0 (lands Aug 9)+$54,000
4. Convert change workGet $60k signed as CCD, bill on Jun 25 pay app$0 (lands Aug 9)+$54,000
Combined 30-day improvement vs baseline+$186,000+$108,000

Two real cash-in events land inside the 30-day window: the accelerated prior pay app ($126k on July 15) and the deferred supplier payment ($60k of cash out removed from July 5). Together they turn a -$240k baseline into -$54k. Fixes 3 and 4 add $108k to the August 9 receipt, turning it from $180k into $288k. That August receipt is what refills the hole completely and starts generating positive project cash flow.

If you can't pull enough cash into 30 days, here's the minimum survival plan:

  • Freeze discretionary spend immediately. No new tool purchases, no equipment upgrades, no non-critical consumable orders. Every dollar out of the door gets approved by you personally until the July 15 receipt clears.
  • Stage labor to match billing, not schedule. If you can shift a crew from 5 days to 4 days for two weeks without losing your schedule position, do it. That's $28k of payroll ($35k × 0.8 × 2 weeks) deferred, not eliminated. Sequence work so the highest-value SOV lines complete first, because those are the lines that generate the next pay app.
  • Communicate with the GC's AP department in writing, now. Don't wait until you miss a deadline. Send a brief email: "We anticipate submitting our June 25 pay app on time with full backup including stored materials and a signed CCD. We'd like to confirm the payment timeline for the May cycle and discuss any documentation you need in advance." GCs hold payments when they're surprised. They release payments when the paperwork is clean and early.
  • Draw your line of credit for the $54k gap, not the $240k gap. The four fixes above reduced the amount you need to borrow by 78%. A $54k short-term draw at 8% annual interest costs about $360 for a one-month bridge. A $240k draw would cost $1,600 and might bump against your credit limit. The levers didn't eliminate the need for borrowing. They made the borrowing small enough to be painless.

What most people get wrong: they "forecast" by percent complete and assume the cash shows up next month. The real driver is the calendar.

Weekly Cash Forecast Build

You don't run out of cash because the job is unprofitable. You run out because receipts slide right on the calendar while payroll and suppliers still leave on time. The fix is a template you can build in a spreadsheet in under an hour, then run every Friday for the life of the job.

Template structure: columns and rows

Your 13-week forecast is one sheet with two halves: inflows on top, outflows below, and a net cash row at the bottom. Here is the column layout, left to right:

ColumnWhat goes in it
A: Line itemSOV line description (e.g. "03 - Concrete", "15 - HVAC Rough-In", "Payroll - Carpenters")
B: Contract or committed valueTotal contract value for inflow lines; total committed cost for outflow lines
C: Billed / paid to dateCumulative billed (inflows) or paid (outflows) through last period
D: % complete this FridayField-verified percent complete, locked by end of day Friday
E: Earned this periodFormula: (D × B) minus C. This is the new progress to bill.
F: Retainage withheld (10%)Formula: E × 0.10. Money you can't touch until Substantial Completion.
G: Net billable / payableFormula: E minus F. The cash you actually expect to collect or pay out.
H–T: Weeks 1 through 13Each column is a calendar week. Drop G into the week cash hits (inflows) or leaves (outflows) the bank account.

Row structure is simple. The top half lists every SOV line that generates an inflow. The bottom half lists every outflow category: weekly payroll, material POs by supplier, equipment rentals, and each subcontract. The last row is a running net: cumulative inflows minus cumulative outflows, week by week.

Worked example: $2.4M Dallas fit-out

Take a worked example: your SOV line "09 - Drywall and Framing" has a contract value of $340,000. On Friday you verify 45% installed. You've billed $119,000 to date.

  • Earned this period (E): (0.45 × $340,000) minus $119,000 = $34,000
  • Retainage withheld (F): $34,000 × 0.10 = $3,400
  • Net billable (G): $34,000 minus $3,400 = $30,600

Now place that $30,600 into the right week column. Your billing train runs like this: cutoff on the 25th, you submit on the 27th (2 days), GC certifies by the 10th of the following month (about 13 days after cutoff), owner pays the GC 45 days after cutoff, and the GC pays you 15 days after that. That puts cash in your bank roughly 60 days after cutoff, plus the submission and certification lead time at the front end, so about 75 days door to door. If your cutoff is March 25, cash lands in Week 11 of your 13-week window, around June 8. Drop $30,600 into column R (Week 11).

On the outflow side, your drywall sub invoices $28,500 for the same period. Your subcontract says pay-when-paid, net 10 days after you receive GC payment. That outflow lands in Week 12, column S. The gap between Week 11 inflow and Week 12 outflow is your float on that line. If you're fronting the sub to protect schedule, that outflow moves left, and the sheet shows you exactly how many dollars you're financing and for how many weeks.

Running the cadence

  • Update column D every Friday from field evidence: installed quantities, daily reports, tagged photos. Lock the numbers so Monday doesn't turn into a debate.
  • Formulas in columns E, F, and G auto-calculate. Your only manual step is placing net amounts into the correct week column based on your billing train dates.
  • Reconcile forecast vs. actual every Monday using the bank statement. Any miss over $10,000 gets a named cause and an owner before Tuesday.
  • Track blockers as line items in the outflow section with $0 and a red flag: missing lien waivers, disputed percent complete, unpriced Change Orders. Each blocker delays an inflow. Make that delay visible by moving the inflow to a later week until the blocker clears.
  • Stop paying faster than you get paid. If your sub payout lands in an earlier week than your matching inflow, the net cash row goes negative and you see the financing cost immediately.

In Archdesk, subcontractor valuations, PO commitments, and pay application data feed into the forecasting module automatically. Each SOV line's earned value, retainage held, and expected pay date update as field progress and payment certificates are entered, so the 13-week view rebuilds itself instead of waiting for someone to re-key Friday's numbers into a spreadsheet on Monday.

What to learn next

  • SOV structure that protects cash. A messy SOV creates monthly haircuts on your biggest lines right when the S-curve trough is deepest.
  • Change Order discipline. Unapproved Change Orders become unbilled work, and unbilled work is you financing the build. Go deeper on change order management so backup, status, and pricing don't drift.
  • WIP and over/under billing. The gap between earned revenue and collected cash is where "profitable" jobs quietly drain the company. Use work in progress reporting to tie job cost to what's actually collectible.

A weekly cash forecast is an operations cadence, not a finance report. Field progress drives the pay app, the pay app drives receipts, and receipts decide whether you can keep crews steady, protect your subs, and bid the next job from strength instead of desperation.

Frequently Asked Questions

Why do construction companies with good margins still run out of cash?

Your costs leave the bank account weeks before your receipts arrive. Crews get paid every Friday, material invoices hit at 30 days, but the GC or owner pays on a 30-to-45-day cycle after your pay app cutoff, and they hold 5-10% retainage until the end of the job. On a typical $2.4M fit-out, that timing gap creates a cash low point around negative $180,000, even when the job is tracking at 12% gross margin on paper.

How do I calculate days-to-cash on a construction project?

Days-to-cash is the number of calendar days between completing work in place and receiving the payment for it. Start with the pay app cutoff date, add the owner's review period (typically 7-14 days for certification), then add the contractual payment term (commonly 30-45 days from certification). On a monthly AIA G702 billing cycle with a 25th-of-the-month cutoff and 45-day payment terms, work completed on the 26th won't convert to cash for roughly 75 days.

What is the S-curve in construction cash flow and why does it matter?

The S-curve plots your cumulative costs against cumulative receipts week by week across the life of a project. On almost every job, the cost curve runs ahead of the revenue curve because you pay labor and materials before you bill for them, and retainage holds back a portion of every payment. The vertical gap between the two curves is your cash exposure at any point. On a 16-week, $2.4M tenant fit-out, that gap typically peaks around weeks 8-10 before receipts start to catch up.

What are the most common cash traps on a construction project?

Five traps drain cash fastest: over-measuring early (which flatters month 1 but leaves nothing to bill later), under-claiming variations until final account, missing pay app cutoff dates by even one day (which pushes receipt by a full billing cycle), paying subcontractors on shorter terms than the GC pays you, and failing to chase disputed line items within the same period. Each one widens the gap between cost out and cash in. A single missed cutoff on a $1.1M drywall package can shift $90,000 of receipts by 30 days.

How do I build a weekly cash flow forecast for a construction project?

Set up a 13-week spreadsheet with two halves: cash in (pay app receipts, retainage releases, variation payments) and cash out (payroll, material invoices, sub payments, plant hire). Pin every line to a specific calendar date, not a month. Update the forecast every Friday by entering actuals for the week just finished and adjusting the forward weeks. The whole process takes under an hour once the template is built, and firms that forecast weekly finish roughly 30% closer to budget than those forecasting monthly.

How does retainage affect cash flow for subcontractors?

Retainage, typically 5-10% of each certified payment, sits locked up from first billing until final completion or the end of the defects liability period. On a $1.1M subcontract package at 10% retainage, that's $110,000 the sub has earned but can't touch for months after the work is done. The real sting is that retainage often covers most or all of the sub's profit margin, so the job runs cash-negative until release. Track retainage as a separate line in your 13-week forecast and push for a contractual release date tied to your scope completion, not overall project substantial completion.

How do I fix a cash-negative project that's still showing a profit on the cost report?

Pull three levers in the first 30 days. First, submit all outstanding variation claims with backup, because under-claimed variations on a $1.1M package can easily represent $30,000-$50,000 in unbilled revenue. Second, align your subcontractor payment terms to match or trail the GC's payment cycle so cash doesn't leave before it arrives. Third, tighten your pay app process so every application ships complete, with backup attached, on the cutoff date. On the $180,000 cash hole in the article's worked example, these three moves closed roughly half the gap within one billing cycle.

Why can a profitable project pipeline still bankrupt a construction company?

Every project has its own cash trough, and when multiple jobs hit their low points in the same month, the business-level bank balance drops even if every single project is profitable. A contractor running three overlapping fit-outs at $2M-$3M each can face a combined cash deficit of $400,000-$500,000 during peak mobilization, which is enough to miss payroll or breach a bonding covenant. The fix is rolling up each project's 13-week cash forecast into a single company-level view and staggering project starts by at least two billing cycles where you can.

Trusted by construction companies small and large around the globe

Ready to Get Started?

You are one easy step away from the future of construction management. It's really that simple.

Get Started
Software Advice logo
Capterra logo
GetApp logo