Visitor Levy Calculator
Fundamentalsedinburgh

Cleaning Fees and the Edinburgh Visitor Levy

Cleaning fees aren't automatically excluded from the Edinburgh Visitor Levy base — how mandatory and optional cleaning charges are classified, and when a booking needs your review.

By Visitor Levy Calculator TeamPublished 17 Aug 20264 min read
Last reviewed: 20 Sep 2026. Official references are linked below. How we review guidance

It's tempting to assume a cleaning fee is simply never part of the Visitor Levy calculation. It isn't that simple, and treating it as a blanket exclusion can understate what's actually owed. What matters is what the charge actually is: a mandatory cleaning or changeover charge that's genuinely part of the cost of staying can form part of the taxable accommodation amount, while a genuinely optional, separately-offered service can be excluded. This guide covers how our calculation engine draws that line, and what happens when your data doesn't make it clear.

Mandatory vs optional — why it matters

The levy is a percentage of what a guest pays for accommodation — the right to stay in the property. A cleaning or changeover charge that every guest is required to pay as part of booking the stay is, in substance, part of that accommodation price, however it's itemised on an invoice. A genuinely optional extra — a service a guest can decline, or one charged separately from the accommodation itself — isn't.

Our engine reflects that distinction directly: cleaning_amount on a booking carries a classification, and only the portion identified as mandatory is added into the levy base (levy_base_components.mandatory_cleaning). A cleaning charge classified as optional is excluded, alongside platform fees and other genuinely separate extras.

When the classification isn't known

Most booking exports and manual entries don't say outright whether a cleaning fee is mandatory or optional — it's often just a number in a column. When our engine can't establish the classification from the data it's given, it doesn't guess in either direction. The fee is excluded from the levy base for now, the calculation is flagged requires review, and the explanation says so plainly, for example:

"The cleaning fee on this booking has no mandatory/optional classification — excluded from the levy base pending review; this may understate the levy due if it is in fact a standard/mandatory charge."

That's a deliberate choice: excluding an unclassified fee and flagging it beats silently including or excluding it and being wrong either way. Resolving the flag — confirming whether that specific charge is mandatory or optional — is what turns an uncertain figure into a calculated one.

Where this matters practically

  • CSV/XLSX import mapping. If your export breaks out a cleaning fee as its own column, map it to the cleaning_amount canonical field rather than folding it into accommodation_amount — that's what lets the engine classify it at all, instead of taxing (or silently excluding) an undifferentiated total.
  • Manual booking entry. The same distinction applies when entering a booking by hand — accommodation charge and cleaning fee are separate fields, and if you know the cleaning charge is a mandatory part of the booking, say so rather than leaving it unclassified.
  • Data quality checks. The net_vs_gross_confusion check verifies that accommodation_amount + vat_amount + cleaning_amount + extras_amount sums to the recorded gross_amount within a small tolerance — a useful signal that a fee has been folded into the wrong figure.

What happens if your export doesn't break cleaning out separately

Not every booking platform's export itemises cleaning fees as their own line for every booking. When that's genuinely the case, mapping a combined "total charged" figure entirely to accommodation_amount risks taxing a fee that should have been excluded or partially included — check whether a more detailed export is available before assuming a combined total is unavoidable. If it isn't, keep the cleaning portion separate wherever you can, and expect bookings with an unclassified cleaning fee to be flagged for review rather than calculated silently.

The short version

A mandatory cleaning or changeover charge can count toward the levy; a genuinely optional one doesn't. Where our engine can't tell which applies, it excludes the fee, flags the booking for review, and says exactly why — it never guesses.

Official sources

See the exact figure for your own booking

Use the free calculator to work out the Visitor Levy for a real stay, with the full step-by-step breakdown — or create a free account to import bookings and prepare a full quarterly return.