Skip to content

Model landlords' finance-cost tax reduction and stop the property allowance stacking on expenses - #2172

Merged
vahid-ahmadi merged 4 commits into
mainfrom
property-finance-costs-2170
Oct 7, 2026
Merged

vahid-ahmadi merged 4 commits into
mainfrom
property-finance-costs-2170

Conversation

@juaristi22

@juaristi22 juaristi22 commented Oct 6, 2026 •

Copy link
Copy Markdown
Collaborator

Fixes #2170. Fixes #1900.

What was wrong

property_income is profit after allowable expenses and before residential finance costs: the SPI's INCPROP, which both datasets use. Two rules that follow from that were missing.

  • The property allowance stacked on expenses (Property allowance is deducted on top of expenses already netted from property income #1900). property_allowance_deduction returned min(property_income, £1,000). The allowance replaces expenses rather than adding to them (ITTOIA 2005 s. 783BH(3): "No relevant expenses are brought into account"), and it is measured against gross receipts. This is the property twin of the trading allowance bug fixed in Stop stacking the trading allowance on expenses already netted from profit #1881. The parameter also started in 2005-06, but the allowance has effect from 2017-18 (F(No.2)A 2017 Sch. 3 para. 13).
  • No finance-cost reduction. Since 2020-21 no costs of dwelling-related loans are deductible (s. 272A(4)). Instead the landlord gets a Step 6 tax reduction (ss. 274A-274AA), with a carry-forward. The only hook was the bare input other_tax_credits, which the enhanced FRS leaves at zero.

The law

All read from the revised text on legislation.gov.uk on 6 October 2026.

  • Restriction. s. 272A disallows 25%, 50% and 75% of the costs in 2017-18, 2018-19 and 2019-20, and all of them from 2020-21. Costs are interest, returns economically equivalent to interest, and incidental costs of obtaining the finance (s. 272B(5)).
  • Amount relieved. The lowest of the relievable amount, the adjusted profits and adjusted total income (s. 274AA(2)-(3)). The relievable amount is this year's disallowed costs plus any brought-forward amount (s. 274A(3)). Adjusted total income is net income less savings and dividend income, less the allowances deducted at Step 3 of ITA 2007 s. 23, which are the personal and blind person's allowances (s. 274AA(6)).
  • Carry-forward. The relievable amount less the amount relieved becomes next year's brought-forward amount (s. 274AA(4)).
  • Rate. The amount relieved times "BR ... the basic rate" until 2026-27. From 2027-28, "PBR is the property basic rate of income tax for the year" (s. 274AA(5) as amended by Finance Act 2026 s. 6(8), Sch. 1 para. 40). ITA 2007 s. 6D defines one property basic rate, and the Act gives no Scottish or Welsh variant.
  • Step 6. s. 274A is a Step 6 reduction (ITA 2007 s. 26(1)(a)). It is deducted only so far as Step 5 tax remains after earlier reductions (s. 29(2)-(3)). The High Income Child Benefit Charge and the annual allowance charge are Step 7 additions (s. 30), so they are never reduced.
  • Property allowance.
    • £1,000 (s. 783BD).
    • Full relief: receipts within the allowance are not brought into account, nor their expenses (ss. 783BE-783BF), unless the person elects out (s. 783BJ).
    • Partial relief, on election (s. 783BK): receipts less £1,000, with no expenses (s. 783BH), and never a loss (s. 783BI(4)).
    • None of it if the s. 274A reduction is applied (s. 783BL). GOV.UK puts it as "You cannot use the property allowance if you ... claim the tax reducer for finance costs".
    • Rent-a-room receipts are not relievable receipts (s. 783BB(2)).
  • Tax credits. SI 2002/2006 reg. 11(2A) disregards s. 272A, so tax credits deduct finance costs from property income.

What this PR does

New inputs (Person, year, all optional with default 0):

  • property_rental_income: gross receipts of the property businesses, excluding rent-a-room receipts. Zero, or less than property_income, means unknown, as with self_employment_gross_receipts (Stop stacking the trading allowance on expenses already netted from profit #1881). It is uprated with property_income (per-capita GDP), so uprated receipts never fall below uprated profit.
  • property_finance_costs: the year's costs of dwelling-related loans. Uprated by OBR mortgage interest.
  • property_finance_costs_brought_forward: the s. 274AA(4) amount. Uprated with the costs.

All three are in uprating_indices.yaml as well as the class attribute. property_income keeps its meaning and is relabelled "property income", with documentation saying what it is.

New and rewritten formulas:

  • property_allowable_expenses: receipts less profit, where receipts are known.
  • deductible_property_finance_costs: (1 − disallowed share) × costs. This is nil from 2020-21.
  • property_receipts_within_allowance: receipts at most £1,000, or without receipts property_income at most £1,000. property_income is before finance costs, so receipts are never below it.
  • property_allowance_deduction_if_used: Stop stacking the trading allowance on expenses already netted from profit #1881's formula. With receipts known it is max(0, min(profit, £1,000 − expenses)). Without them, full relief applies only where profit is at most £1,000, and there is no stacking above it.
  • uses_property_allowance: the choice between the two routes (next section).
  • property_allowance_deduction: the deduction if the allowance is used, otherwise nil.
  • taxable_property_income: profit less any deductible finance costs and the allowance deduction, floored at nil.
  • property_finance_costs_relievable, property_finance_costs_relieved (the s. 274AA amount, nil on the allowance route; adjusted total income takes off the Step 2 reliefs in the model, gifts of shares to charity and other deductions, and the personal and blind person's allowances, but not Gift Aid, covenanted payments or pension relief), property_finance_cost_relief (the rate times the amount relieved, limited to the Step 5 tax left after the person's other Step 6 reductions) and property_finance_costs_carried_forward.
  • property_income_after_finance_costs: property income less finance costs, floored at nil for a profit. It replaces property_income in the means tests that count it: tax credits, Housing Benefit, Income Support, Pension Credit and council tax reduction.

Parameters:

  • New gov.hmrc.income_tax.reliefs.property_finance_costs.disallowed_share: 0, then 25%, 50%, 75% and 100% from 2017-18. The formulas use it, so setting it to 0 is the "restore mortgage interest relief" reform; a YAML case pins this.
  • The property allowance is nil before 2017-04-06.
  • property_finance_cost_relief is appended to income_tax_subtractions. The relief rate reads rates.property.basic, which is 20% (the basic rate) until 2026-27 and 22% from 2027-28.

How the route is chosen

  • No choice to weigh. With no finance costs to relieve, or no profit, the allowance is used whenever it lowers taxable property income (Stop stacking the trading allowance on expenses already netted from profit #1881's rule).
  • A real choice. Otherwise the person compares their own income tax on the two routes, in two branches, the pattern Model Marriage Allowance as the statutory s.55B transfer and Step 6 reduction #1963 uses for the Marriage Allowance election.
    • Everyone else's route is held fixed. A partner's route can move this person's tax, through the Marriage Allowance for example, so one person per benefit unit decides at a time.
    • In a benefit unit with two such landlords, the second decides after the first, and the rounds repeat (at most 3) until nobody changes.
  • Defaults and elections. Full relief is automatic for receipts within the allowance (s. 783BE), so the person elects out only if that lowers income tax. Partial relief needs an election (s. 783BK), made only if it lowers income tax. Ties keep the default.
  • Cost. The branches run only when someone in the simulation has a choice. No published dataset carries finance costs yet, so today they never run.

Universal Credit and the means tests

  • UC. uc_income_tax_on_earnings takes every Step 6 reduction off the tax on earnings first. The finance-cost reduction is given on, and limited by, property profits, so it now comes off the tax on property first. A landlord's finance costs no longer cut the UC deduction for tax on their earnings. A YAML case checks this.
    • Only a part larger than the tax on the property comes off the tax on earnings, as it does in income tax. That can happen where Scottish rates on property income are below the reduction's rate. So the deduction never exceeds the income tax paid.
  • Means tests. They count property_income_after_finance_costs.
    • Tax credits do so by statute (reg. 11(2A)). A profit cannot go below nil (reg. 11(1) counts "annual taxable profits"), and an existing loss passes through unchanged.
    • Housing Benefit, Income Support, Pension Credit and council tax reduction deduct the person's income tax, which the reduction now lowers. Counting the profit before the costs would have made finance costs raise the income they count. A YAML case checks this for Housing Benefit.

Where this departs from the issue

  • Scottish rate from 2027-28. The issue proposed the UK basic rate for Scottish taxpayers and asked for the Finance Act text to be checked. The Act gives the property basic rate (22%) to every individual. The ATT's Finance Bill briefing flagged the same mismatch with devolved rates. One consequence is pinned in a YAML case: a Scottish starter-rate landlord whose receipts are within the allowance pays less tax by electing out of full relief. The 20% reduction (22% from 2027-28) is larger than the 19% tax on the profit, and the excess comes off tax on other income.
  • The fallback. The issue's test list says "today's result for profits above £1,000". Its design section, and Stop stacking the trading allowance on expenses already netted from profit #1881, say no stacking. This PR follows the design: without receipts, a profit above £1,000 is taxed in full.
  • The phase-in is live. The disallowed share is used, not just documented, so 2017-18 to 2019-20 deduct the allowed part of the costs.
  • Means tests count property income after finance costs: tax credits by statute (reg. 11(2A)), the legacy tests for consistency with the tax they deduct.
  • Ties keep the default. A landlord whose receipts are within the allowance keeps full relief when electing out would save no tax this year, even though it would carry finance costs forward.
  • Carry-forward on the allowance route. Under full or partial relief the year's costs are expenses not brought into account (ss. 783BF(2)(b), 783BH(3)). So they are not a current-year amount, which needs an amount that "would be deductible ... but for section 272A" (s. 274A(4)(a)). Only the brought-forward amount carries on.

Revenue effect

Real Microsimulation runs on 6 October 2026, main 4ec7ef1 (2.122.2) against this branch, years 2025-26 to 2030-31. Two published datasets were used: the Enhanced FRS 2024-25 (policyengine-uk-data 1.57.3, sha256 ef34c1ae…) and Microcosm UK (microcosm_uk_2024_25.h5, sha256 aa31bdf6…). Neither carries receipts, finance costs or other_tax_credits. So on today's data the change is the allowance fix alone.

The figures below are upper bounds.

  • Why. Without receipts, a profit above £1,000 gets no allowance. That is right for SPI-imputed profits: INCPROP is the profit as returned, so a landlord who elected the allowance already shows receipts less £1,000. Survey-reported (FRS) profits are rent after actual costs, though. A landlord whose costs are under £1,000 would elect partial relief and pay less, so for them the fallback can only overstate tax.
  • The lower bound. Both datasets flag SPI-imputed households (household_is_spi_synthetic). In this run every survey-reported landlord gets receipts equal to profit, i.e. no expenses, so the allowance gives them its full partial relief. That is the most it could be worth to them, and for them it reproduces main.
    • Enhanced FRS: income tax +£0.18bn (2025) to +£0.21bn (2030). Survey-reported landlords hold £41.5bn of its £54.3bn of property income.
    • Microcosm UK: +£0.33bn to +£0.40bn. FRS records hold £12.8bn of £30.7bn.
  • Where the truth lies. HMRC's Property Rental Income Statistics 2026 report £34.75bn of expenses across 2.88m landlords, £12.82bn of it residential finance costs. That is about £7,600 a landlord of other expenses on average, so most landlords' actual expenses exceed £1,000. But the data cannot say how many survey-reported landlords fall below it.

Enhanced FRS

  • Income tax rises £0.59bn in 2025, £0.65bn in 2026, £0.71bn in 2027, £0.73bn in 2028, £0.73bn in 2029 and £0.74bn in 2030.
  • In 2025 the allowance deduction falls from £2.50bn to £0.03bn. Of the 2.53m landlords, 0.06m have a profit within the allowance and keep full relief.
  • 2.36m people pay more (2025). Household net income falls £0.62bn, Universal Credit is unchanged, and Pension Credit rises £0.02m.
  • Two records (0.008m weighted) pay less income tax. Their adjusted net income crosses £80,000, where the model has the family opt out of Child Benefit. The High Income Child Benefit Charge goes, but so does the Child Benefit, and household net income falls.

Microcosm UK

  • Income tax rises £0.68bn in 2025, £0.71bn in 2026, £0.77bn in 2027, £0.78bn in 2028, £0.80bn in 2029 and £0.82bn in 2030.
  • In 2025 the allowance deduction falls from £2.79bn to £0.14bn, across 2.89m landlords, of whom 0.24m are within the allowance. This is the issue's £2.76bn.
  • 2.44m people pay more, and household net income falls £0.68bn.
  • Benefits move slightly: Housing Benefit +£0.25m, Pension Credit +£0.24m, council tax reduction +£0.03m. Those means tests deduct income tax.
  • Universal Credit changes for 3 to 5 benefit units a year, by at most +£1.0m (2026). This runs through main's Marriage Allowance rule: a landlord with more taxable profit has less unused allowance to transfer, and UC deducts the earner's extra tax.

The finance-cost reduction, illustrated (not an estimate)

  • Set-up. Every landlord with a positive profit gets property_finance_costs = k × profit. k is set so that the 2024-25 total is either £12.82bn (residential finance costs declared, HMRC Property Rental Income Statistics 2026, all entities) or £5.77bn (costs that got relief, SPI 2022-23). The same k applies in later years.
  • Microcosm UK. The reduction is £2.52bn (high) or £1.14bn (low) in 2025, rising to £3.33bn or £1.51bn in 2030 (22% from 2027-28). Income tax falls by the same amounts.
  • Benefits. Universal Credit is unchanged in every year, because the reduction stays off the tax on earnings. The means tests count property income after the costs. So in 2025 on Microcosm, from low to high, Pension Credit rises £5.9m-£15.0m, Housing Benefit £1.5m-£3.3m and council tax reduction £0.2m-£0.7m.
  • Enhanced FRS. £2.60bn or £1.18bn in 2025, and £3.47bn or £1.58bn in 2030.
  • Carry-forward. £0.82bn or £0.32bn is carried forward (Microcosm, 2025), where profit or adjusted total income binds.
  • Caveat. The illustration gives costs to 2.4m landlords, but only about 1.15m have them. So the split across landlords means nothing; the totals bracket the issue's £1.2bn-£2.6bn.
  • Runtime. The choice's branches run for landlords whose profit is within the allowance and who have costs (527 Microcosm records, 439 Enhanced FRS records). Each year still takes 1.2-1.9 s on both trees.

Scripts, logs and per-person arrays are kept locally.

Tests

  • YAML. policyengine-core test policyengine_uk/tests/policy -c policyengine_uk: 2,598 passed.

    • New cases (40), all hand-computed from the law: reliefs/property_finance_cost_relief.yaml (21, including Gift Aid not reducing adjusted total income), allowances/property_allowance_deduction.yaml (11), household/income/property_income_after_finance_costs.yaml (6, including two Housing Benefit cases), one UC case in uc_earnings_deductions.yaml, and one in allowances.yaml.
    • They cover the issue's list, plus: the Step 5 limit, the brought-forward amount staying put on the allowance route, the Scottish starter-rate election out of full relief (with the UC deduction), receipts of exactly £1,000 on a tie, 2018-19 (half deductible, with and without full relief), 2016-17 (all deductible), the disallowed share set to nil, and a married couple who each choose with the other's route held fixed.
  • Updated expectations. 15 existing cases encoded the stacking.

    • 13 of them tested something else: the property rates (7), the UC deduction (2), the allowance parameter (1) and the allowance arithmetic in taxable_property_income.yaml (3). They now supply receipts with no expenses, so the allowance applies under the law and the arithmetic is unchanged.
    • The other 2 now assert no stacking: the partial-deduction case in allowances.yaml (a receipts version is added beside it) and the £50,000 case in taxable_property_income.yaml.
  • Properties. pytest policyengine_uk/tests/test_property_income_properties.py: 6 Hypothesis properties, 30 examples each, in 2027-28. Five use 42 single people per example, a third of them Scottish; the sixth uses 12 married couples.

    1. The deduction is bounded and never stacks: receipts − taxable profit ≤ max(expenses, £1,000).
    2. Taxable profit matches an independent statutory reference on the route the model chose.
    3. The reduction's accounting holds: relievable amount, amount relieved, relief ≤ 22% × relievable and ≤ Step 5 tax, and the carry-forward on each route.
    4. Income tax is never above income tax with either route forced.
    5. Income tax is non-increasing in finance costs.
    6. No one in a couple can lower their own income tax by switching route alone. Draws include close calls, where the allowance's value is within £150 of the finance costs and the partner's unused allowance moves with their route. This test fails on the first version of the choice, which switched both partners at once.

    Across the 30 examples, 265 person-cases faced a real choice: 163 took the allowance, 102 kept expenses, and 35 elected out of full relief.

  • Mutation checks. Each mutant is applied to the branch and run against the new YAML files and the property tests.

    • On the first version, all 9 mutants were caught. They were: the stacking (main's formula), always taking the allowance, never taking it when a reduction is at stake, no Step 5 limit, carrying this year's costs forward on the allowance route, no adjusted total income limit, UC deducting the reduction from tax on earnings, Scottish relief at 20% from 2027-28, and the tie-break.
    • On the final code, all 13 mutants are caught:
      • the stacking: 11 YAML cases fail, plus 2 properties;
      • always taking the allowance: 4, plus 2 properties;
      • never taking it when a reduction is at stake: 5, plus 3 properties;
      • no Step 5 limit: 1;
      • carrying this year's costs forward: 3, plus 1 property;
      • no adjusted total income limit: 2, plus 1 property;
      • UC taking the whole reduction off the tax on earnings: 2;
      • Scottish relief at 20% from 2027-28: 1;
      • the tie-break: 3;
      • the pre-2020 fallback testing profit after the deductible costs: 1;
      • UC ignoring the reduction's excess over the tax on the property: 1;
      • the means tests counting property income before finance costs: 3;
      • switching both partners at once, as the first version did: the couples YAML case and property 6.
  • Python tests on the touched surface. 2,026 passed and 2 xfailed (both pre-existing). Files: the property, UC (claimant income, earnings deductions, income from capital, State Pension), means-test income, CTR Pension Credit, Housing Benefit (earnings disregard, pension age), trading allowance and Pension Credit reported capital property tests, plus code_health/ and the parameter description, metadata and fiscal-year tests. The rest of the pytest suite is left to CI.

  • Lint. ruff format --check . and ruff check . are clean.

  • Docs. The property allowance row in income-tax.ipynb was edited by hand, as Stop stacking the trading allowance on expenses already netted from profit #1881 did for the trading allowance, and growthfactors.md lists the new inputs. make documentation was not run.

Review round 1 (Vahid, at 9112334): addressed in 747a4a3

  • Adjusted total income took the model's whole allowances off, including Gift Aid and pension relief. It now takes off the Step 2 reliefs and the personal and blind person's allowances only, and a Gift Aid YAML case pins this. One caveat: pension_contributions_relief does not separate net pay arrangements from relief at source, and it is treated as relief at source.
  • The no-receipts fallback. The revenue section now gives its direction and a lower bound for survey-reported records.
  • The legacy means tests should mostly treat rent as capital. Treat income derived from capital as capital in the legacy means tests #1995 does that, and the known limits say so.
  • The 22% rate. Checked against the enacted Finance Act 2026, s. 6(8) and Sch. 1 para. 40. property_finance_cost_relief cites both.

Independent review

A separate, read-only Claude session reviewed the branch against the statute, reproducing each finding with a script. It found four should-fix issues and three nits, and all are fixed here.

  • Couples. Partners' route choices were compared together, so one partner's switch could flip the other's choice through the Marriage Allowance. Now one person per benefit unit decides at a time, and property 6 above fails on the old code.
  • Legacy means tests. They counted property income before finance costs while deducting income tax net of the reduction. So finance costs lowered Housing Benefit, council tax reduction, Pension Credit and Income Support. They now count property income after finance costs.
  • UC. For Scottish taxpayers the reduction can exceed the tax on the property. That excess now comes off the UC deduction for tax on earnings, so the deduction never exceeds the income tax paid.
  • Before 2020-21. Without receipts, full relief tested the profit after the deductible finance costs. It now tests property_income, which receipts are never below.
  • Nits. The new UC case had been spliced into an existing case, and is now separate. The tie rule under full relief is documented. The full-relief test no longer compares floats, which disagreed at receipts of exactly £1,000.

It confirmed the readings of ss. 272A, 274A-274AA and 783BE-783BL, 22% for Scottish taxpayers from 2027-28, the parameter dates and the s. 29 limit.

Known limits (not changed here)

axiom: needed

🤖 Generated with Claude Code

juaristi22 and others added 3 commits October 6, 2026 14:33
…stacking on expenses

Adds three optional landlord inputs (property_rental_income,
property_finance_costs, property_finance_costs_brought_forward) and models:

- the property allowance as ITTOIA 2005 Part 6A Chapter 2 gives it: full
  relief for receipts within the allowance, partial relief replacing
  expenses, never on top of expenses already netted out of property_income
  (#1900), from 2017-18;
- the s. 274A/274AA tax reduction for residential finance costs: the
  property basic rate (basic rate before 2027-28, FA 2026 Sch 1 para 40,
  Scottish taxpayers included) on the lowest of the relievable costs, the
  property profits and adjusted total income, limited to the Step 5 tax
  left, with the carry-forward;
- the s. 783BL choice between the two, made by comparing income tax in two
  branches only for people with a real choice;
- the s. 272A phase-in as a parameter (zero restores full deductibility);
- UC no longer sets the reduction against the tax on earnings; tax credits
  deduct finance costs from property income (SI 2002/2006 reg 11(2A)).

Fixes #2170.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… pre-2020 fallback

- Choose routes one person per benefit unit at a time, with everyone
  else's route held fixed, repeating until nobody changes, so a partner's
  switch (through the Marriage Allowance) cannot flip a person's choice.
- Means tests that count property income (tax credits, Housing Benefit,
  Income Support, Pension Credit, council tax reduction) count it after
  finance costs, through property_income_after_finance_costs, which
  replaces tax_credits_property_income. They deduct income tax net of the
  reduction, so counting the profit before the costs made finance costs
  raise their income.
- The part of the reduction above the tax on property income comes off
  the UC deduction for tax on earnings, so that deduction never exceeds
  the income tax paid.
- property_receipts_within_allowance decides full relief exactly, testing
  property_income (not the profit after deductible costs) when receipts
  are unknown, which fixes 2017-18 to 2019-20 and float ties at £1,000.
- Separate the new UC case from the one it had been spliced into; add
  YAML cases for each finding and a couples property test.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@vahid-ahmadi

Copy link
Copy Markdown
Collaborator

Automated review pass (Claude Code, high effort) — round 1 at 91123349

Verdict: nothing blocking. The allowance fix (#1900) and the finance-cost reduction (#2170) follow the statute, and every household probe below matches a hand calculation. Two should-fixes: adjusted total income deducts more than the law allows, and the "no receipts" fallback for the allowance needs its direction stated. There is also one question about the means tests, which predates this PR.

Locally on a fresh environment at this head:

  • the new and edited YAML files pass (62 cases: finance-cost relief, property allowance deduction, property income after finance costs, UC earnings deductions, taxable property income);
  • test_property_income_properties.py passes (6 properties).

I didn't run the full 2,597-case suite.

1. Should-fix: adjusted total income subtracts Gift Aid and pension relief, which the law doesn't

property_finance_costs_relieved.py computes adjusted total income as adjusted_net_income − taxable_savings_interest_income − taxable_dividend_income − allowances. The model's allowances adds personal_allowance, blind_persons_allowance, gift_aid, covenanted_payments, charitable_investment_gifts, other_deductions and pension_contributions_relief.

ITTOIA 2005 s. 274AA(6) defines adjusted total income as net income, so far as it isn't savings or dividend income, less the allowances deducted at Step 3 of ITA 2007 s. 23. Those are the personal allowance and the blind person's allowance.

  • Gift Aid isn't deducted at any step; it extends the basic-rate band.
  • Relief-at-source pension contributions work the same way.
  • Gifts of shares to charity (ITA 2007 s. 431) are a Step 2 relief, so they come out of net income legitimately.

Probe (2026-27): a landlord with £18,000 of profit, £8,000 of finance costs and no other income.

  • Without Gift Aid: £5,430 relieved, relief £1,086, £2,570 carried forward.
  • With £3,000 of Gift Aid: £2,430 relieved, relief £486, £5,570 carried forward.

Income tax is £0 either way. But the law gives the same £5,430 relieved, so the carry-forward is overstated by £3,000. Where Step 5 tax is above the relief, the relief itself would be understated.

Fix: subtract personal_allowance + blind_persons_allowance (the Step 3 allowances). Subtract only genuine Step 2 reliefs from net income. Add a YAML case with Gift Aid.

The model's general treatment of Gift Aid as an allowance predates this PR and is outside its scope. The point here is only what s. 274AA(6) takes off.

2. Should-fix (state the direction): without receipts, profits above £1,000 lose the allowance

property_receipts_within_allowance and property_allowance_deduction_if_used give no allowance to a profit above £1,000 when receipts are unknown. That's every record on both published datasets, so most of the £0.59–0.82bn a year income tax rise in the description comes from this fallback.

  • For SPI-sourced profits this is right. INCPROP is the profit as returned, so where a landlord elected the allowance it is already receipts less £1,000.
  • For FRS-sourced profits it overstates tax. These come from ROYYR1: rent after the items on show card K6, i.e. actual costs. A landlord whose costs are under £1,000 would elect partial relief in law, and here gets nothing.
  • Scale: in the Microcosm national release, FRS records hold about £12.8bn of the £30.7bn of property income (microcosm#1106).

Fix:

  • In the description and the revenue section, say that the allowance change is an upper bound where the data are survey-reported.
  • Say which way the error goes.
  • If a dataset flag can tell SPI-sourced from FRS-sourced records, bound the FRS part, e.g. with partial relief assumed for FRS records with profit above £1,000.

3. Question (predates this PR; touched lines): should the legacy means tests count rental profit as income at all?

The PR switches Housing Benefit, Income Support, Pension Credit and council tax reduction from property_income to property_income_after_finance_costs.

But the Housing Benefit rule treats rental profit from a let property as capital, not income. HB Regs 2006 reg. 46(4): "Except any income derived from capital disregarded under paragraphs 1, 2, 4, 8, 14, 25 to 28, 45 or 46 of Schedule 6, any income derived from capital shall be treated as capital". The property's value counts as capital unless disregarded. UC reg. 72(3) and Pension Credit's deemed income from capital follow the same logic.

Lodger payments are different. HB Sch. 5 para. 22 disregards £20 a week, and the rest counts.

So the refinement improves a quantity that, for most let property, these tests shouldn't count as income at all. That's not for this PR. But it's worth an issue, because the description's case for the change, consistency with the tax deducted, rests on counting it.

Tax credits are different, and the PR is right there: SI 2002/2006 reg. 11(2A) disregards s. 272A, so finance costs come off.

4. Nit: confirm the 22% rate from 2027-28

The relief reads rates.property.basic (22% from 2027-28), citing Finance Act 2026 s. 6(8), Sch. 1 para. 40, which substitutes "PBR" into s. 274AA(5). I couldn't open the enacted text here. If it's checked, a reference on property_finance_cost_relief pointing at the amended s. 274AA(5) would record it.

Checked and correct

Household probes run on this head (single London adult):

Case Year Result By hand
£30k receipts, £8k expenses (£22k profit), £6k finance costs, £40k employment 2026 relieved £6,000, relief £1,200, no carry-forward, no allowance ✓
£900 receipts 2026 full relief, taxable property income £0 ✓ (s. 783BE)
£3,000 receipts, £500 expenses 2026 allowance route, deduction £500 → taxable £2,000 ✓ (s. 783BH: receipts − £1,000)
£12k receipts, £4k profit, £9k finance costs, £80k employment 2026 relieved £4,000 (profit binds), relief £800, carry-forward £5,000 ✓ (s. 274AA(2)–(4))
Same 2027 relief £880 (22%) ✓
£14k profit, £8k finance costs, no other income 2026 adjusted total income £1,430 binds → relief £286 = all Step 5 tax, carry-forward £6,570 ✓
  • The allowance: it's nil before 2017-18. Rent-a-room receipts are excluded from property_rental_income (s. 783BB(2)), and the allowance is never used with the finance-cost reducer (s. 783BL).
  • The restriction: the phase-in (25/50/75/100%) feeds deductible_property_finance_costs. Setting the share to 0 restores full relief, and a test pins this.
  • Step 6: the reduction is limited to the Step 5 tax left after other reductions. Step 7 charges are untouched.
  • The UC change: the finance-cost reduction now comes off the tax on property first, and only the excess comes off the tax on earnings. That matches the reduction being given on property profits.
  • Uprating: the new inputs are uprated, with receipts uprated alongside profit.

ITTOIA 2005 s. 274AA(6) defines adjusted total income as net income,
less savings and dividend income, less the allowances deducted at Step 3
of ITA 2007 s. 23 (the personal and blind person's allowances). The
model's `allowances` also holds Gift Aid, covenanted payments and pension
relief, which extend the basic rate band instead of reducing net income,
so subtracting them understated the costs relieved and overstated the
carry-forward. Gifts of shares to charity and other Step 2 deductions
still come off net income. Adds a YAML case with Gift Aid (review round 1,
item 1).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@juaristi22
juaristi22 marked this pull request as ready for review October 7, 2026 07:59
@juaristi22

Copy link
Copy Markdown
Collaborator Author

Thanks, Vahid. Round 1 is addressed in 747a4a3. The description is updated to match.

1. Adjusted total income: fixed. property_finance_costs_relieved now takes off only what s. 274AA(6) allows:

  • the Step 2 reliefs, out of net income: charitable_investment_gifts (s. 431) and other_deductions (SPI MOTHDED + DEFICIEN, mostly Step 2 deductions);
  • the Step 3 allowances: personal_allowance and blind_persons_allowance.

Gift Aid, covenanted payments and pension relief no longer come off.

Your probe is now a YAML case ("Gift Aid does not reduce adjusted total income", 2026-27): £18,000 of profit, £8,000 of finance costs and £3,000 of Gift Aid.

  • £5,430 is relieved and £2,570 carried forward, as the law gives.
  • The relief itself is £486. That is 20% of £5,430 limited to the Step 5 tax, and the model computes Step 5 tax with Gift Aid deducted, so income tax is £0 as before.

One caveat, written in the code comment: pension_contributions_relief does not separate net pay arrangements, which reduce net income, from relief at source, which does not. It is now treated as relief at source. Where the costs relieved are limited by adjusted total income, that overstates it for net pay members.

2. The no-receipts fallback: direction and bounds now in the description. Both datasets flag SPI-imputed households (household_is_spi_synthetic), so I bounded the survey-reported part as you suggested.

  • Lower bound. Every survey-reported landlord gets receipts equal to profit, i.e. no expenses, so the allowance gives them its full partial relief. That is the most the allowance could be worth to them, and for them it reproduces main.
  • Upper bound. The fallback as coded.

Income tax effect against main:

  • Enhanced FRS:

    • 2025: +£0.18bn to +£0.59bn;
    • 2030: +£0.21bn to +£0.74bn.

    Survey-reported landlords hold £41.5bn of its £54.3bn of property income (2024-25 base).

  • Microcosm UK:

    • 2025: +£0.33bn to +£0.68bn;
    • 2030: +£0.40bn to +£0.82bn.

    FRS records hold £12.8bn of £30.7bn, as you said.

The error runs one way: for survey-reported profits, the fallback can only overstate tax. A landlord whose actual expenses are under £1,000 would elect partial relief and pay less. HMRC's Property Rental Income Statistics 2026 report £21.9bn of non-finance expenses across 2.88m landlords, about £7,600 each on average. So most landlords' actual expenses exceed £1,000, but the data cannot say how many survey-reported landlords fall below it.

3. Legacy means tests: agreed. Under HB Regs 2006 reg. 46(4), rent from a let property is mostly income derived from capital, and so treated as capital. #1995 (Max's draft, "Treat income derived from capital as capital in the legacy means tests") is that change, so I haven't opened a new issue.

4. The 22% rate: checked against the enacted text.

  • Finance Act 2026 Sch. 1 para. 40: "In sections 274AA(5) and 274C(2) ... (a) for 'BR', in both places, substitute 'PBR', and (b) for 'basic rate' substitute 'property basic rate'."
  • s. 6(8): "The amendments made by this section and that Schedule have effect for the tax year 2027-28 and subsequent tax years."
  • The property basic rate is ITA 2007 s. 6D, a single UK rate, with no Scottish or Welsh variant in s. 274AA(5).

property_finance_cost_relief already cites the amended s. 274AA(5) and FA 2026 Sch. 1 para. 40.

Checks at 747a4a3:

  • the full YAML suite: 2,598 passed, including the new case;
  • test_property_income_properties.py: 6 passed;
  • ruff format --check . and ruff check .: clean.

@vahid-ahmadi vahid-ahmadi left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated review pass (Claude Code, high effort) — round 2 at 747a4a37

Verdict: approve. All four round-1 items are closed. Two notes below are for the record; neither needs a change in this PR.

Round-1 item Status Evidence
1. Adjusted total income took off every allowance Closed property_finance_costs_relieved.py now starts from the model's adjusted_net_income, which is the sum of the taxable income components with nothing deducted, i.e. total income (Step 1). It takes off the Step 2 reliefs (charitable_investment_gifts, other_deductions), savings and dividend income, and the Step 3 allowances (personal_allowance, blind_persons_allowance). Gift Aid and relief-at-source pension contributions no longer come off. I re-ran my probe (2026, £18,000 profit, £8,000 finance costs): with and without £3,000 of Gift Aid, £5,430 is relieved and £2,570 carried forward. The new YAML case pins this.
2. Direction of the no-receipts fallback Closed The description now calls the revenue figures upper bounds. It gives a lower bound from giving every survey-reported landlord receipts equal to profit: Enhanced FRS +£0.18bn (2025) to +£0.21bn (2030), Microcosm +£0.33bn to +£0.40bn. That construction is a valid lower bound. The allowance is worth max(0, £1,000 − expenses), which is largest when expenses are zero, and at zero expenses it reproduces main's min(profit, £1,000).
3. Rental income as capital in the legacy means tests Closed by pointer #1995 (Max, draft, "Treat income derived from capital as capital in the legacy means tests") is the right home, and the description says so. Tax credits keep the reg. 11(2A) deduction.
4. The 22% rate from 2027-28 Closed The variable cites FA 2026 Sch. 1 para. 40, which substitutes "PBR" for "BR" in s. 274AA(5) and s. 274C(2), and s. 6(8) gives effect from 2027-28. The Schedule's legislation.gov.uk page resolves. I didn't re-read the para. 40 text myself; María quotes it in her reply.

Notes, no change needed here:

  1. The relief of £486 in the Gift Aid case. This comes from how the model already treats Gift Aid, not from this PR. The Step 6 limit (tax_left = income_tax_pre_charges less the other reductions) uses the model's Step 5 tax, and the model deducts Gift Aid from taxable income: £1,086 of tax without the gift, £486 with it. In law, Gift Aid extends the basic-rate band rather than reducing a basic-rate taxpayer's tax, so the Step 5 tax would stay £1,086 and the reduction would be £1,086. Income tax is £0 either way, and the costs relieved and carried forward don't depend on it. It would only matter for a basic-rate landlord whose remaining tax is less than the reduction. The model-wide Gift Aid treatment is a separate issue.
  2. other_deductions as Step 2. It maps SPI MOTHDED + DEFICIEN. MOTHDED's components (qualifying loan interest, annuities and similar) are Step 2 reliefs under ITA 2007 s. 24. I couldn't confirm that DEFICIEN, deficiency relief on life-policy gains (ITTOIA s. 539), is given at Step 2 rather than as a reduction. If it isn't, subtracting it understates adjusted total income slightly for the few records that hold it.

The pension caveat in the code comment is right: net-pay contributions are already out of employment income, while pension_contributions_relief mixes them with relief at source. Treating them all as relief at source overstates adjusted total income only for net-pay members whose relief is capped by adjusted total income, which needs both a mortgage-financed let and very low other income. That's small.

Checks at this head, run locally from the PR worktree:

  • policyengine-core test on the three property YAML files: 38 passed.
  • The full gov/hmrc/income_tax YAML directory: 210 passed.
  • test_property_income_properties.py: 6 passed.
  • CI: 7/7 green.

@vahid-ahmadi
vahid-ahmadi merged commit c54bc55 into main Oct 7, 2026
7 checks passed
@vahid-ahmadi
vahid-ahmadi deleted the property-finance-costs-2170 branch October 7, 2026 09:23
juaristi22 added a commit to PolicyEngine/microcosm that referenced this pull request Oct 8, 2026
2.123.0 carries PolicyEngine/policyengine-uk#2172: property_rental_income,
property_finance_costs and property_finance_costs_brought_forward, the
s. 274A finance-cost reduction, and a property allowance that no longer
stacks on expenses already netted from profit. The lock's UK side moves
exactly to 2.123.0 (uv lock --upgrade-package policyengine-uk==2.123.0)
and nothing else moves: policyengine-core stays 3.32.19 on the UK side,
which 2.123.0 accepts, and 3.32.5 on the US side (#1086's per-country
pins). The UK extras of microcosm-build, microcosm-data and
microcosm-frame require >=2.123.0. The step from #1121's 2.122.2 also
brings #2160, #2096, #2097 and #2144.

Re-derived with no data change: the uprating pin stamp (values
unchanged), the concept coverage (288 inputs, the three property inputs
uncovered) and the mapping reviewed against 2.123.0 (the property_income
note quotes its new documentation, alignment still approximate; the
liquid-asset reason holds unchanged), the spec's declared dependency and
the H2 fixture's, the coverage manifest's source digests, and
APPROVED_UV_LOCK_SHA256.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
juaristi22 added a commit to PolicyEngine/microcosm that referenced this pull request Oct 9, 2026
2.123.0 carries PolicyEngine/policyengine-uk#2172: property_rental_income,
property_finance_costs and property_finance_costs_brought_forward, the
s. 274A finance-cost reduction, and a property allowance that no longer
stacks on expenses already netted from profit. The lock's UK side moves
exactly to 2.123.0 (uv lock --upgrade-package policyengine-uk==2.123.0)
and nothing else moves: policyengine-core stays 3.32.19 on the UK side,
which 2.123.0 accepts, and 3.32.5 on the US side (#1086's per-country
pins). The UK extras of microcosm-build, microcosm-data and
microcosm-frame require >=2.123.0. The step from #1121's 2.122.2 also
brings #2160, #2096, #2097 and #2144.

Re-derived with no data change: the uprating pin stamp (values
unchanged), the concept coverage (288 inputs, the three property inputs
uncovered) and the mapping reviewed against 2.123.0 (the property_income
note quotes its new documentation, alignment still approximate; the
liquid-asset reason holds unchanged), the spec's declared dependency and
the H2 fixture's, the coverage manifest's source digests, and
APPROVED_UV_LOCK_SHA256.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MaxGhenis added a commit that referenced this pull request Oct 10, 2026
#2027 has merged, so this brings the branch up to main.

One conflict, resolved mechanically: main (#2172) renamed the step-one
component property_income to property_income_after_finance_costs in
tax_credits_applicable_income. This branch had moved that income
calculation, unchanged, into tax_credits_current_year_income, so the
rename now lands there and tax_credits_applicable_income keeps the
passport.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants