Skip to main content

Methodology

Fixed Price vs Hourly Planner methodology

Compare fixed and hourly contribution across best, base and worst delivery cases. The fixed-fee scope buffer is a revenue mark-up: fixed fee ร— (1 + buffer rate).

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

Contribution Difference
contributionDifference = fixed-price contribution โˆ’ hourly contribution

Where

contributionDifference
Contribution Difference (currency units/project)Source: Calculated output
Protected Fixed Revenue
protectedFixedRevenue = fixed fee ร— (1 + scope buffer)

Where

fixedFee
Fixed project fee (currency units/project)Source: User decision
scopeBufferRate
Fixed-fee scope buffer (proportion of delivery cost added as scope buffer)Source: User decision
protectedFixedRevenue
Protected Fixed Revenue (currency units/project)Source: Calculated output
Break Even Hours
breakEvenHours = protected fixed revenue รท hourly rate

Where

hourlyRate
Hourly billing rate (currency units/hour)Source: User decision
protectedFixedRevenue
Protected Fixed Revenue (currency units/project)Source: Calculated output
breakEvenHours
Break Even Hours (hours/project)Source: Calculated output
Expected Fixed Contribution
expectedFixedContribution = ฮฃ(fixed case contribution ร— probability)

Where

expectedFixedContribution
Expected Fixed Contribution (currency units/project)Source: Calculated output
Expected Hourly Contribution
expectedHourlyContribution = ฮฃ(hourly case contribution ร— probability)

Where

expectedHourlyContribution
Expected Hourly Contribution (currency units/project)Source: Calculated output
Best Fixed Contribution
bestFixedContribution = protected fixed revenue โˆ’ best hours ร— delivery cost

Where

protectedFixedRevenue
Protected Fixed Revenue (currency units/project)Source: Calculated output
bestFixedContribution
Best Fixed Contribution (currency units/project)Source: Calculated output
Best Hourly Contribution
bestHourlyContribution = best hours ร— (hourly rate โˆ’ delivery cost)

Where

hourlyRate
Hourly billing rate (currency units/hour)Source: User decision
bestHourlyContribution
Best Hourly Contribution (currency units/project)Source: Calculated output
Base Fixed Contribution
baseFixedContribution = protected fixed revenue โˆ’ base hours ร— delivery cost

Where

protectedFixedRevenue
Protected Fixed Revenue (currency units/project)Source: Calculated output
baseFixedContribution
Base Fixed Contribution (currency units/project)Source: Calculated output
Base Hourly Contribution
baseHourlyContribution = base hours ร— (hourly rate โˆ’ delivery cost)

Where

hourlyRate
Hourly billing rate (currency units/hour)Source: User decision
baseHourlyContribution
Base Hourly Contribution (currency units/project)Source: Calculated output
Worst Fixed Contribution
worstFixedContribution = protected fixed revenue โˆ’ worst hours ร— delivery cost

Where

protectedFixedRevenue
Protected Fixed Revenue (currency units/project)Source: Calculated output
worstFixedContribution
Worst Fixed Contribution (currency units/project)Source: Calculated output
Worst Hourly Contribution
worstHourlyContribution = worst hours ร— (hourly rate โˆ’ delivery cost)

Where

hourlyRate
Hourly billing rate (currency units/hour)Source: User decision
worstHourlyContribution
Worst Hourly Contribution (currency units/project)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 are rendered from the registered engine and visible default fixture.

Hourly billing rate
150 currency units/hour
Fixed project fee
7,000 currency units/project
Delivery cost per hour
65 currency units/hour
Fixed-fee scope buffer
0.1 proportion of delivery cost added as scope buffer
Best-case hours
35 hours/project
Best-case probability
0.25 decimal probability
Base-case hours
45 hours/project
Base-case probability
0.5 decimal probability
Worst-case hours
60 hours/project
Worst-case probability
0.25 decimal probability

Calculation and outputs

  1. contributionDifference

    contributionDifference = fixed-price contribution โˆ’ hourly contribution
    Hourly billing rate
    150 currency units/hour
    Fixed project fee
    7,000 currency units/project
    Fixed-fee scope buffer
    0.1 proportion of delivery cost added as scope buffer
    protectedFixedRevenue
    7,700 declared output unit
    expectedFixedContribution
    4,693.75 declared output unit
    expectedHourlyContribution
    3,931.25 declared output unit
    bestFixedContribution
    5,425 declared output unit
    bestHourlyContribution
    2,975 declared output unit
    baseFixedContribution
    4,775 declared output unit
    baseHourlyContribution
    3,825 declared output unit
    worstFixedContribution
    3,800 declared output unit
    worstHourlyContribution
    5,100 declared output unit

    Engine result: 762.5

  2. protectedFixedRevenue

    protectedFixedRevenue = fixed fee ร— (1 + scope buffer)
    Fixed project fee
    7,000 currency units/project
    Fixed-fee scope buffer
    0.1 proportion of delivery cost added as scope buffer
    expectedFixedContribution
    4,693.75 declared output unit
    bestFixedContribution
    5,425 declared output unit
    baseFixedContribution
    4,775 declared output unit
    worstFixedContribution
    3,800 declared output unit

    Engine result: 7,700

  3. breakEvenHours

    breakEvenHours = protected fixed revenue รท hourly rate
    Hourly billing rate
    150 currency units/hour
    Fixed project fee
    7,000 currency units/project
    Fixed-fee scope buffer
    0.1 proportion of delivery cost added as scope buffer
    protectedFixedRevenue
    7,700 declared output unit
    expectedFixedContribution
    4,693.75 declared output unit
    expectedHourlyContribution
    3,931.25 declared output unit
    bestFixedContribution
    5,425 declared output unit
    bestHourlyContribution
    2,975 declared output unit
    baseFixedContribution
    4,775 declared output unit
    baseHourlyContribution
    3,825 declared output unit
    worstFixedContribution
    3,800 declared output unit
    worstHourlyContribution
    5,100 declared output unit

    Engine result: 51.333333

  4. expectedFixedContribution

    expectedFixedContribution = ฮฃ(fixed case contribution ร— probability)
    Fixed project fee
    7,000 currency units/project
    Fixed-fee scope buffer
    0.1 proportion of delivery cost added as scope buffer
    Best-case hours
    35 hours/project
    Best-case probability
    0.25 decimal probability
    Base-case hours
    45 hours/project
    Base-case probability
    0.5 decimal probability
    Worst-case hours
    60 hours/project
    Worst-case probability
    0.25 decimal probability
    contributionDifference
    762.5 declared output unit
    protectedFixedRevenue
    7,700 declared output unit
    expectedHourlyContribution
    3,931.25 declared output unit
    bestFixedContribution
    5,425 declared output unit
    bestHourlyContribution
    2,975 declared output unit
    baseFixedContribution
    4,775 declared output unit
    baseHourlyContribution
    3,825 declared output unit
    worstFixedContribution
    3,800 declared output unit
    worstHourlyContribution
    5,100 declared output unit

    Engine result: 4,693.75

  5. expectedHourlyContribution

    expectedHourlyContribution = ฮฃ(hourly case contribution ร— probability)
    Hourly billing rate
    150 currency units/hour
    Best-case hours
    35 hours/project
    Best-case probability
    0.25 decimal probability
    Base-case hours
    45 hours/project
    Base-case probability
    0.5 decimal probability
    Worst-case hours
    60 hours/project
    Worst-case probability
    0.25 decimal probability
    contributionDifference
    762.5 declared output unit
    expectedFixedContribution
    4,693.75 declared output unit
    bestFixedContribution
    5,425 declared output unit
    bestHourlyContribution
    2,975 declared output unit
    baseFixedContribution
    4,775 declared output unit
    baseHourlyContribution
    3,825 declared output unit
    worstFixedContribution
    3,800 declared output unit
    worstHourlyContribution
    5,100 declared output unit

    Engine result: 3,931.25

  6. bestFixedContribution

    bestFixedContribution = protected fixed revenue โˆ’ best hours ร— delivery cost
    Fixed project fee
    7,000 currency units/project
    Delivery cost per hour
    65 currency units/hour
    Fixed-fee scope buffer
    0.1 proportion of delivery cost added as scope buffer
    Best-case hours
    35 hours/project
    Best-case probability
    0.25 decimal probability
    Base-case hours
    45 hours/project
    Worst-case hours
    60 hours/project
    protectedFixedRevenue
    7,700 declared output unit
    breakEvenHours
    51.333333 declared output unit
    expectedFixedContribution
    4,693.75 declared output unit
    bestHourlyContribution
    2,975 declared output unit
    baseFixedContribution
    4,775 declared output unit
    worstFixedContribution
    3,800 declared output unit

    Engine result: 5,425

  7. bestHourlyContribution

    bestHourlyContribution = best hours ร— (hourly rate โˆ’ delivery cost)
    Hourly billing rate
    150 currency units/hour
    Delivery cost per hour
    65 currency units/hour
    Fixed-fee scope buffer
    0.1 proportion of delivery cost added as scope buffer
    Best-case hours
    35 hours/project
    Best-case probability
    0.25 decimal probability
    Base-case hours
    45 hours/project
    Worst-case hours
    60 hours/project
    breakEvenHours
    51.333333 declared output unit
    expectedHourlyContribution
    3,931.25 declared output unit
    bestFixedContribution
    5,425 declared output unit
    baseHourlyContribution
    3,825 declared output unit
    worstHourlyContribution
    5,100 declared output unit

    Engine result: 2,975

  8. baseFixedContribution

    baseFixedContribution = protected fixed revenue โˆ’ base hours ร— delivery cost
    Fixed project fee
    7,000 currency units/project
    Delivery cost per hour
    65 currency units/hour
    Fixed-fee scope buffer
    0.1 proportion of delivery cost added as scope buffer
    Best-case hours
    35 hours/project
    Base-case hours
    45 hours/project
    Base-case probability
    0.5 decimal probability
    Worst-case hours
    60 hours/project
    protectedFixedRevenue
    7,700 declared output unit
    breakEvenHours
    51.333333 declared output unit
    expectedFixedContribution
    4,693.75 declared output unit
    bestFixedContribution
    5,425 declared output unit
    baseHourlyContribution
    3,825 declared output unit
    worstFixedContribution
    3,800 declared output unit

    Engine result: 4,775

  9. baseHourlyContribution

    baseHourlyContribution = base hours ร— (hourly rate โˆ’ delivery cost)
    Hourly billing rate
    150 currency units/hour
    Delivery cost per hour
    65 currency units/hour
    Fixed-fee scope buffer
    0.1 proportion of delivery cost added as scope buffer
    Best-case hours
    35 hours/project
    Base-case hours
    45 hours/project
    Base-case probability
    0.5 decimal probability
    Worst-case hours
    60 hours/project
    breakEvenHours
    51.333333 declared output unit
    expectedHourlyContribution
    3,931.25 declared output unit
    bestHourlyContribution
    2,975 declared output unit
    baseFixedContribution
    4,775 declared output unit
    worstHourlyContribution
    5,100 declared output unit

    Engine result: 3,825

  10. worstFixedContribution

    worstFixedContribution = protected fixed revenue โˆ’ worst hours ร— delivery cost
    Fixed project fee
    7,000 currency units/project
    Delivery cost per hour
    65 currency units/hour
    Fixed-fee scope buffer
    0.1 proportion of delivery cost added as scope buffer
    Best-case hours
    35 hours/project
    Base-case hours
    45 hours/project
    Worst-case hours
    60 hours/project
    Worst-case probability
    0.25 decimal probability
    protectedFixedRevenue
    7,700 declared output unit
    breakEvenHours
    51.333333 declared output unit
    expectedFixedContribution
    4,693.75 declared output unit
    bestFixedContribution
    5,425 declared output unit
    baseFixedContribution
    4,775 declared output unit
    worstHourlyContribution
    5,100 declared output unit

    Engine result: 3,800

  11. worstHourlyContribution

    worstHourlyContribution = worst hours ร— (hourly rate โˆ’ delivery cost)
    Hourly billing rate
    150 currency units/hour
    Delivery cost per hour
    65 currency units/hour
    Fixed-fee scope buffer
    0.1 proportion of delivery cost added as scope buffer
    Best-case hours
    35 hours/project
    Base-case hours
    45 hours/project
    Worst-case hours
    60 hours/project
    Worst-case probability
    0.25 decimal probability
    breakEvenHours
    51.333333 declared output unit
    expectedHourlyContribution
    3,931.25 declared output unit
    bestHourlyContribution
    2,975 declared output unit
    baseHourlyContribution
    3,825 declared output unit
    worstFixedContribution
    3,800 declared output unit

    Engine result: 5,100

Example

The worked rows are rendered from the registered engine and visible default fixture.

Protected Fixed Revenue
7,700 currency units/project
Break Even Hours
51.33 hours/project
Expected Fixed Contribution
4,693.75 currency units/project
Expected Hourly Contribution
3,931.25 currency units/project
Contribution Difference
762.5 currency units/project
Best Fixed Contribution
5,425 currency units/project
Best Hourly Contribution
2,975 currency units/project
Base Fixed Contribution
4,775 currency units/project
Base Hourly Contribution
3,825 currency units/project
Worst Fixed Contribution
3,800 currency units/project
Worst Hourly Contribution
5,100 currency units/project

The exact engine-derived outputs are shown in the labelled rows below.

Interpretation

The fixed price vs hourly result uses only the entered commercial assumptions.

3. Validation and boundary checks

  • Inputs must be finite and remain within the visible boundaries.
  • Rates are decimal values and all monetary inputs use one consistent currency and period.
  • Whole operational capacity is rounded only where the engine explicitly applies floor or ceiling.
  • The fixed-fee buffer marks up entered fixed revenue by multiplying the fee by one plus the buffer rate; it does not alter delivery cost.
Hourly billing rate minimum
hourlyRate โ‰ฅ 0 currency units/hour โ€” A lower value is rejected before calculation.
Hourly billing rate maximum
hourlyRate โ‰ค 10,000,000 currency units/hour โ€” A higher value is rejected before calculation.
Fixed project fee minimum
fixedFee โ‰ฅ 0 currency units/project โ€” A lower value is rejected before calculation.
Fixed project fee maximum
fixedFee โ‰ค 10,000,000 currency units/project โ€” A higher value is rejected before calculation.
Delivery cost per hour minimum
deliveryCostPerHour โ‰ฅ 0 currency units/hour โ€” A lower value is rejected before calculation.
Delivery cost per hour maximum
deliveryCostPerHour โ‰ค 10,000,000 currency units/hour โ€” A higher value is rejected before calculation.
Fixed-fee scope buffer minimum
scopeBufferRate โ‰ฅ 0 proportion of delivery cost added as scope buffer โ€” A lower value is rejected before calculation.
Fixed-fee scope buffer maximum
scopeBufferRate โ‰ค 0.99 proportion of delivery cost added as scope buffer โ€” A higher value is rejected before calculation.
Best-case hours minimum
bestCaseHours โ‰ฅ 0 hours/project โ€” A lower value is rejected before calculation.
Best-case hours maximum
bestCaseHours โ‰ค 10,000,000 hours/project โ€” A higher value is rejected before calculation.
Best-case probability minimum
bestCaseProbability โ‰ฅ 0 decimal probability โ€” A lower value is rejected before calculation.
Best-case probability maximum
bestCaseProbability โ‰ค 0.99 decimal probability โ€” A higher value is rejected before calculation.
Base-case hours minimum
baseCaseHours โ‰ฅ 0 hours/project โ€” A lower value is rejected before calculation.
Base-case hours maximum
baseCaseHours โ‰ค 10,000,000 hours/project โ€” A higher value is rejected before calculation.
Base-case probability minimum
baseCaseProbability โ‰ฅ 0 decimal probability โ€” A lower value is rejected before calculation.
Base-case probability maximum
baseCaseProbability โ‰ค 0.99 decimal probability โ€” A higher value is rejected before calculation.
Worst-case hours minimum
worstCaseHours โ‰ฅ 0 hours/project โ€” A lower value is rejected before calculation.
Worst-case hours maximum
worstCaseHours โ‰ค 10,000,000 hours/project โ€” A higher value is rejected before calculation.
Worst-case probability minimum
worstCaseProbability โ‰ฅ 0 decimal probability โ€” A lower value is rejected before calculation.
Worst-case probability maximum
worstCaseProbability โ‰ค 0.99 decimal probability โ€” A higher value is rejected before calculation.

4. Assumptions and source classification

  • All costs, prices, hours, probabilities and volumes are user-supplied; no market benchmark is inferred.
  • Tax is outside these neutral commercial comparisons.
  • The engine retains full precision; formatting never feeds back into 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

  • The model does not predict demand, delivery performance, contract enforceability or customer behaviour.
  • It does not replace accounting, tax, legal or financial advice.

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

  1. : Initial public release of the planner and methodology after pre-launch calculation, content, source and interaction review.

Guides to interpret the decision and its assumptions.

Return to the planner