curl -X POST "https://verification.didit.me/v3/database-validation/" \
-H "x-api-key: YOUR_API_KEY" \
-F "issuing_state=CHN" \
-F "services=chn_bank_card" \
-F "vendor_data=user-1234" \
-F "consent=true" \
-F "full_name=王新伟" \
-F "date_of_birth=1990-01-01" \
-F "national_id=11010519900101003X" \
-F "bank_card_number=4111111111111111"
{
"request_id": "req_01H…",
"status": "Approved",
"issuing_state": "CHN",
"match_type": "full_match",
"validations": [
{
"outcome_code": "MATCH",
"service_id": "chn_bank_card",
"service_name": "China Bank Card",
"source_data": {
"date_of_birth": "1990-01-01",
"full_name": "王新伟",
"identification_number": "11010519900101003X"
},
"validation": {
"date_of_birth": "full_match",
"full_name": "full_match",
"identification_number": "full_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "In Review",
"issuing_state": "CHN",
"match_type": "partial_match",
"validations": [
{
"outcome_code": "PARTIAL_MATCH",
"service_id": "chn_bank_card",
"service_name": "China Bank Card",
"source_data": {
"date_of_birth": "1990-01-01",
"full_name": "王新伟",
"identification_number": "11010519900101003X"
},
"validation": {
"date_of_birth": "full_match",
"full_name": "no_match",
"identification_number": "full_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "Declined",
"issuing_state": "CHN",
"match_type": "no_match",
"validations": [
{
"outcome_code": "NO_MATCH",
"service_id": "chn_bank_card",
"service_name": "China Bank Card",
"source_data": {
"date_of_birth": "NO_MATCH",
"full_name": "NO_MATCH",
"identification_number": "NO_MATCH"
},
"validation": {
"date_of_birth": "no_match",
"full_name": "no_match",
"identification_number": "no_match"
}
}
]
}
🇨🇳 China
China Bank Card
Verifies input data against the official data service in China. Authoritative real-time identity lookup for China. Real-time lookup, pay-per-call.
POST
/
v3
/
database-validation
/
curl -X POST "https://verification.didit.me/v3/database-validation/" \
-H "x-api-key: YOUR_API_KEY" \
-F "issuing_state=CHN" \
-F "services=chn_bank_card" \
-F "vendor_data=user-1234" \
-F "consent=true" \
-F "full_name=王新伟" \
-F "date_of_birth=1990-01-01" \
-F "national_id=11010519900101003X" \
-F "bank_card_number=4111111111111111"
{
"request_id": "req_01H…",
"status": "Approved",
"issuing_state": "CHN",
"match_type": "full_match",
"validations": [
{
"outcome_code": "MATCH",
"service_id": "chn_bank_card",
"service_name": "China Bank Card",
"source_data": {
"date_of_birth": "1990-01-01",
"full_name": "王新伟",
"identification_number": "11010519900101003X"
},
"validation": {
"date_of_birth": "full_match",
"full_name": "full_match",
"identification_number": "full_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "In Review",
"issuing_state": "CHN",
"match_type": "partial_match",
"validations": [
{
"outcome_code": "PARTIAL_MATCH",
"service_id": "chn_bank_card",
"service_name": "China Bank Card",
"source_data": {
"date_of_birth": "1990-01-01",
"full_name": "王新伟",
"identification_number": "11010519900101003X"
},
"validation": {
"date_of_birth": "full_match",
"full_name": "no_match",
"identification_number": "full_match"
}
}
]
}
{
"request_id": "req_01H…",
"status": "Declined",
"issuing_state": "CHN",
"match_type": "no_match",
"validations": [
{
"outcome_code": "NO_MATCH",
"service_id": "chn_bank_card",
"service_name": "China Bank Card",
"source_data": {
"date_of_birth": "NO_MATCH",
"full_name": "NO_MATCH",
"identification_number": "NO_MATCH"
},
"validation": {
"date_of_birth": "no_match",
"full_name": "no_match",
"identification_number": "no_match"
}
}
]
}
Verifies input data against the official data service in China. 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: ~ 100%
- Country: China
- Service ID:
chn_bank_card - Data domain: Financial
- Category: Banking
Inputs
| Field | Required | Example |
|---|---|---|
full_name | Yes | 王新伟 |
date_of_birth | Yes | 1990-01-01 |
national_id | Yes | 11010519900101003X |
bank_card_number | Yes | 4111111111111111 |
vendor_data | No | user-1234 |
- Required inputs:
full_name,date_of_birth,national_id,bank_card_number - Optional inputs:
vendor_data - Consent: Required
- Workflow availability: Available in workflow with field mapping
- Coverage: ~ 100%
- Price: $0.40 per successful query
bank_card_number is not printed on an identity document, so no step produces it on its own. Collect it from a Questionnaire answer, a Document AI extraction field, or a value you send when you create the session, and map it on the Database Validation step. Until it is mapped the workflow editor shows this service disabled and names the missing input; at run time a missing input means the check is skipped before any query, so you are never billed for a database that could not be asked.
Body parameters
string
default:"CHN"
required
ISO 3166-1 alpha-3 country code for this database service.Example:
CHNstring
default:"chn_bank_card"
required
Array containing this service ID. Pinning the service keeps the request scoped to this exact database.Example:
chn_bank_cardboolean
default:"true"
required
Explicit end-user consent for this service.Example:
truestring
default:"王新伟"
required
Full legal name to validate.Example:
王新伟string
default:"1990-01-01"
required
Date of birth in
YYYY-MM-DD format.Example: 1990-01-01string
default:"11010519900101003X"
required
National identity number for this service.Example:
11010519900101003Xstring
default:"4111111111111111"
required
Bank card number.Example:
4111111111111111string
default:"user-1234"
Your stable user reference for this person, such as your internal user ID. Didit uses it to link standalone checks to the same end user and reduce duplicate-detection noise.Example:
user-1234Input rules & validation notes
- Date of birth must match the birth date encoded in the Chinese national ID (digits 7-14 of an 18-character number, 7-12 of a legacy 15-digit one)
date_of_birthmust match the birth date encoded innational_id; the source rejects the request outright when the two disagree, so a mismatch is refused before the lookup and is not charged.- Chinese resident identity card number (15 digits or 18 characters with checksum)
national_idmust match(?:\d{15}|\d{17}[\dXx]).- The final Chinese Resident Identity Card check character is validated.
full_namemust be the original Chinese-script name as it appears in the registry or on the document. Do not send the Latin transliteration for China database checks.
How to call it
curl -X POST "https://verification.didit.me/v3/database-validation/" \
-H "x-api-key: YOUR_API_KEY" \
-F "issuing_state=CHN" \
-F "services=chn_bank_card" \
-F "vendor_data=user-1234" \
-F "consent=true" \
-F "full_name=王新伟" \
-F "date_of_birth=1990-01-01" \
-F "national_id=11010519900101003X" \
-F "bank_card_number=4111111111111111"
Every successful call returns HTTP 200. The outcome_code field tells you what actually happened — distinguishing, for example, a real biometric mismatch (BIOMETRIC_NO_MATCH) from a selfie that could not be read (BIOMETRIC_IMAGE_UNUSABLE). The status shown is the default feature status; your configured Partial Match / No Match actions can override it.MATCH — The registry confirmed the identity and every checked field matched.{
"request_id": "req_01H…",
"status": "Approved",
"issuing_state": "CHN",
"match_type": "full_match",
"validations": [
{
"outcome_code": "MATCH",
"service_id": "chn_bank_card",
"service_name": "China Bank Card",
"source_data": {
"date_of_birth": "1990-01-01",
"full_name": "王新伟",
"identification_number": "11010519900101003X"
},
"validation": {
"date_of_birth": "full_match",
"full_name": "full_match",
"identification_number": "full_match"
}
}
]
}
PARTIAL_MATCH — The identification number was found but one or more personal fields (usually name or date of birth) did not fully match.{
"request_id": "req_01H…",
"status": "In Review",
"issuing_state": "CHN",
"match_type": "partial_match",
"validations": [
{
"outcome_code": "PARTIAL_MATCH",
"service_id": "chn_bank_card",
"service_name": "China Bank Card",
"source_data": {
"date_of_birth": "1990-01-01",
"full_name": "王新伟",
"identification_number": "11010519900101003X"
},
"validation": {
"date_of_birth": "full_match",
"full_name": "no_match",
"identification_number": "full_match"
}
}
]
}
NO_MATCH — The registry returned no match for the submitted data.{
"request_id": "req_01H…",
"status": "Declined",
"issuing_state": "CHN",
"match_type": "no_match",
"validations": [
{
"outcome_code": "NO_MATCH",
"service_id": "chn_bank_card",
"service_name": "China Bank Card",
"source_data": {
"date_of_birth": "NO_MATCH",
"full_name": "NO_MATCH",
"identification_number": "NO_MATCH"
},
"validation": {
"date_of_birth": "no_match",
"full_name": "no_match",
"identification_number": "no_match"
}
}
]
}
Returned data
The exact fields surfaced insource_data depend on what the registry returns. The generated example for chn_bank_card currently documents this normalized shape:
date_of_birthfull_nameidentification_number
Pricing & SLAs
China Bank Card 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.