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