Methodology
Recurring Support Plan Pricing 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
minimumMonthlyPrice = monthly customer cost รท (1 โ target margin)Where
- targetMargin
- Target margin (proportion of monthly plan price retained as contribution)Source: User decision
- minimumMonthlyPrice
- Minimum Monthly Price (currency units/month)Source: Calculated output
- monthlyCostPerCustomer
- Monthly Cost Per Customer (currency units/month)Source: Calculated output
monthlyCostPerCustomer = reserved capacity cost + platform + admin + service-level costWhere
- platformCostPerCustomer
- Platform cost per customer (currency units/customer/month)Source: Business record
- monthlyAdminCostPerCustomer
- Monthly admin cost (currency units/customer/month)Source: Business record
- serviceLevelCostPerCustomer
- Service-level cost (currency units/customer/month)Source: Business record
- monthlyCostPerCustomer
- Monthly Cost Per Customer (currency units/month)Source: Calculated output
- reservedCapacityCost
- Reserved Capacity Cost (currency units/month)Source: Calculated output
expectedUsageCost = expected support hours ร delivery costWhere
- expectedSupportHours
- Expected support hours (hours/customer/month)Source: User assumption
- expectedUsageCost
- Expected Usage Cost (currency units/month)Source: Calculated output
reservedCapacityCost = reserved hours ร delivery costWhere
- reservedCapacityHours
- Reserved capacity hours (hours/customer/month)Source: User assumption
- reservedCapacityCost
- Reserved Capacity Cost (currency units/month)Source: Calculated output
unusedReservedHours = reserved hours โ expected hoursWhere
- unusedReservedHours
- Unused Reserved Hours (hours/month)Source: Calculated output
capacityUtilisation = expected hours รท reserved hoursWhere
- reservedCapacityHours
- Reserved capacity hours (hours/customer/month)Source: User assumption
- capacityUtilisation
- Capacity Utilisation (decimal rate)Source: Calculated output
proposedContribution = proposed price โ monthly customer costWhere
- proposedMonthlyPrice
- Proposed monthly price (currency units/customer/month)Source: User decision
- monthlyCostPerCustomer
- Monthly Cost Per Customer (currency units/month)Source: Calculated output
- proposedContribution
- Proposed Contribution (currency units/month)Source: Calculated output
proposedMargin = proposed contribution รท proposed priceWhere
- proposedContribution
- Proposed Contribution (currency units/month)Source: Calculated output
- proposedMargin
- Proposed Margin (decimal rate)Source: Calculated output
priceGap = proposed price โ minimum monthly priceWhere
- proposedMonthlyPrice
- Proposed monthly price (currency units/customer/month)Source: User decision
- minimumMonthlyPrice
- Minimum Monthly Price (currency units/month)Source: Calculated output
- priceGap
- Price Gap (currency units/month)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.
- Expected support hours
- 2 hours/customer/month
- Reserved capacity hours
- 3 hours/customer/month
- Delivery cost per hour
- 60 currency units/hour
- Platform cost per customer
- 20 currency units/customer/month
- Monthly admin cost
- 10 currency units/customer/month
- Service-level cost
- 15 currency units/customer/month
- Target margin
- 0.3 proportion of monthly plan price retained as contribution
- Proposed monthly price
- 250 currency units/customer/month
Calculation and outputs
minimumMonthlyPrice
minimumMonthlyPrice = monthly customer cost รท (1 โ target margin)- Delivery cost per hour
- 60 currency units/hour
- Platform cost per customer
- 20 currency units/customer/month
- Monthly admin cost
- 10 currency units/customer/month
- Service-level cost
- 15 currency units/customer/month
- Target margin
- 0.3 proportion of monthly plan price retained as contribution
- Proposed monthly price
- 250 currency units/customer/month
- monthlyCostPerCustomer
- 225 declared output unit
- expectedUsageCost
- 120 declared output unit
- reservedCapacityCost
- 180 declared output unit
- proposedMargin
- 0.1 declared output unit
Engine result: 321.428571
monthlyCostPerCustomer
monthlyCostPerCustomer = reserved capacity cost + platform + admin + service-level cost- Reserved capacity hours
- 3 hours/customer/month
- Delivery cost per hour
- 60 currency units/hour
- Platform cost per customer
- 20 currency units/customer/month
- Monthly admin cost
- 10 currency units/customer/month
- Service-level cost
- 15 currency units/customer/month
- expectedUsageCost
- 120 declared output unit
- reservedCapacityCost
- 180 declared output unit
- unusedReservedHours
- 1 declared output unit
- capacityUtilisation
- 0.666667 declared output unit
Engine result: 225
expectedUsageCost
expectedUsageCost = expected support hours ร delivery cost- Expected support hours
- 2 hours/customer/month
- Reserved capacity hours
- 3 hours/customer/month
- Delivery cost per hour
- 60 currency units/hour
- Platform cost per customer
- 20 currency units/customer/month
- Monthly admin cost
- 10 currency units/customer/month
- Service-level cost
- 15 currency units/customer/month
- monthlyCostPerCustomer
- 225 declared output unit
- reservedCapacityCost
- 180 declared output unit
- unusedReservedHours
- 1 declared output unit
Engine result: 120
reservedCapacityCost
reservedCapacityCost = reserved hours ร delivery cost- Expected support hours
- 2 hours/customer/month
- Reserved capacity hours
- 3 hours/customer/month
- Delivery cost per hour
- 60 currency units/hour
- Platform cost per customer
- 20 currency units/customer/month
- Monthly admin cost
- 10 currency units/customer/month
- Service-level cost
- 15 currency units/customer/month
- monthlyCostPerCustomer
- 225 declared output unit
- expectedUsageCost
- 120 declared output unit
- unusedReservedHours
- 1 declared output unit
Engine result: 180
unusedReservedHours
unusedReservedHours = reserved hours โ expected hours- Expected support hours
- 2 hours/customer/month
- Reserved capacity hours
- 3 hours/customer/month
- expectedUsageCost
- 120 declared output unit
- reservedCapacityCost
- 180 declared output unit
Engine result: 1
capacityUtilisation
capacityUtilisation = expected hours รท reserved hours- Expected support hours
- 2 hours/customer/month
- Reserved capacity hours
- 3 hours/customer/month
- expectedUsageCost
- 120 declared output unit
- reservedCapacityCost
- 180 declared output unit
- unusedReservedHours
- 1 declared output unit
Engine result: 0.666667
proposedContribution
proposedContribution = proposed price โ monthly customer cost- Delivery cost per hour
- 60 currency units/hour
- Platform cost per customer
- 20 currency units/customer/month
- Monthly admin cost
- 10 currency units/customer/month
- Service-level cost
- 15 currency units/customer/month
- Proposed monthly price
- 250 currency units/customer/month
- minimumMonthlyPrice
- 321.428571 declared output unit
- monthlyCostPerCustomer
- 225 declared output unit
- expectedUsageCost
- 120 declared output unit
- reservedCapacityCost
- 180 declared output unit
- proposedMargin
- 0.1 declared output unit
- priceGap
- -71.428571 declared output unit
Engine result: 25
proposedMargin
proposedMargin = proposed contribution รท proposed price- Proposed monthly price
- 250 currency units/customer/month
- minimumMonthlyPrice
- 321.428571 declared output unit
- proposedContribution
- 25 declared output unit
- priceGap
- -71.428571 declared output unit
Engine result: 0.1
priceGap
priceGap = proposed price โ minimum monthly price- Monthly admin cost
- 10 currency units/customer/month
- Proposed monthly price
- 250 currency units/customer/month
- minimumMonthlyPrice
- 321.428571 declared output unit
- monthlyCostPerCustomer
- 225 declared output unit
- proposedContribution
- 25 declared output unit
- proposedMargin
- 0.1 declared output unit
Engine result: -71.428571
Example
The worked rows are rendered from the registered engine and visible default fixture.
- Monthly Cost Per Customer
- 225 currency units/month
- Expected Usage Cost
- 120 currency units/month
- Reserved Capacity Cost
- 180 currency units/month
- Unused Reserved Hours
- 1 hours/month
- Capacity Utilisation
- 66.7%
- Minimum Monthly Price
- 321.43 currency units/month
- Proposed Contribution
- 25 currency units/month
- Proposed Margin
- 10%
- Price Gap
- -71.43 currency units/month
The exact engine-derived outputs are shown in the labelled rows below.
Interpretation
The recurring support plan pricing 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.
- Expected support hours minimum
expectedSupportHours โฅ 0 hours/customer/monthโ A lower value is rejected before calculation.- Expected support hours maximum
expectedSupportHours โค 10,000,000 hours/customer/monthโ A higher value is rejected before calculation.- Reserved capacity hours minimum
reservedCapacityHours โฅ 0 hours/customer/monthโ A lower value is rejected before calculation.- Reserved capacity hours maximum
reservedCapacityHours โค 10,000,000 hours/customer/monthโ 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.- Platform cost per customer minimum
platformCostPerCustomer โฅ 0 currency units/customer/monthโ A lower value is rejected before calculation.- Platform cost per customer maximum
platformCostPerCustomer โค 10,000,000 currency units/customer/monthโ A higher value is rejected before calculation.- Monthly admin cost minimum
monthlyAdminCostPerCustomer โฅ 0 currency units/customer/monthโ A lower value is rejected before calculation.- Monthly admin cost maximum
monthlyAdminCostPerCustomer โค 10,000,000 currency units/customer/monthโ A higher value is rejected before calculation.- Service-level cost minimum
serviceLevelCostPerCustomer โฅ 0 currency units/customer/monthโ A lower value is rejected before calculation.- Service-level cost maximum
serviceLevelCostPerCustomer โค 10,000,000 currency units/customer/monthโ A higher value is rejected before calculation.- Target margin minimum
targetMargin โฅ 0 proportion of monthly plan price retained as contributionโ A lower value is rejected before calculation.- Target margin maximum
targetMargin โค 0.99 proportion of monthly plan price retained as contributionโ A higher value is rejected before calculation.- Proposed monthly price minimum
proposedMonthlyPrice โฅ 0 currency units/customer/monthโ A lower value is rejected before calculation.- Proposed monthly price maximum
proposedMonthlyPrice โค 10,000,000 currency units/customer/monthโ 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.
- How to Build a Retainer Price From Capacity
Define the reserved-capacity promise, delivery boundary and review triggers before calculating a retainer fee.
Read guide