# info.summary
A deterministic, evidence-led rent-versus-buy calculation for England and Northern Ireland.

# info.description
Compares renting and buying with equal starting capital and an equal monthly housing-and-investment budget. Results are illustrative and not financial, mortgage, tax or investment advice. Hosted requests are processed on Vercel; the public browser calculator remains client-side.

# tags[].description
Stateless, read-only calculations using the same pure model as the public browser calculator.

# paths./api/v1/rent-vs-buy/calculate.post.description
Requires the seven essential inputs. Refinement inputs must either be supplied or explicitly allowed to use documented defaults. The endpoint is stateless, read-only and does not intentionally persist or log request bodies.

# paths./api/v1/rent-vs-buy/calculate.post.requestBody.content.application/json.examples.documentedDefaults.summary
Essential inputs with documented refinement defaults

# paths./api/v1/rent-vs-buy/calculate.post.responses.200.headers.Cache-Control.description
Hosted calculation responses are not stored in shared caches.

# paths./api/v1/rent-vs-buy/calculate.post.responses.413.description
Request body exceeds the documented limit.

# paths./api/v1/rent-vs-buy/calculate.post.responses.422.description
The JSON body does not satisfy the calculation contract.

# paths./api/v1/rent-vs-buy/calculate.post.responses.429.description
The Vercel edge rate limit was exceeded. Retry after the limit window resets.

# components.schemas.CalculationRequest.oneOf[].properties.jurisdiction.description
The only supported jurisdictions. Scotland and Wales use different transaction taxes and are not accepted.

# components.schemas.CalculationRequest.oneOf[].properties.projection.description
The projection detail to include in the response.

# components.schemas.CalculationRequest.oneOf[].properties.includeSensitivity.description
Whether to include the lower-property, base and higher-property sensitivity summaries.

# components.schemas.CalculationRequest.oneOf[].properties.defaultsPolicy.description
Allow omitted refinement inputs to use documented defaults. Essential inputs remain required.

# components.schemas.CalculationRequest.oneOf[].properties.inputs.properties.stayYears.description
Expected ownership or rental horizon in years.

# components.schemas.CalculationRequest.oneOf[].properties.inputs.properties.depositPercent.description
Buyer deposit as a percentage of the property price.

# components.schemas.CalculationRequest.oneOf[].properties.inputs.properties.mortgageRateAnnual.description
Annual repayment-mortgage interest rate as a percentage, not a decimal.

# components.schemas.CalculationRequest.oneOf[].properties.inputs.properties.propertyGrowthAnnual.description
Nominal annual property growth as a percentage, not a decimal.

# components.schemas.CalculationRequest.oneOf[].properties.inputs.properties.rentGrowthAnnual.description
Nominal annual rent growth as a percentage, not a decimal.

# components.schemas.CalculationRequest.oneOf[].properties.inputs.properties.investmentReturnAnnual.description
Nominal annual return on invested cash as a percentage, not a decimal.

# components.schemas.CalculationRequest.oneOf[].properties.inputs.properties.stampDutyMode.description
Residential SDLT treatment. Use none only when the caller has established that no SDLT should be modelled.

# components.schemas.CalculationRequest.oneOf[].properties.inputs.properties.buyingCostsPercent.description
Additional buyer-side costs as a percentage of the property price.

# components.schemas.CalculationRequest.oneOf[].properties.inputs.properties.sellingCostsPercent.description
Selling costs as a percentage of the future property value.

# components.schemas.CalculationRequest.oneOf[].properties.inputs.properties.maintenanceAnnualPercent.description
Annual maintenance as a percentage of the current property value.

# components.schemas.CalculationRequest.oneOf[].properties.inputs.properties.renterDepositMonths.description
Refundable renter deposit expressed as months of initial rent.

# components.schemas.CalculationRequest.oneOf[].properties.inputs.properties.renterOtherMonthlyCosts.description
Other unrecoverable monthly renter costs in GBP.

# components.schemas.CalculationRequest.oneOf[].properties.inputs.properties.renterUpfrontCosts.description
One-off unrecoverable renter costs in GBP.

# components.schemas.CalculationRequest.oneOf[].properties.inputs.description
The seven essential inputs. Omitted refinement inputs use documented defaults and are disclosed in assumptionsUsed.

# components.schemas.CalculationRequest.oneOf[].properties.jurisdiction.description
The only supported jurisdictions. Scotland and Wales use different transaction taxes and are not accepted.

# components.schemas.CalculationRequest.oneOf[].properties.projection.description
The projection detail to include in the response.

# components.schemas.CalculationRequest.oneOf[].properties.includeSensitivity.description
Whether to include the lower-property, base and higher-property sensitivity summaries.

# components.schemas.CalculationRequest.oneOf[].properties.defaultsPolicy.description
Reject the request unless every calculator input is supplied.

# components.schemas.CalculationRequest.oneOf[].properties.inputs.properties.stayYears.description
Expected ownership or rental horizon in years.

# components.schemas.CalculationRequest.oneOf[].properties.inputs.properties.depositPercent.description
Buyer deposit as a percentage of the property price.

# components.schemas.CalculationRequest.oneOf[].properties.inputs.properties.mortgageRateAnnual.description
Annual repayment-mortgage interest rate as a percentage, not a decimal.

# components.schemas.CalculationRequest.oneOf[].properties.inputs.properties.propertyGrowthAnnual.description
Nominal annual property growth as a percentage, not a decimal.

# components.schemas.CalculationRequest.oneOf[].properties.inputs.properties.rentGrowthAnnual.description
Nominal annual rent growth as a percentage, not a decimal.

# components.schemas.CalculationRequest.oneOf[].properties.inputs.properties.investmentReturnAnnual.description
Nominal annual return on invested cash as a percentage, not a decimal.

# components.schemas.CalculationRequest.oneOf[].properties.inputs.properties.stampDutyMode.description
Residential SDLT treatment. Use none only when the caller has established that no SDLT should be modelled.

# components.schemas.CalculationRequest.oneOf[].properties.inputs.properties.buyingCostsPercent.description
Additional buyer-side costs as a percentage of the property price.

# components.schemas.CalculationRequest.oneOf[].properties.inputs.properties.sellingCostsPercent.description
Selling costs as a percentage of the future property value.

# components.schemas.CalculationRequest.oneOf[].properties.inputs.properties.maintenanceAnnualPercent.description
Annual maintenance as a percentage of the current property value.

# components.schemas.CalculationRequest.oneOf[].properties.inputs.properties.renterDepositMonths.description
Refundable renter deposit expressed as months of initial rent.

# components.schemas.CalculationRequest.oneOf[].properties.inputs.properties.renterOtherMonthlyCosts.description
Other unrecoverable monthly renter costs in GBP.

# components.schemas.CalculationRequest.oneOf[].properties.inputs.properties.renterUpfrontCosts.description
One-off unrecoverable renter costs in GBP.

# components.schemas.CalculationRequest.oneOf[].properties.inputs.description
The complete set of effective calculator inputs.

# components.schemas.CalculationRequest.description
A strict request for one illustrative rent-versus-buy calculation.

# components.schemas.CalculationResponse.properties.effectiveInputs.properties.stayYears.description
Expected ownership or rental horizon in years.

# components.schemas.CalculationResponse.properties.effectiveInputs.properties.depositPercent.description
Buyer deposit as a percentage of the property price.

# components.schemas.CalculationResponse.properties.effectiveInputs.properties.mortgageRateAnnual.description
Annual repayment-mortgage interest rate as a percentage, not a decimal.

# components.schemas.CalculationResponse.properties.effectiveInputs.properties.propertyGrowthAnnual.description
Nominal annual property growth as a percentage, not a decimal.

# components.schemas.CalculationResponse.properties.effectiveInputs.properties.rentGrowthAnnual.description
Nominal annual rent growth as a percentage, not a decimal.

# components.schemas.CalculationResponse.properties.effectiveInputs.properties.investmentReturnAnnual.description
Nominal annual return on invested cash as a percentage, not a decimal.

# components.schemas.CalculationResponse.properties.effectiveInputs.properties.stampDutyMode.description
Residential SDLT treatment. Use none only when the caller has established that no SDLT should be modelled.

# components.schemas.CalculationResponse.properties.effectiveInputs.properties.buyingCostsPercent.description
Additional buyer-side costs as a percentage of the property price.

# components.schemas.CalculationResponse.properties.effectiveInputs.properties.sellingCostsPercent.description
Selling costs as a percentage of the future property value.

# components.schemas.CalculationResponse.properties.effectiveInputs.properties.maintenanceAnnualPercent.description
Annual maintenance as a percentage of the current property value.

# components.schemas.CalculationResponse.properties.effectiveInputs.properties.renterDepositMonths.description
Refundable renter deposit expressed as months of initial rent.

# components.schemas.CalculationResponse.properties.effectiveInputs.properties.renterOtherMonthlyCosts.description
Other unrecoverable monthly renter costs in GBP.

# components.schemas.CalculationResponse.properties.effectiveInputs.properties.renterUpfrontCosts.description
One-off unrecoverable renter costs in GBP.

# components.schemas.CalculationResponse.properties.effectiveInputs.description
The complete set of effective calculator inputs.

# components.schemas.CalculationResponse.properties.assumptionsUsed.items.properties.value.anyOf[].description
Residential SDLT treatment. Use none only when the caller has established that no SDLT should be modelled.

# components.schemas.CalculationResponse.properties.summary.properties.buyingNetWealthGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.summary.properties.rentingNetWealthGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.summary.properties.buyingMinusRentingGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.upfront.properties.equalStartingCapitalGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.upfront.properties.buyerDepositGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.upfront.properties.stampDutyGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.upfront.properties.buyingCostsGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.upfront.properties.buyerTotalGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.upfront.properties.renterDepositGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.upfront.properties.renterUpfrontCostsGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.upfront.properties.renterTotalGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.upfront.properties.buyerInitialInvestmentGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.upfront.properties.renterInitialInvestmentGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.firstMonth.properties.commonBudgetGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.firstMonth.properties.buyingHousingCostGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.firstMonth.properties.rentingHousingCostGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.firstMonth.properties.buyerInvestmentContributionGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.firstMonth.properties.renterInvestmentContributionGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.endState.properties.propertyValueGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.endState.properties.mortgageBalanceGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.endState.properties.buyerEquityBeforeSellingGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.endState.properties.buyerInvestmentGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.endState.properties.renterInvestmentGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.endState.properties.renterDepositGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.unrecoverableCosts.properties.buying.properties.stampDutyGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.unrecoverableCosts.properties.buying.properties.buyingCostsGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.unrecoverableCosts.properties.buying.properties.sellingCostsGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.unrecoverableCosts.properties.buying.properties.mortgageInterestGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.unrecoverableCosts.properties.buying.properties.maintenanceGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.unrecoverableCosts.properties.buying.properties.homeInsuranceGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.unrecoverableCosts.properties.buying.properties.serviceChargeGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.unrecoverableCosts.properties.buying.properties.groundRentGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.unrecoverableCosts.properties.buying.properties.totalGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.unrecoverableCosts.properties.renting.properties.rentGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.unrecoverableCosts.properties.renting.properties.insuranceGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.unrecoverableCosts.properties.renting.properties.otherMonthlyCostsGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.unrecoverableCosts.properties.renting.properties.upfrontCostsGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.unrecoverableCosts.properties.renting.properties.totalGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.projection.properties.points.items.properties.propertyValueGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.projection.properties.points.items.properties.mortgageBalanceGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.projection.properties.points.items.properties.buyerEquityGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.projection.properties.points.items.properties.buyerInvestmentGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.projection.properties.points.items.properties.renterInvestmentGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.projection.properties.points.items.properties.renterDepositGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.projection.properties.points.items.properties.buyerNetWealthGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.projection.properties.points.items.properties.renterNetWealthGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.projection.properties.points.items.properties.buyingMinusRentingGbp.description
Buyer net wealth minus renter net wealth. Positive values favour buying under the selected assumptions.

# components.schemas.CalculationResponse.properties.sensitivity.items.properties.buyingNetWealthGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.sensitivity.items.properties.rentingNetWealthGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.properties.sensitivity.items.properties.buyingMinusRentingGbp.description
Nominal GBP amount rounded to two decimal places for transport.

# components.schemas.CalculationResponse.description
A versioned, deterministic and explicitly illustrative rent-versus-buy result.

# externalDocs.description
Rent or Buy UK agent and developer guide