> ## Documentation Index
> Fetch the complete documentation index at: https://supastack.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For the full documentation corpus in one file, fetch: https://supastack.dev/llms-full.txt

# 支払いとサブスクリプション

Stripe チェックアウト、プラン管理、エンタイトルメントの境界。

## 支払いサービスを選択してテストする

Billing は支払いを処理します。アクセス許可は資格として個別に保存されます。永続的なアカウントのセットアップを完了し、実行中の Web アプリで /billing を開いてプラン インターフェイスを表示します。 BILLING_PROVIDER=local を使用すると、実際のお金を集めるのではなく、地域の行動を調査することになります。

サポートされている支払いプロバイダーを 1 つ選択し、そのセットアップ ガイドに従い、独自のテスト製品と価格を作成し、指定されたサーバー設定を apps/web/.env.local. にコピーします。 Web サーバーを保存して再起動します。そのプロバイダーのサンドボックス指示を使用して 1 つのチェックアウトを完了し、プロバイダーの Webhook が到着した後にワークスペースのアクセス状態を検査します。 Webhook は、支払いイベントに関するサーバーへのプロバイダーの署名付きメッセージです。

成功ページだけでは機能のロックが解除されません。チェックアウトが完了してもアクセスが非アクティブなままの場合は、支払いを繰り返す前に、プロバイダーの Webhook 配信とサーバーのイベント処理を確認してください。テストのキャンセルとアクセスの期限切れも同様です。電話での購入には、この Web チェックアウトではなく、別の RevenueCat/ストア セットアップが使用されます。

[課金アダプターとその設定を選択](https://supastack.dev/ja/docs/modules/billing-configuration.md)

[独自の商品と価格を設定](https://supastack.dev/ja/docs/web/project-structure.md)

[テスト環境でStripeをセットアップする](https://supastack.dev/ja/docs/web/setup-payments.md)


## Web 課金

Web アプリケーションは、BILLING_PROVIDER で選択した課金プロバイダーをサポートします。ストライプも選択肢のひとつです。 Web プランとサブスクリプション管理については、/billing を開きます。選択したプロバイダーのガイドに従って、サーバー専用の資格情報、製品 ID または価格 ID、および一致するテスト環境またはライブ環境での Webhook 検証設定を設定します。


## 権限で認可する

チェックアウトリダイレクトはアクティブなアクセスの証明ではありません。サーバー権限がワークスペースが有料能力を使えるかを決めます。インターフェースがすでにアクションを隠していても、アクション境界でその権限をチェックしてください。


## ライフサイクルを検証する

サンドボックスイベントで有効化、更新、キャンセル、webhook 処理を検証します。繰り返しイベントを安全に保ち、非アクティブな権限が有料操作をブロックすることを確認します。ネイティブモバイル購入は別の RevenueCat 統合境界のままです。


## インストールとセットアップ

プランカタログは src/product-plans.ts にあり、/billing サーフェスと /choose-plan オンボーディングステップを駆動します。課金は BILLING_PROVIDER=stripe、STRIPE_SECRET_KEY、各プランとインターバルの price id、STRRIPE_WEBHOOK_SECRET でサーバーサイドに設定します。Lemon Squeezy は代替アダプターとして利用できます。

シート単位のプランは編集可能なシートステッパー（src/seat-count.ts）を使用し、数量がチェックアウトセッションに渡されるため請求シート数とワークスペースが一致します。また src/product-plans.ts で meteredUsage を宣言すると、毎時の billing.usage-report ジョブが usage_counter の差分を Stripe の請求メーターへ送信し、ワークスペース所有者は「設定 → 使用状況」（src/usage-meters.ts の USAGE_METERS）で月次 AI 予算とメーターごとの上限を設定できます。

```
Checkout: POST /api/billing/checkout
Portal:   POST /api/billing/portal
Webhook:  POST /api/billing/webhook  (signature-verified)
```


## 実装ワークフロー

チェックアウトのリダイレクトは単なる保留中の意図です — 署名付き webhook が到着し、サーバー所有のエンタイトルメントが更新されたときにアクセスが変わります。UI がすでに隠していても、有料アクションはサーバー境界のエンタイトルメントチェック(entitlement-gate.tsx / entitlement-check.ts)でゲートしてください。

カスタマーポータルがプラン変更、キャンセル、支払い方法を管理します。サブスクリプション状態はワークスペースメンバーが読める状態に保ち、ネイティブモバイル購入は別の RevenueCat 境界の後ろに置いてください。


## 次へ

[データベースとマイグレーション](https://supastack.dev/ja/docs/web/database.md)
