
Checkout Sessions
ホストされたチェックアウト中に、
discount_codesとUIコントロールを使用して、1つ以上のスタックコードを適用します。Validate Discount
割引がその ID で有効かどうかを確認します。
Get Discount by Code
コード名(例: “SAVE20”)を使用して割引を検索し、検証します。
Create Discount (API)
プログラムで新しい割引コードを作成します。
List & Update Discounts
既存の割引を閲覧および管理し、必要に応じて更新または削除します。
Plan Change Discounts
サブスクリプションプランをアップグレードまたはダウングレードする際に、割引コードを適用します。
割引コードとは?
割引コードは、チェックアウト時に注文合計を減少させるプロモーショントークンです。次のような場面で理想的です:- 季節キャンペーン: ブラックフライデー、製品発売、または周年記念
- 獲得オファー: 初回購入インセンティブや紹介報酬
- 保持: 既存顧客に対する再獲得またはロイヤルティ報酬
- B2Bディール: プライベートコードを通じた契約または交渉による価格設定
主な利点
- 柔軟な割引: 割合ベースまたは定額の割引
- スタック可能なコード: 1回のチェックアウト、支払い、またはサブスクリプションで最大20個のコードを適用 — 個別のコードを作成せずにキャンペーンを組み合わせられます(例:
WELCOME10+BLACKFRIDAY20) - 対象を絞った制御: 商品、サブスクリプションサイクル、顧客の利用資格による制限
- キャンペーン管理: 開始日の予約、終了日、全体および顧客ごとの利用上限
- 通貨ごとの価格設定: 通貨ごとに定額控除額、金額上限、最低小計を設定
- シームレスなチェックアウト: checkout sessions によるUIフィールドおよびAPIのサポート
割引コードの作成
Dodo Paymentsダッシュボードで割引コードを作成し、ホストされたチェックアウトまたはAPI経由で適用します。
ダッシュボードの設定
- Discount Name(必須): 内部およびダッシュボードに表示する名前
- Code(必須): 顧客がチェックアウト時に入力する文字列。表示されるボタンを使ってランダムなコードを生成することもできます
- Type(必須): Percentage(割合による値引き)または Amount(定額控除)を選択
- Amount(必須): 割合の値、または Amount 割引の定額
- Start Date(任意): コードを後から有効にするよう予約。すぐに有効にする場合は空欄のままにします
- Expiration Date(任意): コードが無効になる日付
- Usage Limit(任意): すべての顧客を対象とした合計利用回数の上限
- Per-Customer Usage Limit(任意): 1人の顧客が利用できる回数の上限。両方を設定する場合、全体の利用上限以下である必要があります
- Customer Eligibility(任意): コードを利用できる顧客を制限 — すべての顧客、初回購入の顧客、既存の顧客、または指定した顧客リスト
- Currency Options(任意): 通貨ごとの値 — Per-Currency Options を参照
- Product Restriction(任意): 選択した商品にのみ適用を制限
- Subscription Cycle Limit(任意): 割引を適用する請求サイクル数
- Preserve on Plan Change(任意): サブスクリプションのプラン変更後も割引を有効なまま維持 (
preserve_on_plan_change) - Metadata(任意): 内部追跡や統合のためにカスタムのキーと値のペアを付加



割合
amount はAPI上では basis points で表現されます — 1500 は15%を意味します。定額の amount は金額であり、コードの通貨オプションによって通貨が決まります。割引タイプ
両方のタイプを同じ
discount_codes 配列に組み合わせることができ、配列の順序に従って適用されます。

顧客の利用資格
コードを利用できる顧客を制御するにはcustomer_eligibility を設定します:

通貨ごとのオプション
通貨オプションを使うと、販売する通貨ごとに1つのコードを正しく動作させられます。各エントリでは、1つの通貨について次を設定します:- Amount — Amount 割引では控除額そのもの、Percentage 割引ではコードによる値引き額の上限です。API上では
max_amount_possibleに対応します。 - Minimum subtotal — カートの小計がこの金額に達した場合にのみコードが適用されます。
0は下限なしを意味します。 - Default — 未設定の通貨が変換元として使用するデフォルトとして、1つのエントリを指定できます。

最低小計は常にカートの元の価格に対して計測され、スタックの途中における累計額に対して計測されることはありません。そのため、スタックの順序によって最低額を満たすかどうかが変わることはありません。
チェックアウト体験
- 購入者がチェックアウトフィールドにコードを入力します。
- 利用可能な割引が適用され、合計額がすぐに更新されます。

Checkout Sessions では、1つ以上のコードを事前に適用するために
discount_codes(配列)を渡します。割引入力フィールドはデフォルトで表示されます — feature_flags.allow_discount_code のデフォルト値は true なので、非表示にしたい場合のみ false に設定してください。コードは配列の順序に従って適用され、最大20個まで指定できます。割引コードのスタッキング
Checkout sessions、payments、subscriptions は、discount_codes 配列(最大20エントリ)を介して最大 20個のスタックコード を受け付けます。コードは 配列順 に適用されるため、最初に利用可能なコードが基準価格を引き下げ、次のコードが割引後の価格をさらに引き下げる、というように処理されます。適用された割引の全体は、レスポンスの discount_ids(payments/subscriptions)および discounts(位置や残りのサブスクリプションサイクルなど、割引ごとの詳細情報)に返されます。
単数形の
discount_code フィールドは deprecated ですが、後方互換性のため引き続き完全にサポートされます — 既存の統合は変更せずに動作し続けます。同じリクエストで discount_codes と組み合わせることはできません。スタッキングとより詳細なレスポンス形式を利用できるため、1つのコードだけの場合でも、都合のよいタイミングで discount_codes(配列形式)へ移行することを推奨します。API管理
Create discounts
Create discounts
タイプと金額を指定して、プログラムから割引コードを作成します。
API Reference
割引作成APIを表示します。
List and retrieve
List and retrieve
すべての割引を一覧表示するか、管理や監査のために詳細を取得します。
API Reference
一覧表示および取得APIを確認します。
Get discount by code
Get discount by code
内部IDの代わりに、人が読めるコード(例: “SAVE20”)を使って割引を検索します。
API Reference
コード名で割引を取得します。
Update discounts
Update discounts
金額、終了日、制限などの割引設定を変更します。
API Reference
割引の詳細を更新する方法を確認します。
Validate discounts
Validate discounts
適用する前に、割引が有効で適用可能かどうかを確認します。
API Reference
割引の利用を検証します。
Delete discounts
Delete discounts
不要になった割引を無効化または削除します。
API Reference
割引を削除します。
Manage the customer allow list
Manage the customer allow list
customer_eligibility に specific が設定された割引について、利用できる顧客を管理します:GET /discounts/{discount_id}/customers— 追加された顧客を一覧表示します(ページネーション対応、1ページあたり最大100件)。POST /discounts/{discount_id}/customers— IDで顧客を追加します。この呼び出しは冪等で、最大1000個のIDを受け付けます。すべてのIDが、ビジネス内にすでに存在している必要があります。レスポンスには、そのリクエストで送信されたIDのみが返されるため、許可リスト全体を読み取るには一覧エンドポイントを使用します。DELETE /discounts/{discount_id}/customers/{customer_id}— 1人の顧客を削除します。
一般的なユースケース
- 導入キャンペーン: 新商品の期間限定ローンチプロモーション
- 大量購入またはB2B: 特定の商品セット向けの契約割引
- リテンション施策: 解約防止ワークフローでの離脱顧客向けコード
- 季節キャンペーン: 祝日やイベントに基づくプロモーション
統合例
Metadata を使った割引の作成
内部追跡用にカスタムのキーと値のペアを付加します。Checkout Sessions での割引適用
1つ以上のスタック割引を事前適用し、コード入力UIを表示します。プラン変更時の割引適用
顧客がサブスクリプションをアップグレードまたはダウングレードする際に、プロモーション価格を提供します。サブスクリプションのレスポンスに含まれる新しい
discounts 配列から、適用されたすべての割引を読み取れます。各エントリには discount_id、position、cycles_remaining(subscriptions の場合)、および元のコードが含まれます。割引コードフィールドを非表示にする
割引入力はデフォルトで表示されるため、事前にコードを渡していなくても、顧客はいつでもコードを入力できます。フィールドを完全に非表示にするには、allow_discount_code を false に設定してください。
ベストプラクティス
- 明確な名前を付ける: キャンペーン名と一致する、認識しやすいコードを使用
- 期間を限定する: 緊急性を高め、不正利用を防ぐために有効期限を設定
- 適用範囲を適切にする: 利益率の漏出を避けるため、特定の商品に限定
- 早期に検証する: チェックアウトを確定する前にコードの適用可否を確認
- 効果を監視する: キャンペーンごとに利用状況とコンバージョンを追跡
割引コードは、顧客獲得とリテンションのための強力な手段です。まずはシンプルで分かりやすい名前のオファーから始め、十分に検証し、成果に基づいて改善を重ねてください。