# energy.climate-change-levy
The Climate Change Levy (CCL) a supplier adds to a business energy bill:
```
levy = quantity x main rate for the commodity on the date of supply
```
Electricity and gas are charged per kWh; LPG and "any other taxable
commodity" (coal, coke, petroleum coke) per kg. The rates are dated data from
HMRC, from 1 April 2023 to the rates already announced for 1 April 2027.
## Qualifying use: the domestic and de minimis exclusion
CCL does not apply to supplies for **domestic use** or **charity non-business
use**, and supplies small enough to be **de minimis** are excluded too. Those
are the same supplies that get VAT at the reduced 5% rate as "qualifying use"
(VAT Notice 701/19): for a business, up to an average of 33 kWh a day (1,000
kWh a month) of electricity, or 145 kWh a day (4,397 kWh a month) of piped
gas. Pass `qualifyingUse: true` for any of these and the result has
`excluded: true` and a zero levy; the rate is still returned, so a bill can
show which rate it did not charge. Deciding whether a supply qualifies
(including the 60% mixed-use rule) is the caller's, because it depends on
the customer, not the kWh alone.
## Units and rounding
- Quantities are integers in **thousandths** of the unit (watt-hours or
grams), so part-units are exact.
- Rates are integers in **thousandths of a penny** per unit, exactly the five
decimal places of pounds HMRC publishes (£0.00775 per kWh is `775`).
- The levy is rounded once to a whole penny by `mode` (suppliers usually
round half-up per bill). Quantity times rate must stay within 2^53.
## Not covered
- **Reduced rates for climate change agreement holders** (a percentage
discount off the main rate: 92% for electricity, 89% for gas from April
2024) — apply the discount to the result if the site holds a CCA.
- **Carbon Price Support rates** paid by generators.
- Supplies spanning a rate change on 1 April: split the quantity by date and
call once per part.
## Dates and pruning
Each rate applies from `validFrom` to `validTo` inclusive; the latest has a
null `validTo`. A build installed with `history=current` keeps only rates
still in force, and a date before the earliest surviving rate is refused with
an explanation rather than charged at a newer rate.
## Sources
- HMRC, "Climate Change Levy rates",
https://www.gov.uk/guidance/climate-change-levy-rates (main rates from
1 April 2023, 2024, 2025, 2026 and 2027; last updated 27 November 2025).
- HMRC, "VAT on fuel and power (VAT Notice 701/19)",
https://www.gov.uk/guidance/vat-on-fuel-and-power-notice-70119 (paragraph
2.8: the levy does not apply to domestic or charity non-business use, and
de minimis supplies are excluded; paragraphs 4.2 and 5.2: the de minimis
limits).
1.0.1 fixes Python accepting a trailing newline or non-ASCII digits in onDate; adds tests.
## Notices
Contains public sector information licensed under the Open Government
Licence v3.0 (https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/).
1.0.2 adds its attribution notices (NOTICE). The code and the tests are unchanged.