Stripeすごく便利ですよね。
Stripeのドキュメントに定期購読の料金計算について書いてありますが、文字列から読み取るのになかなか苦労したので、備忘録は図にしてみようと思い立った記事です。(手書きの図はいつか直すかもしれない)
いろいろ指摘していただけると助かります。
本題
- 幅:インターバル
- 面積:支払い金額
購読サイクルを以下のように表すものとします。
横軸は時間で、緑の軸上の点が支払いタイミングおよび支払い金額とします。
アップグレード
以下公式より抜粋
By default, we prorate subscription changes. For example, if a customer signs up on May 1 for a ¥100 plan, she'll be billed ¥100 immediately. If on May 15 she switches to a ¥200 plan, then on June 1 she'll be billed ¥250 (¥200 for a renewal of her subscription, plus a ¥50 prorating adjustment for half of the previous month's ¥100 difference).
100円プランで開始し、期間の中間で200円のプランにアップグレードすると、200円を日割りし、残りの期間と支払っていない部分が青の箱であることがわかると思います。この青い箱の料金が次回請求時に加算され請求されます。
ここで、支払いは次回の請求時になりますが、StripeのSubscriptionのプランは即時アップグレードされます。
また、create an invoice API および pay an invoice API をコールすることにより、即時差分の料金を請求することも可能です。
ダウングレード
以下公式より抜粋
Similarly, a downgrade will generate a credit to be applied to the next invoice.
同様に、200円のプランで開始し、期間の中間で100円のプランにダウングレードすると、200円を日割りし、未使用の部分が赤の箱であることがわかると思います。この赤の箱の料金が次回支払い時に相殺されて請求されます。
アップグレードと同様に、支払いの相殺は次回請求以降となりますが、StripeのSubscriptionのプランは即時ダウングレードされます。
また高額のプランから定額のプランに移行の際に未使用額が300円、次回以降のプランが100円というような場合には、3回分の支払いで相殺され、4回目以降から請求が再開します。
このようにStripeでは相殺によって基本的に返金を行う必要がありません。解約などによって返金が必要な場合はStripeのダッシュボードから返金を行うことができるようです。
インターバルの変更
以下公式より抜粋
The exception is when you're switching between different intervals (e.g., monthly to yearly): in this case, we apply a credit for the time unused on the old plan, and charge for the new plan starting right away, resetting the billing date.
1ヶ月200円のプランでスタートし、途中で2ヶ月200円のプランに変更するとすると、200円を日割りし、未使用の部分が赤の箱であることがわかります。この赤の箱の料金が、時期プランの青の箱と相殺した金額(100円)が即時請求されます。
また、インターバルが異なるプラン変更は請求サイクルの起点日が変更時点にリセットされます。