Documentation Index
Fetch the complete documentation index at: https://docs.didit.me/llms.txt
Use this file to discover all available pages before exploring further.
Confirms a South African bank account belongs to the named holder via the inter-bank Account Holder Verification service. Didit exposes this service through POST /v3/database-validation/ so you can verify the submitted data against the authoritative source and receive normalized match results.
Coverage
- Coverage: —
- Country: South Africa
- Service ID:
zaf_bank_account_holder
- Data domain: Financial
- Category: Banking
| Field | Required | Example |
|---|
national_id | Yes | SAMPLE-NID-12345 |
bank_account_number | Yes | SAMPLE-12345 |
bank_name | Yes | John Doe |
account_type | No | sample_value |
first_name | No | John |
last_name | No | Doe |
initials | No | sample_value |
email | No | john.doe@example.com |
phone_number | No | +15550101000 |
- Required inputs:
national_id, bank_account_number, bank_name
- Optional inputs:
account_type, first_name, last_name, initials, email, phone_number
- Consent: Required
- Workflow availability: Standalone API only
- Coverage: —
- Price: $0.40 per successful query
Body parameters
ISO 3166-1 alpha-3 country code for this database service.Example: ZAF
Array containing this service ID. Pinning the service keeps the request scoped to this exact database.Example: zaf_bank_account_holder
Explicit end-user consent for this service.Example: true
National identity number for this service.Example: SAMPLE-NID-12345
bank_account_number value required by this database service.Example: SAMPLE-12345
bank_name value required by this database service.Example: John Doe
account_type value required by this database service.Example: sample_value
Given name to validate.Example: John
Family name to validate.Example: Doe
initials value required by this database service.Example: sample_value
Email address.Example: john.doe@example.com
phone_number value required by this database service.Example: +15550101000
- Send the fields listed above exactly as captured from the user or document.
- Didit validates required fields before calling the database. Requests rejected before source lookup are not charged.
How to call it
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 "consent=true" \
-F "national_id=SAMPLE-NID-12345" \
-F "bank_account_number=SAMPLE-12345" \
-F "bank_name=John Doe"
{
"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": {
"first_name": "John",
"identification_number": "SAMPLE-ID-12345",
"last_name": "Doe"
},
"validation": {
"identification_number": "full_match"
}
}
]
}
Returned data
The exact fields surfaced in source_data depend on what the registry returns. The generated example for zaf_bank_account_holder currently documents this normalized shape:
first_name
identification_number
last_name
Pricing & SLAs
South Africa - Bank Account Holder Verification queries are billed only when Didit receives a conclusive result from the validation source.
- Per-call price: $0.40 USD.
- Billing: per successful query. You are not charged when the registry is unreachable, when required fields are missing, or when the request is rejected before reaching the source.
- Latency: typical p95 < 2 s.
- Availability: 99.9% per quarter on Didit’s side; downstream source availability varies by country and dataset.
Continue reading