Subscriptions let you sell ongoing access with automated renewals. Use flexible billing cycles, free trials, plan changes, and add‑ons to tailor pricing for each customer.
Upgrade & Downgrade
Control plan changes with proration and quantity updates.
On‑Demand Subscriptions
Authorize a mandate now and charge later with custom amounts.
Customer Portal
Let customers manage plans, billing, and cancellations.
Subscription Webhooks
React to lifecycle events like created, renewed, and canceled.
What Are Subscriptions?
Subscriptions are recurring products customers purchase on a schedule. They’re ideal for:- SaaS licenses: Apps, APIs, or platform access
- Memberships: Communities, programs, or clubs
- Digital content: Courses, media, or premium content
- Support plans: SLAs, success packages, or maintenance
Key Benefits
- Predictable revenue: Recurring billing with automated renewals
- Flexible cycles: Monthly, annual, custom intervals, and trials
- Plan agility: Proration for upgrades and downgrades
- Add‑ons and seats: Attach optional, quantifiable upgrades
- Seamless checkout: Hosted checkout and customer portal
- Developer-first: Clear APIs for creation, changes, and usage tracking
Creating Subscriptions
Create subscription products in your Dodo Payments dashboard, then sell them through checkout or your API. Separating products from active subscriptions lets you version pricing, attach add‑ons, and track performance independently.Subscription product creation
Configure the fields in the dashboard to define how your subscription sells, renews, and bills. The sections below map directly to what you see in the creation form.Product details
- Product Name (required): The display name shown in checkout, customer portal, and invoices.
- Product Description (required): A clear value statement that appears in checkout and invoices.
- Product Image (required): PNG/JPG/WebP up to 3 MB. Used on checkout and invoices.
- Brand: Associate the product with a specific brand for theming and emails.
- Tax Category (required): Choose the category (for example, SaaS) to determine tax rules.
Pricing
- Pricing Type: Subscription(このガイド)を選択します。代替 विकल्पは Single Payment と Usage Based Billing です。
- Price(必須): 通貨を含む基本の継続価格。価格は**$1**以上(または選択した通貨での相当額)である必要があります。この最低額未満はサポートされないため、サブスクリプションは機能しません。
- Discount Applicable (%): 基本価格に適用する任意の割引率。チェックアウトと請求書に反映されます。
- Repeat payment every(必須): 更新間隔(例: 1 Month ごと)。間隔(months または years)と数量を選択します。
- Subscription Period(必須): サブスクリプションが有効である総期間(例: 10 Years)。この期間が終了すると、延長されない限り更新は停止します。
- Trial Period Days(必須): トライアル期間を日数で設定します。トライアルを無効にするには 0 を使用します。トライアル終了時に最初の請求が自動的に行われます。
- Trial Amount: 有料トライアルの任意の前払い料金。無料トライアルの場合は未設定のままにします。Paid Trials を参照してください。
- Select add‑on: 顧客が基本プランと一緒に購入できるアドオンを最大 10 個まで追加します。
Add‑ons are ideal for quantifiable extras such as seats or storage. You can control allowed quantities and proration behavior when customers change them.
Advanced settings
- Tax Inclusive Pricing: Display prices inclusive of applicable taxes. Final tax calculation still varies by customer location.
- Generate license keys: Issue a unique key to each customer after purchase. See the License Keys guide.
- Digital Product Delivery: Deliver files or content automatically after purchase. Learn more in Digital Product Delivery.
- Metadata: Attach custom key–value pairs for internal tagging or client integrations. See Metadata.
Subscription Trials
トライアルを利用すると、顧客は継続料金全額を支払う前にサブスクリプションを評価できます。トライアルには、終了まで料金が発生しない無料トライアルと、前払いで減額料金を請求する有料トライアルがあります。どちらの場合も、トライアル終了後の最初の更新から全額が適用されます。Configuring Trials
Set Trial Period Days in the product pricing section (use0 to disable). You can override this when creating subscriptions:
Paid Trials
トライアルは無料である必要はありません。サブスクリプション商品の継続価格にTrial Amountを設定すると、トライアル期間に減額された前払い料金を請求できます。その後、最初の更新時から通常の継続価格が適用されます。
trial_amount と trial_period_days を返すため、サブスクリプション作成前に本日支払う金額を表示できます。
無料トライアルの動作は変わりません。Trial Amountを未設定にすると、従来どおり最初の請求は
0 となり、トライアル終了時に全額が請求されます。トライアルの不正利用を防止する
Prevent Trial Misuse は、同じビジネスに対して顧客がトライアルを繰り返し申し込むことを防ぎます。有効にすると、すでにトライアルを利用した顧客は、新しいトライアルを受ける代わりに自動的に有料・トライアルなしの購入へ変更されます。
- 顧客は正規化されたメールアドレスで照合され、plus エイリアスは除去されます。そのため
user+trial@example.comとuser@example.comは同一人物として扱われます。 - 利用記録はトライアル有効化時に保存されるため、同日にキャンセルした顧客もトライアルを消費したものとして扱われます。
- 既存顧客については、過去のトライアル履歴がメールアドレスでバックフィルされるため、過去のトライアル利用者もすぐに認識されます。
この設定はデフォルトでオフです。ビジネス単位のサブスクリプション制御の一覧については、Subscription Settings を参照してください。
トライアル状態の検出
無料トライアルのサブスクリプションがトライアル中かどうかを確認するには、サブスクリプションの payments 一覧を取得します。金額が 0 の payment がちょうど 1 件ある場合、サブスクリプションはトライアル期間中です。トライアル期間の更新
next_billing_date を更新してトライアルを延長します。
サブスクリプションプランの変更
プラン変更では、サブスクリプションのアップグレードやダウングレード、数量の調整、別の商品への移行ができます。選択した日割り計算モードによっては、変更時に即時請求が発生したり、クレジットが作成されたり、請求調整が行われなかったりします。Product Collections
関連商品をコレクションにまとめると、Customer Portal でスムーズなアップグレード/ダウングレード経路を有効にできます。
日割り計算モード
プラン変更時の顧客への請求方法を選択します。4 つの日割り計算モードの比較:
prorated_immediately
現在の請求サイクルの残り時間に基づいて日割り金額を請求します。未使用期間を考慮した公平な請求に適しています。
difference_immediately
価格差額を即時に請求(アップグレード)するか、今後の更新に使用するクレジットを追加(ダウングレード)します。シンプルなアップグレード/ダウングレードに適しています。
difference_immediately を使用したダウングレードのクレジットはサブスクリプション単位で管理され、今後の更新に自動適用されます。Credit-Based Billing の特典とは異なります。difference_immediately でダウングレードすると、未使用分がサブスクリプション単位のクレジットとなり、今後の更新に自動的に充当されます。
full_immediately
残り時間を考慮せず、新プランの全額を即時請求します。請求サイクルのリセットに適しています。
do_not_bill
請求調整なしで新プランに切り替えます。日割り請求もクレジットもなく、顧客はそのまま新プランへ移行します。特別対応による移行、無料プランへの切り替え、価格差額を事業者が負担する場合に適しています。
Example: Prorated upgrade calculation
Example: Prorated upgrade calculation
シナリオ: Basic(80/月)へアップグレードします。次回更新日は2 月 15 日(1 月 16 日 + 30 日)で、料金は**$80.00/月**です。
Example: Downgrade credit calculation
Example: Downgrade credit calculation
シナリオ: Pro(20/月)へダウングレードします。$60 のクレジットが今後の更新に自動適用されます。
- 更新 1: 20(クレジット)= **40)
- 更新 2: 20(クレジット)= **20)
- 更新 3: 20(クレジット)= $0.00(クレジット消化)
- 更新 4: $20.00(全額)
クレジットの管理方法については、Upgrade & Downgrade Guide を参照してください。
アドオン付きプランの変更
プラン変更時にアドオンを変更できます。アドオンは日割り計算に含まれます。プラン変更では即時請求が発生します。請求に失敗すると、サブスクリプションが
on_hold 状態になることがあります。変更は subscription.plan_changed webhook event で追跡してください。プラン変更のプレビュー
プラン変更を確定する前に、正確な請求額と変更後のサブスクリプションをプレビューします。Preview Change Plan API
確定する前にプラン変更をプレビューします。
サブスクリプションの状態
サブスクリプションは存続期間中、定義された一連の状態を遷移します。この表は、各状態、その原因、復旧可能かどうか、復旧方法または次の手順を示します。状態機械
On Hold 状態
サブスクリプションは、次の場合にon_hold 状態になります。
- 更新 payment に失敗した(残高不足、カード期限切れなど)
- プラン変更の請求に失敗した
- 支払い方法の認証に失敗した
On Hold からの再有効化
サブスクリプションをon_hold 状態から再有効化するには、支払い方法を更新します。これにより自動的に次の処理が行われます。
- 未払い残額の請求を作成
- 請求書を生成
- 新しい支払い方法で payment を処理
- payment 成功時にサブスクリプションを
active状態へ再有効化
on_hold のサブスクリプションについて支払い方法の更新に成功すると、payment.succeeded に続いて subscription.active webhook event が届きます。遷移ごとの Webhook Events
各遷移では webhook が発行されるため、ポーリングなしで entitlement ロジックを実行できます。Subscription Webhook Payloads
サブスクリプションのライフサイクルイベントについて、完全な payload schema を確認してください。
API 管理
Create subscriptions
Create subscriptions
POST /subscriptions を使用すると、任意のトライアルとアドオンを含め、商品からプログラムでサブスクリプションを作成できます。API Reference
サブスクリプション作成 API を確認してください。
Update subscriptions
Update subscriptions
PATCH /subscriptions/{id} を使用して数量の更新、次回請求日のキャンセル、metadata の変更を行います。API Reference
サブスクリプション詳細の更新方法を確認してください。
Change plans (proration)
Change plans (proration)
日割り計算の制御を使用して、現在の商品と数量を変更します。
API Reference
プラン変更のオプションを確認してください。
On‑demand charges
On‑demand charges
オンデマンドサブスクリプションでは、必要に応じて指定した金額を請求します。
API Reference
オンデマンドサブスクリプションに請求します。
List and retrieve
List and retrieve
GET /subscriptions ですべてのサブスクリプションを一覧表示し、GET /subscriptions/{id} で 1 件を取得します。API Reference
一覧表示および取得 API を確認してください。
Usage history
Usage history
従量制またはハイブリッド価格モデルで記録された usage を取得します。
API Reference
Usage history API を参照してください。
Update payment method
Update payment method
サブスクリプションの支払い方法を更新します。有効なサブスクリプションでは、今後の更新に使用する支払い方法が更新されます。
on_hold 状態のサブスクリプションでは、未払い残額の請求を作成して再有効化します。新しい payment-method link(New request type)を生成する際、allowed_payment_method_types を渡すと、そのページで顧客に表示する支払い方法を制限できます。顧客にはリストにない方法は表示されません。ただし、方法を含めても表示が保証されるわけではありません(利用可能性は顧客の所在地やビジネス設定などにも依存します)。API Reference
支払い方法の更新とサブスクリプションの再有効化について確認してください。
一般的なユースケース
- SaaS と API: シート数や usage に対応したアドオン付きの段階的アクセス
- コンテンツとメディア: 導入トライアル付きの月額アクセス
- B2B サポートプラン: プレミアムサポートアドオン付きの年間契約
- ツールとプラグイン: license key とバージョン管理されたリリース
統合例
Checkout Sessions(サブスクリプション)
checkout session を作成する際は、サブスクリプション商品と任意のアドオンを含めます。日割り計算を使用したプラン変更
サブスクリプションをアップグレードまたはダウングレードし、日割り計算の動作を制御します。次回請求日にキャンセル
現在の請求期間の終了時に有効になるキャンセルを予約します。サブスクリプション期間の延長
新しいsubscription_period_count と subscription_period_interval を PATCH /subscriptions/{id} に渡して、サブスクリプションの継続期間を延長します。新しい count と interval に基づいて有効期限が再計算されます。たとえば、現在のプランに追加期間を付与する場合に使用できます。
サブスクリプション期間は延長のみ可能で、短縮することはできません。
オンデマンドサブスクリプション
オンデマンドサブスクリプションを作成し、必要に応じて後から請求します。有効なサブスクリプションの支払い方法を更新
有効なサブスクリプションの支払い方法を更新します。on_hold のサブスクリプションを再有効化
支払い失敗により on hold になったサブスクリプションを再有効化します。RBI 準拠の Mandate を使用したサブスクリプション
UPI とインドのカードによるサブスクリプションは、特定の mandate 要件を定めた RBI(Reserve Bank of India)規制に従って運用されます。Mandate の上限
mandate の種類と金額は、サブスクリプションの継続料金によって決まります。- mandate 下限(デフォルト ₹15,000)未満の請求: 下限額のオンデマンド mandate を作成します。サブスクリプション金額は、mandate 上限まで、サブスクリプション頻度に応じて定期的に請求されます。
- mandate 下限以上の請求: サブスクリプション金額と同額の subscription mandate(またはオンデマンド mandate)を作成します。
mandate_min_amount_inr_paise(INR paise)を使用して merchant 単位または request 単位で設定できます。銀行に登録される金額は max(mandate_floor, billing_amount) です。そのため、請求額が低い場合、下限が実質的に顧客向けの認証上限になります。
RBI 準拠の mandate と、インドの支払い方法で設定可能な mandate 下限の詳細については、India Payment Methods ページを参照してください。
アップグレードとダウングレードに関する考慮事項
重要: サブスクリプションをアップグレードまたはダウングレードする場合は、mandate の上限を慎重に考慮してください。- アップグレードまたはダウングレードによる請求額が Rs 15,000 を超え、既存のオンデマンド payment limit を上回る場合、transaction charge に失敗する可能性があります。
- この場合、顧客は支払い方法を更新するか、正しい上限の新しい mandate を設定するためにサブスクリプションを再度変更する必要があります。
高額請求の認証
Rs 15,000 以上のサブスクリプション請求については、次のようになります。- 顧客には、銀行から transaction の認証を求める通知が表示されます。
- 顧客が transaction を認証できない場合、transaction は失敗し、サブスクリプションは on hold になります。
48 時間の処理遅延
処理タイムライン: インドのカードおよび UPI サブスクリプションの継続請求には、独自の処理パターンがあります。- 請求は、サブスクリプション頻度に従って予定日に開始されます。
- 顧客口座からの実際の引き落としは、payment 開始から48 時間後にのみ行われます。
- この 48 時間の期間は、銀行 API の応答によってさらに 2~3 時間延長される場合があります。
Mandate のキャンセル可能期間
48 時間の処理期間中は、次のことが可能です。- 顧客は banking app から mandate をキャンセルできます。
- この期間中に顧客が mandate をキャンセルしても、サブスクリプションは有効なままです(これはインドのカードおよび UPI AutoPay サブスクリプション固有のエッジケースです)。
- ただし、実際の引き落としは失敗する可能性があり、その場合サブスクリプションはon holdになります。
- payment 確認まで特典の有効化を遅延する
- grace period または一時的なアクセスを実装する
- mandate のキャンセルについてサブスクリプション状態を監視する
- アプリケーションロジックでサブスクリプションの hold 状態を処理する
ベストプラクティス
- 明確なティアから始める: 違いが明確な 2~3 個のプラン
- 価格を明示する: 合計額、日割り計算、次回更新を表示する
- トライアルを適切に使用する: 期間だけでなくオンボーディングで転換を促す
- アドオンを活用する: 基本プランをシンプルに保ち、追加機能をアップセルする
- 変更をテストする: test mode でプラン変更と日割り計算を検証する
サブスクリプションは、継続収益のための柔軟な基盤です。シンプルに始め、十分にテストし、導入率、解約率、拡張指標に基づいて改善を繰り返してください。