curl -X POST "https://verification.didit.me/v3/database-validation/" \
-H "x-api-key: YOUR_API_KEY" \
-F "issuing_state=ZAF" \
-F "services=zaf_bank_account_holder" \
-F "vendor_data=user-1234" \
-F "consent=true" \
-F "national_id=8708150847085" \
-F "bank_account_number=1234567890" \
-F "bank_name=ABSA" \
-F "account_type=current" \
-F "last_name=Doe" \
-F "initials=JD"
{
"request_id": "req_01H…",
"status": "Approved",
"issuing_state": "ZAF",
"match_type": "full_match",
"validations": [
{
"outcome_code": "MATCH",
"service_id": "zaf_bank_account_holder",
"service_name": "South Africa - Bank Account Holder Verification",
"source_data": {
"accepts_credits": true,
"accepts_debits": true,
"account_found": true,
"account_number_length_valid": true,
"account_open": true,
"account_type_match": true,
"id_match": true,
"identification_number": "SAMPLE-ID-12345",
"initials_match": true,
"surname_match": true
},
"validation": {
"full_name": "full_match",
"identification_number": "full_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "In Review",
"issuing_state": "ZAF",
"match_type": "partial_match",
"validations": [
{
"outcome_code": "PARTIAL_MATCH",
"service_id": "zaf_bank_account_holder",
"service_name": "South Africa - Bank Account Holder Verification",
"source_data": {
"accepts_credits": true,
"accepts_debits": true,
"account_found": true,
"account_number_length_valid": false,
"account_open": true,
"account_type_match": true,
"id_match": true,
"identification_number": "SAMPLE-ID-12345",
"initials_match": true,
"surname_match": false
},
"validation": {
"full_name": "partial_match",
"identification_number": "full_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "Declined",
"issuing_state": "ZAF",
"match_type": "no_match",
"validations": [
{
"outcome_code": "NO_MATCH",
"service_id": "zaf_bank_account_holder",
"service_name": "South Africa - Bank Account Holder Verification",
"source_data": {
"accepts_credits": false,
"accepts_debits": false,
"account_found": false,
"account_number_length_valid": false,
"account_open": false,
"account_type_match": false,
"id_match": false,
"identification_number": "NO_MATCH",
"initials_match": false,
"surname_match": false
},
"validation": {
"identification_number": "no_match"
}
}
]
}
🇿🇦 दक्षिण अफ़्रीका
दक्षिण अफ़्रीका बैंक खाता सत्यापन API
दक्षिण अफ़्रीका बैंक खाता धारक सत्यापन: Didit के ज़रिए आधिकारिक डेटाबेस जाँच। प्रति कॉल $0.40 से, कोई अनुबंध या न्यूनतम नहीं।
POST
/
v3
/
database-validation
/
curl -X POST "https://verification.didit.me/v3/database-validation/" \
-H "x-api-key: YOUR_API_KEY" \
-F "issuing_state=ZAF" \
-F "services=zaf_bank_account_holder" \
-F "vendor_data=user-1234" \
-F "consent=true" \
-F "national_id=8708150847085" \
-F "bank_account_number=1234567890" \
-F "bank_name=ABSA" \
-F "account_type=current" \
-F "last_name=Doe" \
-F "initials=JD"
{
"request_id": "req_01H…",
"status": "Approved",
"issuing_state": "ZAF",
"match_type": "full_match",
"validations": [
{
"outcome_code": "MATCH",
"service_id": "zaf_bank_account_holder",
"service_name": "South Africa - Bank Account Holder Verification",
"source_data": {
"accepts_credits": true,
"accepts_debits": true,
"account_found": true,
"account_number_length_valid": true,
"account_open": true,
"account_type_match": true,
"id_match": true,
"identification_number": "SAMPLE-ID-12345",
"initials_match": true,
"surname_match": true
},
"validation": {
"full_name": "full_match",
"identification_number": "full_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "In Review",
"issuing_state": "ZAF",
"match_type": "partial_match",
"validations": [
{
"outcome_code": "PARTIAL_MATCH",
"service_id": "zaf_bank_account_holder",
"service_name": "South Africa - Bank Account Holder Verification",
"source_data": {
"accepts_credits": true,
"accepts_debits": true,
"account_found": true,
"account_number_length_valid": false,
"account_open": true,
"account_type_match": true,
"id_match": true,
"identification_number": "SAMPLE-ID-12345",
"initials_match": true,
"surname_match": false
},
"validation": {
"full_name": "partial_match",
"identification_number": "full_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "Declined",
"issuing_state": "ZAF",
"match_type": "no_match",
"validations": [
{
"outcome_code": "NO_MATCH",
"service_id": "zaf_bank_account_holder",
"service_name": "South Africa - Bank Account Holder Verification",
"source_data": {
"accepts_credits": false,
"accepts_debits": false,
"account_found": false,
"account_number_length_valid": false,
"account_open": false,
"account_type_match": false,
"id_match": false,
"identification_number": "NO_MATCH",
"initials_match": false,
"surname_match": false
},
"validation": {
"identification_number": "no_match"
}
}
]
}
यह इंटर-बैंक खाता धारक सत्यापन सेवा के माध्यम से पुष्ट करता है कि दक्षिण अफ़्रीका का एक बैंक खाता नामित धारक का है। Didit इस सेवा को
POST /v3/database-validation/ के जरिए उपलब्ध कराता है, ताकि आप सबमिट किए गए डेटा की प्रामाणिक स्रोत से तुलना कर सकें और सामान्यीकृत मिलान परिणाम प्राप्त कर सकें।
कवरेज
- कवरेज: —
- देश: दक्षिण अफ़्रीका
- सेवा ID:
zaf_bank_account_holder - डेटा डोमेन: वित्तीय
- श्रेणी: बैंकिंग
इनपुट
| फ़ील्ड | आवश्यक | उदाहरण |
|---|---|---|
national_id | हाँ | 8708150847085 |
bank_account_number | हाँ | 1234567890 |
bank_name | हाँ | ABSA |
account_type | नहीं | current |
first_name | नहीं | John |
last_name | नहीं | Doe |
initials | नहीं | JD |
email | नहीं | john.doe@example.com |
phone_number | नहीं | +15550101000 |
vendor_data | नहीं | user-1234 |
- आवश्यक इनपुट:
national_id,bank_account_number,bank_name - वैकल्पिक इनपुट:
account_type,first_name,last_name,initials,email,phone_number,vendor_data - सहमति: आवश्यक
- वर्कफ़्लो में उपलब्धता: वर्कफ़्लो में फ़ील्ड मैपिंग के साथ उपलब्ध
- कवरेज: —
- कीमत: प्रति सफल क्वेरी $0.40
bank_account_number और bank_name किसी पहचान दस्तावेज़ पर छपे नहीं होते, इसलिए कोई चरण इन्हें अपने आप उत्पन्न नहीं करता। इन्हें किसी प्रश्नावली के उत्तर, Document AI निष्कर्षण फ़ील्ड, या सत्र बनाते समय आपके भेजे गए मान से एकत्र करें, और हर एक को डेटाबेस सत्यापन चरण पर मैप करें। मैप होने तक वर्कफ़्लो एडिटर इस सेवा को अक्षम दिखाता है और गायब इनपुट का नाम बताता है। रन के समय गायब इनपुट का अर्थ है कि जाँच किसी भी क्वेरी से पहले छोड़ दी जाती है, इसलिए जिस डेटाबेस से पूछा ही नहीं जा सका, उसके लिए आपसे कभी शुल्क नहीं लिया जाता।
बॉडी पैरामीटर
string
डिफ़ॉल्ट:"ZAF"
आवश्यक
इस डेटाबेस सेवा के लिए ISO 3166-1 alpha-3 देश कोड।उदाहरण:
ZAFstring
डिफ़ॉल्ट:"zaf_bank_account_holder"
आवश्यक
इस सेवा ID वाला ऐरे। सेवा को पिन करने से अनुरोध इसी सटीक डेटाबेस तक सीमित रहता है।उदाहरण:
zaf_bank_account_holderboolean
डिफ़ॉल्ट:"true"
आवश्यक
इस सेवा के लिए अंतिम उपयोगकर्ता की स्पष्ट सहमति।उदाहरण:
truestring
डिफ़ॉल्ट:"8708150847085"
आवश्यक
इस सेवा के लिए राष्ट्रीय पहचान संख्या।उदाहरण:
8708150847085string
डिफ़ॉल्ट:"1234567890"
आवश्यक
इस डेटाबेस सेवा के लिए आवश्यक
bank_account_number मान।उदाहरण: 1234567890string
डिफ़ॉल्ट:"ABSA"
आवश्यक
इस डेटाबेस सेवा के लिए आवश्यक
bank_name मान।उदाहरण: ABSAstring
डिफ़ॉल्ट:"current"
इस डेटाबेस सेवा के लिए आवश्यक
account_type मान।उदाहरण: currentstring
सत्यापित किया जाने वाला पहला नाम।उदाहरण:
Johnstring
डिफ़ॉल्ट:"Doe"
सत्यापित किया जाने वाला उपनाम।उदाहरण:
Doestring
डिफ़ॉल्ट:"JD"
इस डेटाबेस सेवा के लिए आवश्यक
initials मान।उदाहरण: JDstring
ईमेल पता।उदाहरण:
john.doe@example.comstring
इस डेटाबेस सेवा के लिए आवश्यक
phone_number मान।उदाहरण: +15550101000string
डिफ़ॉल्ट:"user-1234"
इस व्यक्ति के लिए आपका स्थायी उपयोगकर्ता संदर्भ, जैसे आपका आंतरिक उपयोगकर्ता ID। Didit इसका उपयोग स्टैंडअलोन जाँचों को उसी अंतिम उपयोगकर्ता से जोड़ने और डुप्लिकेट-पहचान से जुड़े अनावश्यक संकेत कम करने के लिए करता है।उदाहरण:
user-1234इनपुट नियम और सत्यापन नोट्स
account_typeदक्षिण अफ़्रीकी AVS खाता प्रकारों में से एक होना चाहिए:current,savings,transmission,subscriptionShare,notKnown। मिलान केस-इनसेंसिटिव है। अगर आपको खाता प्रकार पता नहीं है तो यह फ़ील्ड छोड़ दें। तब DiditnotKnownभेजता है और खाता-प्रकार की जाँच को अनुरोध विफल करने के बजाय “पुष्ट नहीं” के रूप में दर्ज करता है।
इसे कैसे कॉल करें
curl -X POST "https://verification.didit.me/v3/database-validation/" \
-H "x-api-key: YOUR_API_KEY" \
-F "issuing_state=ZAF" \
-F "services=zaf_bank_account_holder" \
-F "vendor_data=user-1234" \
-F "consent=true" \
-F "national_id=8708150847085" \
-F "bank_account_number=1234567890" \
-F "bank_name=ABSA" \
-F "account_type=current" \
-F "last_name=Doe" \
-F "initials=JD"
हर सफल कॉल HTTP 200 लौटाती है। outcome_code फ़ील्ड बताता है कि वास्तव में क्या हुआ, उदाहरण के लिए असली बायोमेट्रिक मिलान न होना (BIOMETRIC_NO_MATCH) और ऐसी सेल्फ़ी जिसे पढ़ा नहीं जा सका (BIOMETRIC_IMAGE_UNUSABLE) में अंतर। दिखाया गया status डिफ़ॉल्ट सुविधा स्थिति है; आपकी कॉन्फ़िगर की गई Partial Match / No Match कार्रवाइयाँ इसे बदल सकती हैं।MATCH: रजिस्ट्री ने पहचान की पुष्टि की और जाँची गई हर फ़ील्ड मेल खाई।{
"request_id": "req_01H…",
"status": "Approved",
"issuing_state": "ZAF",
"match_type": "full_match",
"validations": [
{
"outcome_code": "MATCH",
"service_id": "zaf_bank_account_holder",
"service_name": "South Africa - Bank Account Holder Verification",
"source_data": {
"accepts_credits": true,
"accepts_debits": true,
"account_found": true,
"account_number_length_valid": true,
"account_open": true,
"account_type_match": true,
"id_match": true,
"identification_number": "SAMPLE-ID-12345",
"initials_match": true,
"surname_match": true
},
"validation": {
"full_name": "full_match",
"identification_number": "full_match"
}
}
]
}
PARTIAL_MATCH: पहचान संख्या मिल गई, लेकिन एक या अधिक व्यक्तिगत फ़ील्ड (आमतौर पर नाम या जन्म तिथि) पूरी तरह मेल नहीं खाए।{
"request_id": "req_01H…",
"status": "In Review",
"issuing_state": "ZAF",
"match_type": "partial_match",
"validations": [
{
"outcome_code": "PARTIAL_MATCH",
"service_id": "zaf_bank_account_holder",
"service_name": "South Africa - Bank Account Holder Verification",
"source_data": {
"accepts_credits": true,
"accepts_debits": true,
"account_found": true,
"account_number_length_valid": false,
"account_open": true,
"account_type_match": true,
"id_match": true,
"identification_number": "SAMPLE-ID-12345",
"initials_match": true,
"surname_match": false
},
"validation": {
"full_name": "partial_match",
"identification_number": "full_match"
}
}
]
}
NO_MATCH: सबमिट किए गए डेटा के लिए रजिस्ट्री से कोई मिलान नहीं मिला।{
"request_id": "req_01H…",
"status": "Declined",
"issuing_state": "ZAF",
"match_type": "no_match",
"validations": [
{
"outcome_code": "NO_MATCH",
"service_id": "zaf_bank_account_holder",
"service_name": "South Africa - Bank Account Holder Verification",
"source_data": {
"accepts_credits": false,
"accepts_debits": false,
"account_found": false,
"account_number_length_valid": false,
"account_open": false,
"account_type_match": false,
"id_match": false,
"identification_number": "NO_MATCH",
"initials_match": false,
"surname_match": false
},
"validation": {
"identification_number": "no_match"
}
}
]
}
लौटाया गया डेटा
source_data में ठीक-ठीक कौन-से फ़ील्ड आते हैं, यह इस पर निर्भर है कि रजिस्ट्री क्या लौटाती है। zaf_bank_account_holder के लिए जनरेट किया गया उदाहरण अभी इस सामान्यीकृत संरचना का दस्तावेज़ीकरण करता है:
accepts_creditsaccepts_debitsaccount_foundaccount_number_length_validaccount_openaccount_type_matchid_matchidentification_numberinitials_matchsurname_match
मूल्य निर्धारण और SLA
दक्षिण अफ़्रीका: Bank Account Holder Verification क्वेरी तभी बिल की जाती हैं जब Didit को सत्यापन स्रोत से निर्णायक परिणाम मिलता है।- प्रति कॉल मूल्य: $0.40 USD।
- बिलिंग: प्रति सफल क्वेरी। जब रजिस्ट्री पहुँच से बाहर हो, आवश्यक फ़ील्ड गायब हों, या अनुरोध स्रोत तक पहुँचने से पहले ही अस्वीकार हो जाए, तब आपसे शुल्क नहीं लिया जाता।
- विलंबता: सामान्यतः p95 2 s से कम।
- उपलब्धता: Didit की ओर से प्रति तिमाही 99.9%। डाउनस्ट्रीम स्रोत की उपलब्धता देश और डेटासेट के अनुसार अलग होती है।
MATCH क्या पुष्टि करता है
Account Holder Verification (AVS) हाँ/नहीं की जाँचों का एक समूह है, रिकॉर्ड की खोज नहीं। स्रोत कभी नाम, ID नंबर या खाते का बैलेंस नहीं लौटाता। वह आपके भेजे विवरण लेता है, उन्हें उस खाते के लिए बैंक के पास मौजूद जानकारी से मिलाता है, और हर तुलना का उत्तर एक फ़्लैग के रूप में देता है।source_data में वही फ़्लैग होते हैं:
account_found: बैंक के पास इस नंबर का खाता है। यहfalseहो तो बाकी सब अर्थहीन है।account_open: खाता खुला है। खाता मिल सकता है और फिर भी बंद हो सकता है।id_match: खाता उसी राष्ट्रीय ID के नाम पर है जो आपने भेजी। यही वह जाँच है जिसके लिए यह सेवा बनी है।initials_match,surname_match: आपके भेजेinitialsऔरlast_nameबैंक के रिकॉर्ड में दर्ज खाताधारक से मेल खाते हैं।account_type_match: आपका भेजाaccount_typeखाते के वास्तविक प्रकार से मेल खाता है।email_match,phone_match: आपके भेजेemailऔरphone_numberबैंक के पास मौजूद संपर्क विवरणों से मेल खाते हैं।accepts_debits,accepts_credits: खाता डेबिट ऑर्डर और क्रेडिट प्राप्त कर सकता है।account_number_length_valid: खाता नंबर उतनी लंबाई का है जितनी बैंक अपेक्षित करता है।
MATCH: खाता मौजूद है और आपके भेजे हर फ़ील्ड का मिलान हुआ,id_matchसहित।PARTIAL_MATCH: खाता आपके द्वारा भेजी गई राष्ट्रीय ID के धारक के नाम पर है, लेकिन आपके भेजे कम से कम एक और फ़ील्ड का मिलान नहीं हुआ (उदाहरण के लिए, बैंक के रिकॉर्ड में अलग वर्तनी वाला उपनाम)।outcome_detailउन फ़ील्ड के नाम बताता है जो मेल नहीं खाए।NO_MATCH: या तो बैंक के पास ऐसा कोई खाता नहीं है, या खाता है पर किसी और का है। दोनों ही व्यक्ति के बारे में निर्णायक उत्तर हैं।
N उत्तर देता है जो भेजा नहीं गया। इसलिए surname_match, initials_match, email_match, phone_match और account_type_match source_data में केवल तभी आते हैं जब आपने संबंधित इनपुट भेजा हो। इसका अर्थ है कि केवल national_id, bank_account_number और bank_name भेजने पर भी पूरा MATCH ही मिलता है।
स्वीकृत bank_name और account_type मान
bank_name और account_type पूर्वनिर्धारित विकल्पों वाले मान हैं। इनमें से किसी भी सूची से बाहर का मान क्वेरी चलने से पहले अस्वीकार कर दिया जाता है, इसलिए टाइपो की कीमत एक राउंड-ट्रिप होती है, शुल्क नहीं।
account_type वैकल्पिक है और केस-इन्सेंसिटिव रूप में ये मान स्वीकार करता है:
current · savings · transmission · subscriptionShare · notKnown
जब आपको खाते का प्रकार पता न हो, तो इसे छोड़ दें। तब Didit notKnown भेजता है, अनुरोध सफल होता है, और account_type_match false लौटता है, क्योंकि तुलना के लिए कुछ था ही नहीं। कोई और मान, जैसे checking, cheque या bond, 400 के साथ अस्वीकार होता है, और उस उत्तर में स्वीकृत मानों की सूची होती है।
bank_name आवश्यक है, और इन मानों के स्वीकृत होने की पुष्टि की गई है (केस-इन्सेंसिटिव):
ABSA · Capitec · FNB · Nedbank · Standard Bank · Investec · African Bank · Discovery Bank · Old Mutual · Bank Zero · Tyme · Grindrod
इन सभी बैंकों के उपभोक्ता खाते दायरे में हैं, Capitec भी। संक्षिप्त रूप ठीक सूची के अनुसार भेजें: Capitec, Capitec Bank नहीं; Tyme, TymeBank नहीं। अज्ञात बैंक के लिए REGISTRY_ERROR परिणाम लौटता है, और उसका outcome_detail उस फ़ील्ड का नाम बताता है जिसे स्रोत ने अस्वीकार किया।
गायब खाते और अनुपलब्ध स्रोत में अंतर
ये अलग-अलग HTTP परिणाम हैं, इसलिए त्रुटि स्ट्रिंग को पार्स करने की ज़रूरत नहीं:- खाता मौजूद नहीं है:
200 OK,match_type: "no_match",outcome_code: "NO_MATCH",source_data.account_found: false। यह बैंक का वास्तविक उत्तर है। बिल होता है, और आपकी नो-मैच कार्रवाई लागू होती है। - स्रोत ने उत्तर नहीं दिया:
502 Bad Gateway, जिसमेंvalidation_errors[].code=empty_provider_responseऔरretryable: trueहै। व्यक्ति के बारे में कुछ भी स्थापित नहीं हुआ, कोई शुल्क नहीं लगता, और अनुरोध दोबारा भेजना सुरक्षित है। - स्रोत ने क्वेरी चलाने से इनकार किया:
400 Bad Request, जिसमेंvalidation_errors[].code=provider_rejected_inputऔरretryable: falseहै। स्रोत ने खोज ही नहीं की, क्योंकि उसने भेजी गई जानकारी को स्वीकार करने से मना कर दिया। डेटा सुधारें; वही मान फिर भेजने से सफलता नहीं मिलेगी। कोई शुल्क नहीं। - स्रोत ने उत्तर दिया और आपके इनपुट को अस्वीकार किया:
502 Bad Gateway, जिसमेंvalidation_errors[].code=provider_invalid_inputहै (उदाहरण के लिए, ऐसा खाता नंबर जो बैंक की अपनी फ़ॉर्मैट जाँच में विफल हो)। इनपुट सुधरने तक दोबारा भेजने का कोई अर्थ नहीं है; कोई शुल्क नहीं। - आपका अनुरोध Didit से बाहर नहीं गया:
400 Bad Request, जिसमें सुधारने योग्य फ़ील्ड सूचीबद्ध होते हैं। कोई शुल्क नहीं।
502 को अस्थायी मानें। AVS किसी रजिस्ट्री को पढ़ने के बजाय खाताधारक के बैंक तक अनुरोध पहुँचाता है, इसलिए यह दक्षिण अफ़्रीकी सेवाओं में सबसे धीमी है। बैकऑफ़ के साथ पुनः प्रयास करें।
आगे पढ़ें
अंतिम संशोधन 7 नवंबर 2026