
Checkout Sessions
Get Discount
Get Discount by Code
Create Discount (API)
List & Update Discounts
Plan Change Discounts
割引コードとは?
Discount codeは、チェックアウト時の注文合計を減額するプロモーション用トークンです。季節キャンペーン、初回購入インセンティブ、再購入促進オファー、または交渉済みのB2B価格設定に使用できます。 コードは割合ベース(例:15%割引)または定額(例:$5割引)です。1回のチェックアウト、支払い、またはサブスクリプションにつき最大20個のコードを組み合わせられるため、顧客は同じ取引でウェルカムオファーとキャンペーンコードの両方を利用できます。コードを特定の商品に限定したり、各顧客が使用できる回数を制限したり、有効期限を設定したり、利用対象者を管理したりできます。主な利点
- 柔軟な割引:割合ベースまたは定額の割引
- 組み合わせ可能なコード:1回のチェックアウト、支払い、またはサブスクリプションに最大20個のコードを適用
- 対象を絞った管理:商品、サブスクリプションのサイクル、顧客の利用資格による制限
- キャンペーン管理:開始日の予約、有効期限、全体および顧客ごとの使用回数上限
- 通貨ごとの価格設定:通貨ごとに定額の割引額、割引上限、最低小計を設定
割引コードの作成
Dodo Paymentsダッシュボードで割引コードを作成し、ホストされたチェックアウトまたはAPI経由で適用します。
Dashboardでの設定
- Discount Name(必須):ダッシュボードで使用する内部ラベル。
- Code(必須):チェックアウト時に顧客が入力する文字列。ランダムなコードを生成するか、自分で入力します(最小3文字。自動的に大文字に変換されます)。
- Type(必須):Percentage(割合による割引)または Amount(定額の値引き)。
- Amount(必須):Percentage の場合、ダッシュボードでの割引率(例:
15(15%の場合))。API では、同じ値を basis points で指定します(1500)。Amount の場合、コードのデフォルト通貨での定額の値引き額。 - Start Date(任意):コードを有効化する将来の日付を指定します。すぐに有効化する場合は空欄にします。
- Expiration Date(任意):この日付を過ぎるとコードは利用できなくなります。
- Usage Limit(任意、Advanced 内):すべての顧客を対象とした合計利用回数の上限。multi-subscription cart は1回の利用としてカウントされます。
- Per-Customer Usage Limit(任意、Advanced 内):1人の顧客が利用できる回数の上限。両方を設定する場合、全体の利用回数の上限以下である必要があります。
- Customer Eligibility(任意):利用できる顧客を制限します — すべての顧客、初回購入の顧客、既存の顧客、または選択した顧客リスト。
- Currency Options(任意):販売する各通貨に対する割引額。Per-Currency Options を参照してください。
- Product Restriction(任意):特定の商品のみにコードを制限します。
- Subscription Cycle Limit(任意、Advanced 内):割引を適用する請求サイクル数。無期限にする場合は空欄にします。
- Preserve on Plan Change(任意):サブスクリプションのプラン変更後も割引を有効に保ちます(
preserve_on_plan_change)。 - Metadata(任意):内部トラッキング用のカスタム key–value ペアを付加します。
- Require a minimum order value(任意、Advanced 内):コードを適用するために必要な、通貨ごとのカート小計の最低額。


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

顧客の適用対象
customer_eligibility を設定して、コードを利用できる顧客を制御します:

通貨ごとのオプション
複数の通貨で販売する場合は、各コードに通貨ごとの動作を設定します。Currency options では、各エントリに次の項目を指定します。- Amount — Amount割引の場合は、その通貨での定額の減額。Percentage割引の場合は、最大割引額の上限。APIでは
max_amount_possibleに対応します。 - Default — 1つの通貨をデフォルトとして指定します。設定されていない通貨には、このデフォルト通貨から換算した値が使用されます。
- Minimum subtotal — カートがその通貨でこの小計に達した場合にのみコードが適用されます。
0は最低額がないことを意味します。

最低小計は、スタック内の先行する割引適用後の途中合計ではなく、常にカートの元の価格を基準に測定されます。スタックの適用順序によって、最低額を満たすかどうかが変わることはありません。サブスクリプションの場合、最低額は商品とその add-ons の合計に対して1回だけ確認されます。たとえば、$0 の商品に $5 の add-on がある場合、$4 の最低額を満たします。Amount(
flat)コードは、add-ons ではなくサブスクリプション商品にのみ適用されます。チェックアウト体験
顧客はチェックアウト画面のフィールドに割引コードを入力します。対象となるコードはすぐに適用され、合計額が更新されます。
Checkout Sessions では、
discount_codes(配列)を渡して、1つ以上のコードを事前に適用します。割引入力フィールドはデフォルトで表示されます。feature_flags.allow_discount_code を false に設定すると非表示にできます。コードは配列の順序で適用され、最大20個まで指定できます。割引コードのスタック
Checkout sessions、payments、subscriptions では、discount_codes 配列を使用して最大20個のコードをスタックできます。コードは配列の順序で適用されます。最初の対象コードが開始価格を下げ、次のコードが割引適用後の価格をさらに下げるという流れです。Purchasing Power Parity が有効な場合、開始価格は PPP 調整後の金額です。レスポンスには discount_ids(payments/subscriptions の場合)と discounts(位置や残りのサブスクリプションサイクルなど、割引ごとの詳細情報を含む)が含まれます。
単数形の
discount_code フィールドは非推奨ですが、後方互換性のため完全にサポートされています。同じリクエストで discount_codes と組み合わせることはできません。スタックと詳細なレスポンスを利用するには、discount_codes(配列形式)へ移行してください。Card-Optional at Zero Price が有効なサブスクリプション価格で、支払額を本日分として
0 まで下げるコードのスタックを使用すると、カード要件もスキップされます。顧客は支払い方法を登録せずにチェックアウトできます。これはネイティブの 0 価格と同じ動作です。API 管理
Create discounts
Create discounts
タイプと金額を指定して、プログラムから割引コードを作成します。
API Reference
List and retrieve
List and retrieve
すべての割引を一覧表示するか、管理および監査のために詳細を取得します。
API Reference
Get discount by code
Get discount by code
内部 ID の代わりに、人が読めるコード(例:“SAVE20”)を使用して割引を検索します。
API Reference
Update discounts
Update discounts
金額、期限、制限などの割引設定を変更します。
API Reference
Retrieve a discount
Retrieve a discount
割引を適用する前に、ID を使用して割引を取得し、そのステータス、利用回数、制限を確認します。
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人の顧客の関連付けを解除します。
一般的なユースケース
- Intro offers:新商品の期間限定ローンチプロモーション
- Bulk or B2B:選択した商品セット向けの契約割引
- Retention plays:解約防止ワークフローで使用する顧客呼び戻しコード
- Seasonal campaigns:祝日やイベントに合わせたプロモーション
統合例
Metadata を使用して割引を作成する
内部トラッキング用のカスタム key–value ペアを付加します。Checkout Sessions で割引を適用する
1つ以上の割引をスタックして事前に適用し、コード入力 UI を表示します。プラン変更中に割引を適用する
顧客がサブスクリプションをアップグレードまたはダウングレードする際に、プロモーション価格を提供します。discount_codes パラメータは、割引の処理方法を制御します。
レスポンスのサブスクリプションの
discounts 配列から、適用されたすべての割引を読み取ります。各エントリには discount_id、position、cycles_remaining、および元のコードが含まれます。割引コードフィールドを非表示にする
割引入力はデフォルトで表示されます。allow_discount_code を false に設定すると非表示にできます。
ベストプラクティス
- 明確な名前を付ける:キャンペーン名に対応した、認識しやすいコードを使用します。
- 期間を限定する:緊急性を高め、不正利用を防ぐために有効期限を設定します。
- 適用範囲を適切に設定する:利益率の流出を避けるため、特定の商品に限定します。
- 早期に検証する:チェックアウトを確定する前に、コードの適用可否を確認します。
- 影響を監視する:キャンペーンごとに利用状況とコンバージョンを追跡します。