Download HMRC tax receipts and National Insurance contributions
Source:R/hmrc_tax_receipts.R
hmrc_tax_receipts.RdDownloads and tidies the monthly HMRC Tax Receipts and National Insurance Contributions bulletin published on GOV.UK. The bulletin covers all major UK taxes and duties at monthly frequency and is updated on approximately the 15th working day of each month. HMRC's monthly table is a rolling window: it currently starts in April 2017.
Arguments
- tax
Character vector of tax head identifiers, or
NULL(default) to return all available series. Usehmrc_list_tax_heads()to see valid values and descriptions.- start
Character
"YYYY-MM"or aDateobject. If provided, rows before this month are dropped.- end
Character
"YYYY-MM"or aDateobject. If provided, rows after this month are dropped.- cache
Logical. If
TRUE(default), the downloaded file is cached locally and reused on subsequent calls. Usehmrc_clear_cache()to reset.
Value
An hmrc_tbl (subclass of data.frame) with columns:
- date
Date. The first day of the reference month.- tax_head
Character. Tax or duty identifier (see
hmrc_list_tax_heads()).- description
Character. Plain-English series label.
- receipts_gbp_m
Numeric. Cash receipts in millions of pounds (GBP).
Provenance metadata (source URL, fetch time, vintage) is attached as
the "hmrc_meta" attribute and can be inspected with hmrc_meta().
Details
Months with no receipts for a head (for example Bank Levy outside its
instalment months) are marked [X] by HMRC and returned as NA. If HMRC
adds a new series to the bulletin (Vaping Products Duty is due from
October 2026), it is returned under a snake_case tax_head built from its
column label, with a one-off message, until the package adds it to
hmrc_list_tax_heads().
See also
Other data fetchers:
hmrc_capital_gains(),
hmrc_corporation_tax(),
hmrc_creative_industries(),
hmrc_fuel_duties(),
hmrc_income_tax_stats(),
hmrc_inheritance_tax(),
hmrc_patent_box(),
hmrc_property_transactions(),
hmrc_rd_credits(),
hmrc_stamp_duty(),
hmrc_tax_gap(),
hmrc_tobacco_duties(),
hmrc_vat()
Examples
# \donttest{
op <- options(hmrc.cache_dir = file.path(tempdir(), "hmrc"))
try({
tr <- hmrc_tax_receipts(tax = c("income_tax", "vat"), start = "2025-04")
head(tr)
})
#> ℹ Resolving download URL from GOV.UK Content API
#> ✔ Resolving download URL from GOV.UK Content API [24ms]
#>
#> ℹ Using cached file
#> ✔ Using cached file [5ms]
#>
#> ℹ Parsing data
#> ✔ Parsing data [55ms]
#>
#> # HMRC tax receipts and NICs (monthly bulletin)
#> # Source: https://www.gov.uk/government/statistics/hmrc-tax-and-nics-receipts-for-the-uk
#> # Fetched 2026-09-13 19:24:26 UTC | Vintage: latest | Cells: cash | Freq: monthly | 6 rows x 4 cols
#>
#> date tax_head description receipts_gbp_m
#> 1 2025-04-01 income_tax Income Tax (PAYE and Self Assessment) 29822
#> 2 2025-05-01 income_tax Income Tax (PAYE and Self Assessment) 21208
#> 3 2025-06-01 income_tax Income Tax (PAYE and Self Assessment) 21052
#> 4 2025-07-01 income_tax Income Tax (PAYE and Self Assessment) 37751
#> 5 2025-08-01 income_tax Income Tax (PAYE and Self Assessment) 21775
#> 6 2025-09-01 income_tax Income Tax (PAYE and Self Assessment) 22053
options(op)
# }