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'
});
संकल्प प्राथमिकता
- प्रति-प्रश्न अधिलेखित करें (
mandate_min_amount_inr_paise चेकआउट सेशन, भुगतान, या सब्सक्रिप्शन पर)
- व्यापार सेटिंग्स में व्यापारी-स्तर सेटिंग
- ₹15,000 (1,500,000 पैसे) की सिस्टम डिफ़ॉल्ट
| फ़ील्ड | प्रकार | रेंज | लागू होता है |
|---|
mandate_min_amount_inr_paise | integer (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 |
| Windows | Dodo.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 प्राप्त करते हैं बिना क्रिप्टो उतार-चढ़ाव के एक्सपोज़र, बिना चार्जबैक, और बिना ग्राहक की ओर से बैंकिंग इन्फ्रास्ट्रक्चर की आवश्यकता के।
समर्थित मुद्राएँ और नेटवर्क
| स्टेबलकॉइन | नेटवर्क्स |
|---|
| USDC | Ethereum, Solana, Polygon, Base |
| USDP | Ethereum, Solana |
| USDG | Ethereum |
कवरेज
| विवरण | मूल्य |
|---|
| बिलिंग मुद्रा | 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_collection | true | चेकआउट पर फ़ोन नंबर फ़ील्ड दिखाता है |
require_phone_number | false | फ़ोन नंबर फ़ील्ड को आवश्यक बनाता है |
require_phone_number: true को allow_phone_number_collection: true की आवश्यकता है। API उन सत्रों को अस्वीकृत करता है जहाँ require_phone_number सच है जबकि फ़ोन संग्रहण अक्षम है।
B2B SaaS, विनियमित उद्योगों, या किसी भी प्रवाह के लिए उपयोगी जहां आपको समर्थन, धोखाधड़ी समीक्षा, या अनुपालन के लिए एक सत्यापित संपर्क चैनल की आवश्यकता है।
अधिक जानें: चेकआउट फ़ीचर्स | Create Checkout Session API
बग फिक्सेस और सुधार
- प्लेटफ़ॉर्म में मामूली बग फिक्सेस और स्थिरता सुधार