Visitor Levy Calculator
Platformsedinburgh

Airbnb Hosts and the Edinburgh Visitor Levy

How to get Edinburgh Visitor Levy figures right from an Airbnb export, including the gross-versus-net payout trap and how a cleaning fee gets classified for the levy base.

By Visitor Levy Calculator TeamPublished 17 Aug 20264 min read
Last reviewed: 20 Sep 2026. Product workflow guidance. How we review guidance

Airbnb exports can contain several different totals for a booking. Choosing the accommodation amount correctly matters before comparing any tax collected. For the separate tax-report workflow, see Airbnb Visitor Levy reconciliation.

Gross earnings vs. net payout — the single biggest source of errors

Airbnb's own exports and dashboards report several different totals for the same booking, and it's easy to grab the wrong one. The levy has to be calculated on the gross accommodation charge — what the guest was actually charged for the accommodation, before any deductions. What you should not use is a "paid out," "payout" or "amount received" figure — those are typically what's left after Airbnb's host service fee and sometimes other deductions have already been taken out, and using a net figure as your accommodation amount understates the levy base.

Our mapper warns about payout/net columns. It keeps Gross earnings in the gross-total field by default because that figure may include cleaning, extras or tax. Supply or explicitly confirm an accommodation-only column before continuing. If you manually map gross earnings to accommodation, a warning asks you to check the contents and avoid counting fees twice. Header suggestions do not establish the tax treatment of the amounts.

Cleaning fees need their own column, so they can be classified

Airbnb typically itemises a cleaning fee separately from the nightly accommodation charge. Whether that fee counts toward the levy depends on whether it's a mandatory part of the booking or a genuinely optional charge — see Cleaning fees and the Visitor Levy for the full detail. Folding it into a combined total removes the engine's ability to classify it at all, so when mapping an Airbnb export, make sure any cleaning fee column is mapped to the cleaning_amount canonical field rather than left inside accommodation_amount. If the classification can't be determined from your export, expect the booking to be flagged for review rather than calculated with a guess.

No live Airbnb connection — and that's deliberate

We don't have, and don't offer, a "connect your Airbnb account" OAuth integration that syncs bookings automatically. The only way booking data gets into the product is by you exporting a CSV or XLSX file from Airbnb and uploading or pasting it in — either through the primary in-browser import flow, or the legacy bulk upload path for larger, server-side imports. Source detection recognises an Airbnb-shaped export from its header pattern and labels it accordingly, but that's a formatting heuristic, not evidence of any live API relationship with Airbnb. If a future version of the product adds a live sync, that would be a materially different capability from what exists today.

Guest data isn't part of this either way

Airbnb exports typically include guest names and sometimes contact details. None of that has anywhere to go in our system — there is no guest name, email or phone field anywhere in the booking data model, in the import mapping, or in manual entry. If a column in your export maps to one of those concepts, it simply can't be mapped to anything; whatever it contains is discarded during processing rather than stored.

The practical checklist for an Airbnb import

  1. Confirm the column you're mapping to accommodation_amount is a gross figure, not a payout/net figure — watch for our mapping warning, but check for yourself too.
  2. Map cleaning fees to cleaning_amount, not into the accommodation total, so they can be classified correctly.
  3. Map any Airbnb service fee or platform commission to platform_fee if it's broken out separately.
  4. Leave anything guest-identifying unmapped — it won't be stored regardless.
  5. After import, check Return Readiness for any bookings flagged for review before treating a period as complete.

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.