मुख्य सामग्री पर जाएं

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. एंटायटलमेंट्स

Dodo Payments अब समेकित एंटायटलमेंट्स के साथ आता है — जो हर पूर्ति इंटीग्रेशन के लिए स्वचालित डिलीवरी सक्षम करता है। एक ही उत्पाद हर सफल खरीदारी या सक्रिय सब्सक्रिप्शन पर कई एंटायटलमेंट्स प्रदान कर सकता है।
एंटायटलमेंट्स डैशबोर्ड जिसमें बाएँ ओर एंटायटलमेंट्स की सूची और दाएँ ओर ग्रांट गतिविधि
पाँच नए प्लेटफ़ॉर्म इंटीग्रेशन अब तक, Dodo Payments खरीद पर लाइसेंस कीज़ और डिजिटल फ़ाइलें स्वचालित रूप से डिलीवर करता था। एंटायटलमेंट्स इस सीमा को पाँच अतिरिक्त प्लेटफ़ॉर्म तक बढ़ाते हैं — ताकि भुगतान करने वाले ग्राहकों को भुगतान सफल होते ही आपकी समुदाय, कोड, या सामग्री तक पहुँच प्राप्त हो सके, बिना आपके पक्ष से मैन्युअल पूर्ति के:
इंटीग्रेशनयह क्या डिलीवर करता हैरद्द करने का व्यवहार
Discordग्राहक OAuth पूरा करने के बाद आपके Discord सर्वर में एक चुनी गई भूमिका प्रदान करता हैरद्द/वापसी पर भूमिका हटा दी जाती है
GitHubग्राहक को चुने गए अनुमति स्तर पर एक निजी रिपॉजिटरी में सहयोगी के रूप में जोड़ता हैरद्द/वापसी पर सहयोगी हटा दिया जाता है
Telegramआपके Telegram बॉट के माध्यम से एक निजी चैट या चैनल के लिए एक बार का जुड़ने का निमंत्रण लिंक जारी करता हैरद्द/वापसी पर ग्राहक को चैट से निकाल दिया जाता है
Framerएक एक्सेस कोड द्वारा घिरा हुआ Framer टेम्पलेट रीमिक्स लिंक अनलॉक करता हैरद्द/वापसी पर एक्सेस कोड निष्क्रिय कर दिया जाता है
Notionग्राहक के वर्कस्पेस में OAuth के माध्यम से अधिकृत करने के बाद Notion टेम्पलेट पेज डुप्लिकेट करता हैरद्द/वापसी पर डिलीवर किया गया पृष्ठ संग्रहित कर दिया जाता है
ये मौजूदा लाइसेंस कीज़ (सक्रियता सीमाएँ और समाप्ति के साथ अद्वितीय कीज़) और डिजिटल फ़ाइलें (ई-बुक्स, टेम्पलेट्स, मीडिया के लिए पूर्व-हस्ताक्षरित डाउनलोड URLs) इंटीग्रेशन में शामिल होते हैं, अब सभी को उसी ग्रांट जीवनचक्र के माध्यम से प्रबंधित किया जाता है। आपको इनबिल्ट क्या मिलता है
क्षमताविवरण
पुनः उपयोग योग्य टेम्पलेट्सएक एंटायटलमेंट को एक बार परिभाषित करें (सक्रियता सीमाएँ, फ़ाइल बंडल, Discord भूमिका, रिपो अनुमति, इत्यादि) और किसी भी उत्पाद से संलग्न करें
स्वचालित ग्रांट्सpayment.succeeded और subscription.active पर जारी किया गया, नवीकरण और पुनः-सक्रियणों के बीच आइडेम्पोटेंट
जीवनचक्र-सजग निरसनsubscription.cancelled, subscription.on_hold, subscription.expired, refund.succeeded, subscription.plan_changed, या मैनुअल API/डैशबोर्ड रद्द करने पर निरस्त — एक भरे हुए revocation_reason के साथ
OAuth + प्लेटफ़ॉर्म-डायरेक्ट प्रवाहDiscord, GitHub, और Notion के लिए OAuth ग्राहक सहमति; Telegram, Framer, और डिजिटल फ़ाइलों के लिए प्लेटफ़ॉर्म डायरेक्ट कॉल
ड्रिफ्ट डिटेक्शनपता लगाता है जब किसी प्लेटफार्म स्तर पर Discord भूमिका, GitHub सहयोगी, या Notion पृष्ठ सिंक से बाहर होता है और revocation_reason: platform_external के साथ निरस्त करता है
रेस्ट में एन्क्रिप्शनसभी प्लेटफ़ॉर्म टोकन (OAuth, बॉट, ऐप इंस्टॉलेशन) AES-256-GCM के साथ संग्रहित हैं
वेबहुक्स प्रत्येक ग्रांट के लिए चार नए जीवनचक्र घटनाएँ फायर होती हैं:
घटनाकब फायर होती है
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 और वेबहुक payloads में प्रदर्शित होता है, और डैशबोर्ड में उपलब्ध होता है ताकि आप यूज़र चर्न पैटर्न को एक नज़र में देख सकें।
कस्टमर पोर्टल कैंसलेशन मोडल में 'आप क्यों रद्द कर रहे हैं?' ड्रॉपडाउन में कारण जैसे अधिक महंगा, फीचर्स की कमी, और अन्य
कारण विकल्प
मूल्यग्राहक-सामना करने वाला लेबल
too_expensiveअधिक महंगा
missing_featuresफीचर्स की कमी
switched_serviceदूसरी सेवा में बदल गए
unusedपर्याप्त उपयोग नहीं कर रहे हैं
customer_serviceखराब ग्राहक सेवा
low_qualityकम गुणवत्ता
too_complexबहुत जटिल
otherअन्य
यह कहाँ प्रदर्शित होता है
  • सब्सक्रिप्शन ऑब्जेक्ट: नया cancellation_feedback फ़ील्ड (उपरोक्त मानों में से एक) और cancellation_comment (वैकल्पिक मुफ्त-पाठ), ग्राहक के रद्द होते समय भरा हुआ
  • subscription.cancelled वेबहुक: payload में दोनों फ़ील्ड शामिल होती हैं
  • API: जब आप प्रोग्रामेटिक रूप से कैंसलेशन को निर्धारित या निष्पादित कर रहे हों तब cancellation_feedback और cancellation_comment को PATCH /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 को सब्सक्रिप्शन डनिंग के साथ संयोजित करें ताकि आप अपनी विं-बैक ईमेल तैयार कर सकें — उदाहरण के लिए, too_expensive कैंसलर्स को छूट कोड भेजें और missing_features कैंसलर्स को “क्या कमी है?” सर्वेक्षण भेजें।
अधिक जानें: कस्टमर पोर्टल | सब्सक्रिप्शन वेबहुक्स

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 पैसे) की सिस्टम डिफ़ॉल्ट
फ़ील्डप्रकाररेंजलागू होता है
mandate_min_amount_inr_paiseinteger (INR पैसे)>= 1गैर-Airwallex कनेक्टर्स पर भारतीय-कार्ड INR सब्सक्रिप्शन
यह सेटिंग केवल INR सब्सक्रिप्शन पर भारतीय-ज़ारी कार्डों (Visa, Mastercard, RuPay) के लिए पंजीकृत ई-जनादेशों को प्रभावित करती है। UPI सब्सक्रिप्शन उनकी स्वयं की ऑटो पे प्रवाह का अनुसरण करते हैं और अप्रभावित रहते हैं।
अधिक जानें: इंडिया पेमेंट मेथड्स | RBI जनादेशों के साथ सब्सक्रिप्शन

4. अनुकूली मुद्रा फ़ीस समावेशी व्यापार सेटिंग

अनुकूली मुद्रा वह विशेषता है जो आपको आपके ग्राहकों को स्थानीय मुद्रा में चार्ज करने की अनुमति देती है। डिफ़ॉल्ट रूप से, 2–4% अनुकूली मुद्रा फ़ीस ग्राहक द्वारा वहन किया जाता है और आपके डिस्प्ले की गई कीमत के ऊपर जोड़ा जाता है। नए फ़ीस समावेशी सेटिंग के साथ, आप इसे उलट सकते हैं: ग्राहक के लिए डिस्प्ले की गई कीमत को अपरिवर्तित रखें और स्वयं फ़ीस को वहन करें। जहाँ इसे कॉन्फ़िगर करें सेटिंग्स → व्यवसाय पर जाएँ, सुनिश्चित करें कि अनुकूली मूल्य निर्धारण सक्षम है, और अनुकूली करेंसी अनुभाग में फ़ीस समावेशी स्लाइडर को चालू करें। प्रति-प्रश्न अधिलेखित करें आप व्यक्तिगत चेकआउट्स, भुगतानों, और ऑन-डिमांड सब्सक्रिप्शन के लिए व्यापारी डिफ़ॉल्ट को भी अधिलेखित कर सकते हैं adaptive_currency_fees_inclusive boolean का उपयोग करके:
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 सिलिकॉन)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 के साथ सिस्टम की मूल वेबव्यू पर निर्मित, ~5 MB कुल (कोई बंडल किया गया Chromium नहीं)
  • साइन और नोटराइज़्ड — macOS निर्माण Apple Developer ID के साथ साइन किए जाते हैं और नोटराइज़ किए जाते हैं, इसलिए कोई Gatekeeper चेतावनी नहीं
  • ऑटो-अपडेट — हर 4 घंटे में जांच करता है और GitHub रिलीज़ से साइन किए गए अपडेट्स को स्वचालित रूप से लागू करता है (macOS, Windows, और Linux AppImage पर काम करता है)
  • सिस्टम ट्रे + मेन्यू बार — macOS पर ट्रे में छिपाएं, पूर्ण फ़ाइल/एडिट/व्यू/हेल्प मेन्यू के साथ कीबोर्ड शॉर्टकट (⌘⇧H डैशबोर्ड पर जाएं, ⌘L वर्तमान URL कॉपी करें, ⌘⌥I देव टूल्स)
  • डीप-लिंक समर्थन — मैजिक-लिंक प्रमाणीकरण लिंक सीधे ऐप में खुलते हैं
  • मल्टी-विंडो — कई डैशबोर्ड साथ-साथ खोलें
अपने प्लेटफ़ॉर्म के लिए नवीनतम इंस्टॉलर डेस्कटॉप ऐप रिलीज़ पृष्ठ से प्राप्त करें। रिपॉजिटरी पूरी तरह से ओपन-सोर्स है।

6. स्टेबलकॉइन पेमेंट्स (USDC, USDP, USDG)

USD सेटलमेंट के साथ वैश्विक रूप से स्टेबलकॉइन पेमेंट्स स्वीकार करें। ग्राहक अपनी सुविधा अनुसार नेटवर्क पर अपनी पसंद के स्टेबलकॉइन वॉलेट से भुगतान करते हैं; आप फिएट USD प्राप्त करते हैं बिना क्रिप्टो उतार-चढ़ाव के एक्सपोज़र, बिना चार्जबैक, और बिना ग्राहक की ओर से बैंकिंग इन्फ्रास्ट्रक्चर की आवश्यकता के। समर्थित मुद्राएँ और नेटवर्क
स्टेबलकॉइननेटवर्क्स
USDCEthereum, Solana, Polygon, Base
USDPEthereum, Solana
USDGEthereum
कवरेज
विवरणमूल्य
बिलिंग मुद्राUSD
समर्थित देशवैश्विक (भारत को छोड़कर)
सब्सक्रिप्शनसमर्थित नहीं (केवल एकबारगी भुगतान)
न्यूनतम राशि$0.50
सेटलमेंटUSD
कॉन्फ़िगरेशन जब आप एक चेकआउट सेशन बना रहे हों, तो crypto को allowed_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 वेबहुक फायर होता है और ग्राहक को आपके सफलता पृष्ठ पर रीडायरेक्ट किया जाता है।
स्टेबलकॉइन पेमेंट्स डिज़ाइन से अपरिवर्तनीय होते हैं — कोई चार्जबैक नहीं होते। हम हमेशा credit और debit को गिरावट विधियों के रूप में प्रदान करने की सलाह देते हैं उन ग्राहकों के लिए जिनके पास स्टेबलकॉइन वॉलेट नहीं है।
अधिक जानें: Stablecoin Payments

7. मौजूदा लाइसेंस कीज़ आयात करें

अब आप Dodo Payments में Create License Key API का उपयोग करके किसी अन्य सिस्टम से लाइसेंस कीज़ आयात कर सकते हैं। यह किसी भी बाहरी लाइसेंस की प्रदाता से शून्य-विघटन माइग्रेशन को अनलॉक करता है, ताकि आपके मौजूदा ग्राहक बिना पुनः जारी करने के अपनी कीज़ को 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_id null होती है क्योंकि वे Dodo Payments लेनदेन से बंधी नहीं होती हैं।
API के माध्यम से निर्मित या अपडेट की गई लाइसेंस कीज़ ग्राहक को ईमेल सूचनाएँ ट्रिगर नहीं करती हैं। यदि आपको ग्राहकों को आयातित की के बारे में सूचित करना है, तो अपने एप्लिकेशन में उसे अलग से संभालें।
Polar.sh या Lemon Squeezy से माइग्रेट कर रहे हैं? dodo-migrate CLI उत्पादों, ग्राहकों, छूट, और लाइसेंस कीज़ के थोक आयात को एकल कमांड में स्वचालित करती है।
अधिक जानें: License Keys | 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: true को allow_phone_number_collection: true की आवश्यकता है। API उन सत्रों को अस्वीकृत करता है जहाँ require_phone_number सच है जबकि फ़ोन संग्रहण अक्षम है।
B2B SaaS, विनियमित उद्योगों, या किसी भी प्रवाह के लिए उपयोगी जहां आपको समर्थन, धोखाधड़ी समीक्षा, या अनुपालन के लिए एक सत्यापित संपर्क चैनल की आवश्यकता है।
अधिक जानें: चेकआउट फ़ीचर्स | Create Checkout Session API

बग फिक्सेस और सुधार

  • प्लेटफ़ॉर्म में मामूली बग फिक्सेस और स्थिरता सुधार
Last modified on May 14, 2026