【2025 Advent Calendar 8日目】Stripe Tax に魂を売った話

この記事は HowTelevision Advent Calendar 2025 8日目の記事です。

qiita.com

はじめに

こんにちは、黒金セールで散財しすぎた chima91 と申します。
匿名 Q&A プラットフォームである mond の開発をやっております。

先日、mond は 月間アクティブユーザー数が1,000万人を突破 しました!

mond、月間アクティブユーザー数が1,000万人を突破
mond、月間アクティブユーザー数が1,000万人を突破

2025年1月の500万人からわずか9ヶ月で倍増し、クリエイターとファンが「問い」を通じてつながる次世代コミュニティとして急成長を続けています。

2021年のリリース以来、漫画家、作家、VTuber、インフルエンサー、研究者など多彩なクリエイターが参加し、それぞれがファンと共に「問い」を中心としたコミュニティを築いてきました。

そんな mond では現在、グローバル展開を絶賛推進中です。

課題

グローバル展開を進める過程にはいくつも課題がありますが、そのうちの1つに税務処理が挙げられます。

世界130カ国以上で税金徴収が必要とされる中、法令遵守の維持は複雑で、ビジネスが成長するほど難易度は増します。各国・各地域で税制や税率が異なるだけでなく、税法や税率は頻繁に変化し、販売商品や提供地域によっても異なります。特にデジタル商品や SaaS の場合、国や地域によって課税対象となる条件が大きく異なり、アメリカでは州ごとに税率や課税対象が変わります。これを自社のデータベースで管理するのは大変です。

さらに、納税登録のしきい値も、ヨーロッパではスペインの €0 からイギリスの £90,000 までさまざまです。アメリカでも州外販売者に対する登録しきい値が州ごとに異なり、複数の地域での登録管理が必要になります。このような要件を見逃すと、未徴収税に加え、追徴課税や延滞金のリスクが発生します。実際、アメリカでは未回収の売上税に対する利息や罰金が未払い額の30%を超えることも珍しくないそうです。

そんなわけで Stripe Tax を召喚します。

Stripe Tax とは

Stripe Tax は、売上税・VAT・GST の計算から徴収、申告までを自動化する Stripe の税務コンプライアンスソリューションです。グローバル展開を進める事業者にとって、各国・各地域で異なる複雑な税制への対応は大きな負担となりますが、Stripe Tax はこの課題を解決してくれます。

100カ国以上、600種類以上の商品に対応しており、取引が発生する場所や商品の種類に応じて適切な税額をリアルタイムで自動計算します。税率や税法の変更にも自動で対応するため、手作業での更新は不要です。納税義務の監視から申告までのプロセス全体を簡素化し、登録が必要なタイミングを自動で通知する機能も備えています。

導入も簡単で、ダッシュボードからワンクリック、またはコードを1行追加するだけ(mond の場合はちゃんとコードを書く必要がある…)で、世界中での税金徴収が可能になります。納税申告についても、信頼できるパートナーを通じた自動化や、詳細なレポートを活用した自社での対応が選択できます。税務処理の自動化により、事業者はコンプライアンスの心配から解放され、ビジネスの成長に集中できるようになります。

Stripe Tax のテスト
Stripe Tax のテスト

実装

基本的な決済フローの場合

https://docs.stripe.com/tax/custom?locale=ja-JP

ほとんどの統合では、Checkout Sessions API with Stripe Tax を使用することをお勧めします。

あるいは、Stripe Tax を Payment LinksCheckoutBillingInvoicing に導入することもできます。ノーコードまたはローコードの設定です。

基本的な決済フローだと、ほとんどコードを書かなくて済むようです。

paymentIntent を使った決済フローの場合

しかし、カスタム決済フローが Payment Intents API を使用している場合はそれなりにコードを書く必要があります。

下記のように税金を計算したり、

const calculation = await stripe.tax.calculations.create({
  currency: 'usd',
  line_items: [
    {
      amount: 1000,
      reference: 'L1',
    },
  ],
  customer_details: {
    address: {
      line1: '920 5th Ave',
      city: 'Seattle',
      state: 'WA',
      postal_code: '98104',
      country: 'US',
    },
    address_source: 'shipping',
  },
});

税取引を作成したり、



const transaction = await stripe.tax.transactions.createFromCalculation({
  calculation: '{{TAX_CALCULATION}}',
  reference: '{{PAYMENT_INTENT_ID}}',
  expand: ['line_items'],
});

tax transaction ID をデータベースまたは PaymentIntent のメタデータに保存したりしなければなりません。

まとめ

Stripe Tax を導入すれば、グローバル展開で避けて通れない税務処理の悩みから解放されます。世界各国の複雑な税制、頻繁に変わる税率、地域ごとにバラバラな登録要件…これらすべてに自動で対応してくれるので、追徴課税や延滞金に怯える必要もありません。

カスタム決済フローで Payment Intents API を使っている場合でも、税金計算や税取引作成の API をいい感じに組み込むだけなので、それほど手間はかかりません。100カ国以上に対応していて、リアルタイムで正確に税額を計算してくれる Stripe Tax は、グローバル展開の心強い味方になってくれるはずです。税務処理に頭を悩ませる時間を減らして、プロダクト開発やビジネス成長に集中できる環境を手に入れましょう。

Stripe Tax を使った税金徴収テスト
Stripe Tax を使った税金徴収テスト

おわりに

今回ご紹介した取り組みに共感いただけるエンジニアの方がいらっしゃいましたら、ぜひ私たちのチームにジョインしませんか?

カルチャー作りに一緒に取り組み、プロダクトと組織を共に育てていける仲間を募集しています。技術的な挑戦も、組織づくりへの挑戦も、どちらも楽しめる環境がここにはあります。

現在募集中の採用情報の詳細は、下記をご覧ください。

https://herp.careers/v1/howtv/requisition-groups/dfc2cc4a-edcc-49c0-9d83-b5870b734c04

2026年も mond をよろしくお願いいたします!




元の記事を確認する

関連記事