Methodology
Construction Retention Cash-flow Planner methodology
Educational only: Business decision support, not accounting, tax or legal advice.
Privacy: Calculations run locally; Margin101 does not receive your commercial inputs.
Update policy: Reviewed when formulas or official dependencies change.
Scope: Market-neutral small-business planning using your own assumptions.
1. Formulas and units
totalCertifiedWorkExTax = sum of certified work across claim periodsWhere
- secondCertifiedWorkExTax
- Second claim certified work (currency units/second claim, ex tax)Source: Business record
- totalCertifiedWorkExTax
- Total certified work (currency units, ex tax)Source: Calculated output
totalRetentionWithheldExTax = sum of claim retention subject to the capWhere
- retentionCapExTax
- Contract retention cap (currency units/project retention balance, ex tax)Source: Business record
- totalRetentionWithheldExTax
- Total retention withheld (currency units, ex tax)Source: Calculated output
totalRetentionReleasedExTax = sum of released retention across claim periodsWhere
- secondRetentionReleasedExTax
- Second claim retention released (currency units/second claim period, ex tax)Source: Business record
- totalRetentionReleasedExTax
- Total retention released (currency units, ex tax)Source: Calculated output
retentionBalanceExTax = retention withheld - retention releasedWhere
- secondRetentionReleasedExTax
- Second claim retention released (currency units/second claim period, ex tax)Source: Business record
- totalRetentionWithheldExTax
- Total retention withheld (currency units, ex tax)Source: Calculated output
- totalRetentionReleasedExTax
- Total retention released (currency units, ex tax)Source: Calculated output
- retentionBalanceExTax
- Retention still held (currency units, ex tax)Source: Calculated output
totalCollectibleExTax = certified work - retention withheld + retention releasedWhere
- secondCertifiedWorkExTax
- Second claim certified work (currency units/second claim, ex tax)Source: Business record
- secondRetentionReleasedExTax
- Second claim retention released (currency units/second claim period, ex tax)Source: Business record
- totalCertifiedWorkExTax
- Total certified work (currency units, ex tax)Source: Calculated output
- totalRetentionWithheldExTax
- Total retention withheld (currency units, ex tax)Source: Calculated output
- totalRetentionReleasedExTax
- Total retention released (currency units, ex tax)Source: Calculated output
- totalCollectibleExTax
- Total collectible amount (currency units, ex tax)Source: Calculated output
totalCashReceivedExTax = sum of cash receipts across claim periodsWhere
- secondCashReceivedExTax
- Second claim cash received (currency units/second claim period, ex tax)Source: Business record
- totalCashReceivedExTax
- Total cash received (currency units, ex tax)Source: Calculated output
totalCashDueExTax = total collectible amount - total cash receivedWhere
- secondCashReceivedExTax
- Second claim cash received (currency units/second claim period, ex tax)Source: Business record
- totalCollectibleExTax
- Total collectible amount (currency units, ex tax)Source: Calculated output
- totalCashReceivedExTax
- Total cash received (currency units, ex tax)Source: Calculated output
- totalCashDueExTax
- Cash still due (currency units, ex tax)Source: Calculated output
totalProjectCostOutflowExTax = sum of project cost cash outflowsWhere
- secondProjectCostOutflowExTax
- Second claim project cost outflow (currency units/second claim period, ex tax)Source: Business record
- totalProjectCostOutflowExTax
- Project cost outflow (currency units, ex tax)Source: Calculated output
closingCashExTax = opening cash + receipts - project cost outflowsWhere
- openingProjectCashExTax
- Opening project cash (currency units/project before first claim, ex tax)Source: Business record
- closingCashExTax
- Closing project cash (currency units, ex tax)Source: Calculated output
peakFundingGapExTax = largest shortfall below zero cash across claim periodsWhere
- peakFundingGapExTax
- Peak project funding gap (currency units, ex tax)Source: Calculated output
firstShortfallDate = first chronological claim date with closing cash below zeroWhere
- firstClaimDateCode
- First claim date (YYYYMMDD date code for first claim)Source: Business record
- secondClaimDateCode
- Second claim date (YYYYMMDD date code for second claim)Source: Business record
- closingCashExTax
- Closing project cash (currency units, ex tax)Source: Calculated output
- firstShortfallDate
- First shortfall date (ISO calendar date)Source: Calculated output
expectedFinalReleaseDate = last claim date + expected release delay when retention remains heldWhere
- expectedReleaseDelayDays
- Expected release delay (whole days from last claim to final release)Source: Business record
- secondClaimDateCode
- Second claim date (YYYYMMDD date code for second claim)Source: Business record
- expectedFinalReleaseDate
- Expected final retention release date (ISO calendar date)Source: Calculated output
Money inputs and outputs use the currency selected in the scenario without changing the canonical methodology. Rates, margins, utilisation and buffers are entered as percentages and converted to decimal values for calculation.
2. Worked example
Input assumptions
The worked rows below are evaluated at render time by the same shared engine and visible default fixture as the interactive workflow.
- Contract retention rate
- 0.05 decimal fraction of certified work withheld
- Contract retention cap
- 30,000 currency units/project retention balance, ex tax
- Expected release delay
- 60 whole days from last claim to final release
- Opening project cash
- 15,000 currency units/project before first claim, ex tax
- First claim date
- 20,260,131 YYYYMMDD date code for first claim
- First claim certified work
- 90,000 currency units/first claim, ex tax
- First claim cash received
- 70,000 currency units/first claim period, ex tax
- First claim retention released
- 0 currency units/first claim period, ex tax
- First claim project cost outflow
- 82,000 currency units/first claim period, ex tax
- Second claim date
- 20,260,228 YYYYMMDD date code for second claim
- Second claim certified work
- 120,000 currency units/second claim, ex tax
- Second claim cash received
- 100,000 currency units/second claim period, ex tax
- Second claim retention released
- 0 currency units/second claim period, ex tax
- Second claim project cost outflow
- 118,000 currency units/second claim period, ex tax
Calculation and outputs
Total certified work
totalCertifiedWorkExTax = sum of certified work across claim periods- First claim date
- 20,260,131 YYYYMMDD date code for first claim
- First claim certified work
- 90,000 currency units/first claim, ex tax
- First claim cash received
- 70,000 currency units/first claim period, ex tax
- First claim retention released
- 0 currency units/first claim period, ex tax
- First claim project cost outflow
- 82,000 currency units/first claim period, ex tax
- Second claim date
- 20,260,228 YYYYMMDD date code for second claim
- Second claim certified work
- 120,000 currency units/second claim, ex tax
- Second claim cash received
- 100,000 currency units/second claim period, ex tax
- Second claim retention released
- 0 currency units/second claim period, ex tax
- Second claim project cost outflow
- 118,000 currency units/second claim period, ex tax
Engine result: 210,000 money
Total retention withheld
totalRetentionWithheldExTax = sum of claim retention subject to the cap- Contract retention rate
- 0.05 decimal fraction of certified work withheld
- Contract retention cap
- 30,000 currency units/project retention balance, ex tax
- First claim date
- 20,260,131 YYYYMMDD date code for first claim
- First claim certified work
- 90,000 currency units/first claim, ex tax
- First claim cash received
- 70,000 currency units/first claim period, ex tax
- First claim retention released
- 0 currency units/first claim period, ex tax
- First claim project cost outflow
- 82,000 currency units/first claim period, ex tax
- Second claim date
- 20,260,228 YYYYMMDD date code for second claim
- Second claim certified work
- 120,000 currency units/second claim, ex tax
- Second claim cash received
- 100,000 currency units/second claim period, ex tax
- Second claim retention released
- 0 currency units/second claim period, ex tax
- Second claim project cost outflow
- 118,000 currency units/second claim period, ex tax
- Total retention released
- 0 money
- Retention still held
- 10,500 money
- Expected final retention release date
- 2026-04-29 date
Engine result: 10,500 money
Total retention released
totalRetentionReleasedExTax = sum of released retention across claim periods- Contract retention rate
- 0.05 decimal fraction of certified work withheld
- Contract retention cap
- 30,000 currency units/project retention balance, ex tax
- First claim date
- 20,260,131 YYYYMMDD date code for first claim
- First claim certified work
- 90,000 currency units/first claim, ex tax
- First claim cash received
- 70,000 currency units/first claim period, ex tax
- First claim retention released
- 0 currency units/first claim period, ex tax
- First claim project cost outflow
- 82,000 currency units/first claim period, ex tax
- Second claim date
- 20,260,228 YYYYMMDD date code for second claim
- Second claim certified work
- 120,000 currency units/second claim, ex tax
- Second claim cash received
- 100,000 currency units/second claim period, ex tax
- Second claim retention released
- 0 currency units/second claim period, ex tax
- Second claim project cost outflow
- 118,000 currency units/second claim period, ex tax
- Total retention withheld
- 10,500 money
- Retention still held
- 10,500 money
- Expected final retention release date
- 2026-04-29 date
Engine result: 0 money
Retention still held
retentionBalanceExTax = retention withheld - retention released- Contract retention rate
- 0.05 decimal fraction of certified work withheld
- Contract retention cap
- 30,000 currency units/project retention balance, ex tax
- First claim retention released
- 0 currency units/first claim period, ex tax
- Second claim retention released
- 0 currency units/second claim period, ex tax
- Total retention withheld
- 10,500 money
- Total retention released
- 0 money
- Expected final retention release date
- 2026-04-29 date
Engine result: 10,500 money
Total collectible amount
totalCollectibleExTax = certified work - retention withheld + retention released- Contract retention rate
- 0.05 decimal fraction of certified work withheld
- Contract retention cap
- 30,000 currency units/project retention balance, ex tax
- First claim certified work
- 90,000 currency units/first claim, ex tax
- First claim retention released
- 0 currency units/first claim period, ex tax
- Second claim certified work
- 120,000 currency units/second claim, ex tax
- Second claim retention released
- 0 currency units/second claim period, ex tax
- Total certified work
- 210,000 money
- Total retention withheld
- 10,500 money
- Total retention released
- 0 money
- Retention still held
- 10,500 money
- Expected final retention release date
- 2026-04-29 date
Engine result: 199,500 money
Total cash received
totalCashReceivedExTax = sum of cash receipts across claim periods- Opening project cash
- 15,000 currency units/project before first claim, ex tax
- First claim date
- 20,260,131 YYYYMMDD date code for first claim
- First claim certified work
- 90,000 currency units/first claim, ex tax
- First claim cash received
- 70,000 currency units/first claim period, ex tax
- First claim retention released
- 0 currency units/first claim period, ex tax
- First claim project cost outflow
- 82,000 currency units/first claim period, ex tax
- Second claim date
- 20,260,228 YYYYMMDD date code for second claim
- Second claim certified work
- 120,000 currency units/second claim, ex tax
- Second claim cash received
- 100,000 currency units/second claim period, ex tax
- Second claim retention released
- 0 currency units/second claim period, ex tax
- Second claim project cost outflow
- 118,000 currency units/second claim period, ex tax
- Cash still due
- 29,500 money
- Closing project cash
- -15,000 money
Engine result: 170,000 money
Cash still due
totalCashDueExTax = total collectible amount - total cash received- Opening project cash
- 15,000 currency units/project before first claim, ex tax
- First claim cash received
- 70,000 currency units/first claim period, ex tax
- Second claim cash received
- 100,000 currency units/second claim period, ex tax
- Total collectible amount
- 199,500 money
- Total cash received
- 170,000 money
- Closing project cash
- -15,000 money
Engine result: 29,500 money
Project cost outflow
totalProjectCostOutflowExTax = sum of project cost cash outflows- Opening project cash
- 15,000 currency units/project before first claim, ex tax
- First claim cash received
- 70,000 currency units/first claim period, ex tax
- First claim project cost outflow
- 82,000 currency units/first claim period, ex tax
- Second claim cash received
- 100,000 currency units/second claim period, ex tax
- Second claim project cost outflow
- 118,000 currency units/second claim period, ex tax
- Total cash received
- 170,000 money
- Cash still due
- 29,500 money
- Closing project cash
- -15,000 money
- Peak project funding gap
- 15,000 money
Engine result: 200,000 money
Closing project cash
closingCashExTax = opening cash + receipts - project cost outflows- Opening project cash
- 15,000 currency units/project before first claim, ex tax
- First claim cash received
- 70,000 currency units/first claim period, ex tax
- First claim project cost outflow
- 82,000 currency units/first claim period, ex tax
- Second claim cash received
- 100,000 currency units/second claim period, ex tax
- Second claim project cost outflow
- 118,000 currency units/second claim period, ex tax
- Total cash received
- 170,000 money
- Cash still due
- 29,500 money
- Project cost outflow
- 200,000 money
- Peak project funding gap
- 15,000 money
Engine result: -15,000 money
Peak project funding gap
peakFundingGapExTax = largest shortfall below zero cash across claim periods- Opening project cash
- 15,000 currency units/project before first claim, ex tax
- First claim date
- 20,260,131 YYYYMMDD date code for first claim
- First claim certified work
- 90,000 currency units/first claim, ex tax
- First claim cash received
- 70,000 currency units/first claim period, ex tax
- First claim retention released
- 0 currency units/first claim period, ex tax
- First claim project cost outflow
- 82,000 currency units/first claim period, ex tax
- Second claim date
- 20,260,228 YYYYMMDD date code for second claim
- Second claim certified work
- 120,000 currency units/second claim, ex tax
- Second claim cash received
- 100,000 currency units/second claim period, ex tax
- Second claim retention released
- 0 currency units/second claim period, ex tax
- Second claim project cost outflow
- 118,000 currency units/second claim period, ex tax
- Total cash received
- 170,000 money
- Cash still due
- 29,500 money
- Closing project cash
- -15,000 money
- First shortfall date
- 2026-02-28 date
Engine result: 15,000 money
First shortfall date
firstShortfallDate = first chronological claim date with closing cash below zero- Opening project cash
- 15,000 currency units/project before first claim, ex tax
- First claim date
- 20,260,131 YYYYMMDD date code for first claim
- First claim certified work
- 90,000 currency units/first claim, ex tax
- First claim cash received
- 70,000 currency units/first claim period, ex tax
- First claim retention released
- 0 currency units/first claim period, ex tax
- First claim project cost outflow
- 82,000 currency units/first claim period, ex tax
- Second claim date
- 20,260,228 YYYYMMDD date code for second claim
- Second claim certified work
- 120,000 currency units/second claim, ex tax
- Second claim cash received
- 100,000 currency units/second claim period, ex tax
- Second claim retention released
- 0 currency units/second claim period, ex tax
- Second claim project cost outflow
- 118,000 currency units/second claim period, ex tax
- Total cash received
- 170,000 money
- Cash still due
- 29,500 money
- Closing project cash
- -15,000 money
- Expected final retention release date
- 2026-04-29 date
Engine result: 2026-02-28 date
Expected final retention release date
expectedFinalReleaseDate = last claim date + expected release delay when retention remains held- Contract retention rate
- 0.05 decimal fraction of certified work withheld
- Contract retention cap
- 30,000 currency units/project retention balance, ex tax
- Expected release delay
- 60 whole days from last claim to final release
- First claim date
- 20,260,131 YYYYMMDD date code for first claim
- First claim certified work
- 90,000 currency units/first claim, ex tax
- First claim cash received
- 70,000 currency units/first claim period, ex tax
- First claim retention released
- 0 currency units/first claim period, ex tax
- First claim project cost outflow
- 82,000 currency units/first claim period, ex tax
- Second claim date
- 20,260,228 YYYYMMDD date code for second claim
- Second claim certified work
- 120,000 currency units/second claim, ex tax
- Second claim cash received
- 100,000 currency units/second claim period, ex tax
- Second claim retention released
- 0 currency units/second claim period, ex tax
- Second claim project cost outflow
- 118,000 currency units/second claim period, ex tax
- Total retention withheld
- 10,500 money
- Total retention released
- 0 money
- Retention still held
- 10,500 money
- First shortfall date
- 2026-02-28 date
Engine result: 2026-04-29 date
Example
The worked rows below are evaluated at render time by the same shared engine and visible default fixture as the interactive workflow.
- Total certified work
- 210,000 currency units
- Total retention withheld
- 10,500 currency units
- Total retention released
- 0 currency units
- Retention still held
- 10,500 currency units
- Total collectible amount
- 199,500 currency units
- Total cash received
- 170,000 currency units
- Cash still due
- 29,500 currency units
- Project cost outflow
- 200,000 currency units
- Closing project cash
- -15,000 currency units
- Peak project funding gap
- 15,000 currency units
- First shortfall date
- 2026-02-28
- Expected final retention release date
- 2026-04-29
The exact engine-derived outputs are shown in the labelled rows below.
Interpretation
Retention is a timing exposure: project profit and project cash can move differently.
3. Validation and boundary checks
- All inputs must be finite and inside the visible validation boundaries.
- Rates are retained as decimal values and shown as percentages only at the presentation boundary.
- The worked fixture must expose every declared result: totalCertifiedWorkExTax, totalRetentionWithheldExTax, totalRetentionReleasedExTax, retentionBalanceExTax, totalCollectibleExTax, totalCashReceivedExTax, totalCashDueExTax, totalProjectCostOutflowExTax, closingCashExTax, peakFundingGapExTax, firstShortfallDate, expectedFinalReleaseDate.
- Scenario comparison changes one declared driver while holding the remaining industry records constant.
- Cash received is the complete actual receipt, including any payment arising from released retention; retention released changes the retention ledger and is not added to cash a second time.
- Contract retention rate minimum
retentionRate โฅ 0 decimal fraction of certified work withheldโ A lower value is rejected before calculation.- Contract retention rate maximum
retentionRate โค 1 decimal fraction of certified work withheldโ A higher value is rejected before calculation.- Contract retention cap minimum
retentionCapExTax โฅ 0 currency units/project retention balance, ex taxโ A lower value is rejected before calculation.- Contract retention cap maximum
retentionCapExTax โค 10,000,000 currency units/project retention balance, ex taxโ A higher value is rejected before calculation.- Expected release delay minimum
expectedReleaseDelayDays โฅ 0 whole days from last claim to final releaseโ A lower value is rejected before calculation.- Expected release delay maximum
expectedReleaseDelayDays โค 3,650 whole days from last claim to final releaseโ A higher value is rejected before calculation.- Opening project cash minimum
openingProjectCashExTax โฅ -100,000,000 currency units/project before first claim, ex taxโ A lower value is rejected before calculation.- Opening project cash maximum
openingProjectCashExTax โค 100,000,000 currency units/project before first claim, ex taxโ A higher value is rejected before calculation.- First claim date minimum
firstClaimDateCode โฅ 10,000,101 YYYYMMDD date code for first claimโ A lower value is rejected before calculation.- First claim date maximum
firstClaimDateCode โค 99,991,231 YYYYMMDD date code for first claimโ A higher value is rejected before calculation.- First claim certified work minimum
firstCertifiedWorkExTax โฅ 0 currency units/first claim, ex taxโ A lower value is rejected before calculation.- First claim certified work maximum
firstCertifiedWorkExTax โค 10,000,000 currency units/first claim, ex taxโ A higher value is rejected before calculation.- First claim cash received minimum
firstCashReceivedExTax โฅ 0 currency units/first claim period, ex taxโ A lower value is rejected before calculation.- First claim cash received maximum
firstCashReceivedExTax โค 10,000,000 currency units/first claim period, ex taxโ A higher value is rejected before calculation.- First claim retention released minimum
firstRetentionReleasedExTax โฅ 0 currency units/first claim period, ex taxโ A lower value is rejected before calculation.- First claim retention released maximum
firstRetentionReleasedExTax โค 10,000,000 currency units/first claim period, ex taxโ A higher value is rejected before calculation.- First claim project cost outflow minimum
firstProjectCostOutflowExTax โฅ 0 currency units/first claim period, ex taxโ A lower value is rejected before calculation.- First claim project cost outflow maximum
firstProjectCostOutflowExTax โค 10,000,000 currency units/first claim period, ex taxโ A higher value is rejected before calculation.- Second claim date minimum
secondClaimDateCode โฅ 10,000,101 YYYYMMDD date code for second claimโ A lower value is rejected before calculation.- Second claim date maximum
secondClaimDateCode โค 99,991,231 YYYYMMDD date code for second claimโ A higher value is rejected before calculation.- Second claim certified work minimum
secondCertifiedWorkExTax โฅ 0 currency units/second claim, ex taxโ A lower value is rejected before calculation.- Second claim certified work maximum
secondCertifiedWorkExTax โค 10,000,000 currency units/second claim, ex taxโ A higher value is rejected before calculation.- Second claim cash received minimum
secondCashReceivedExTax โฅ 0 currency units/second claim period, ex taxโ A lower value is rejected before calculation.- Second claim cash received maximum
secondCashReceivedExTax โค 10,000,000 currency units/second claim period, ex taxโ A higher value is rejected before calculation.- Second claim retention released minimum
secondRetentionReleasedExTax โฅ 0 currency units/second claim period, ex taxโ A lower value is rejected before calculation.- Second claim retention released maximum
secondRetentionReleasedExTax โค 10,000,000 currency units/second claim period, ex taxโ A higher value is rejected before calculation.- Second claim project cost outflow minimum
secondProjectCostOutflowExTax โฅ 0 currency units/second claim period, ex taxโ A lower value is rejected before calculation.- Second claim project cost outflow maximum
secondProjectCostOutflowExTax โค 10,000,000 currency units/second claim period, ex taxโ A higher value is rejected before calculation.
4. Assumptions and source classification
- Costs, capacity, contract terms, tax rates and targets are supplied by the user.
- No provider default, jurisdictional rule or industry benchmark is embedded.
- The shared engine retains full precision and display formatting never feeds calculation.
This planner has no current policy-data dependency. Its commercial assumptions are user supplied. Registered family-level regression suites exercise the shared business-logic engine and worked-result reconciliation.
5. Limitations
- Results are only as reliable as the timing, scope and basis of the entered records.
- The workflow does not predict demand or establish accounting, tax, contractual or legal treatment.
- Retention rate, cap and release delay are editable contract assumptions; no jurisdictional security-of-payment rule, statutory cap, trust-account requirement or release deadline is embedded.
- The calculated release date is a cash-planning scenario, not a statement of contractual or statutory entitlement.
This is educational decision support, not tax, accounting, legal or financial advice. Check the treatment of your actual transactions under the rules that apply to your business and seek qualified advice where appropriate.
6. Update and evidence policy
Registered family-level suites test formula invariants and example reconciliation; the release ledger records that coverage without claiming a separate oracle for every line of public copy. There is no official threshold or benchmark to refresh for this planner. Commercial inputs remain user-supplied because they vary by business and contract.
Change history
- : Initial public release of the planner and methodology after pre-launch calculation, content, source and interaction review.
Related reading
Guides to interpret the decision and its assumptions.
- Progress Billing and Cash Timing for Project Businesses
Design observable billing milestones and model invoice and receipt dates separately from project profit.
Read guide