差額課金のロジック

AppCotton では、既存ライセンスを上位プランへ変更する際に、
「プランの価格差」だけを追加で支払う 方式を採用しています。
これにより、ユーザーは最初から高額なプランを購入する必要がなく、
必要に応じて段階的に利用枠を拡張できます。


差額課金の考え方

差額課金はとてもシンプルです。

差額 = 上位プランの価格 − 現在プランの価格

日割り計算や残存期間計算は行いません。
追加料金のみ支払われれば、上位プランが即時反映されます。

プラン名サイト上限価格
Standard3サイト¥7,800
Pro5サイト¥12,000
差額 = ¥12,000 - ¥7,800 = ¥4,200

ユーザーは ¥4,200 のみ追加支払い すれば Pro プランにアップグレードできます。


差額の算出ロジック(明確な定義)

1. 価格は「プランに定義された基準価格」を参照

プランデータ:

price: 7800

など、保存されている数値そのままを使用します。

2. 無制限 = -1 は、制限無しとして扱うが計算は通常通り

Standard (¥7,800) → Unlimited (¥24,000)
差額 = ¥24,000 - ¥7,800

3. 差額が 0 以下となる場合

差額 ≤ 0 のとき → アップグレードは提供しない

(同一プラン / 下位プランへは変更不可)


Stripe 決済フロー

ユーザー操作:アップグレード開始
↓
AppCotton:差額を計算 → Stripe Checkout Session を作成
↓
ユーザー:Stripe 決済画面で支払い
↓
Stripe:checkout.session.completed Webhook をAppCottonへ送信
↓
AppCotton:ライセンス情報を更新(plan_id / activation_limit)
↓
マイライセンス画面に即時反映

※ ライセンスの更新は Webhook によってのみ確定 します。
→ 冪等性(一回だけ確定)はここで保証されます。


アップグレード時に変わるもの / 変わらないもの

項目アップグレード後説明
plan_id新しいプランに更新上位プランへ切り替え
activation_limit新しい上限に更新利用枠が増える
使用中のドメイン変わらない既存サイトはそのまま使える
ライセンスキー変わらない再発行不要
有効期限変わらない有効期限は購入時のまま

差額課金に関するよくある質問

質問回答
追加で支払った後、元のプランに戻せますか?不可(上位プランは一方向)
プラン変更後にサイトが使えなくなることはありますか?ありません(既存アクティベーションは維持されます)
プラン差額に割引やクーポンは適用されますか?Stripe 側で設定すれば適用可能です
まとめ払い / 複数ライセンスの同時アップグレードは?現時点では 1 ライセンス単位で実行します

差額課金の設計思想

この仕組みは「ユーザーの成長に合わせて自然に課金が進む」ことを前提にしています。

最初は少額 → 運用継続 → 拡張 → 自然にLTV向上

これにより

  • 初期導入ハードルが低い
  • アップセルが自動で発生しやすい
  • 顧客が継続利用しやすい(解約率低下)

という効果が得られます。


まとめ

  • 差額課金は 上位プラン価格 − 現在プラン価格 で算出する
  • 決済は Stripe Checkout
  • 反映は Webhook で確定するため手作業不要
  • 既存の使用ドメイン・ライセンスキーは保持される(途切れない)
アップグレード = ユーザーの成長を邪魔しない課金体験