txn_id की डुप्लीकेट त्रुटि
लक्षण. लेन-देन सबमिट करने पर 400 मिलता है, जिसमें transaction_id फ़ील्ड पर A transaction with this transaction_id already exists. लिखा होता है। या, जब दो समान अनुरोध एक साथ आते हैं, तो 409 मिलता है।
कारण. txn_id (जो transaction_id आप भेजते हैं) हर एप्लिकेशन के लिए अद्वितीय होता है।
Didit दूसरे लेन-देन को उसी transaction_id के साथ अस्वीकार करता है और मौजूदा रिकॉर्ड वापस नहीं करता।
समाधान.
txn_idअपनी ओर से निर्धारित तरीके से बनाएँ (उदाहरण के लिए, अपनी लेन-देन DB की ID का उपयोग करें)।- पुनः प्रयास के दौरान डुप्लीकेट
transaction_idके लिए400या409मिलने पर, दोबारा सबमिट करने के बजाय मौजूदा लेन-देन खोजें: पहले रिस्पॉन्स केuuidका उपयोग करकेGET /v3/transactions/{uuid}/से उसे पढ़ें, याtransaction.createdwebhook में आपकेtxn_idके साथ आने वालाtransaction_id(Didit uuid) इस्तेमाल करें। - यदि अनुरोध पुनः प्रयास नहीं था, तो नए लेन-देन को उसका अपना
transaction_idदें।
नियम लागू नहीं हो रहा
लक्षण. आपने ऐसा नियम बनाया है जो मेल खाना चाहिए, लेकिनrule_runs[] में कोई भी लेन-देन matched: true के साथ नहीं दिख रहा।
कारण और समाधान.
- एप्लिकेशन सैंडबॉक्स मोड में है - सैंडबॉक्स एप्लिकेशन नियम मूल्यांकन, AML स्क्रीनिंग, बिलिंग, और
transaction.createdवtransaction.status.updatedwebhooks को छोड़ देता है। सक्षम होने पर Travel Rule एक्सचेंज फिर भी चलते हैं, Didit Test VASP के विरुद्ध, औरenvironment: sandboxचिह्नितtravel_rule.status.updatedwebhooks भेजते हैं। आपके नियमों का मोड चाहे जो हो,rule_runsखाली आता है और स्कोर0रहता है, और लेन-देनAPPROVEDही रहता है, जब तक कोई समाप्त होने वाला Travel Rule ट्रांसफ़र आपकाtimeout_outcomeलागू न करे। लेन-देन रिस्पॉन्स परenvironmentजाँचें:"sandbox"का अर्थ है कि उसका कभी मूल्यांकन नहीं हुआ। नियम को लाइव करने से पहले उसे कैसे जाँचें, यह जानने के लिए सैंडबॉक्स में लेन-देन निगरानी देखें। - नियम का मोड
DISABLEDयाTESTहै - Rules → [rule] → Mode जाँचें। केवलACTIVEनियम स्कोरिंग में योगदान देते हैं;TESTनियमों का मूल्यांकन होता है, लेकिन वे स्टेटस को प्रभावित नहीं करते। - Scope फ़िल्टर लेन-देन को बाहर रखता है - उदाहरण के लिए, यदि scope
transaction_type = financeपर सेट है, तो वहtravelRuleलेन-देन से मेल नहीं खाएगा। - एग्रीगेशन विंडो ज़रूरत से छोटी है - “30 दिनों में 20 लेन-देन” वाला नियम केवल 15 लेन-देन के बाद मेल नहीं खाएगा।
- शर्त का फ़ील्ड null है - उदाहरण के लिए, नियम
counterparty.country_codeजाँचता है, लेकिन आपने प्रतिपक्ष भेजा ही नहीं। - मुद्रा रूपांतरण - नियम
amount_in_default_currencyपर थ्रेशोल्ड लगाता है; यदि आपके एप्लिकेशन की डिफ़ॉल्ट मुद्रा लेन-देन की मुद्रा से अलग है, तो परिवर्तित राशि थ्रेशोल्ड से नीचे हो सकती है।
नियम हर चीज़ पर लागू हो रहा है
लक्षण. कोई नियम 90% से अधिक लेन-देन पर लागू हो रहा है - आपकी समीक्षा कतार भर गई है। कारण. शर्तें बहुत व्यापक हैं, या थ्रेशोल्ड बहुत कम हैं। समाधान.- लागू होने का दायरा सीमित करने के लिए
scopeफ़िल्टर जोड़ें (उदाहरण के लिए, केवल आउटबाउंड, या केवल कुछ लेन-देन प्रकार)। - थ्रेशोल्ड बढ़ाएँ (राशि, लेन-देन की गति की गिनतियाँ)।
- नियम को एक सप्ताह के लिए
TESTमोड में रखें -rule_runsका विश्लेषण करें ताकि मिलान दर देखी जा सके, और उसे फिर से सक्षम करने से पहले शर्तें कड़ी करें।
क्रिप्टो स्क्रीनिंग का समय समाप्त हो गया
लक्षण. लेन-देनstatus: APPROVED के साथ पूरा हो गया, लेकिन किसी वॉलेट, लेन-देन हैश, या क्रिप्टो स्क्रीनिंग प्रदाता के लिए provider_results[] एरे में status: FAILED दिखता है।
कारण.
- प्रदाता का API कुछ समय के लिए उपलब्ध नहीं था।
- क्वेरी का समय समाप्त हो गया (आमतौर पर ~10 सेकंड)।
- प्रदाता की समस्याओं से लेन-देन कभी विफल नहीं होते - एनरिचमेंट सर्वोत्तम प्रयास के आधार पर होता है।
- यदि कोई विशेष प्रदाता बार-बार विफल हो, तो उसकी उसकी स्थिति का पेज देखें या सहायता टिकट खोलें।
- वैकल्पिक प्रदाताओं पर भेजने के लिए Settings → Transaction Monitoring → Providers में प्रदाता प्राथमिकताएँ कॉन्फ़िगर करने पर विचार करें।
IP एनरिचमेंट गायब है
लक्षण. किसी लेन-देन काapplicant.ip_enrichment या तो मौजूद नहीं है या अधूरा है।
कारण.
- सबमिशन में
applicant.device.ipनहीं है। - IP निजी / आरक्षित (रूटेबल नहीं है) है।
- सभी एनरिचमेंट प्रदाता अस्थायी रूप से उपलब्ध नहीं थे।
- अपने क्लाइंट या सर्वर में सबमिट करने वाले उपयोगकर्ता का IP कैप्चर करें और हर लेन-देन के साथ भेजें।
- केवल रूटेबल IP का उपयोग करें - Didit निजी रेंज को चुपचाप छोड़ देता है।
- प्रदाता की स्थिति जाँचने के लिए कंसोल में Settings → Status देखें।
Webhook हस्ताक्षर मेल नहीं खा रहा
लक्षण. आपका endpoint इवेंट अस्वीकार कर रहा है, क्योंकि हस्ताक्षर मेल नहीं खाता। कारण.- raw body बदल दी गई है (JSON को अलग whitespace के साथ दोबारा स्ट्रिंगीफ़ाई किया गया है)।
- गलत सीक्रेट।
- एक ही URL के कई webhook गंतव्य - हस्ताक्षर हर webhook गंतव्य के लिए अलग होते हैं।
- रॉ अनुरोध बॉडी पर हस्ताक्षर करें, न कि पार्स किए गए JSON पर। कई फ़्रेमवर्क रॉ-बॉडी मिडलवेयर देते हैं।
- यदि सीक्रेट से छेड़छाड़ हुई हो, तो उसे रोटेट करें: Webhook destinations → [destination] → Rotate secret।
- सीक्रेट में भ्रम से बचने के लिए हर URL के लिए केवल एक webhook गंतव्य रखें।
Webhook नहीं पहुँच रहा
लक्षण. लेन-देन बन रहे हैं, लेकिन webhooks कभी नहीं पहुँचते। कारण.- webhook गंतव्य का
enabledfalseहै। - URL सार्वजनिक रूप से पहुँच योग्य नहीं है।
- बार-बार विफलताओं के बाद webhook गंतव्य अपने आप बंद हो गया।
- इवेंट
subscribed_eventsमें नहीं है।
- टेस्ट इवेंट भेजें: Webhook destinations → [destination] → Send test।
- हाल की डिलीवरी जाँचें: Webhooks → [destination] → Deliveries। बॉडी और हेडर के साथ 4xx/5xx रिस्पॉन्स देखें।
- बंद किए गए webhook गंतव्यों को फिर से सक्षम करें।
मुद्रा रूपांतरण सही नहीं लग रहा
लक्षण.amount_in_default_currency आपकी अपेक्षित दर से मेल नहीं खाता।
कारण.
- FX दर
txn_dateपर मिड-मार्केट दर है। - पिछली तारीख़ वाले लेन-देन उस तारीख़ की ऐतिहासिक दर का उपयोग करते हैं।
- कुछ मुद्राओं (दुर्लभ FX) के अपडेट अंतराल अधिक लंबे होते हैं।
- प्रदर्शन के लिए
amountऔरcurrency(मूल) का उपयोग करें। amount_in_default_currencyका उपयोग केवल आंतरिक नियम थ्रेशोल्ड के लिए करें।- ऑडिट के लिए, लेन-देन रिकॉर्ड मूल्यांकन के समय इस्तेमाल हुई रूपांतरण दर को सुरक्षित रखता है।
vendor_data पर ब्लॉकलिस्ट मिलान नहीं हो रहा
लक्षण। आपनेvendor_data से एक व्यवसाय को ब्लॉकलिस्ट किया था, फिर भी उस प्रतिपक्ष वाला लेन-देन पास हो गया।
कारण।
- payload में मौजूद प्रतिपक्ष के पास
vendor_dataनहीं है। यह बाहरी स्नैपशॉट के रूप में संग्रहीत है। vendor_dataके अक्षरों की स्थिति अलग है।
- जब प्रतिपक्ष आपके प्लेटफ़ॉर्म पर मौजूद कोई इकाई हो, तो हमेशा
counterparty.vendor_dataभेजें। - हर जगह एक ही अक्षर-स्थिति का उपयोग करें।
vendor_dataकेस-संवेदी है।
AWAITING_USER में अटके लेन-देन
लक्षण। लेन-देनAWAITING_USER में अटके हैं, क्योंकि उपयोगकर्ता कभी रेमेडिएशन सत्र पूरा नहीं करता।
कारण।
- उपयोगकर्ता ने रेमेडिएशन सत्र का URL नहीं खोला।
- रेमेडिएशन सत्र की समय-सीमा समाप्त हो गई।
- लेन-देन एक Travel Rule ट्रांसफ़र है, जिसे
travel-rule-pending-actionजैसे लाइब्रेरी नियम नेAWAITING_USERमें भेजा है। Didit Travel Rule लेन-देन के लिए अपना डिफ़ॉल्ट रेमेडिएशन सत्र नहीं बनाता, इसलिए जब तक नियम अपना रेमेडिएशन वर्कफ़्लो नाम न दे, भेजने के लिए कोई लिंक नहीं होता।
- लेन-देन के रिस्पॉन्स में
remediation_session_urlवह लिंक है जो आपको भेजना है। यह लिंक उपयोगकर्ता को दोबारा भेजें। - Travel Rule लेन-देन के लिए, ट्रांसफ़र को उसके Travel Rule टैब से हल करें, फिर लेन-देन की स्थिति खुद बदलें, क्योंकि ट्रांसफ़र हल करने से लेन-देन अपने-आप
AWAITING_USERसे बाहर नहीं आता। - रेमेडिएशन सत्र KYC क्विकस्टार्ट वाले पैटर्न का ही पालन करते हैं। पूरा होने की सूचना देने वाले webhook की सदस्यता लें।
- यदि रेमेडिएशन कभी पूरा न हो, तो अटके लेन-देन समाप्त करने के लिए अपने सिस्टम में समय-सीमा सेट करें।
बनाने के अनुरोध पर रेट लिमिट
लक्षण। उच्च-वॉल्यूम बर्स्ट के दौरान429 Too Many Requests मिलता है।
समाधान।
Retry-Afterहेडर का सम्मान करें।- बर्स्ट ट्रैफ़िक के लिए क्लाइंट-साइड थ्रॉटलिंग करें।
- सिद्ध प्रोडक्शन वॉल्यूम के लिए उच्च सीमा चाहिए तो सहायता से संपर्क करें।
अगले कदम
इंटीग्रेशन गाइड
पूर्ण इंटीग्रेशन पैटर्न।
नियम
नियमों का मूल्यांकन कैसे होता है।
webhook
webhook की कार्यप्रणाली।