Skip to content

Personal Savings Allowance uses the Scottish bands for Scottish taxpayers (ITA 2007 s. 12B(8)) #2347

Closed

Description

@MaxGhenis

What the law says

ITA 2007 s. 12B sets the Personal Savings Allowance:

  • £1,000 if none of the individual's income is higher-rate income;
  • £500 if some is higher-rate income but none is additional-rate income;
  • nil if any is additional-rate income.

For a Scottish or Welsh taxpayer, s. 12B(8)(a)(iv) and (b)(iv) count as additional- or higher-rate income the "income ... which would, if the individual were not a Scottish taxpayer or Welsh taxpayer ..., be income on which income tax is charged at the additional rate" (or the higher rate). So the allowance follows the rest-of-UK bands for everyone: £37,700 and £125,140 of taxable income in 2026-27.

What the model does

savings_allowance reads tax_band. From 2018-19, tax_band uses the Scottish thresholds for a Scottish taxpayer, so:

  • taxable income from £62,430 (the Scottish advanced rate) to £125,140 maps to ADDITIONAL, and the allowance is nil (law: £500);
  • taxable income from £31,092 (the Scottish higher rate) to £37,700 maps to HIGHER, and the allowance is £500 (law: £1,000).

tax_band itself is right to follow the Scottish bands for the Marriage Allowance conditions, which do look at the Scottish rates.

Minimal reproduction

policyengine-uk main at c6d15c8, 2026, a single adult with £1,000 of savings interest:

Country Pay tax_band savings_allowance Law savings_income_tax Law
Scotland £80,000 ADDITIONAL £0 £500 £400 £200
England £80,000 HIGHER £500 £500 £200 £200
Scotland £45,000 HIGHER £500 £1,000 £100 £0
England £45,000 BASIC £1,000 £1,000 £0 £0
from policyengine_uk import Simulation
sit = {"people": {"p": {"age": {"2026": 40}, "employment_income": {"2026": 80_000}, "savings_interest_income": {"2026": 1_000}}},
       "benunits": {"b": {"members": ["p"]}}, "households": {"h": {"members": ["p"], "country": {"2026": "SCOTLAND"}}}}
Simulation(situation=sit).calculate("savings_allowance", 2026)  # [0.]; law: 500

Also

Before 2017-18, tax_band places the higher band at thresholds[-2] (£150,000 in 2016-17) rather than the basic rate limit, so 2016-17 higher-rate taxpayers get the £1,000 allowance.

Where it showed up

PolicyBench UK round 2, scenario 015: a Scottish couple with taxable incomes above £62,430. The engine denied both adults the allowance and charged £110 of savings tax, where the law allows £500 each.

Activity

  1. MaxGhenis commented on Oct 11, 2026

    @MaxGhenis
    CollaboratorAuthor

    Evidence from PolicyBench UK round 2, an internal audit of policyengine-uk 2.126.7 (references identical on 2.126.8). Six models answered the same 200 households. A reference adversary (a blind GPT-6.1 Sol judge, then reconciliation with the engine log) reviewed consensus disagreements and a sample of single-model misses, and each verdict was adjudicated against the engine code and the law. Cells that turn on this issue:

    Cell Reference Models (answer × count) With the fix Class
    scenario_015/income_tax £43,701.80 £43,606 ×2 £43,591.20 engine defect

    With #2348 alone the reference moves from £43,701.80 to £43,591.80 (the £110 of savings tax goes). The rest of the gap is HICBC rounding (#2321) and employment expenses whose deductibility the prompt did not state.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions