Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Household excise duties

The model calculates alcohol duty, tobacco duty, vehicle excise duty on cars, and duty on LPG and natural road fuel gas from supplied household inputs. household_tax and gov_tax include these amounts once, alongside petrol and diesel duty. These totals combine the different annual bases described below. The incidence assumption is full pass-through to consumers.

The model also includes seven gambling duty families from supplied attributed household bases. Household gambling duties documents the rates, casino incidence proxy, period conventions and outstanding population data, machine-premises and VAT work.

Coverage and periods

Alcohol, tobacco and car duty calculations cover 2024/25 to 2026/27. The alcohol parameter history starts on 1 August 2023; the preceding alcohol regime and a complete 2023/24 calculation are outside this implementation. Tobacco rates start on 22 November 2023. The new alcohol, tobacco and car formulas return their default zero before 2024; that is an unmodelled period, not a statutory exemption. Gas duty covers 2022/23 onwards. SI 2026/555 removed the September 2026 step that Budget 2025 announced and moved the December 2026 step to 1 January 2027. Budget 2026 then kept the proportionate cut to 1 July 2027, when the gas rates return to their full levels with RPI growth on top, and rise by RPI each 1 April from 2028, as petrol and diesel do (see below).

For alcohol and tobacco, a model year such as 2026 represents 6 April 2026 to 5 April 2027. Quantities and cigarette retail prices are constant across that year. Duty is calculated separately for every rate interval, then weighted by the interval’s share of the year. Tobacco Budget-day changes take effect at 18:00, while the 1 October 2026 change takes effect at midnight. Applying the cigarette minimum within each interval matters when the minimum begins or ceases to bind during the year.

These two rate nodes use preserve_calendar_dates: true to opt out of the usual conversion of government parameters to annual values. Their raw parameter values retain their actual dates; utils/excise.py performs the annual calculation. Value-level effective_time metadata records the Budget-day time. Annual Scenario.parameter_changes and bare-year legacy reform dictionaries apply to a complete UK fiscal year. Explicit date ranges retain the dates the caller supplies.

The linear fuel duty rates on petrol, diesel and road fuel gases use the existing fiscal_year_blend: true machinery. Each rate is keyed to the date it takes effect and day-weighted across the model year, 6 April to 5 April. Time of day is not modelled. Monthly fuel_duty allocates one twelfth of each annual volume and uses the model’s annual rate; it does not represent duty on a dated purchase.

Consequently, household_tax and gov_tax mix year bases. For model period 2026, alcohol, tobacco and fuel duty use 6 April 2026 to 5 April 2027, and VED uses 1 April 2026 to 31 March 2027. They are added to existing annual components, including income tax and VAT. Aggregation does not realign or prorate these components to a common reporting year. The totals therefore do not represent a consistent January-to-December receipts period. Before comparing gov_tax with calendar-year receipts, align each component to that calendar year; changing the total’s year label alone does not perform that conversion.

Alcohol inputs

For each of beer, cider, sparkling_cider, wine, spirits, and other_fermented, supply household inputs:

Default strengths are illustrative assumptions in household.consumption.alcohol, not population averages: beer 4%, cider and sparkling cider 4.5%, wine 12%, spirits 40%, other fermented products 5%. Override them for a known product. Each product input represents one strength; where a household buys products spanning multiple rate bands, calculate the components separately or supply the summed product duty.

The product definitions are the statutory categories. For example, fruit ciders that do not qualify as cider belong under other_fermented. The model covers Schedule 7 strength bands, Schedule 8 draught rates, the sparkling-cider 5.5% boundary, and the temporary wine-strength easement ending on 1 February 2025. Small producer relief and demand responses are excluded.

The result alcohol_duty sums the six product-duty outputs. In 2026/27, 100 litres of 5% beer gives £112.90 with no draught relief, or £97.25 when all of it qualifies for draught relief.

Sources: HMRC Alcohol Duty rates and historic rates.

Tobacco inputs

Supply household cigarettes_per_week, cigarette_price_per_pack, and any of hand_rolling_tobacco_grams_per_week, cigars_grams_per_week, other_tobacco_grams_per_week, and heated_tobacco_grams_per_week. Weekly quantities are annualised with the model’s 52-week convention. Prices refer to twenty cigarettes. The default price uses the ONS 2024 calendar-year average of £15.85 and stays constant thereafter; supply the actual price when available. The default is a data assumption, not a tax parameter.

tobacco_duty applies the higher of specific-plus-ad-valorem duty and minimum duty to cigarettes, plus weight-based duty on other products. Specific and minimum cigarette parameters are stored in pounds per cigarette; other specific rates are pounds per kilogram. Vaping products duty is outside this implementation.

Sources: HMRC Tobacco Products Duty rates and ONS cigarette price series CZMP.

Car inputs

Supply one car for each person who keeps a car:

Without a registration date the result is zero. num_vehicles and owns_vehicle do not create a taxable car, since they cannot identify its schedule. car_vehicle_excise_duty computes each person’s charge; vehicle_excise_duty aggregates them within the household.

The calculation assumes one twelve-month licence in each VED rate year (1 April to 31 March), with uninterrupted annual renewals from first registration. It charges the full first licence in the registration year and then the annual renewal; it does not spread that first licence across tax years. It excludes partial-year ownership, refunds, instalment surcharges, changes of tax class and the 50% disability reduction. A person with more than one car can supply their combined car_vehicle_excise_duty directly.

The schedules cover engine size before March 2001; CO2 bands from March 2001 to March 2017, including the pre-23 March 2006 band-K cap; and first-year and standard rates from April 2017. The expensive-car supplement applies during the next five annual licences. Its zero-emission threshold rises to £50,000 from 2026/27, including cars registered in 2025/26; zero-emission cars registered before April 2025 remain exempt from the supplement. The 2024/25 zero-emission exemption and alternative-fuel discount are also represented. Vans, motorcycles and the proposed electric-vehicle mileage charge are outside this implementation.

Sources: DVLA vehicle tax rate tables, Budget 2025 rate tables, and zero-emission vehicle guidance.

Road fuel gas inputs

Supply annual household lpg_kg and natural_gas_kg. Natural gas includes biogas used as road fuel, not domestic heating. The inputs are kilograms, matching the legislation. No universal litre-to-kilogram density is assumed. The existing fuel_duty output includes these charges. Rural fuel duty relief continues to apply only to petrol and diesel.

Budget 2026’s costing says that on 1 July 2027 “fuel duty rates will increase by 5ppl and will be uprated in line with the Retail Prices Index (RPI)”, and applies the cut to other fuels in proportion. So on 1 July 2027 the gas rates return to their full rates before the 2022 cut (LPG £0.3161/kg, natural gas £0.2470/kg), with the same RPI growth as petrol and diesel. HM Treasury publishes the rates from 1 July 2027 in Annex A of Budget 2026’s Overview of Tax Legislation and Rates: £0.3305/kg and £0.2582/kg (the uprating gives £0.2583/kg for natural gas, and the model uses HM Treasury’s rate). Each 1 April from 2028 they rise by the previous calendar year’s RPI growth. calculate_fuel_duty_rates.py writes these steps to 1 April 2031, as it does for petrol and diesel, and the parameters’ uprating metadata continues them. That is policy, not law.

Sources: HMRC fuel duty rates 2026 to 2027 (RPI uprating from 2027/28), HMRC amended fuel duty rates 2026 to 2027 SI 2026/164 as amended by SI 2026/555 and Budget 2026 policy costings, page 13.

Petrol and diesel rate

The main rate on unleaded petrol and diesel is keyed to each statutory change: 52.95p a litre from 23 March 2022, continued by annual orders to 31 December 2026 (SI 2026/164 as amended by SI 2026/555). Those orders then stepped to 55.95p on 1 January 2027 and to the Hydrocarbon Oil Duties Act 1979 rate of 57.95p on 1 March 2027. Budget 2026 (paragraph 6.211) cancelled both steps and kept the cut to 1 July 2027. Its costing (page 13) says: “On 1 July 2027, fuel duty rates will increase by 5ppl and will be uprated in line with the Retail Prices Index (RPI). From 1 April 2028, fuel duty rates will be uprated annually in line with RPI.” That is policy, not law. The OBR’s October 2026 EFO (paragraph 3.19) puts the rate at 60.59p from 1 July 2027: RPI growth in the year to 2027 Q1 (4.5565%, economy Table 1.7) on the 57.95p pre-cut rate. The model uses that figure, and calculate_fuel_duty_rates.py refuses to write any other July rate. From 1 April 2028, each step applies the previous calendar year’s RPI growth from the OBR forecast in gov.economic_assumptions.yoy_growth.obr.rpi, rounded to the nearest hundredth of a penny. The script writes the steps to 1 April 2031, and a test fails when they fall out of date with the RPI forecast. After a new EFO, set the script’s July rate and RPI growth to its forecast and rerun it. Later steps come from the parameter’s uprating metadata. The RPI index ends with the growth series, in 2074, so the last step is 1 April 2075.

An annual reform names a model year and replaces the rate for all of it. For model years to 2030 it leaves other years unchanged. Scenario.parameter_changes reapplies uprating after the change, so an override from model year 2031, where the steps come from uprating metadata, restarts uprating from the last written rate: every later year stays one 1 April step behind. Reform classes and legacy reform dictionaries change the annual values after uprating and are not affected.

Projecting alcohol and tobacco quantities

Each alcohol and tobacco quantity input declares its product group’s index, and dataset projection grows it by the same group’s series in gov.economic_assumptions.yoy_growth.obr.per_capita (policyengine_uk/data/uprating_indices.yaml). The importer writes each series as the growth in the OBR’s clearances of the group per person (#2596):

InputsSeriesOBR line
cigarettes_per_weektobacco_clearances.cigarettesTable 4.11, “Cigarette clearances (million sticks)”
hand_rolling_tobacco_grams_per_weektobacco_clearances.hand_rolling_tobaccoTable 4.11, “Hand rolled tobacco clearances”
cigars_grams_per_week, other_tobacco_grams_per_week, heated_tobacco_grams_per_weektobacco_clearances.other_tobacco_productsTable 4.11, “Other tobacco products”
beer_litres, cider_litres, sparkling_cider_litresalcohol_clearances.beer_and_ciderTable 4.12, “Beer and cider”
wine_litres, other_fermented_litresalcohol_clearances.wineTable 4.12, “Wine”, which includes other fermented products
spirits_litresalcohol_clearances.spiritsTable 4.12, “Spirits”, which includes spirit-based ready-to-drinks

The OBR splits Table 4.11’s non-cigarette clearances into hand-rolled tobacco and other tobacco products only, so the cigar, other tobacco and heated tobacco inputs share one series. Dataset projection keeps the strengths (<product>_abv), the draught shares and cigarette_price_per_pack at their base-year values, since the first two measure ratios and the third a price. A forward path for the cigarette price needs its own change.

Population

extend_single_year_dataset copies the base year’s dataset into each later year, and apply_single_year_uprating multiplies each column that uprating_indices.yaml lists by one plus its series’ growth in that year. The file lists household_weight under gov.economic_assumptions.yoy_growth.ons.population. So, for household i in year t, with population growth p(t) and a quantity series g(t):

With g(t) = (1 + c(t)) / (1 + p(t)) - 1, where c(t) is the growth in clearances, Q(t) = (1 + c(t)) × Q(t - 1): the weighted total follows the clearances. A series of c(t) itself would give Q(t) = (1 + p(t)) × (1 + c(t)) × Q(t - 1) and count population growth twice. ons.population grows 1.54% from 2024-25 to 2031-32, so totals grown that way would end 1.54% above the clearances.

In the OBR’s outturn, cigarette clearances fell 9.97%, from 13,578.2 million sticks in 2024-25 (March 2026 EFO) to 12,224.6 million in 2025-26 (October 2026 EFO). Population grows 0.33% in 2025, so the importer writes 12,224.6 / 13,578.2 / 1.0033 - 1 = -10.27% (-0.102653) for that year.

Years

Model yearSeriesSource
2024 (2024-25)Base year: 0, index 1The alcohol and tobacco duties start in model year 2024
2025OutturnOctober 2026 Tables 4.11 and 4.12 (2025-26) over March 2026 Tables 3.11 and 3.12 (2024-25)
2026 to 2031ForecastOctober 2026 Tables 4.11 and 4.12
2032 onClearances held flat: 1 / (1 + p(t)) - 1As road_fuel_volume after the OBR’s forecast

The OBR’s years run from 1 April and the model’s from 6 April. As for road fuel, the importer stores the fiscal year that starts in year t at t-01-01. The indices, gov.economic_assumptions.indices.obr.per_capita.*, start at 1 in 2024 and stand at:

Group2025202620272028202920302031
Cigarettes0.8970.8030.7210.6600.5990.5580.520
Hand-rolled tobacco0.8260.7690.7120.6520.6100.5840.556
Other tobacco products0.8610.8150.7810.7150.6790.6530.615
Beer and cider0.9690.9500.9290.9210.9140.9030.891
Wine0.9650.9630.9450.9370.9290.9170.907
Spirits0.9840.9740.9560.9500.9440.9330.924

Past PROJECTION_END_YEAR (2032), policyengine-core scales each input by the index it declares.

The importer, policyengine_uk/utils/import_obr_forecasts.py, writes the six series from CLEARANCE_SERIES_SPECS in the same run as the other receipts series (see the steps for a new EFO in the economic assumptions README), and reads ons.population from the yoy_growth.yaml it rewrites. It interprets no words in the clearance tables. CLEARANCE_TABLE_TEXTS lists each text, other than titles, numbers and fiscal years, in Tables 3.11 and 3.12 of the March 2025 and March 2026 EFOs and Tables 4.11 and 4.12 of October 2026, from each title down to the next table’s title: the line labels, the “Outturn” and “Forecast” markers, the “of which:” row, Table 4.12’s note “All clearances are in thousands of hectolitres of alcohol” and its footnotes. On Table 4.12’s sheet the OBR follows the alcohol clearances with the alcohol receipts forecasts. The importer ends the clearance table at their title (CLEARANCE_TABLE_ENDS), so its check leaves out the receipts table’s “£ billion” cell and note. From each clearance table’s title through that configured end, or the sheet’s last row, the importer compares text cells in every column with the list. It skips the title cell, numbers and fiscal years, and stops before writing anything when:

A table can keep every text on the list and still put a line under another unit: a rearranged copy of the real October 2026 Table 4.11 can put the two tobacco parts under the cigarette label’s million sticks. The two layout checks stop it. The importer reads every formatting run of a cell’s text, and leaves out any phonetic run. It names the table and each unread cell, the text in the fiscal-year row, the missing total or the rows that repeat the heading. Whoever runs it reads the text, converts the table’s figures to the listed units if it states another, and adds the text to the list. The importer checks no cell above a table’s title or below its end, so that person reads any note there too.

Budget measures and reforms

The OBR incorporates in its October 2026 forecast the measures the government announced at Budget 2026 and since the March forecast (EFO paragraph 3.2). It lists no change to an alcohol or tobacco duty rate in its policy Table 1.1, and three measures that change the two duties’ receipts, none by more than £13 million a year:

The OBR still assumes rising duty rates. It expects alcohol receipts to grow, “driven by increases to the duty rate that offset an assumed average 1 per cent decline in alcohol consumption in each year” (paragraph 4.43), and tobacco receipts to fall “as higher duty rates only partly offset falling consumption” (paragraph 4.44). So the OBR forecasts the clearances along that consumption trend, under rate rises it assumes rather than ones the government announced at the Budget.

The dataset projection reads no duty rate (uprating_input_paths in policyengine_uk/data/economic_assumptions.py), so it grows quantities by the indices whatever rates the model charges. When a reform changes alcohol or tobacco duty rates, the model therefore moves receipts through the rates alone and applies no consumption response. Under current law the model holds the alcohol rates at their 1 February 2026 values, the tobacco rates at their 1 October 2026 values and the default cigarette price at its 2024 average, while the OBR forecasts its volumes with the rates it expects.

Receipts against the OBR’s forecast

On quantities that follow the clearances, the model’s duty moves with its own rates. A constructed dataset of one household at weight 1 that holds the UK’s 2024-25 clearances shows the effect. It treats beer and cider as beer at 4% with no draught relief, wine and other fermented products as wine at 12%, spirits at 40%, other tobacco products as other smoking tobacco, and cigarettes at the default price. On that mix the model’s duty per unit cleared rises 5.7% for alcohol by 2026-27 and 19.0% for tobacco by 2027-28. The alcohol increases take effect in February 2025 and February 2026, and the tobacco increases in October 2024, November 2025 and October 2026. Each reaches its first full model year after 2024-25. After that, product mix alone moves model duty per unit. The OBR’s receipts per unit cleared keep rising, by 22.1% for alcohol and 48.2% for tobacco by 2031-32.

On this construct, the model’s alcohol duty exceeds the OBR’s receipts by 7.6% in 2024-25 and 7.9% in 2026-27, then by less each year: by 3.5% in 2027-28 and 0.3% in 2028-29. It first falls short in 2029-30, by 2.5%, and by 6.8% in 2031-32. The model’s tobacco duty exceeds the OBR’s 2024-25 receipts by 1.9%, falls short by 0.8% in 2025-26 and 0.4% in 2026-27, and then by more each year, to 18.0% in 2031-32. Charging all beer and cider at the beer rate with no draught relief lifts that line 22.4% above its 2024-25 receipts, and a dataset brings its own product mix. From 2027-28 the model holds its rates while the OBR assumes rising ones, and each gap moves with that difference.

Sources

The series and the figures above come from these files. The parser fixtures in policyengine_uk/tests/fixtures/obr_receipts/ keep the receipts sheets of the two receipts workbooks unchanged.

FileSHA-256Sheet and cells
OBR October 2026 EFO, detailed forecast tables zip (efo-october-2026-detailed-forecast-tables-zipfile.zip)06ac908c69fce7d69dbfda4e16fc3b091a83bd8140ecd2f24990acd13d945fc2Holds the two workbooks below
October 2026 receipts tables, as published in the zip (efo-october-2026-detailed-forecast-tables-receipts.xlsx)d115705716d77b11c190385d41cb1924f30080c9331a8a386c04d4e65a368e954.11: rows 5 (cigarettes, unit in B5), 6 (non-cigarette, unit in B6), 8 (hand-rolled) and 9 (other tobacco products), columns C (2025-26 outturn) to I (2031-32); 4.12: rows 5 to 7 (beer and cider, wine, spirits), columns C to I, unit note B8, footnotes B9 and B10; 4.8: row 27 (tobacco duties, cash) and 4.12 rows 16 to 18 (alcohol receipts, accrued), for the comparison above
October 2026 policy tables (efo-october-2026-detailed-forecast-tables-policy.xlsx)cdcc2a06b100241bf3010bd159a4e5d43daef2348a3850797b1e88a308fd45fd1.1: rows 95 (measure 19), 203 and 204 (measure 45), 446 and 447 (measure 95), 494 and 515 (totals for alcohol and tobacco duty)
October 2026 EFO (economic-and-fiscal-outlook-october-2026-web-accessible.pdf)9e0e9c340e35e603066f3124a614fcd68feadb3d5d10d1f76fb536e150e6225eParagraphs 3.2, 4.43 and 4.44
March 2026 receipts tables, as downloaded (obr_efo_march_2026_receipts.xlsx; the parser fixture of that name keeps only some of its sheets)f65b6cb7f96931d4abd85940794eb60f6f65afca8bbf16c74a4548bf92766a283.11: rows 5, 8 and 9, column C (2024-25 outturn); 3.12: rows 5 to 7, column C, and rows 16 to 18, column C (2024-25 receipts); 3.8: row 27, column D

Population data follow-ups

These formulas do not impute quantities or vehicle characteristics from the existing combined alcohol_and_tobacco_consumption, fuel expenditure or vehicle counts. Missing new inputs therefore contribute zero duty. Program metadata marks alcohol, tobacco and vehicle excise duty as partial coverage. National revenue estimates and distributional results require a separate data change:

  1. Split alcohol and tobacco expenditure into products, including alcohol purchased in hospitality venues. Derive quantities using independently measured prices and strengths, retaining the original total expenditure.

  2. Validate weighted totals against the HMRC Alcohol Bulletin and Tobacco Bulletin. Record the fiscal year, population coverage, under-reporting adjustment, non-household purchases and cross-border differences before comparing totals.

  3. Impute car characteristics jointly, preserving vehicle counts and ownership, using National Travel Survey or DVLA licensing data. Retain the registration, emissions, fuel and price correlations that determine the duty.

  4. Identify road fuel gas consumption separately from petrol and diesel; do not allocate the same fuel spending to both.

Until these inputs are available, these additions support household calculations and reforms on supplied quantities, not validated national revenue estimates.