Functional Weave
Code in Rust

hospitality.tourist-tax@1.0.1

README.md

5,173 bytes · view raw

# hospitality.tourist-tax

The visitor levy (tourist tax) due on one overnight stay, for a council area in
the data or for a rule the caller supplies. It returns the levy, how many
nights were levied, why nothing is due if it isn't, and the rule it used.

## What is in the data

Only levies that are law and have a start date. Each is a dated row in
`data/visitor-levies.json`:

| locality | levy | from | rules |
|---|---|---|---|
| `GB-EDH` City of Edinburgh | 5% of the accommodation charge, net of VAT | 24 July 2026 | first 5 consecutive nights of a booking only; bookings made **and** paid (in part or in full) before 1 October 2025 are exempt; stays that began before 24 July 2026 are not levied |
| `GB-CRF` Cardiff | £1.30 per person per night; £0.75 on a campsite pitch or in a shared room (dormitory) | 1 April 2027 | no levy on a stay of more than 31 nights; under-18s are not counted at the lower rate |

Wales's Act lets each council choose whether to charge. As of September 2026,
Cardiff is the only council that has decided to. Anglesey, Conwy and Gwynedd
have consulted, with decisions due after 24 September 2026. Add a council's
rows when its decision is made, as a new version of this package. Other Scottish councils'
schemes (Glasgow's, for one) are not in this version.

Locality codes are ISO 3166-2 (`GB-EDH`, `GB-CRF`). Use `custom` with a
`customRule` for any other levy: a percentage or a flat amount per person per
night, with an optional night cap (`maxNights`), a long-stay exemption
(`exemptOverNights`) and whether under-18s count.

## How a stay is levied

- **Which rule:** the one in force on the arrival date, for the stay's
  accommodation type. Edinburgh's guidance says a stay that began before 24
  July 2026 is not liable even for the nights after that date, and this
  applies the same "by arrival" logic to every locality.
- **Percentage levies** are taken of the sum of the levied nights'
  accommodation charges and rounded half-up once. `nightlyCharges` must be
  the accommodation-only amount for each night: without VAT, and without meals,
  drinks, parking, laundry, entertainment or transport, which the Scottish Act
  (s5(3)) excludes. When a room rate includes breakfast, apportioning it is the
  caller's job.
- **Flat levies** are the amount x liable people x levied nights. `adults`
  and `children` (under 18 on the first night) are the guests entitled to stay.
- **Exemptions** for individuals (Scotland's exemptions for people receiving
  certain disability benefits, s14 of the 2024 Act; people with no usual
  residence) are the caller's decision: leave those people out of the count, or
  do not call this for an exempt booking.

## Not covered

- **VAT on the levy.** Cardiff Council says its levy is subject to VAT. HMRC's
  treatment is not modelled here. The levy returned is before any VAT on it.
- **Cancellations and refunds** (a levy collected on a cancelled booking is
  refunded, not remitted) and when to collect the levy.
- Returns to the council or the Welsh Revenue Authority.

## Dated data and pruning

The rows have `validFrom`/`validTo` and are pruned by `history=`. In a pruned
build, an arrival date before a locality's earliest surviving row is refused
with an explanation rather than reported as "not in force".

## Sources

- Visitor Levy (Scotland) Act 2024 (asp 8), s5 (calculation on the
  accommodation portion) and s14 (exemptions):
  https://www.legislation.gov.uk/asp/2024/8 ; amended by the Visitor Levy
  (Amendment) (Scotland) Act 2026 (asp 18).
- City of Edinburgh Council, *The Scheme for the Edinburgh Visitor Levy*:
  https://www.edinburgh.gov.uk/business/scheme-edinburgh-visitor-levy/2 (5%,
  five consecutive nights, stays from 24 July 2026, bookings made on or after
  1 October 2025, and the exemption for bookings paid before then).
- City of Edinburgh Council, *Edinburgh Visitor Levy Scheme: Information for
  accommodation providers*, version 2, August 2026:
  https://www.edinburgh.gov.uk/visitorlevyinformation ("5% of the
  accommodation only portion of the transaction, net of VAT"; stays commencing
  before 24 July 2026 not liable; the 5-night cap per chargeable transaction).
- Visitor Accommodation (Register and Levy) Etc. (Wales) Act 2025 (asc 5), Part
  3: s29 (overnight stays; no levy where every person is entitled to stay more
  than 31 nights), s31 (leviable nights; under-18s disregarded at the lower
  rate), s32 (rates £0.75 and £1.30), s33 (which rate applies):
  https://www.legislation.gov.uk/asc/2025/5/contents
- Welsh Government, *Check if a local council charges Visitor Levy in Wales*:
  https://www.gov.wales/check-if-local-council-charges-visitor-levy-wales
  (Cardiff from 1 April 2027), and *Rates of the levy*:
  https://www.gov.wales/visitor-levy-for-visitor-accommodation-providers-technical-guidance-rates-levy-html

## Notices

Contains public sector information licensed under the Open Government
Licence v3.0 (https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/).

Legislation: Crown copyright and database right.

1.0.1 adds its attribution notices (NOTICE). The code and the tests are unchanged.