मुख्य सामग्री पर जाएं
आपके Merchant of Record के रूप में, Dodo Payments आपके behalf पर कार्ड नेटवर्क के साथ विवाद और चार्जबैक प्रक्रिया को प्रबंधित करती है। ये webhooks आपके सिस्टम को विवद के जीवनचक्र के माध्यम से सुरक्षा में रखते हैं ताकि आप पहुंच वापस ले सकें, साक्ष्य इकट्ठा कर सकें, और अपने रिकॉर्ड को मेल कर सकें।

विवाद वेबहुक इवेंट्स

एक विवाद अपने जीवनचक्र के प्रत्येक चरण में एक घटना उत्पन्न करता है:
घटनाकब होती हैइसका साधारणत: क्या अर्थ है
dispute.openedएक कार्डधारक भुगतान पर विवाद खोलता हैपैसे अवरुद्ध हैं; प्रतिक्रिया देने के लिए तैयार रहें
dispute.challengedविवाद का मुकाबला करने के लिए सबूत प्रस्तुत किए गए हैंविवाद नेटवर्क द्वारा समीक्षा किया जा रहा है
dispute.acceptedविवाद स्वीकार कर लिया गया था (प्रतिरोध नहीं किया गया)पैसे कार्डधारक को लौटाए जाते हैं
dispute.cancelledविवाद वापस ले लिया गया या रद्द कर दिया गयाकोई और कार्रवाई की आवश्यकता नहीं है
dispute.expiredप्रतिक्रिया विंडो बिना समाधान के बीत गईआमतौर पर आपके खिलाफ समाधान होता है
dispute.wonविवाद आपके पक्ष में हल हो गयापैसे बनाए रखे जाते हैं
dispute.lostविवाद कार्डधारक के पक्ष में हल हो गयापैसे कार्डधारक को लौटाए जाते हैं
Visa Rapid Dispute Resolution (RDR) के माध्यम से स्वचालित रूप से हल किए गए विवाद dispute.lost के रूप में प्रकट होते हैं is_resolved_by_rdr: true के साथ। यह अपेक्षित है — औपचारिक चार्जबैक को रोकने के लिए स्वचालित रूप से धनवापसी जारी की गई थी।

विवाद इवेंट्स को संभालना

जब dispute.opened फायर होता है, तो विवादित राशि तुरंत रोक दी जाती है। अपने रिकॉर्ड को अपडेट करने के लिए घटना का उपयोग करें और, यदि आप इसे चुनौती देना चाहते हैं, तो डैशबोर्ड में साक्ष्य इकट्ठा करें।
Handling dispute events
app.post('/webhooks/dodo', async (req, res) => {
  const event = req.body;

  switch (event.type) {
    case 'dispute.opened': {
      const dispute = event.data;
      // Record the dispute and consider revoking access while it is open
      await recordDispute(dispute.dispute_id, dispute.payment_id, dispute.amount);
      // Gather and submit evidence from the Dodo Payments dashboard (within 4 days)
      break;
    }
    case 'dispute.won': {
      // Funds retained — restore normal state in your records
      await markDisputeResolved(event.data.dispute_id, 'won');
      break;
    }
    case 'dispute.lost': {
      // Funds returned to the cardholder — reconcile and keep access revoked
      await markDisputeResolved(event.data.dispute_id, 'lost');
      break;
    }
  }

  res.json({ received: true });
});
प्रसंस्करण से पहले हमेशा webhook हस्ताक्षर की सत्यता सुनिश्चित करें — सेटअप के लिए Webhooks गाइड देखें। संक्षेप में, हैंडलर में सत्यापन शामिल नहीं है।
एक विवाद के निर्मित होने के बाद आपके पास उत्तर देने के लिए 4 दिन होते हैं। एकत्र करने के लिए साक्ष्य और इसे कैसे स्वरूपित करें के लिए विवाद प्रतिक्रिया सर्वोत्तम प्रथाएं देखें।

विवाद स्थिति और चरण

विवाद वस्तु अपनी प्रगति को दो फील्ड्स के माध्यम से रिपोर्ट करती है:
फ़ील्डमान
dispute_statusdispute_opened, dispute_expired, dispute_accepted, dispute_cancelled, dispute_challenged, dispute_won, dispute_lost
dispute_stagepre_dispute, dispute, pre_arbitration

संबंधित

Managing Disputes

विवादों का उत्तर कैसे दिया जाए, साक्ष्य कैसे प्रस्तुत किया जाए, और कैसे RDR आपके विवाद दर की रक्षा करता है।

Handle Payment Failures

विवाद बनने से पहले विफल भुगतान का पता लगाएं और पुनर्प्राप्त करें।

वेबहुक पेलोड स्कीमा

amount
string
आवश्यक

The amount involved in the dispute, represented as a string to accommodate precision.

business_id
string
आवश्यक

The unique identifier of the business involved in the dispute.

created_at
string<date-time>
आवश्यक

The timestamp of when the dispute was created, in UTC.

currency
string
आवश्यक

The currency of the disputed amount, represented as an ISO 4217 currency code.

dispute_id
string
आवश्यक

The unique identifier of the dispute.

dispute_stage
enum<string>
आवश्यक

The current stage of the dispute process.

उपलब्ध विकल्प:
pre_dispute,
dispute,
pre_arbitration
dispute_status
enum<string>
आवश्यक

The current status of the dispute.

उपलब्ध विकल्प:
dispute_opened,
dispute_expired,
dispute_accepted,
dispute_cancelled,
dispute_challenged,
dispute_won,
dispute_lost
payment_id
string
आवश्यक

The unique identifier of the payment associated with the dispute.

is_resolved_by_rdr
boolean | null

Whether the dispute was resolved by Rapid Dispute Resolution

remarks
string | null

Remarks

अंतिम संशोधन 18 जून 2026