メインコンテンツへスキップ

Documentation Index

Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt

Use this file to discover all available pages before exploring further.

新機能

1. Entitlements

Dodo Paymentsは、すべてのフルフィルメント統合を自動で提供する単一レイヤーの統合Entitlementsを提供します。単一の製品で、成功した購入やアクティブなサブスクリプションごとに複数の特典を提供できます。
特典ダッシュボード、左には特典リスト、右には付与アクティビティが表示
5つの新しいプラットフォーム統合 これまで、Dodo Paymentsは購入時にライセンスキーとデジタルファイルを自動的に提供していました。Entitlementsはその範囲をさらに5つのプラットフォームに拡大します。支払いが成功すると、手動のフルフィルメントなしでコミュニティ、コード、またはコンテンツへのアクセスが顧客に付与されます:
統合提供内容取り消しの動作
Discord顧客がOAuthを完了した後、Discordサーバーで選択されたロールを割り当てますキャンセル/返金時にロール削除
GitHub顧客を選択した権限レベルでプライベートリポジトリのコラボレーターとして追加キャンセル/返金時にコラボレーター削除
TelegramあなたのTelegramボットを通じてプライベートチャットまたはチャネルへの一度きりの参加要求招待リンクを発行キャンセル/返金時にチャットから顧客を排除
FramerアクセスコードでゲートされたFramerテンプレートのリミックスリンクを解除キャンセル/返金時にアクセスコードを無効化
NotionOAuth経由で顧客のワークスペースにNotionテンプレートページを複製キャンセル/返金時に提供されたページをアーカイブ
これには既存のライセンスキー(アクティベーション制限および有効期限付きのユニークキー)、およびデジタルファイル(e-ブック、テンプレート、メディアの署名ダウンロードURL)統合が含まれ、同じ付与ライフサイクルで管理されます。 標準で提供される内容
機能説明
再利用可能なテンプレート一度特典を定義し(アクティベーション制限、ファイルバンドル、Discordロール、リポジトリ権限など)、任意の製品に付与可能
自動付与payment.succeededおよびsubscription.active時に発行され、更新および再アクティベーションで冪等
ライフサイクル対応の取り消しsubscription.cancelledsubscription.on_holdsubscription.expiredrefund.succeededsubscription.plan_changed、または手動のAPI/ダッシュボード取り消しで取り消し - revocation_reasonで完了状態
OAuth + プラットフォーム直接フローDiscord、GitHub、およびNotionの購読者同意用OAuth; Telegram、Framer、デジタルファイルの直接プラットフォーム呼び出し
ドリフト検出Discordロール、GitHubコラボレーター、またはNotionページがプラットフォームレベルで同期から外れた場合に検出し、revocation_reason: platform_externalで取り消し
保存時の暗号化すべてのプラットフォームトークン(OAuth、ボット、アプリインストール)はAES-256-GCMで保存
ウェブフック すべての付与に対して4つの新しいライフサイクルイベントが発生します:
イベント発生条件
entitlement_grant.created顧客のために新しい付与が作成された時
entitlement_grant.delivered顧客のアクセスが提供された時
entitlement_grant.failed配信が完了できなかった時; error_codeおよびerror_messageを確認
entitlement_grant.revokedアクセスが取り消された時; revocation_reasonを確認
新しい統合の場合、payment.succeededではなくentitlement_grant.deliveredをリッスンしてください。支払い成功が必ずしも配信完了を意味するわけではありません、特にOAuthベースの統合では。
詳細はこちら: Entitlements | Entitlement Grant Webhooks

2. カスタマーポータルでのサブスクリプションキャンセル理由

顧客がカスタマーポータルからサブスクリプションをキャンセルする際、キャンセル理由を共有するよう促されます。取得された理由はサブスクリプションにcancellation_feedbackとして保存され、APIとウェブフックのペイロードに表示され、ダッシュボードで簡単にチャーンパターンを可視化できます。
カスタマーポータルのキャンセルモーダル。キャンセル理由として「高価すぎる」「機能不足」「その他」などが選択可能なドロップダウンを表示
理由オプション
顧客向けラベル
too_expensive高価すぎる
missing_features機能不足
switched_service別のサービスに切り替えた
unused使用頻度が低い
customer_service顧客サービスが悪い
low_quality品質が低い
too_complex複雑すぎる
otherその他
表示場所
  • サブスクリプションオブジェクト: 新しいフィールドcancellation_feedback(上記のいずれかの値)およびcancellation_comment(任意の自由テキスト)が顧客がキャンセルした時に入力されます。
  • subscription.cancelledウェブフック: 両フィールドがペイロードに含まれます。
  • API: プログラムでキャンセルをスケジュールまたは実行する際にcancellation_feedbackcancellation_commentPATCH /subscriptions/{id}に渡します。
// Reading the captured feedback
const subscription = await client.subscriptions.retrieve('sub_123');
console.log(subscription.cancellation_feedback); // e.g., "too_expensive"
console.log(subscription.cancellation_comment);  // e.g., "Switching to a competitor"
cancellation_feedbackサブスクリプションDunningを組み合わせて、カスタムされたウィンバックメールを送信します。例: too_expensiveキャンセラーに割引コードを送信し、missing_featuresキャンセラーに「不足している点は何ですか?」のアンケートを送信。
詳細はこちら: カスタマーポータル | サブスクリプションWebhook

3. 設定可能なINR電子委任状の最低金額

インドカードの繰り返しサブスクリプションでのINR電子委任状の最低額を設定できるようになりました。以前は、15,000ルピー未満のインドカードサブスクリプションは固定の15,000ルピーオンデマンド委任状を使用していましたが、今ではこの最低額をマーチャントレベルでまたは必要に応じてチェックアウトセッションまたはサブスクリプションごとに上書きできます。 顧客の銀行に登録された委任金額はmax(mandate_min_amount_inr_paise, billing_amount)で、請求額が最低額を下回る場合には顧客向けのオーソリゼーション上限として機能します。
// Per-subscription override
const subscription = await client.subscriptions.create({
  product_id: 'prod_inr_monthly',
  customer: { email: 'customer@example.in' },
  billing: { country: 'IN' /* ... */ },
  mandate_min_amount_inr_paise: 2_000_000 // ₹20,000 ceiling for this subscription
});

// Or via a checkout session
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'prod_inr_monthly', quantity: 1 }],
  mandate_min_amount_inr_paise: 2_000_000,
  return_url: 'https://yoursite.com/return'
});
解決優先順位
  1. リクエストごとの上書き(チェックアウトセッション、支払い、またはサブスクリプションにおけるmandate_min_amount_inr_paise
  2. ビジネス設定におけるマーチャントレベルの設定
  3. 15,000ルピー(1,500,000 paise)のシステムデフォルト
フィールドタイプ範囲適用対象
mandate_min_amount_inr_paiseinteger (INR paise)>= 1非AirwallexコネクタのインドカードINRサブスクリプション
この設定は、INRサブスクリプションにおけるインド発行カード(Visa、Mastercard、RuPay)の電子委任状にのみ影響します。UPIサブスクリプションは独自のAutoPayフローに従い影響を受けません。
詳細はこちら: インドの支払い方法 | RBI委任状付きサブスクリプション

4. 適応通貨手数料包括ビジネス設定

適応通貨は、顧客の現地通貨で課金できる機能です。デフォルトでは、2–4%の適応通貨手数料は顧客負担で、表示される価格に上乗せされます。新しい手数料の包括設定を使用すると、これを反転させることができます。すなわち、顧客向けの表示価格を変更せずに手数料を自分で吸収することができます。 設定場所 設定 → ビジネス に移動し、適応価格設定 が有効であることを確認し、適応通貨セクションで手数料の包括 をトグルします。 リクエストごとの上書き マーチャントデフォルトを個別のチェックアウト、支払い、オンデマンドサブスクリプション用にadaptive_currency_fees_inclusiveブール値でオーバーライドできます:
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'prod_abc', quantity: 1 }],
  adaptive_currency_fees_inclusive: true, // override business default
  return_url: 'https://yoursite.com/return'
});
モード顧客が見る価格マーチャントが受け取る価格
排他的(デフォルト)現地価格 + 2–4%手数料上乗せ基本価格全額
包括的現地価格(変更なし)基本価格から2–4%手数料差引
INR → INRの取引は、ビジネス設定またはリクエストごとのオーバーライドに関係なく、常に包括的として扱われます。
詳細はこちら: 適応通貨

5. Dodo Payments デスクトップアプリ

公式のDodo Payments デスクトップアプリは、macOS、Windows、Linuxで一般向けに提供されています。ブラウザタブ不要の高速なネイティブアプリとして支払いダッシュボードを実行します。
プラットフォームダウンロード
macOS (Apple Silicon)Dodo.Payments_<version>_aarch64.dmg
macOS (Intel)Dodo.Payments_<version>_x64.dmg
WindowsDodo.Payments_<version>_x64-setup.exe (または.msi)
Linux (Debian/Ubuntu)Dodo.Payments_<version>_amd64.deb
Linux (Fedora/RHEL)Dodo.Payments-<version>-1.x86_64.rpm
Linux (AppImage、自動更新)Dodo.Payments_<version>_amd64.AppImage
中身
  • 小さなネイティブバイナリー — Tauriで構築、システムのネイティブWebビューを使用し、~5 MBの合計(Chromiumは含まれない)
  • 署名および公証済み — macOSビルドはApple Developer IDで署名され、公証されているため、Gatekeeper警告はありません
  • 自動更新 — 4時間ごとにチェックされ、GitHubのリリースから署名付きアップデートが自動で適用されます(macOS、Windows、およびLinux AppImageで動作)
  • システムトレイ + メニューバー — macOSでトレイに隠す、キーボードショートカット付きの完全なファイル/編集/表示/ヘルプメニュー(⌘⇧H ダッシュボードに移動、⌘L 現在のURLをコピー、⌘⌥I 開発者モード)
  • ディープリンクサポート — マジックリンク認証リンクが直接アプリで開く
  • マルチウィンドウ — 複数のダッシュボードを並べて開く
Desktop App Releasesページからお使いのプラットフォームに最新のインストーラーを入手してください。リポジトリは完全にオープンソースです。

6. ステーブルコイン決済(USDC、USDP、USDG)

USD決済でステーブルコイン決済をグローバルに受け入れます。顧客は選択したネットワークのウォレットから支払いを行い、あなたはフィアットUSDを受け取ります。仮想通貨のボラティリティへの露出、チャージバック、そして顧客側の銀行インフラは不要です。 対応通貨とネットワーク
ステーブルコインネットワーク
USDCEthereum、Solana、Polygon、Base
USDPEthereum、Solana
USDGEthereum
カバレッジ
詳細
請求通貨USD
対応国グローバル(インドを除く)
サブスクリプション非対応(単回払いのみ)
最低額$0.50
決済USD
設定 チェックアウトセッションを作成する際にcryptoallowed_payment_method_typesで指定します:
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'prod_123', quantity: 1 }],
  allowed_payment_method_types: ['crypto', 'credit', 'debit'],
  return_url: 'https://example.com/success'
});
顧客にはウォレットアドレスとQRコードが表示され、リアルタイムの為替レートで計算されたステーブルコイン金額が示されます。ブロックチェーンがトランザクションを確認すると、あなたのpayment.succeededウェブフックが発生し、顧客はあなたの成功ページにリダイレクトされます。
ステーブルコイン決済は設計上不可逆です — チャージバックはありません。ステーブルコインウォレットを持っていない顧客向けに常にcreditdebitをフォールバックメソッドとして提供することをお勧めします。
詳細はこちら: ステーブルコイン決済

7. 既存ライセンスキーのインポート

Create License Key APIを使用して他のシステムからライセンスキーをDodo Paymentsにインポートできます。これにより、外部のライセンスキー提供者からの移行がゼロダウンタイムで可能になり、既存の顧客がキーをDodo Paymentsで再発行なしでアクティブ化、検証、非アクティベートすることが可能です。
const licenseKey = await client.licenseKeys.create({
  customer_id: 'cus_abc123',
  product_id: 'prod_456',
  key: 'YOUR-EXISTING-LICENSE-KEY',
  activations_limit: 5,
  expires_at: '2026-12-31T23:59:59Z',
});
インポートされたキーはsource: "import"でタグ付けされます(支払い時に自動的に生成されたキーはsource: "auto")。あなたがGET /license_keysをクエリするとき、移行された在庫と自然発生したキーを区別できます。インポートされたキーのpayment_idnullです。それらはDodo Paymentsのトランザクションに結び付けられていないからです。
APIを通じて作成または更新されたライセンスキーは、顧客へのメール通知をトリガーしません。インポートされたキーに関して顧客に通知する必要がある場合は、アプリケーションで個別に対応してください。
Polar.shまたはLemon Squeezyから移行していますか? dodo-migrate CLIを使用すると、プロダクト、顧客、割引、およびライセンスキーを一括でインポートできます。
詳細はこちら: ライセンスキー | Create License Key API

8. チェックアウトセッションのrequire_phone_number

チェックアウトセッションを作成する際、顧客に電話番号を提供させるためにfeature_flags.require_phone_number: trueを設定します。電話番号はチェックアウトフォームで必須フィールドになり、顧客が空白のままにすると「電話番号が必要です」というフォームバリデーションが表示されます。
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'prod_abc', quantity: 1 }],
  feature_flags: {
    allow_phone_number_collection: true,
    require_phone_number: true
  },
  return_url: 'https://yoursite.com/return'
});
フラグデフォルト挙動
allow_phone_number_collectiontrueチェックアウトに電話番号フィールドが表示
require_phone_numberfalse電話番号フィールドが必須
require_phone_number: trueallow_phone_number_collection: trueが必要です。APIは、電話番号収集が無効な状態でrequire_phone_numberがtrueの場合、セッションを拒否します。
B2B SaaS、規制された業界、またはサポート、詐欺審査、またはコンプライアンスのために検証済みの連絡先チャネルが必要なフローには便利です。
詳細はこちら: チェックアウトの機能 | Create Checkout Session API

バグ修正と改善

  • プラットフォーム全体での細かなバグ修正と安定性の向上
Last modified on May 14, 2026