lease-npv-calculator
v1.0.9
Published
HMRC-compliant Net Present Value (NPV) engine for UK property lease duty calculations (SDLT, LBTT, LTT).
Downloads
193
Maintainers
Readme
lease-npv-calculator
HMRC-compliant Net Present Value (NPV) engine for UK property lease duty calculations — SDLT (England), LBTT (Scotland), and LTT (Wales).
Installation
npm install lease-npv-calculatorUsage
Standard lease NPV
import { calculateLeaseNPV, HMRC_DISCOUNT_RATE } from 'lease-npv-calculator';
const result = calculateLeaseNPV({
annualRent: 50000,
rentYears: [20000, 30000, 40000, 50000, 50000], // years 1–5 (optional)
leaseStartDate: new Date('2024-01-01'),
leaseEndDate: new Date('2034-01-01'),
effectiveDate: new Date('2024-01-01'),
bands: [
{ min: 0, max: 150000, rate: 0 },
{ min: 150000, max: Infinity, rate: 1 },
],
proratePartialYear: true, // true for SDLT; false for LBTT/LTT
});
console.log(result.npv); // NPV in £
console.log(result.totalTax); // Tax due in £With overlap relief (lease renewal)
import { calculateLeaseNPVWithOverlapRelief } from 'lease-npv-calculator';
const result = calculateLeaseNPVWithOverlapRelief({
annualRent: 60000,
leaseStartDate: new Date('2024-06-01'),
leaseEndDate: new Date('2034-06-01'),
effectiveDate: new Date('2024-06-01'),
oldLeaseGrantDate: new Date('2014-06-01'),
oldLeaseTerm: 11,
oldLeaseRent: 50000,
bands: [
{ min: 0, max: 150000, rate: 0 },
{ min: 150000, max: Infinity, rate: 1 },
],
});
console.log(result.npv);
console.log(result.totalTax);
console.log(result.overlapRelief); // overlap relief metadataAPI
calculateLeaseNPV(input)
| Parameter | Type | Description |
|---|---|---|
| annualRent | number | Annual rent (£). Used for years 6+ and as fallback for years 1–5. |
| rentYears | number[] | Optional rents for years 1–5 (index 0 = year 1). |
| leaseStartDate | Date \| string | Lease commencement date. |
| leaseEndDate | Date \| string | Lease expiry date. |
| effectiveDate | Date \| string | Effective date of the transaction. |
| bands | NpvTaxBand[] | Graduated tax bands. |
| surchargeRate | number | Optional surcharge percentage (e.g. 2 for non-UK resident). |
| discountRate | number | Defaults to 0.035 (HMRC mandated 3.5%). |
| proratePartialYear | boolean | Prorate the final partial year. Default true. |
calculateLeaseNPVWithOverlapRelief(input)
Extends calculateLeaseNPV input with:
| Parameter | Type | Description |
|---|---|---|
| oldLeaseGrantDate | Date \| string | Grant date of the previous lease. |
| oldLeaseTerm | number | Term of the previous lease in years. |
| oldLeaseRent | number | Annual rent under the previous lease (£). |
Constants
import { HMRC_DISCOUNT_RATE } from 'lease-npv-calculator'; // 0.035License
MIT
