Skip to contents

Downloads and tidies the HMRC VAT Annual Statistics bulletin, which reports monthly VAT receipts broken down into payments, repayments, import VAT, and home VAT. Monthly data runs from April 1973; the bulletin is published annually (December).

Usage

hmrc_vat(measure = NULL, start = NULL, end = NULL, cache = TRUE)

Arguments

measure

Character vector or NULL (default = all measures). Valid values: "total", "payments", "repayments", "import_vat", "home_vat".

start

Character "YYYY-MM" or a Date object.

end

Character "YYYY-MM" or a Date object.

cache

Logical. Use cached file if available (default TRUE).

Value

An hmrc_tbl with columns date, measure, description, receipts_gbp_m. Repayments are negative.

Details

Note that early years (pre-1985) have suppressed payment and repayment splits; only the total is available for those periods. From January 2021, import VAT collected via postponed VAT accounting is recorded within payments and repayments rather than the import VAT column.

Examples

# \donttest{
op <- options(hmrc.cache_dir = file.path(tempdir(), "hmrc"))
try({
  vat <- hmrc_vat(measure = c("total", "repayments"), start = "2024-01")
  head(vat)
})
#>  Resolving download URL from GOV.UK Content API
#>  Resolving download URL from GOV.UK Content API [114ms]
#> 
#>  Downloading data file
#>  Downloading data file [703ms]
#> 
#>  Parsing data
#>  Parsing data [96ms]
#> 
#> # VAT annual statistics (monthly receipts)
#> # Source: https://www.gov.uk/government/statistics/value-added-tax-vat-annual-statistics
#> # Fetched 2026-09-13 19:24:28 UTC | Vintage: latest | Cells: cash | Freq: monthly | 6 rows x 4 cols
#> 
#>         date    measure    description receipts_gbp_m
#> 1 2024-01-01 repayments VAT repayments          -8670
#> 2 2024-02-01 repayments VAT repayments         -10000
#> 3 2024-03-01 repayments VAT repayments          -8360
#> 4 2024-04-01 repayments VAT repayments          -9240
#> 5 2024-05-01 repayments VAT repayments         -10900
#> 6 2024-06-01 repayments VAT repayments          -7890
options(op)
# }