Methodology
Fixed Price vs Hourly 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
contributionDifference = fixed-price contribution โ hourly contributionWhere
- contributionDifference
- Contribution Difference (currency units/project)Source: Calculated output
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
breakEvenHours = protected fixed revenue รท hourly rateWhere
- 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
expectedFixedContribution = ฮฃ(fixed case contribution ร probability)Where
- expectedFixedContribution
- Expected Fixed Contribution (currency units/project)Source: Calculated output
expectedHourlyContribution = ฮฃ(hourly case contribution ร probability)Where
- expectedHourlyContribution
- Expected Hourly Contribution (currency units/project)Source: Calculated output
bestFixedContribution = protected fixed revenue โ best hours ร delivery costWhere
- protectedFixedRevenue
- Protected Fixed Revenue (currency units/project)Source: Calculated output
- bestFixedContribution
- Best Fixed Contribution (currency units/project)Source: Calculated output
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
baseFixedContribution = protected fixed revenue โ base hours ร delivery costWhere
- protectedFixedRevenue
- Protected Fixed Revenue (currency units/project)Source: Calculated output
- baseFixedContribution
- Base Fixed Contribution (currency units/project)Source: Calculated output
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
worstFixedContribution = protected fixed revenue โ worst hours ร delivery costWhere
- protectedFixedRevenue
- Protected Fixed Revenue (currency units/project)Source: Calculated output
- worstFixedContribution
- Worst Fixed Contribution (currency units/project)Source: Calculated output
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
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
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
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
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
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
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
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
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
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
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
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
- : 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.
- Hourly vs Project vs Retainer Pricing
Compare how hourly, fixed-project and retainer models allocate duration, scope and reserved-capacity risk.
Read guide