# サブスクリプション

サブスクリプションを使うと、ニュースレター、SaaS 製品、メンバーシップ、継続寄付など、提供するサービスの定期支払いを管理できます。

Bitcoin にはスケジュールに沿って顧客へ自動請求する統一的な仕組みがなく、また BTCPay Server は複数の支払い方法に対応しているため、サブスクリプションは単一の「自動引き落とし」方式に依存できません。代わりに BTCPay Server は、次の 2 つの方法で定期支払いをサポートする統一サブスクリプションシステムを提供します。

  1. 手動の定期支払い: 顧客はリマインダーを受け取った後、各請求期間ごとに支払います。
  2. 自動の定期支払い: 顧客が事前入金し、更新時に自動で差し引かれる クレジット残高モデル を使用します。

どちらの方式も同じサブスクリプションおよびプラン設定を使用するため、マーチャントは予測可能な定期課金を提供しつつ、顧客は支払い方法やサブスクリプション管理方法を柔軟に選択できます。

# 仕組み

サブスクリプションは、連携して動作する少数のコアコンポーネントで構成されます。

  • Offering(オファリング): 販売する対象(ニュースレターへのアクセス、SaaS へのアクセス、継続寄付など)を表します。
  • Plan(プラン): オファリング配下のティアです(例: Basic、Pro、Enterprise)。プランでは価格、請求間隔、更新動作、アクセスルールを定義します。
  • Subscriber(購読者): プランに登録された特定の顧客です。マーチャントは、アクセス停止、クレジット追加、手動課金、テストユーザー指定などで購読者を管理できます。
  • Customer portal(カスタマーポータル): 購読者がサブスクリプション管理、クレジット追加、プランのアップグレード/ダウングレード、請求履歴や取引履歴の確認を行える公開ページです。
  • Plan checkout(プランチェックアウト): サブスクリプションの開始または更新に使用する顧客向けページです。
  • メール(任意): 支払いリマインダーやサブスクリプション状態通知などのルールベースメールで、サーバーメールが設定されている場合に利用できます。

# 1. オファリングの作成

オファーの作成

Offering(オファリング) は、継続的に販売するサービスまたは商品を表します。1 つ以上のサブスクリプションプランを含む最上位コンテナです。関連するプランを 1 つの商品としてまとめ、次のような共通メタデータを定義します。

  • 顧客に表示される名前
  • チェックアウト後の任意の成功時リダイレクト URL
  • 各プランに割り当て可能な機能セット

最初のオファリングを作成するには:

  1. オファリングを作成するには、サイドバーで Subscriptions をクリックします。
  2. オファリング名を入力します(例: My Product)。
  3. 右上の Create ボタンをクリックします。

オファリングを作成したら、1 つ以上のプランを追加して、価格、請求間隔、サブスクリプション動作を定義します。

# 2. プランの作成

Plan(プラン) はサブスクリプションの動作を定義します。価格、請求頻度、アクセスルール、購読者がたどるサブスクリプションライフサイクルを制御します。

プランを使うと、ユーザーを Basic、Pro、Enterprise などのティアに分けつつ、課金とアクセスをきめ細かく制御できます。各オファリングには複数のプランを含められます。

プランを作成するには:

  1. Subscriptions > Offering をクリックします。
  2. Plans タブに移動します。
  3. Add Plan ボタンをクリックします。
プランの作成

# プラン設定

プランを作成または編集する際、次の項目を設定できます。

# 価格と通貨

各請求期間あたりのプラン料金と使用通貨を定義します。

# 定期間隔

プランがどの頻度で更新されるかを定義します。対応する間隔は次のとおりです。

  • 日次(Daily)
  • 週次(Weekly)
  • 月次(Monthly)
  • 買い切り(Lifetime)

買い切り(Lifetime)プランは一度だけ支払われ、更新されません。

プランの作成

# トライアル期間

トライアル期間では、定義した日数のあいだ購読者に無料アクセスを付与できます。

トライアル中:

  • 支払いは不要です。
  • 購読者はアクティブとして扱われます。
  • 課金はトライアル終了後にのみ開始されます。

# 猶予期間

猶予期間は、プランの有効期限切れ後に購読者がアクセスを維持できる期間を定義します。

更新時点で購読者の残高が不足している場合:

  • サブスクリプションは猶予期間に入ります。
  • この期間中はアクセスが継続される場合があります。
  • 購読者はアクセスを即時に失うことなく支払いまたはチャージできます。

猶予期間が終了すると、サブスクリプションは失効し、アクセスは取り消されます。

# 楽観的アクティベーション

楽観的アクティベーションを有効にすると、オンチェーン支払いは承認完了前でも即座にサブスクリプションを有効化します。

これはユーザー体験を向上させますが、次のリスクがあります。

  • 後で支払いが失敗または取り消された場合、サブスクリプションは無効化されます。
  • 手動対応が必要になる場合があります。

このオプションは、トレードオフを理解したうえでのみ有効化してください。

# 更新可否

プランは更新不可(non-renewable)として設定できます。

これは次の用途で有効です。

  • 導入向けまたはプロモーション向けプラン
  • 固定期間アクセス
  • 一度限りのオンボーディングプラン

更新不可プランは、有効期限が切れると更新できません。

# アップグレードとダウングレード

購読者にプラン間のアップグレードまたはダウングレードを許可するかを制御できます。

これにより次のことが可能です。

  • 許可するプラン遷移を定義する。
  • 非対応のダウングレードを防ぐ。
  • 定義済みのアップグレード経路へユーザーを誘導する。

# 機能

プランには、購読者が受け取るアクセス内容や機能を表す 機能(features) を定義できます。

BTCPay Server はこれらの値を保存しますが、強制はしません。機能をどのように解釈して適用するかは、あなたのアプリケーションまたはサービスの責任です。

例として、利用上限、有効化モジュール、サポートティアなどがあります。

# 3. 購読者の作成

Subscriber(購読者) は、あなたのサブスクリプションプランのいずれかに登録された顧客を表します。購読者はプランチェックアウトを通じて作成され、顧客は支払いを完了してサブスクリプションを開始します。

購読者の作成

購読者を作成するには:

  1. Offering を開きます。
  2. Subscribers タブに移動します。
  3. 右上の Create をクリックします。
  4. 購読者を登録するプランを選択します。
  5. 必要に応じて購読者のメールアドレスを入力します。
    • 空欄のままにすると、チェックアウト中に顧客へ入力が求められます。
  6. プランにトライアル期間が含まれる場合、有効化するか選択します。
  7. Create をクリックします。

BTCPay Server は プランチェックアウトページ を生成します。購読者はチェックアウト完了後にのみ作成されます。

チェックアウトリンクを顧客に共有することも、アプリケーションに組み込むこともできます。

# 4. プランチェックアウトページ

プランチェックアウト は、サブスクリプションの開始または更新に使用する支払いページです。
UI から作成することも、API を通じてプログラムから作成することもできます。プランチェックアウトが作成されると、購読者はチェックアウト完了後にのみ作成されます。

プランチェックアウト

# 5. カスタマーポータルによるサブスクリプション管理

各購読者は サブスクリプション管理ポータル(公開ページ)にアクセスでき、マーチャントの関与なしに自分のサブスクリプションを管理できます。

カスタマーポータルでは次のことができます。

  • 現在のプランとサブスクリプション状態を確認する。
  • 次回更新日や有効期限を確認する。
  • クレジット残高をチャージする。
  • 今後の請求期間分を支払う。
  • 許可されている場合にプランをアップグレード/ダウングレードする。
  • 請求履歴と取引詳細を確認する。

このポータルは、顧客が定期支払いを管理し、サブスクリプション状態を把握するための場所を提供します。

ポータルへのアクセスは通常、アプリケーションまたはサービス側で提供します(例: Manage subscriptionBilling リンク)。リンクは購読者へ直接共有することも、プログラムから生成することもできます。

# 6. 購読者管理

BTCPay Server は、プランを変更せずに購読者を管理し、例外ケースへ対応するためのツールをマーチャントに提供します。

購読者詳細ビューから、次の操作を実行できます。

購読者管理

# 購読者の停止と停止解除

購読者を停止して、サービスへのアクセスを一時的に無効化できます。

  • 停止すると、サブスクリプション状態に関係なく即座にアクセスがブロックされます。
  • 必要に応じて停止理由を設定できます(この理由はカスタマーポータルで購読者に表示できます)。
  • 停止したサブスクリプションはいつでも停止解除できます。

# クレジット追加

購読者の残高にクレジットを手動で追加できます。

これは次の用途で有効です。

  • カスタマーサポート対応としての付与
  • サービスクレジット
  • 手動での残高調整

追加したクレジットは、更新時に即座に利用できます。

# 手動課金の適用

追加利用分や単発料金について、購読者へ手動課金できます。

手動課金は購読者のクレジット残高から差し引かれ、サブスクリプション履歴に表示されます。

# テスト購読者

購読者はテスト購読者として指定できます。

テスト購読者は通常の購読者と同様に動作しますが、開発およびテスト用途を意図しており、本番データへ影響を与えずに連携を検証できます。

# 7. 自動メール

サーバーメールが設定されている場合、BTCPay Server はサブスクリプションイベントに基づいて購読者へ自動メールを送信できます。

メールルールを使うと、重要な変更や今後必要な対応を手動介入なしで購読者へ通知できます。

# メールルール

次のようなイベントでトリガーされるメールルールを定義できます。

  • サブスクリプション有効期限の接近
  • トライアル終了
  • サブスクリプション状態の変更
  • 支払いが必要である旨の通知

ルールは自動的に評価され、設定条件を満たすとメールが送信されます。

メールテンプレートは変数に対応しているため、次のようなサブスクリプション固有情報を含められます。

  • プラン名
  • 有効期限日
  • 購読者情報

これにより、サービスやコミュニケーションスタイルに合わせた高度にカスタマイズされたメッセージを作成できます。

一般的なユースケースは、プラン有効期限の 3 日前 に購読者へ支払いリマインダーを送ることです。これにより、顧客は次回請求期間のためにクレジットをチャージしたり支払いを行ったりする時間を確保できます。

# 8. サブスクリプション API アクセス

サブスクリプションは BTCPay Server の Greenfield API を使用してプログラムから管理できます。

BTCPay Server インスタンスが v2.3.0 以降 で稼働している場合、次の 2 つの方法でサブスクリプションエンドポイントを確認して利用できます。