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

最低小計は、スタック内の先行する割引適用後の現在の合計ではなく、常にカートの元の価格を基準に計算されます。スタックの順序によって、最低額の条件を満たすかどうかが変わることはありません。
チェックアウト体験
顧客はチェックアウトのフィールドにDiscount codeを入力します。利用資格のあるコードはすぐに適用され、合計が更新されます。
Checkout Sessionsでは、1つ以上のコードを事前適用するために
discount_codes(配列)を渡します。割引入力フィールドはデフォルトで表示されます。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
割引作成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
割引の詳細を更新する方法を確認します。
Retrieve a discount
Retrieve a discount
適用前に、IDで割引を取得してステータス、利用回数、制限を確認します。
API Reference
IDで割引を取得します。
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を付けてDiscountを作成
内部トラッキング用のカスタムキーと値のペアを付加します。Checkout SessionsにDiscountを適用
1つ以上のDiscountをスタックして事前適用し、コード入力UIを表示します。プラン変更時にDiscountを適用
顧客がサブスクリプションをアップグレードまたはダウングレードする際に、プロモーション価格を提供します。discount_codes パラメータによって、Discountの処理方法を制御します。
サブスクリプションのレスポンスにある
discounts 配列から、適用されたすべてのDiscountを読み取ります。各エントリには discount_id、position、cycles_remaining、および元のコードが含まれます。Discount Codeフィールドを非表示にする
割引入力欄はデフォルトで表示されます。allow_discount_code を false に設定すると非表示にできます。
ベストプラクティス
- 明確な名前を付ける:キャンペーン名に対応した、認識しやすいコードを使用します。
- 期間を限定する:緊急性を高め、不正利用を防ぐために有効期限を設定します。
- 適用範囲を適切に設定する:利益率の低下を防ぐため、特定の商品に限定します。
- 早期に検証する:チェックアウトを確定する前に、コードを適用できるか確認します。
- 影響を監視する:キャンペーンごとに利用状況とコンバージョンを追跡します。