Stripe は『SaaS 決済の事実上の標準』
Stripe は世界中の SaaS で広く採用される決済プラットフォームです。本記事では編集部の視点で、設計の要点を公開情報をもとに整理します。SaaSプライシング設計 もご参考に。
主要なオブジェクト
(1) Customer:顧客。(2) Product / Price:商品と価格。(3) Subscription:継続課金。(4) Invoice:請求書。(5) PaymentIntent:支払いの状態管理。これらの関係を理解するとデバッグが楽になります。
サブスクリプション設計
(1) Price ベース:月額/年額の Price を作成。(2) Trial 期間:14〜30日。(3) Proration:プラン変更時の日割り。(4) Tax 計算:Stripe Tax で自動化可能。(5) Coupon / Discount:マーケ施策用。SaaSプライシング設計 もご参考に。
Webhook の取り扱い
(1) checkout.session.completed:購入完了。(2) customer.subscription.created/updated/deleted。(3) invoice.payment_succeeded/failed。(4) 署名検証必須:stripe-signature ヘッダ。(5) 冪等性:event id で重複排除。Webhook 設計 もご参考に。
マルチテナント設計
(1) Customer メタデータ:tenant_id を保持。(2) Connect:プラットフォーム型(他社の決済を仲介)。(3) マルチ通貨:地域別 Price。(4> 請求書のブランディング:Connect で。(5) レポーティング:tenant ごとの集計。
Tax (消費税) 対応
(1) Stripe Tax:自動計算。(2) 日本のインボイス制度対応。(3) 国別 VAT:EU/UK/オーストラリア。(4) 非課税の判定:B2B/B2C。(5) 個別判断は税理士に。副業税務ガイド もご参考に。
失敗時の対応
(1) カード失効:自動メール+リトライ。(2) 3D Secure:強制認証。(3) Disputes (チャージバック):理由別の対応。(4) Smart Retries:失敗時の自動再試行。(5) Dunning:未払い対応フロー。
失敗しがちなパターン
(1) Webhook 署名検証なし。(2) テスト環境と本番混在:別キー使用。(3) 失敗時のロールバックなし:DB不整合。(4) 請求書のメールが届かない:受信ドメイン設定。(5) 解約フロー複雑:規制違反リスク。対策は、(1)署名必須、(2)環境分離、(3)冪等性、(4)送信ドメイン認証、(5)1クリック解約、です。