Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/2245.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Updated recent residential SDLT purchase schedules and applied the inclusive first-time-buyer price maximum, retaining annual sampling and contract-protection limitations.
5,452 changes: 191 additions & 5,261 deletions docs/book/programs/gov/hmrc/stamp-duty.ipynb

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,36 @@ description: Stamp Duty Land Tax progressive rates for residential property tran
brackets:
- rate:
2016-09-15: 0.03
2024-10-31: 0.05
threshold:
2016-09-15: 0
- rate:
2016-09-15: 0.05
2020-07-08: null
2021-03-31: 0.05
2022-09-23: null
2025-04-01: 0.07
threshold:
2016-09-15: 125_000
2020-07-08: null
2021-03-31: 125_000
2022-09-23: null
2025-04-01: 125_000
- rate:
2016-09-15: 0.08
2024-10-31: 0.10
threshold:
2016-09-15: 250_000
2020-07-08: 500_000
2021-03-31: 250_000
- rate:
2016-09-15: 0.13
2024-10-31: 0.15
threshold:
2016-09-15: 925_000
- rate:
2016-09-15: 0.15
2024-10-31: 0.17
threshold:
2016-09-15: 1_500_000
metadata:
Expand All @@ -35,3 +43,9 @@ metadata:
href: https://www.legislation.gov.uk/ukpga/2003/14/schedule/4ZA
- title: Stamp Duty Land Tax (Temporary Relief) Act 2020
href: https://www.legislation.gov.uk/ukpga/2020/15/section/1/enacted
- title: Stamp Duty Land Tax (Temporary Relief) Act 2023 s. 1(3)
href: https://www.legislation.gov.uk/ukpga/2023/2/section/1/enacted
- title: Finance Act 2025 s. 50
href: https://www.legislation.gov.uk/ukpga/2025/8/section/50/enacted
- title: Finance Act 2025 s. 51
href: https://www.legislation.gov.uk/ukpga/2025/8/section/51/enacted
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
description: Maximum value for a first-property purchase to receive the Stamp Duty relief for first-time buyers. Increasing this value will underestimate the number of claims for FTBR, as the model will not add new claims.
values:
2018-03-15: 500_000
2022-09-23: 625_000
2025-04-01: 500_000
metadata:
unit: currency-GBP
label: Stamp Duty first home value limit
reference:
- title: Finance Act 2003 schedule 6ZA(1)(3)
href: https://www.legislation.gov.uk/ukpga/2003/14/schedule/6ZA/2018-03-15
- title: Stamp Duty Land Tax (Temporary Relief) Act 2023 s. 1(5)
href: https://www.legislation.gov.uk/ukpga/2023/2/section/1/enacted
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ brackets:
2018-03-15: 0.05
threshold:
2018-03-15: 300000
2022-09-23: 425000
2025-04-01: 300000
description: Stamp Duty Land Tax progressive rates for residential property transfers.
metadata:
economy: false
Expand All @@ -16,4 +18,6 @@ metadata:
reference:
- href: https://www.legislation.gov.uk/ukpga/2003/14/schedule/6ZA/2018-03-15
title: Finance Act 2003 schedule 6ZA(4)
- href: https://www.legislation.gov.uk/ukpga/2023/2/section/1/enacted
title: Stamp Duty Land Tax (Temporary Relief) Act 2023 s. 1(5)
threshold_unit: currency-GBP
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,16 @@ brackets:
2015-02-12: 0.02
2020-07-08: null
2021-03-31: 0.02
2022-09-23: null
2025-04-01: 0.02
threshold:
2003-07-10: 60000
2005-04-07: 120000
2006-07-19: 125000
2020-07-08: null
2021-03-31: 125000
2022-09-23: null
2025-04-01: 125000
- rate:
2003-07-10: 0.03
2015-02-12: 0.05
Expand Down Expand Up @@ -50,4 +54,6 @@ metadata:
title: Finance Act 2003 s. 55
- href: https://www.legislation.gov.uk/ukpga/2020/15/section/1/enacted
title: Stamp Duty Land Tax (Temporary Relief) Act 2020
- href: https://www.legislation.gov.uk/ukpga/2023/2/section/1/enacted
title: Stamp Duty Land Tax (Temporary Relief) Act 2023 s. 1
threshold_unit: currency-GBP
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,13 @@
main_residential_property_purchased_is_first_home: true
output:
stamp_duty_land_tax: 7_250
- name: £500k first-time buyer (just over limit)
- name: £500,020 first-time buyer (over the £500k limit)
period: 2022
input:
main_residential_property_purchased: 500_000.01
main_residential_property_purchased: 500_020
main_residential_property_purchased_is_first_home: true
output:
stamp_duty_land_tax: 15_000
stamp_duty_land_tax: 15_001
- name: £500k non-first-time buyer
period: 2022
input:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
# Ordinary, unprotected purchases; annual parameters sample 30 April.
# Sources: SDLT (Temporary Relief) Act 2023 s1; Finance Act 2025 ss50-51;
# Finance Act 2003 s55 and Sch6ZA. No transaction-date or contract selector.
- name: Annual 2022 retains the pre-September standard schedule
period: 2022
absolute_error_margin: 0.01
input:
main_residential_property_purchased: 300000
output:
stamp_duty_land_tax: 5000

- name: Annual 2023 main-home purchase uses temporary standard bands
period: 2023
absolute_error_margin: 0.01
input:
main_residence_value: 300000
property_purchased: true
output:
stamp_duty_land_tax: 2500
main_residential_property_purchased: 300000

- name: Temporary first-time-buyer maximum is inclusive
period: 2024
absolute_error_margin: 0.01
input:
main_residential_property_purchased: 625000
main_residential_property_purchased_is_first_home: true
output:
stamp_duty_land_tax: 10000

- name: Restored first-time-buyer maximum is inclusive
period: 2025
absolute_error_margin: 0.01
input:
main_residential_property_purchased: 500000
main_residential_property_purchased_is_first_home: true
output:
stamp_duty_land_tax: 10000

- name: Annual 2025 additional purchase uses restored bands with five-point surcharge
period: 2025
absolute_error_margin: 0.01
input:
additional_residential_property_purchased: 400000
output:
stamp_duty_land_tax: 30000

- name: Annual 2024 still samples the three-point additional surcharge
period: 2024
absolute_error_margin: 0.01
input:
additional_residential_property_purchased: 400000
output:
stamp_duty_land_tax: 19500

- name: First-time purchase above temporary maximum loses all relief
period: 2024
absolute_error_margin: 0.01
input:
main_residential_property_purchased: 625020
main_residential_property_purchased_is_first_home: true
output:
stamp_duty_land_tax: 18751

- name: First-time purchase above restored maximum loses all relief
period: 2025
absolute_error_margin: 0.01
input:
main_residential_property_purchased: 500020
main_residential_property_purchased_is_first_home: true
output:
stamp_duty_land_tax: 15001

- name: Northern Ireland combines independent temporary main and additional purchases
period: 2024
absolute_error_margin: 0.01
input:
region: NORTHERN_IRELAND
main_residential_property_purchased: 925000
additional_residential_property_purchased: 400000
output:
stamp_duty_land_tax: 53250

- name: An additional purchase below forty thousand is outside the higher schedule
period: 2025
input:
additional_residential_property_purchased: 39999
output:
stamp_duty_land_tax: 0

- name: An additional purchase at forty thousand pays the full higher schedule
period: 2025
absolute_error_margin: 0.01
input:
additional_residential_property_purchased: 40000
output:
stamp_duty_land_tax: 2000

- name: Restored purchase schedules persist in later annual simulations
period: 2027
absolute_error_margin: 0.01
input:
main_residential_property_purchased: 300000
additional_residential_property_purchased: 400000
output:
stamp_duty_land_tax: 35000

- name: Property stocks without a purchase do not incur SDLT
period: 2025
input:
main_residence_value: 600000
property_purchased: false
other_residential_property_value: 400000
output:
stamp_duty_land_tax: 0

- name: Scottish purchases do not incur SDLT
period: 2025
input:
region: SCOTLAND
main_residential_property_purchased: 300000
additional_residential_property_purchased: 400000
output:
stamp_duty_land_tax: 0

- name: Welsh purchases do not incur SDLT
period: 2025
input:
region: WALES
main_residential_property_purchased: 300000
additional_residential_property_purchased: 400000
output:
stamp_duty_land_tax: 0

- name: Temporary first-time-buyer nil band includes its upper boundary
period: 2024
input:
main_residential_property_purchased: 425000
main_residential_property_purchased_is_first_home: true
output:
stamp_duty_land_tax: 0

- name: Restored first-time-buyer tax starts above three hundred thousand
period: 2025
absolute_error_margin: 0.01
input:
main_residential_property_purchased: 300020
main_residential_property_purchased_is_first_home: true
output:
stamp_duty_land_tax: 1
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ def test_main_residence_flag_never_creates_an_additional_purchase(households, ye
price = out["main_residential_property_purchased"]
first_home = np.array(
[h["main_residential_property_purchased_is_first_home"] for h in households]
) & (price < main.first.max)
) & (price <= main.first.max)
main_rates_tax = np.where(
first_home, main.first.rate.calc(price), main.subsequent.calc(price)
)
Expand Down
Loading
Loading