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 を参照してください。
アドオン付きプランの変更
プラン変更時にアドオンを変更できます。アドオンは日割り計算に含まれます。デフォルトでは、
effective_at: 'immediately' プランの変更によって即時に請求が発生します。変更を次回の請求日にスケジュールするには effective_at: 'next_billing_date' を渡してください。保留中の変更はサブスクリプション上で scheduled_change として返され、スケジュール済みプラン変更をキャンセルでキャンセルできます。請求に失敗すると、サブスクリプションが on_hold ステータスに移行する場合があります。ただし on_payment_failure: 'prevent_change' を渡すと、支払いが成功するまでサブスクリプションは現在のプランに維持されます。変更は subscription.plan_changed webhook イベントで追跡できます。プラン変更のプレビュー
プラン変更を確定する前に、正確な請求額と変更後のサブスクリプションをプレビューします。Preview Change Plan API
確定する前にプラン変更をプレビューします。
サブスクリプションの一時停止と再開
一時停止すると、サブスクリプションを終了せずに凍結できます。請求が停止され、アクセスが取り消されますが、サブスクリプションのプランと履歴は保持されるため、顧客は停止した場所からそのまま再開できます。キャンセルに代わる顧客維持の手段として使用してください。 Sales → Subscriptions で任意のアクティブなサブスクリプションを開き、Pause subscription をクリックします。ステータスがpaused に変わり、サブスクリプションが再開されるまで更新が停止します。

一時停止するとどうなるか
- 更新が停止します。 サブスクリプションの一時停止中は、invoice が生成されず、更新料金の請求も試行されません。
- アクセスが直ちに取り消されます。 一時停止すると、サブスクリプションで付与済みおよび保留中のすべての entitlement grant が取り消され、license keys が無効になり、新しい digital product のダウンロード URL が発行されなくなります。再開すると、
on_holdから復旧する場合と同様に、これらが再付与されます。 - 請求時計が停止します。
next_billing_dateとexpires_atは、どちらも一時停止期間とまったく同じ長さだけ先送りされるため、顧客はすでに支払った時間を保持できます。 - 一時停止期間に制限はありません。 一時停止されたサブスクリプションは、誰かが再開するまで一時停止されたままです。あらかじめ停止期間を設定する必要はありません。
active に戻り、entitlement が復元されます。時計が停止していたため、次回の更新は当初の予定より一時停止期間分だけ後になります。たとえば、12日間一時停止したサブスクリプションは、12日遅れて更新されます。
Usage-Based Subscription の一時停止
Usage-Based subscription は、一時停止時点で記録済みだがまだ請求されていない usage を持つ場合があります。Settings → Subscriptions の Bill Usage at Pause により、その usage の処理方法を決定します。
この方法で精算されるのは meter された usage のみです。recurring base fee が一時停止時に請求されることはありません。Standard subscription と on-demand subscription には精算対象がないため、この設定は影響しません。
Bill Usage at Pause は billing cycle ごとに記録されます。cycle の途中で変更しても、すでに進行中の cycle の精算方法は変わりません。新しい値は次の cycle 以降に適用されます。
再開はこの保留状態からの有効な解決方法です。先に精算 invoice を回収する必要はありません。ただし、再開すると未払いの usage は繰り越されず免除される点に注意してください。
顧客自身によるサブスクリプションの一時停止を許可する
Settings → Subscriptions の Allow Subscription Pause は、顧客が Customer Portal から一時停止と再開を行えるかどうかを制御します。デフォルトではオフのため、セルフサービスによる一時停止はオプトインです。
Pausing from the Customer Portal
確認ダイアログを含め、顧客に表示される内容を確認できます。
API による一時停止
一時停止と再開は、update subscription endpoint の単一のpause field で行います。個別の pause endpoint はありません。
subscription.paused が発行され、再開すると subscription.unpaused が発行されます。どちらも完全な subscription object を含み、一時停止中は paused_at が設定され、再開後は null が設定されます。
一時停止とその他のサブスクリプション操作
- キャンセルは引き続き機能します。 一時停止中のサブスクリプションも、アクティブなサブスクリプションと同じ方法でキャンセルできます。実行すると、一時停止に関連する未確定の精算 invoice は voided になります。
- スケジュール済みのプラン変更は破棄されず、延期されます。 次回 billing date に予定された plan change は、サブスクリプションの一時停止中も変更されずに保持され、再開後、変更後の billing date に適用されます。その
scheduled_change.effective_atはスケジュール時点の snapshot であり、一時停止に合わせて調整されません。そのため、過去の日付が表示される場合があります。これは「予定されていた日付」と解釈し、確定した日付とはみなさないでください。変更を適用せず破棄する場合は、Cancel Scheduled Plan Change を使用してください。
Subscription States
サブスクリプションは、存続期間中に定義済みの一連の status を遷移します。この table は、すべての status、その原因、復旧方法(または復旧できるかどうか)を確認するためのリファレンスです。on_hold と paused も異なる status です。on_hold は非自発的な状態で、payment が失敗した場合に発生します。paused は意図的な状態で、あなたまたは顧客がサブスクリプションの凍結を選択した場合に発生し、一時停止中は更新が試行されません。Usage-based subscription は、一時停止時点で one-off の精算 invoice が未払いになる場合があります。Pausing Usage-Based Subscriptions を参照してください。State Machine
On Hold State
サブスクリプションは、次の場合にon_hold state になります。
- 更新 payment が失敗した(残高不足、カードの有効期限切れなど)
- plan change charge が失敗した
- payment method の authorization が失敗した
- Usage-based subscription の pause settlement invoice が未払いになった
On Hold からの再有効化
on_hold state のサブスクリプションを再有効化するには、payment method を更新します。これにより、次の処理が自動的に行われます。
- 未払い残高に対する charge を作成
- invoice を生成
- 新しい payment method を使用して payment を処理
- payment が成功すると、サブスクリプションを
activestate に再有効化
唯一の例外は、未払いの pause settlement invoice が原因で保留になっている場合です。その invoice を支払うと、サブスクリプションは
active ではなく paused に戻ります。これは、payment が失敗する前の状態が一時停止だったためです。invoice の精算後、明示的に再開してください。on_hold のサブスクリプションで payment method の更新に成功すると、payment.succeeded に続いて subscription.active webhook event が届きます。Transition ごとの Webhook Event
各 transition は webhook を発行するため、polling なしで entitlement logic を実行できます。Subscription Webhook Payloads
subscription lifecycle event の完全な payload schema を確認できます。
API Management
Create subscriptions
Create subscriptions
POST /checkouts を使用して、optional trial(subscription_data.trial_period_days)および add-on(product_cart[].addons)付きの subscription を product から programmatically に作成します。API Reference
create checkout session API を確認できます。
Update subscriptions
Update subscriptions
PATCH /subscriptions/{subscription_id} を使用して、次回 billing date でのキャンセル、subscription period の延長、billing details の更新、metadata の変更を行えます。quantity を変更するには、代わりに Change Plan API を使用してください。PATCH は quantity を受け付けません。API Reference
subscription details の更新方法を確認できます。
Pause and resume subscriptions
Pause and resume subscriptions
一時停止と再開は、
pause field を使用して同じ PATCH /subscriptions/{subscription_id} endpoint で行います。pause: true はアクティブなサブスクリプションを一時停止し、pause: false は再開します。この field は同じ request 内で他の field と組み合わせることはできません。動作、billing への影響、関連する business settings の詳細については、Pausing and Resuming Subscriptions を参照してください。API Reference
pause field を含む update subscription API を確認できます。Change plans (proration)
Change plans (proration)
proration controls を使用して、アクティブな product と quantity を変更します。
API Reference
plan change options を確認します。
On‑demand charges
On‑demand charges
on-demand subscription では、指定した金額をオンデマンドで請求します。
API Reference
on-demand subscription の請求を行います。
List and retrieve
List and retrieve
GET /subscriptions ですべての subscription を一覧表示し、GET /subscriptions/{id} で1つを取得します。API Reference
一覧表示および取得 API を確認できます。
Usage history
Usage history
metered または hybrid pricing model の記録済み usage を取得します。
API Reference
usage history API を確認できます。
Update payment method
Update payment method
subscription の payment method を更新します。アクティブな subscription では、今後の更新に使用する payment method が更新されます。
on_hold state の subscription では、未払い残高に対する charge を作成して subscription を再有効化します。新しい payment-method link(New request type)を生成するとき、allowed_payment_method_types を渡すことで、そのページで顧客に表示する payment method を制限できます。顧客にはリストにない method は表示されません。ただし、method を含めても表示が保証されるわけではありません(利用可能性は顧客の location や business settings などにも左右されます)。API Reference
payment method の更新と subscription の再有効化の方法を確認できます。
一般的なユースケース
- SaaS と API: seat または usage 用の add-on を備えた段階的な access
- コンテンツとメディア: introductory trial 付きの月額 access
- B2B support plan: premium support add-on 付きの年間契約
- ツールと plugin: license key と versioned release
Integration の例
Checkout Sessions(subscription)
checkout session を作成するときは、subscription product と optional add-on を含めます。proration を伴う plan change
subscription を upgrade または downgrade し、proration の動作を制御します。次回 billing date でキャンセル
現在の billing period の終了時に有効になるキャンセルをスケジュールします。subscription period の延長
新しいsubscription_period_count と subscription_period_interval を PATCH /subscriptions/{subscription_id} に渡して、subscription の実行期間を延長します。subscription の expiry は新しい count と interval から再計算されます。たとえば、顧客に現在の plan の追加期間を付与する場合は次のようにします。
subscription の period は 増加のみ可能で、短縮することはできません。
On-demand subscription
On-demand subscription を作成し、必要に応じて後から請求します。アクティブな subscription の payment method を更新
アクティブな subscription の payment method を更新します。on_hold から subscription を再有効化
payment 失敗により on hold になった subscription を再有効化します。RBI-Compliant Mandate を使用する Subscription
UPI と Indian card の subscription は、特定の mandate 要件を伴う RBI(Reserve Bank of India)規制に基づいて運用されます。Mandate の上限
mandate の type と amount は、subscription の recurring charge によって異なります。- mandate floor 未満の charge(デフォルト ₹15,000): floor amount に対する on-demand mandate を作成します。subscription amount は、subscription frequency に従って mandate limit まで定期的に請求されます。
- mandate floor 以上の charge: subscription amount と同額の subscription mandate(または on-demand mandate)を作成します。
mandate_min_amount_inr_paise(INR paise)を使用して merchant 単位または request 単位で設定できます。bank に登録される amount は max(mandate_floor, billing_amount) です。そのため、billing がそれより低い場合、floor は実質的に顧客向けの authorization ceiling になります。
RBI-compliant mandate と、Indian payment method 用に設定可能な mandate floor の詳細については、India Payment Methods ページを参照してください。
Upgrade と Downgrade に関する考慮事項
重要: subscription を upgrade または downgrade するときは、mandate limit を慎重に考慮してください。- upgrade または downgrade によって charge amount が Rs 15,000 を超え、既存の on-demand payment limit も超過すると、transaction charge が失敗する可能性があります。
- この場合、顧客は payment method を更新するか、subscription を再度変更して、正しい limit の新しい mandate を設定する必要がある場合があります。
高額 charge の Authorization
Rs 15,000 以上の subscription charge では、次のようになります。- 顧客は bank から transaction の authorization を求められます。
- 顧客が transaction の authorization に失敗すると、transaction は失敗し、subscription は on hold になります。
48時間の Processing Delay
Processing Timeline: Indian card と UPI subscription の recurring charge には、固有の processing pattern があります。- charge は、subscription frequency に従って scheduled date に initiated されます。
- 顧客の account から実際に deduction されるのは、payment initiation から 48時間後 です。
- この48時間の window は、bank API の response によって 追加で2〜3時間 延長される場合があります。
Mandate Cancellation Window
48時間の processing window 中は、次のことが可能です。- 顧客は banking app から mandate をキャンセルできます。
- 顧客がこの期間中に mandate をキャンセルしても、subscription は active のままです(これは Indian card と UPI AutoPay subscription に固有の edge case です)。
- ただし、実際の deduction は失敗する可能性があり、その場合 subscription は on hold になります。
- payment confirmation まで benefit activation を遅延させる
- grace period または一時的な access を実装する
- mandate cancellation に備えて subscription status を監視する
- アプリケーションの logic で subscription hold state を処理する
ベストプラクティス
- 明確な tier から始める: 違いが明確な2〜3個の plan を用意する
- pricing を伝える: total、proration、次回の renewal を表示する
- trial を適切に活用する: 単に期間を設けるのではなく、onboarding で conversion する
- add-on を活用する: base plan をシンプルに保ち、追加機能を upsell する
- 変更をテストする: test mode で plan change と proration を検証する
Subscription は recurring revenue のための柔軟な基盤です。シンプルに始め、十分にテストし、adoption、churn、expansion の metric に基づいて改善を重ねてください。