AppCotton では、既存ライセンスを上位プランへ変更する際に、
「プランの価格差」だけを追加で支払う 方式を採用しています。
これにより、ユーザーは最初から高額なプランを購入する必要がなく、
必要に応じて段階的に利用枠を拡張できます。
差額課金の考え方
差額課金はとてもシンプルです。
差額 = 上位プランの価格 − 現在プランの価格
日割り計算や残存期間計算は行いません。
追加料金のみ支払われれば、上位プランが即時反映されます。
例
| プラン名 | サイト上限 | 価格 |
|---|---|---|
| Standard | 3サイト | ¥7,800 |
| Pro | 5サイト | ¥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 で確定するため手作業不要
- 既存の使用ドメイン・ライセンスキーは保持される(途切れない)
アップグレード = ユーザーの成長を邪魔しない課金体験