数ヶ月に一度、別のオペレーターから同じような質問が来ます。「〇〇市だと宿泊税っていくら取ればいいんだっけ?」と。そして毎回、正直な答えは「どの都市か、どの料金帯か、そして室料ベースで計算するのか総額ベースで計算するのかによる」です。この日本全国でバラバラな仕組みがあまりに面倒だったので、自分たちのためにコードを書き、それをオープンソースとして公開することにしました。

まとめ

  • 日本には全国統一の宿泊税は存在せず、都道府県・市区町村・町ごとに独自のルールで課税される。定額制の宿泊税の多くは1人1泊単位で計算されるが、定率制の自治体では現地で定義された宿泊料金を基準に計算される。例えば倶知安町では2026年4月1日から宿泊料金の3%が課税される。
  • 定額の段階制を採る自治体(東京都、大阪府)もあれば、室料に応じて税額が上がる区分制の自治体(京都市)もあり、定額ではなく定率制を採る自治体(倶知安町など)もある。
  • OTAや予約サイトからの入金には、日本の宿泊税が含まれていない場合がある。該当する宿泊施設についてプラットフォームが現地の宿泊税を徴収・納付しない場合は、登録された特別徴収義務者(多くの場合は事業者)が現地のルールに従って別途徴収・納付する必要がある。
  • よくあるミスは、判定基準となる金額が自治体ごとの「宿泊料金」の定義と一致していないこと。例えば大阪府は清掃費込みの金額を課税対象に含める一方、東京都や京都市は税抜きの室料(またはサービス料込みの室料)を基準とし、飲食代や税額は含めない、というように基準が異なる。
  • japan-stay-taxは、こうした自治体ごとのルールを情報源の日付とともにコード化したオープンソースライブラリで、事業者や開発者が一からルールを実装し直す手間を減らす。ただし税率は改定されるため、申告・納付の前には必ず公式情報源を確認してほしい。

なぜオペレーターにとって宿泊税は厄介なのか?

厄介な理由は、「宿泊税」が単一の税ではなく、地方自治体ごとのルールの寄せ集めだからです。東京都は現在、ホテル・旅館の宿泊を対象に、1泊10,000円未満は非課税、10,000円以上15,000円未満は100円、15,000円以上は200円という区分で課税しています。ただし2027年4月1日からは対象がホテル・旅館に加えて簡易宿所と民泊にも広がり、税率も宿泊料金の3%(13,000円未満は非課税)に変わることがすでに決まっています。現在非課税の東京都内の民泊も、この改定以降は課税対象になります。京都市は民泊の宿泊者を含め、宿泊するほぼすべての人を課税対象としていますが、修学旅行や一部の保育園等の宿泊行事は非課税とされており、2026年3月1日からの税額は宿泊料金に応じて6,000円未満は200円、6,000円以上20,000円未満は400円、20,000円以上50,000円未満は1,000円、50,000円以上100,000円未満は4,000円、100,000円以上は10,000円という区分です。大阪府(大阪市ではなく府単位の課税です)も段階制ですが、非課税の下限額や税額の区分は東京都とは異なります。さらに、倶知安町のように定額ではなく定率で課税する自治体もあり、新たに宿泊税を導入する自治体も次々と出てきています。一度覚えれば済むような固定リストではないのです。

1つの都市で1物件だけを運営しているなら、ルールを頭に入れておくだけで十分かもしれません。問題が起きるのは、複数の都市で物件を運営している場合や、都市が税率区分を改定した場合、あるいは現地のルールをまだ把握していない新しいスタッフがチームに加わった場合です。

なぜこれほど間違えやすいのか?

間違えやすい理由は、OTAが宿泊税を処理済みだと決めつけられない点にあります。OTAや予約サイトからの入金には、日本の宿泊税が含まれていない場合があります。該当する宿泊施設についてプラットフォームが現地の宿泊税を徴収・納付しない場合、登録された特別徴収義務者――多くの場合は事業者自身――がゲストから徴収し、自らのスケジュールと計算方法で自治体に納付する必要があります。つまり計算ロジックは、プラットフォーム側ではなく自分たちのスプレッドシートやPMS、あるいは頭の中にあることが多く、思い込みで判断せずプラットフォームと物件ごとに確認する必要があるということです。

私たちがこれまで見てきた(そして自分たちも初期にやってしまった)よくあるミスは、自治体ごとの「宿泊料金」の定義と一致しない金額を基準にしてしまうことです。これは一律のルールではありません。大阪府は清掃費込みの金額を明確に課税対象に含める一方、東京都や京都市は税抜きの室料(またはサービス料込みの室料)を基準とし、飲食代や税額は含めません。運営する自治体に合わない基準額を使うと、ゲストから過大に徴収してしまうか、自治体への納付額が不足してしまうか、どちらにせよ後で厄介な話になります。

japan-stay-taxはどう動くのか?

各自治体の宿泊税の構造(定額制、段階制、定率制)を1つのオープンソースライブラリにコード化することで動きます。計算ロジックを一度だけ定義し、自治体ごと、宿泊者ごと、スプレッドシートごとに毎回作り直すのではなく再利用できるようにしています。予約フローを構築したり、月次の申告を突き合わせたりするたびに「東京都ならA/B/Cのしきい値を確認して……」というロジックを手書きする代わりに、このライブラリを呼び出せば、その自治体に応じた正しい構造が適用されます。

GitHubで公開しています:github.com/benstaydev/japan-stay-tax。オープンソースなので、日本の短期賃貸向けに予約エンジンやPMS連携、社内の突き合わせツールを開発しているエンジニアであれば、自治体ごとのルールをゼロから実装する代わりに直接組み込むことができます。

このツールは誰向けなのか?

日本の宿泊税に関わるコードを書くすべての人が直接の対象です。複数都市で運営するホストや不動産管理会社向けに、予約システムやチャネルマネージャー、経理ツールを開発しているエンジニアなどです。もし1つの都市で1物件だけを運営しているホストなら、地元のルールを覚えているだけで十分かもしれません。それは十分にあり得る結論であり、必要のないライブラリを無理に勧めるより、正直にそう伝えたいと思います。

私たちの経験上、これがもう「あってもなくてもいい」ものではなくなるのは、2つ目の都市に進出したとき、税計算をチームの誰かに任せるとき、あるいは自動化された価格設定や請求フローを構築するときです。そうしたタイミングで、手作業で維持しているルールセットは静かに古くなっていきます。

このツールが行わないことは何か?

税の構造を計算することはできますが、代わりに申告や納付を行うことはありません。japan-stay-taxが扱うのは「どの都市のルールに基づいて、いくらになるか」という部分です。実際にゲストから税を徴収し、予約ごとに記録し、各自治体のスケジュールに従って納付する作業は、依然として別の運用プロセスとして必要です。私たちがこのライブラリで解消したかったのは「どの区分が適用されるのか分からない」という迷いであり、申告業務全体を代替するものではありません。

よくある質問

Q: 日本のすべての都市で宿泊税が課されますか?

いいえ。宿泊税は全国一律ではなく、都道府県や市区町村が任意で導入するものです。すでに導入している自治体もあれば、まだのところもあり、新たに導入する自治体も定期的に出てくるため、統一された税率やルールは存在しません。

Q: Airbnbなどのオンライン旅行代理店からの入金には宿泊税が含まれていますか?

必ずしも含まれているとは限りません。OTAや予約サイトからの入金には、日本の宿泊税が含まれていない場合があります。プラットフォームが該当施設の宿泊税を徴収・納付しない場合は、登録された徴収義務者――多くの場合は事業者――がゲストから徴収し、該当する自治体のルールに基づいて別途納付する必要があります。思い込みで判断せず、プラットフォームと物件ごとに確認してください。

Q: この税でオペレーターが最も間違えやすい点は何ですか?

よくあるのは、自治体に合わない基準額を使ってしまうことです。例えば大阪府のように清掃費を含めるべきところを税抜きの室料だけで判定してしまったり、逆に東京都や京都市のように清掃費や飲食代を含めない自治体で総額を使ってしまったりするケースです。


本記事は情報提供のみを目的としており、法律または税務上の助言を構成するものではありません。個別の状況については、専門家にご相談ください。