Available via API | Available via SDK | Needs configuration on Veriff's side | Needs a separate integration | Needs a separate webhook |
|---|---|---|---|---|
Metadata Database Verification validates end-user identity data (name, DOB, address, national ID, phone, document numbers, etc) against authoritative external government, consumer, credit bureau, utility, and phone registry databases across via the DataZoo aggregation platform. It returns field-level validation statuses for granular, programmable decision-making.
*This solution can be:
an add-on to your document-based Identity Verification (IDV), or
used separately as a stand-alone check. In this case a separate integration is needed, the whole flow is done over the API and you need to input all the data in initData.
All session-related info is returned via decision webhook and can be polled from different API endpoints. The results of the verification can also be viewed in the Veriff Customer Portal, in the Webhook tab.
Contact your solutions engineer for info and configuration.
Prerequisites
You have an integration set up with Veriff
The database check is configured for that integration by your Solutions Engineer
You have configured the decision webhook to get responses from Veriff (see the how-to in webhooks' Set up webhooks section)
If using the API, you are ready to collect and send Veriff your end-user's data
The data you need to send when creating a session depends on the database. Check regional databases' documentation for the exact list of fields.
Key terminology
Term | Description |
|---|---|
DataZoo | Third-party registry aggregation platform that Veriff uses to query government and commercial databases worldwide |
Registry | A specific external database source (e.g., "Australia Consumer", "Chile National ID") |
Registry Key | The identifier for each registry result in the webhook, formatted as In the examples below, indicated as placeholder |
initData | The data object sent by the customer in the |
End-user data sources
The "end-user data sources" refer to the origins from which the end-user's information can be collected for database verification. This solution is performed using initData.
InitData
This is data that you provide when creating a verification session, i.e. the parameters you specify in the POST /sessions request. Includes information like names, date of birth, address, phone number, ID number, gender etc.
General overview of the parameters sent via initData:
person.firstName:stringEnd-user's first nameperson.lastName:stringEnd-user's last nameperson.fullName:stringEnd-user’s first and last nameperson.dateOfBirth:stringDate of birth inYYYY-MM-DDformatperson.middleName:stringMiddle nameperson.gender:stringGender (M/F)person.email:stringEmail addressperson.phoneNumber:stringMobile phone numberperson.landLinePhoneNumber:stringLandline phone numberperson.idNumber:stringNational ID numberperson.partnerFirstName:stringPartner’s first nameperson.partnerLastName:stringPartner’s last nameperson.marriageDateOfEvent:stringMarriage dateperson.secondLastName:stringSecond last namedocument.number:stringDocument numberdocument.country:stringDocument issuing country (ISO 3166-1 alpha-2)document.validFrom:stringDocument issue/valid-from datedocument.validUntil:stringDocument expiry datedocument.cardNumber:stringPhysical card numberdocument.cardType:stringCard typedocument.stateOfIssue:stringState of issuedocument.referenceNumber:stringReference numberdocument.registrationNumber:stringRegistration numberdocument.version:stringDocument versionaddress.fullAddress:stringFull address stringaddress.street:stringStreet nameaddress.neighbourhood:stringUsually an unofficial neighbourhood nameaddress.city:stringCity nameaddress.state:stringA first-level administrative divisionaddress.postcode:stringPostcode numberconsents:arrayList of consent objectstype:stringConsent type (generalordvs)approved:booleanWhether consent was obtained
The data you need to send when creating a session depends on the database. Check regional databases' documentation for the exact list of fields.
Flow overview
Database flow
Step 1: you input end-user's data (initData) in POST /sessions API call
Step 2: system queries the appropriate database(s) based on country/region
Step 3: validation analysis, aka field-by-field comparison between input data and registry data, leading to validation of multiple data points (name, DOB, address, etc.)
Step 4: validation decision
Step 5: webhook is sent, containing:
Validation conclusion per field sent and supported by registry
Info about decision influence based on selected compared fields
Session flow
This solution is available only via API. You are responsible for gathering and passing all required initData.
Use via API
Generate a verification session using the
API keysand thebaseURLof your integration (see the API Documentation and API Reference[↗] how to find these).Check each database's documentation to see which initData parameters are required and allowed to be sent.
Patch session status to
submittedstatus using PATCH /sessions/{sessionId}[↗] call.This endpoint requires endpoint level authentication via
x-hmac-signatureheader. See HMAC Authentication and Endpoint Security article for general info about signature creation.
Sample request payload
curl -X PATCH 'https://stationapi.veriff.com/v1/sessions/fd5c1563-1d23-4b1a-ae46-7ba429927ed8' \
-H 'Content-Type: application/json' \
-H 'X-AUTH-CLIENT: your-api-key' \
-H 'x-hmac-signature: 034c6da2bb31fd9e6892516c6d7b90ebe10f79b47cfb3d155d77b4d9b66e1d53' \
-d '{
"verification": {
"status": "submitted"
}
}'
Database checks are run.
Check the decision data and/or session related info from the decision webhook and/or query the data from the GET /decisions endpoint. Check each database's documentation to see an example of the webhook and API response payload.
Find decision and/or session related info
You can get the data from three sources:
Receive the decision webhook webhook (check each database's documentation to see an example).
Query the results via GET sessions/{sessionId}/decision[↗] (payload is identical to webhook’s, check each database's documentation to see an example).
View the session in Veriff Customer Portal > All Verifications > Webhooks tab.
The data you see in the webhook / API response payload depends on the database. Check regional databases' documentation for the exact list of fields.
Note about object and field visibility
Some objects and fields within the registryValidations are optional.
You should expect that any key may be omitted from the payload or return a null value.
A field is included in the response only when it is not skipped. If a validation was configured but skipped, it is omitted from the webhook.
Because the response schema is dynamic and based on both your specific configuration and the quality of the initData provided, your application logic must account for omitted keys and null values as a standard part of the verification workflow.
Note on session outcomes
An approved session is identified by a verification.status of approved. Depending on your configuration, a "clean" result may also include:
All configured validations returned
successornot_applicable
If a validation is not enabled, it is omitted from the payload and do not impact the approved status.
Webhook/API response general structure
The example below uses placeholder data to show only the part that is relevant to Metadata Database Verification solution.
{
"verification": {
"registryValidations": {
"<REGISTRY_KEY>": {
"status": "success | failure | error",
"data": { ... } | null,
"error": null | {
"code": "enum string",
"message": "string"
},
"timestamp": null,
"validations": {
"<validation_code>": {
"result": "enum string",
"reason": "string | null"
}
}
}
}
}
}Parameters explained
verification:objectParent container for verification resultsregistryValidations:objectMetadata Database Verification results container<REGISTRY_KEY>:objectCombination of country code and registry name. Parent container for the specific registry resultsstatus:stringOverall result. Enum:success,failure, orerrordata:object|nullData returned from the registry (e.g., visa details, person status).nullif registry only performs matching without returning dataerror:object|nullStructured error when<REGISTRY_KEY>.statusiserror.nullotherwisetimestamp: Always returnsnullvalidations:object|nullMap of<validation_code>to the validations matching outcome as shown inresult.nullwhen<REGISTRY_KEY>.statusiserror
Available data object values
Person
firstNamelastNamemiddleNamefullName(AU_MEDICARE_CARD only)firstPartnerName(AU_MARRIAGE_CERTIFICATE only)lastPartnerName(AU_MARRIAGE_CERTIFICATE only)
Address
addressElement1addressElement2(GB_RESIDENTIAL only)addressElement3addressElement4addressElement5matchedAddress(GB_RESIDENTIAL only)
Contact
emailAddressphoneNolandlineNumber(GB_RESIDENTIAL only)
Document / Verification
documentNoverificationRequestNumber(DVS registries)passportNumber(AU_VEVO only)
Identity / Registry Score
dataSourceScore(AU_RESIDENTIAL, AU_CITIZENS)nationalIdNo(CL_NATIONAL_ID)nationalIdNoStatus(CL_NATIONAL_ID)
AU_VEVO-specific
visaClassvisaGrantDatevisaExpiryDatevisaStreamworkEntitlementStatusworkEntitlementStatusTextlocation
GB_FINANCIAL_SERVICES-specific
identityStrengthidentityValidityidentityFraudactivityHistorydeathRegistrationamberhillsiraFraudsiraImpersonationsynthIdNoMatch
GB_PHONE_2-specific
statusMessage
Available validation_code values
Note that if a validation is skipped, it does not appear in webhook.
processingSystem-level execution statusis_input_validWhether end-user data passed format validation(Note: has
detailsarray onfailure)
consent_obtainedWhether required consent was providedidentity_is_validWhether the person was found/verified in the registryfirst_name_matchFirst name comparison resultmiddle_name_matchMiddle name comparison resultlast_name_matchLast name comparison resultfull_name_matchFull name comparison resultfirst_partner_name_matchPartner’s first name comparison resultlast_partner_name_matchPartner’s last name comparison resultdate_of_birth_matchDate of birth comparison resultgender_matchGender comparison resultemail_matchEmail comparison resultphone_number_matchPhone number comparison resultland_line_phone_number_matchLandline phone comparison resultid_number_matchNational ID number comparison resultmarriage_date_of_event_matchMarriage date comparison resultaddress_full_address_matchFull address comparison resultaddress_street_matchStreet comparison resultaddress_city_matchCity comparison resultaddress_state_matchState comparison resultaddress_postcode_matchPostcode comparison resultaddress_neighbourhood_matchNeighbourhood comparison resultdocument_number_matchDocument number comparison resultdocument_card_number_matchCard number comparison resultdocument_version_matchDocument version comparison resultdocument_reference_number_matchReference number comparison resultdocument_valid_from_matchDocument valid-from date comparison result
validation_code.result statuses and meanings
successThe submitted value matches the registry recordfailurewith:reason:value_mismatchThe submitted value does not match the registry record
not_applicablewith:reason:input_not_providedThe input value was not provided for this validationreason:output_not_receivedThe registry did not return data for this field
validation_code.reason values
nullOn successvalue_mismatchProvided value does not match registryinput_not_providedInput value was not providedoutput_not_receivedRegistry didn't return the data pointperson_not_foundPerson not found in registryconsent_not_obtainedRequired consent was not giveninput_invalidInput data was provided but in incorrect formatregistry_unavailableRegistry could not be reachedtechnical_issuesInternal error occurred
error.code and error.message values
Note that:
These appear when
statusiserrorerrorisnullwhen registrystatusissuccessorfailure
|
|
|---|---|
| Two possible values:
|
|
|
Databases by regions
Australia ASIC Personal Name Register (AU_ASIC_PERSONAL_NAME_REGISTER)
Australia DVS - Australia Driver Licence (AU_DRIVER_LICENCE)
Australia DVS - Change of Name Certificate (AU_CHANGE_OF_NAME_CERTIFICATE)
Australia DVS - Citizenship Certificate (AU_CITIZENSHIP_CERTIFICATE)
Australia DVS - Marriage Certificate (AU_MARRIAGE_CERTIFICATE)
Australia Superannuation & Payroll (AU_SUPERANNUATION_PAYROLL)
APAC
🇦🇺 Australia ASIC Personal Name Register (AU_ASIC_PERSONAL_NAME_REGISTER)
Input parameters | POST /sessions example |
|---|---|
Mandatory
Optional
| |
Sample response payload
The following info can be found in decision webhook payload and GET /decision endpoint's payload, in verifications.registryValidations object.
{
"status": "success",
"verification": {
"registryValidations": {
"AU_ASIC_PERSONAL_NAME_REGISTER": {
"status": "success",
"data": {
"firstName": "Sarah",
"lastName": "Thompson",
"middleName": "Jane"
},
"validations": {
"processing": { "result": "success", "reason": null },
"consent_obtained": { "result": "success", "reason": null },
"is_input_valid": { "result": "success", "reason": null },
"identity_is_valid": { "result": "success", "reason": null },
"first_name_match": { "result": "success", "reason": null },
"last_name_match": { "result": "success", "reason": null },
"date_of_birth_match": { "result": "success", "reason": null },
"middle_name_match": { "result": "not_applicable", "reason": "input_not_provided" }
},
"error": null,
"timestamp": null
}
}
}
}🇦🇺 Australia Citizens (AU_CITIZENS)
Input parameters | POST /sessions example |
|---|---|
Mandatory
Conditionally required in addition to mandatory data
Optional
| Group A Group B with parsed address fields Group B with |
To send address info, you can send the data using EITHER parsed
address.street+address.postcodeparameters OR the full address viafullAddressparameter.Do not send both parsed address data AND the full address data.
Sample response payload
The following info can be found in decision webhook payload and GET /decision endpoint's payload, in verifications.registryValidations object.
{
"AU_CITIZENS": {
"status": "success",
"data": {
"addressElement1": "15 Queen Street",
"addressElement3": "Brisbane",
"addressElement4": "QLD",
"addressElement5": "4000",
"dataSourceScore": 0.92,
"documentNo": true,
"firstName": "Sarah",
"lastName": "Thompson",
"middleName": "Jane"
},
"validations": {
"processing": {"result": "success", "reason": null},
"is_input_valid": {"result": "success", "reason": null},
"identity_is_valid": {"result": "success", "reason": null},
"first_name_match": {"result": "success", "reason": null},
"last_name_match": {"result": "success", "reason": null},
"date_of_birth_match": {"result": "success", "reason": null},
"address_full_address_match": {"result": "success", "reason": null}
},
"error": null,
"timestamp": null
}
}🇦🇺Australia Consumer (AU_CONSUMER)
Input parameters | POST /sessions example |
|---|---|
Mandatory
Optional
| With parsed address elements With |
To send address info, you can send the data using EITHER parsed
address.street+address.neighbourhood+address.city+address.state+address.postcodeparameters OR the full address viafullAddressparameter.Do not send both parsed address data AND the full address data.
Sample response payload
The following info can be found in decision webhook payload and GET /decision endpoint's payload, in verifications.registryValidations object.
"AU_CONSUMER": {
"status": "success",
"data": {
"addressElement1": "8 Pitt Street",
"addressElement3": "Sydney",
"addressElement4": "NSW",
"emailAddress": "m.brown@example.com",
"firstName": "Michael",
"lastName": "Brown"
},
"validations": {
"processing": {"result": "success", "reason": null},
"is_input_valid": {"result": "success", "reason": null},
"first_name_match": {"result": "success", "reason": null},
"last_name_match": {"result": "success", "reason": null},
"date_of_birth_match": {"result": "success", "reason": null}
},
"error": null,
"timestamp": null
}
}🇦🇺 Australia Credit Bureau (AU_CREDIT_BUREAU)
Input parameters | POST /sessions example |
|---|---|
Mandatory
Optional
| With parsed address fields With |
To send address info, you can use either parsed
address.street+address.city+address.postcodeparameters or the full address viaaddress.fullAddress. Do not send both.
Sample response payload
The following info can be found in decision webhook payload and GET /decision endpoint's payload, in verifications.registryValidations object. Note that the payloads contain more parameters; to find info about them see the decision webhook and GET /decision endpoint's documentation.
{
"AU_CREDIT_BUREAU": {
"status": "success",
"data": {
"addressElement1": "18 Bourke Street",
"addressElement3": "Melbourne",
"addressElement4": "VIC",
"addressElement5": "3000",
"emailAddress": "p.henderson@example.com",
"firstName": "Patricia",
"lastName": "Henderson"
},
"validations": {
"processing": { "result": "success", "reason": null },
"is_input_valid": { "result": "success", "reason": null },
"consent_obtained": { "result": "success", "reason": null },
"identity_is_valid": { "result": "success", "reason": null },
"first_name_match": { "result": "success", "reason": null },
"last_name_match": { "result": "success", "reason": null },
"date_of_birth_match": { "result": "success", "reason": null },
"address_full_address_match": { "result": "success", "reason": null },
"email_match": { "result": "not_applicable", "reason": "output_not_received" },
"phone_number_match": { "result": "not_applicable", "reason": "output_not_received" }
},
"error": null,
"timestamp": null
}
}🇦🇺 Australia Death Check (AU_DEATH_CHECK)
Input parameters | POST /sessions example |
|---|---|
Mandatory
Optional
| With mandatory fields |
Sample response payload
The following info can be found in decision webhook payload and GET /decision endpoint's payload, in verifications.registryValidations object. Note that the payloads contain more parameters; to find info about them see the decision webhook and GET /decision endpoint's documentation.
{
"AU_DEATH_CHECK": {
"status": "success",
"data": {
"firstName": "Margaret",
"lastName": "Collins"
},
"validations": {
"processing": { "result": "success", "reason": null },
"is_input_valid": { "result": "success", "reason": null },
"identity_is_valid": { "result": "success", "reason": null },
"first_name_match": { "result": "success", "reason": null },
"last_name_match": { "result": "success", "reason": null },
"date_of_birth_match": { "result": "success", "reason": null }
},
"error": null,
"timestamp": null
}
}🇦🇺 Australia DVS - Australia Driver Licence (AU_DRIVER_LICENCE)
Input parameters | POST /sessions example |
|---|---|
Mandatory
Optional
| |
Sample response payload
The following info can be found in decision webhook payload and GET /decision endpoint's payload, in verifications.registryValidations object. Note that the payloads contain more parameters; to find info about them see the decision webhook and GET /decision endpoint's documentation.
{
"AU_DRIVER_LICENCE": {
"status": "success",
"data": {
"documentNo": "12345678",
"firstName": "Jason",
"lastName": "Murphy",
"middleName": "Paul",
"verificationRequestNumber": "VRN-20260415-00325"
},
"validations": {
"processing": { "result": "success", "reason": null },
"is_input_valid": { "result": "success", "reason": null },
"consent_obtained": { "result": "success", "reason": null },
"identity_is_valid": { "result": "success", "reason": null },
"first_name_match": { "result": "success", "reason": null },
"last_name_match": { "result": "success", "reason": null },
"middle_name_match": { "result": "success", "reason": null },
"date_of_birth_match": { "result": "success", "reason": null },
"document_number_match": { "result": "success", "reason": null }
},
"error": null,
"timestamp": null
}
}🇦🇺 Australia DVS - Australia Medicare Card (AU_MEDICARE_CARD)
Input parameters | POST /sessions example |
|---|---|
Mandatory
Optional
| |
Sample response payload
The following info can be found in decision webhook payload and GET /decision endpoint's payload, in verifications.registryValidations object. Note that the payloads contain more parameters; to find info about them see the decision webhook and GET /decision endpoint's documentation.
{
"AU_MEDICARE_CARD": {
"status": "success",
"data": {
"documentNo": "2123456701",
"firstName": "Laura",
"lastName": "Harrison",
"middleName": "Kate",
"fullName": "Laura Kate Harrison",
"verificationRequestNumber": "VRN-20260415-00337"
},
"validations": {
"processing": { "result": "success", "reason": null },
"is_input_valid": { "result": "success", "reason": null },
"consent_obtained": { "result": "success", "reason": null },
"identity_is_valid": { "result": "success", "reason": null },
"first_name_match": { "result": "success", "reason": null },
"last_name_match": { "result": "success", "reason": null },
"middle_name_match": { "result": "success", "reason": null },
"date_of_birth_match": { "result": "success", "reason": null },
"document_number_match": { "result": "success", "reason": null }
},
"error": null,
"timestamp": null
}
}🇦🇺 Australia DVS - Australia Passport (AU_PASSPORT)
Input parameters | POST /sessions example |
|---|---|
Mandatory
Optional
| |
Sample response payload
The following info can be found in decision webhook payload and GET /decision endpoint's payload, in verifications.registryValidations object. Note that the payloads contain more parameters; to find info about them see the decision webhook and GET /decision endpoint's documentation.
{
"AU_PASSPORT": {
"status": "success",
"data": {
"documentNo": "PA1234567",
"firstName": "Sophie",
"lastName": "Bennett",
"middleName": "Louise",
"verificationRequestNumber": "VRN-20260415-00331"
},
"validations": {
"processing": { "result": "success", "reason": null },
"is_input_valid": { "result": "success", "reason": null },
"consent_obtained": { "result": "success", "reason": null },
"identity_is_valid": { "result": "success", "reason": null },
"first_name_match": { "result": "success", "reason": null },
"last_name_match": { "result": "success", "reason": null },
"middle_name_match": { "result": "success", "reason": null },
"date_of_birth_match": { "result": "success", "reason": null },
"document_number_match": { "result": "success", "reason": null }
},
"error": null,
"timestamp": null
}
}🇦🇺 Australia DVS - Australia Visa (AU_VISA)
Input parameters | POST /sessions example |
|---|---|
Mandatory
| |
Sample response payload
The following info can be found in decision webhook payload and GET /decision endpoint's payload, in verifications.registryValidations object. Note that the payloads contain more parameters; to find info about them see the decision webhook and GET /decision endpoint's documentation.
{
"AU_VISA": {
"status": "success",
"data": {
"documentNo": "A12345678",
"firstName": "Amara",
"lastName": "Okafor",
"verificationRequestNumber": "VRN-20260415-00343"
},
"validations": {
"processing": { "result": "success", "reason": null },
"is_input_valid": { "result": "success", "reason": null },
"consent_obtained": { "result": "success", "reason": null },
"identity_is_valid": { "result": "success", "reason": null },
"first_name_match": { "result": "success", "reason": null },
"last_name_match": { "result": "success", "reason": null },
"date_of_birth_match": { "result": "success", "reason": null },
"document_number_match": { "result": "success", "reason": null }
},
"error": null,
"timestamp": null
}
}🇦🇺 Australia DVS - Birth Certificate (AU_BIRTH_CERTIFICATE)
Input parameters | POST /sessions example |
|---|---|
Mandatory
Optional
| |
Sample response payload
The following info can be found in decision webhook payload and GET /decision endpoint's payload, in verifications.registryValidations object. Note that the payloads contain more parameters; to find info about them see the decision webhook and GET /decision endpoint's documentation.
{
"AU_BIRTH_CERTIFICATE": {
"status": "success",
"data": {
"documentNo": "BC4872910",
"firstName": "Emily",
"lastName": "Clarke",
"middleName": "Rose",
"verificationRequestNumber": "VRN-20260415-00312"
},
"validations": {
"processing": { "result": "success", "reason": null },
"is_input_valid": { "result": "success", "reason": null },
"consent_obtained": { "result": "success", "reason": null },
"identity_is_valid": { "result": "success", "reason": null },
"first_name_match": { "result": "success", "reason": null },
"last_name_match": { "result": "success", "reason": null },
"middle_name_match": { "result": "success", "reason": null },
"date_of_birth_match": { "result": "success", "reason": null },
"document_number_match": { "result": "success", "reason": null }
},
"error": null,
"timestamp": null
}
}🇦🇺 Australia DVS - Centrelink Card (AU_CENTRELINK_CARD)
Input parameters | POST /sessions example |
|---|---|
Mandatory
Optional
| |
Sample response payload
The following info can be found in decision webhook payload and GET /decision endpoint's payload, in verifications.registryValidations object. Note that the payloads contain more parameters; to find info about them see the decision webhook and GET /decision endpoint's documentation.
{
"AU_CENTRELINK_CARD": {
"status": "success",
"data": {
"documentNo": "123456789A",
"firstName": "Barbara",
"lastName": "Nguyen",
"middleName": "Anne",
"verificationRequestNumber": "VRN-20260415-00318"
},
"validations": {
"processing": { "result": "success", "reason": null },
"is_input_valid": { "result": "success", "reason": null },
"consent_obtained": { "result": "success", "reason": null },
"identity_is_valid": { "result": "success", "reason": null },
"first_name_match": { "result": "success", "reason": null },
"last_name_match": { "result": "success", "reason": null },
"middle_name_match": { "result": "success", "reason": null },
"date_of_birth_match": { "result": "success", "reason": null },
"document_number_match": { "result": "success", "reason": null }
},
"error": null,
"timestamp": null
}
}🇦🇺 Australia DVS - Change of Name Certificate (AU_CHANGE_OF_NAME_CERTIFICATE)
Input parameters | POST /sessions example |
|---|---|
Mandatory
| |
Sample response payload
The following info can be found in decision webhook payload and GET /decision endpoint's payload, in verifications.registryValidations object. Note that the payloads contain more parameters; to find info about them see the decision webhook and GET /decision endpoint's documentation.
{
"AU_CHANGE_OF_NAME_CERTIFICATE": {
"status": "success",
"data": {
"documentNo": "CN-20100045",
"firstName": "Rachel",
"lastName": "Greenwood",
"middleName": "Anne",
"verificationRequestNumber": "VRN-20260415-00355"
},
"validations": {
"processing": { "result": "success", "reason": null },
"is_input_valid": { "result": "success", "reason": null },
"consent_obtained": { "result": "success", "reason": null },
"identity_is_valid": { "result": "success", "reason": null },
"first_name_match": { "result": "success", "reason": null },
"last_name_match": { "result": "success", "reason": null },
"date_of_birth_match": { "result": "success", "reason": null },
"document_number_match": { "result": "success", "reason": null }
},
"error": null,
"timestamp": null
}
}🇦🇺 Australia DVS - Citizenship Certificate (AU_CITIZENSHIP_CERTIFICATE)
Input parameters | POST /sessions example |
|---|---|
Mandatory
Optional
| |
Sample response payload
The following info can be found in decision webhook payload and GET /decision endpoint's payload, in verifications.registryValidations object. Note that the payloads contain more parameters; to find info about them see the decision webhook and GET /decision endpoint's documentation.
{
"AU_CITIZENSHIP_CERTIFICATE": {
"status": "success",
"data": {
"documentNo": "CERT-1234567",
"firstName": "Lena",
"lastName": "Petrova",
"middleName": "Maria",
"verificationRequestNumber": "VRN-20260415-00349"
},
"validations": {
"processing": { "result": "success", "reason": null },
"is_input_valid": { "result": "success", "reason": null },
"consent_obtained": { "result": "success", "reason": null },
"identity_is_valid": { "result": "success", "reason": null },
"first_name_match": { "result": "success", "reason": null },
"last_name_match": { "result": "success", "reason": null },
"middle_name_match": { "result": "success", "reason": null },
"date_of_birth_match": { "result": "success", "reason": null },
"document_number_match": { "result": "success", "reason": null }
},
"error": null,
"timestamp": null
}
}🇦🇺 Australia DVS - ImmiCard (AU_IMMICARD)
Input parameters | POST /sessions example |
|---|---|
Mandatory
Optional
| |
Sample response payload
The following info can be found in decision webhook payload and GET /decision endpoint's payload, in verifications.registryValidations object. Note that the payloads contain more parameters; to find info about them see the decision webhook and GET /decision endpoint's documentation.
{
"AU_IMMICARD": {
"status": "success",
"data": {
"documentNo": "HAA123456",
"firstName": "Thanh",
"lastName": "Nguyen",
"middleName": "Van",
"verificationRequestNumber": "VRN-20260415-00361"
},
"validations": {
"processing": { "result": "success", "reason": null },
"is_input_valid": { "result": "success", "reason": null },
"consent_obtained": { "result": "success", "reason": null },
"identity_is_valid": { "result": "success", "reason": null },
"first_name_match": { "result": "success", "reason": null },
"last_name_match": { "result": "success", "reason": null },
"middle_name_match": { "result": "success", "reason": null },
"date_of_birth_match": { "result": "success", "reason": null },
"document_number_match": { "result": "success", "reason": null }
},
"error": null,
"timestamp": null
}
}🇦🇺 Australia DVS - Marriage Certificate (AU_MARRIAGE_CERTIFICATE)
Input parameters | POST /sessions example |
|---|---|
Mandatory
Optional
| |
Sample response payload
The following info can be found in decision webhook payload and GET /decision endpoint's payload, in verifications.registryValidations object. Note that the payloads contain more parameters; to find info about them see the decision webhook and GET /decision endpoint's documentation.
{
"AU_MARRIAGE_CERTIFICATE": {
"status": "success",
"data": {
"documentNo": "MC-2012-00891",
"firstName": "Claire",
"lastName": "Sutton",
"firstPartnerName": "Daniel",
"lastPartnerName": "Sutton",
"verificationRequestNumber": "VRN-20260415-00367"
},
"validations": {
"processing": { "result": "success", "reason": null },
"is_input_valid": { "result": "success", "reason": null },
"consent_obtained": { "result": "success", "reason": null },
"identity_is_valid": { "result": "success", "reason": null },
"first_name_match": { "result": "success", "reason": null },
"last_name_match": { "result": "success", "reason": null },
"date_of_birth_match": { "result": "success", "reason": null },
"first_partner_name_match": { "result": "success", "reason": null },
"last_partner_name_match": { "result": "success", "reason": null },
"document_number_match": { "result": "success", "reason": null }
},
"error": null,
"timestamp": null
}
}🇦🇺 Australia DVS - Travel Document (AU_TRAVEL_DOCUMENT)
Input parameters | POST /sessions example |
|---|---|
Mandatory
Optional
| |
Sample response payload
The following info can be found in decision webhook payload and GET /decision endpoint's payload, in verifications.registryValidations object. Note that the payloads contain more parameters; to find info about them see the decision webhook and GET /decision endpoint's documentation.
{
"AU_TRAVEL_DOCUMENT": {
"status": "success",
"data": {
"documentNo": "TD9876543",
"firstName": "Fatima",
"lastName": "Al-Rashid",
"middleName": "Zara",
"verificationRequestNumber": "VRN-20260415-00373"
},
"validations": {
"processing": { "result": "success", "reason": null },
"is_input_valid": { "result": "success", "reason": null },
"consent_obtained": { "result": "success", "reason": null },
"identity_is_valid": { "result": "success", "reason": null },
"first_name_match": { "result": "success", "reason": null },
"last_name_match": { "result": "success", "reason": null },
"date_of_birth_match": { "result": "success", "reason": null },
"document_number_match": { "result": "success", "reason": null }
},
"error": null,
"timestamp": null
}
}🇦🇺 Australia Electoral Roll (AU_ELECTORAL_ROLL)
Input parameters | POST /sessions example |
|---|---|
Mandatory
| With parsed address fields With |
To send address info, you can use either parsed
address.street+address.city+address.postcodeparameters or the full address viaaddress.fullAddress. Do not send both.
Sample response payload
The following info can be found in decision webhook payload and GET /decision endpoint's payload, in verifications.registryValidations object. Note that the payloads contain more parameters; to find info about them see the decision webhook and GET /decision endpoint's documentation.
{
"AU_ELECTORAL_ROLL": {
"status": "success",
"data": {
"addressElement1": "27 Flinders Street",
"addressElement3": "Melbourne",
"addressElement4": "VIC",
"addressElement5": "3000",
"firstName": "Robert",
"lastName": "Mitchell"
},
"validations": {
"processing": { "result": "success", "reason": null },
"is_input_valid": { "result": "success", "reason": null },
"consent_obtained": { "result": "success", "reason": null },
"identity_is_valid": { "result": "success", "reason": null },
"first_name_match": { "result": "success", "reason": null },
"last_name_match": { "result": "success", "reason": null },
"date_of_birth_match": { "result": "success", "reason": null },
"address_full_address_match": { "result": "success", "reason": null }
},
"error": null,
"timestamp": null
}
}🇦🇺 Australia Phone (AU_PHONE)
Input parameters | POST /sessions example |
|---|---|
Mandatory
| With parsed address fields With |
To send address info, you can use either parsed
address.street+address.city+address.postcodeparameters or the full address viaaddress.fullAddress. Do not send both.
Sample response payload
The following info can be found in decision webhook payload and GET /decision endpoint's payload, in verifications.registryValidations object. Note that the payloads contain more parameters; to find info about them see the decision webhook and GET /decision endpoint's documentation.
{
"AU_PHONE": {
"status": "success",
"data": {
"addressElement1": "14 Park Road",
"addressElement3": "Brisbane",
"addressElement4": "QLD",
"addressElement5": "4000",
"firstName": "Gregory",
"lastName": "Walsh",
"middleName": "Alan",
"phoneNo": "+61731234567"
},
"validations": {
"processing": { "result": "success", "reason": null },
"is_input_valid": { "result": "success", "reason": null },
"identity_is_valid": { "result": "success", "reason": null },
"first_name_match": { "result": "success", "reason": null },
"last_name_match": { "result": "success", "reason": null },
"address_full_address_match": { "result": "success", "reason": null }
},
"error": null,
"timestamp": null
}
}🇦🇺 Australia Residential (AU_RESIDENTIAL)
Input parameters | POST /sessions example |
|---|---|
Mandatory
Optional
| With date of birth and other optional data With parsed address fields and other optional data With |
Note that you should send EITHER the date of birth info OR the address info.
To send address info, you can send the data using EITHER parsed
address.street+address.city+address.postcodeparameters OR the full address viafullAddressparameter.Do not sent both date of birth data and address data.
Do not send both parsed address data AND the full address data.
Sample response payload
The following info can be found in decision webhook payload and GET /decision endpoint's payload, in verifications.registryValidations object. Note that the payloads contain more parameters; to find info about them see the decision webhook and GET /decision endpoint's documentation.
{
"AU_RESIDENTIAL": {
"status": "success",
"data": {
"addressElement1": "42 George Street",
"addressElement3": "Sydney",
"addressElement4": "NSW",
"addressElement5": "2000",
"dataSourceScore": 0.95,
"emailAddress": "james.wilson@example.com",
"firstName": "James",
"lastName": "Wilson",
"middleName": "Robert"
},
"validations": {
"processing": {"result": "success", "reason": null},
"is_input_valid": {"result": "success", "reason": null},
"identity_is_valid": {"result": "success", "reason": null},
"first_name_match": {"result": "success", "reason": null},
"last_name_match": {"result": "success", "reason": null},
"middle_name_match": {"result": "success", "reason": null},
"date_of_birth_match": {"result": "success", "reason": null},
"address_full_address_match": {"result": "success", "reason": null},
"email_match": {"result": "not_applicable", "reason": "output_not_received"},
"phone_number_match": {"result": "not_applicable", "reason": "output_not_received"}
},
"error": null,
"timestamp": null
}
}🇦🇺 Australia Residential Lookup (AU_RESIDENTIAL_LOOKUP)
Input parameters | POST /sessions example |
|---|---|
Mandatory
Optional
| Mandatory fields only With all optional fields |
If sending address, you can use either parsed
address.street+address.city+address.postcodeparameters or the full address viaaddress.fullAddress. Do not send both.
Sample response payload
The following info can be found in decision webhook payload and GET /decision endpoint's payload, in verifications.registryValidations object. Note that the payloads contain more parameters; to find info about them see the decision webhook and GET /decision endpoint's documentation.
{
"AU_RESIDENTIAL_LOOKUP": {
"status": "success",
"data": {
"addressElement1": "5 Collins Street",
"addressElement3": "Melbourne",
"addressElement4": "VIC",
"addressElement5": "3000",
"firstName": "David",
"lastName": "Anderson",
"middleName": "James"
},
"validations": {
"processing": { "result": "success", "reason": null },
"is_input_valid": { "result": "success", "reason": null },
"identity_is_valid": { "result": "success", "reason": null },
"first_name_match": { "result": "success", "reason": null },
"last_name_match": { "result": "success", "reason": null },
"middle_name_match": { "result": "success", "reason": null },
"date_of_birth_match": { "result": "success", "reason": null },
"gender_match": { "result": "success", "reason": null },
"phone_number_match": { "result": "not_applicable", "reason": "output_not_received" },
"land_line_phone_number_match": { "result": "not_applicable", "reason": "output_not_received" },
"address_full_address_match": { "result": "success", "reason": null }
},
"error": null,
"timestamp": null
}
}🇦🇺 Australia Superannuation & Payroll (AU_SUPERANNUATION_PAYROLL)
Input parameters | POST /sessions example |
|---|---|
Mandatory
Optional
| Mandatory fields only With optional address |
If sending address, you can use either parsed
address.street+address.city+address.postcodeparameters or the full address viaaddress.fullAddress. Do not send both.
Sample response payload
The following info can be found in decision webhook payload and GET /decision endpoint's payload, in verifications.registryValidations object. Note that the payloads contain more parameters; to find info about them see the decision webhook and GET /decision endpoint's documentation.
{
"AU_SUPERANNUATION_PAYROLL": {
"status": "success",
"data": {
"addressElement1": "33 King Street",
"addressElement3": "Perth",
"addressElement4": "WA",
"addressElement5": "6000",
"firstName": "Andrew",
"lastName": "Fletcher"
},
"validations": {
"processing": { "result": "success", "reason": null },
"is_input_valid": { "result": "success", "reason": null },
"consent_obtained": { "result": "success", "reason": null },
"identity_is_valid": { "result": "success", "reason": null },
"first_name_match": { "result": "success", "reason": null },
"last_name_match": { "result": "success", "reason": null },
"date_of_birth_match": { "result": "success", "reason": null },
"address_full_address_match": { "result": "success", "reason": null }
},
"error": null,
"timestamp": null
}
}🇦🇺 Australia TICA Tenancy Register (AU_TICA_TENANCY_REGISTER)
Input parameters | POST /sessions example |
|---|---|
Mandatory
Optional
| |
Sample response payload
The following info can be found in decision webhook payload and GET /decision endpoint's payload, in verifications.registryValidations object.
{
"status": "success",
"verification": {
"registryValidations": {
"AU_TICA_TENANCY_REGISTER": {
"status": "success",
"data": {
"firstName": "Tom",
"lastName": "Evans",
"middleName": "Michael"
},
"validations": {
"processing": { "result": "success", "reason": null },
"consent_obtained": { "result": "success", "reason": null },
"is_input_valid": { "result": "success", "reason": null },
"identity_is_valid": { "result": "success", "reason": null },
"first_name_match": { "result": "success", "reason": null },
"last_name_match": { "result": "success", "reason": null },
"date_of_birth_match": { "result": "success", "reason": null },
"middle_name_match": { "result": "not_applicable", "reason": "input_not_provided" }
},
"error": null,
"timestamp": null
}
}
}
}🇦🇺 Australia VEVO (AU_VEVO)
Input parameters | POST /sessions example |
|---|---|
Mandatory
| |
Sample response payload
The following info can be found in decision webhook payload and GET /decision endpoint's payload, in verifications.registryValidations object. Note that the payloads contain more parameters; to find info about them see the decision webhook and GET /decision endpoint's documentation.
{
"AU_VEVO": {
"status": "success",
"data": {
"passportNumber": "EH1234567",
"visaClass": "500",
"visaGrantDate": "2023-07-15",
"visaExpiryDate": "2026-07-15",
"visaStream": "Student",
"workEntitlementStatus": "entitled",
"workEntitlementStatusText": "May work up to 48 hours per fortnight while course is in session",
"location": "Australia"
},
"validations": {
"processing": { "result": "success", "reason": null },
"is_input_valid": { "result": "success", "reason": null },
"consent_obtained": { "result": "success", "reason": null },
"identity_is_valid": { "result": "success", "reason": null },
"first_name_match": { "result": "success", "reason": null },
"last_name_match": { "result": "success", "reason": null },
"date_of_birth_match": { "result": "success", "reason": null },
"document_number_match": { "result": "success", "reason": null }
},
"error": null,
"timestamp": null
}
}LATAM
🇨🇱 Chile National ID (CL_NATIONAL_ID)
Input parameters | POST /sessions example |
|---|---|
Mandatory
Optional
| |
Sample response payload
The following info can be found in decision webhook payload and GET /decision endpoint's payload, in verifications.registryValidations object.
"CL_NATIONAL_ID": {
"status": "success",
"data": {
"firstName": "Carlos",
"lastName": "Gonzalez",
"middleName": "Andrés",
"nationalIdNo": "12345678-9",
"nationalIdNoStatus": "VALID"
},
"validations": {
"processing": {"result": "success", "reason": null},
"is_input_valid": {"result": "success", "reason": null},
"identity_is_valid": {"result": "success", "reason": null},
"first_name_match": {"result": "success", "reason": null},
"last_name_match": {"result": "success", "reason": null},
"date_of_birth_match": {"result": "success", "reason": null},
"id_number_match": {"result": "success", "reason": null}
},
"error": null,
"timestamp": null
}
}🇨🇱 Chile Residential (CL_RESIDENTIAL)
Input parameters | POST /sessions example |
|---|---|
Mandatory
Optional
| |
Sample response payload
The following info can be found in decision webhook payload and GET /decision endpoint's payload, in verifications.registryValidations object.
{
"CL_RESIDENTIAL": {
"status": "failure",
"data": {
"addressElement1": "Av Libertador Bernardo O'Higgins 1234",
"firstName": "Valentina",
"lastName": "Muñoz",
"middleName": "Isabel"
},
"validations": {
"processing": {"result": "success", "reason": null},
"is_input_valid": {"result": "success", "reason": null},
"identity_is_valid": {"result": "failure", "reason": "person_not_found"},
"first_name_match": {"result": "not_applicable", "reason": "output_not_received"},
"last_name_match": {"result": "not_applicable", "reason": "output_not_received"}
},
"error": null,
"timestamp": null
}
}EMEA
🇬🇧 United Kingdom Citizens (GB_CITIZENS)
Input parameters | POST /sessions example |
|---|---|
Mandatory
| With parsed address fields With |
To send address info, you can use either parsed
address.street+address.city+address.postcodeparameters or the full address viaaddress.fullAddress. Do not send both.
Sample response payload
The following info can be found in decision webhook payload and GET /decision endpoint's payload, in verifications.registryValidations object.
{
"GB_CITIZENS": {
"status": "success",
"data": {
"firstName": "Oliver",
"lastName": "Thornton"
},
"validations": {
"processing": { "result": "success", "reason": null },
"is_input_valid": { "result": "success", "reason": null },
"identity_is_valid": { "result": "success", "reason": null },
"first_name_match": { "result": "success", "reason": null },
"last_name_match": { "result": "success", "reason": null },
"date_of_birth_match": { "result": "success", "reason": null },
"address_full_address_match": { "result": "success", "reason": null }
},
"error": null,
"timestamp": null
}
}🇬🇧 United Kingdom Consumer (GB_CONSUMER)
Input parameters | POST /sessions example |
|---|---|
Mandatory
Optional
| With all optional data |
Sample response payload
The following info can be found in decision webhook payload and GET /decision endpoint's payload, in verifications.registryValidations object.
{
"GB_CONSUMER": {
"status": "success",
"data": {
"addressElement1": "25 Baker Street",
"addressElement3": "London",
"addressElement4": "Greater London",
"addressElement5": "W1U 8EW",
"emailAddress": "emma.clark@example.co.uk",
"firstName": "Emma",
"lastName": "Clark"
},
"validations": {
"processing": {"result": "success", "reason": null},
"is_input_valid": {"result": "success", "reason": null},
"first_name_match": {"result": "success", "reason": null},
"last_name_match": {"result": "success", "reason": null},
"date_of_birth_match": {"result": "success", "reason": null}
},
"error": null,
"timestamp": null
}
}🇬🇧 United Kingdom Credit Bureau (GB_CREDIT_BUREAU)
Input parameters | POST /sessions example |
|---|---|
Mandatory
| With parsed address fields With |
To send address info, you can use either parsed
address.street+address.city+address.postcodeparameters or the full address viaaddress.fullAddress. Do not send both.
Sample response payload
The following info can be found in decision webhook payload and GET /decision endpoint's payload, in verifications.registryValidations object.
{
"GB_CREDIT_BUREAU": {
"status": "success",
"data": {
"addressElement1": "45 Threadneedle Street",
"addressElement3": "London",
"addressElement4": "Greater London",
"addressElement5": "EC2R 8AH",
"firstName": "Charlotte",
"lastName": "Pemberton",
"middleName": "Anne"
},
"validations": {
"processing": { "result": "success", "reason": null },
"is_input_valid": { "result": "success", "reason": null },
"consent_obtained": { "result": "success", "reason": null },
"identity_is_valid": { "result": "success", "reason": null },
"first_name_match": { "result": "success", "reason": null },
"last_name_match": { "result": "success", "reason": null },
"date_of_birth_match": { "result": "success", "reason": null },
"address_full_address_match": { "result": "success", "reason": null }
},
"error": null,
"timestamp": null
}
}🇬🇧 United Kingdom Financial Services (GB_FINANCIAL_SERVICES)
Input parameters | POST /sessions example |
|---|---|
Mandatory
Optional
| With parsed address fields With |
To send address info, you can use either parsed
address.street+address.city+address.postcodeparameters or the full address viaaddress.fullAddress. Do not send both.
Sample response payload
The following info can be found in decision webhook payload and GET /decision endpoint's payload, in verifications.registryValidations object.
{
"GB_FINANCIAL_SERVICES": {
"status": "success",
"data": {
"addressElement1": "8 Canary Wharf",
"addressElement3": "London",
"addressElement4": "Greater London",
"addressElement5": "E14 5AB",
"firstName": "James",
"lastName": "Whitfield",
"identityStrength": 85,
"identityValidity": "valid",
"identityFraud": false,
"activityHistory": "established",
"deathRegistration": false,
"amberhill": false,
"siraFraud": false,
"siraImpersonation": false,
"synthIdNoMatch": false
},
"validations": {
"processing": { "result": "success", "reason": null },
"is_input_valid": { "result": "success", "reason": null },
"identity_is_valid": { "result": "success", "reason": null },
"first_name_match": { "result": "success", "reason": null },
"last_name_match": { "result": "success", "reason": null },
"date_of_birth_match": { "result": "success", "reason": null },
"address_full_address_match": { "result": "success", "reason": null },
"phone_number_match": { "result": "success", "reason": null }
},
"error": null,
"timestamp": null
}
}🇬🇧 United Kingdom Phone (GB_PHONE)
Input parameters | POST /sessions example |
|---|---|
Mandatory
Optional
| Mandatory fields only With optional address |
If sending address, you can use either parsed
address.street+address.city+address.postcodeparameters or the full address viaaddress.fullAddress. Do not send both.
Sample response payload
The following info can be found in decision webhook payload and GET /decision endpoint's payload, in verifications.registryValidations object.
{
"GB_PHONE": {
"status": "success",
"data": {
"addressElement1": "37 Victoria Street",
"addressElement3": "Manchester",
"addressElement4": "Greater Manchester",
"addressElement5": "M2 3BQ",
"firstName": "Thomas",
"lastName": "Hargreaves",
"phoneNo": "+447700900456"
},
"validations": {
"processing": { "result": "success", "reason": null },
"is_input_valid": { "result": "success", "reason": null },
"identity_is_valid": { "result": "success", "reason": null },
"first_name_match": { "result": "success", "reason": null },
"last_name_match": { "result": "success", "reason": null },
"phone_number_match": { "result": "success", "reason": null },
"address_full_address_match": { "result": "success", "reason": null }
},
"error": null,
"timestamp": null
}
}🇬🇧 United Kingdom Phone 2 (GB_PHONE_2)
Input parameters | POST /sessions example |
|---|---|
Mandatory
Optional
| With parsed address and optional DOB With |
To send address info, you can use either parsed
address.street+address.city+address.postcodeparameters or the full address viaaddress.fullAddress. Do not send both.
Sample response payload
The following info can be found in decision webhook payload and GET /decision endpoint's payload, in verifications.registryValidations object.
{
"GB_PHONE_2": {
"status": "success",
"data": {
"addressElement1": "19 Princes Street",
"addressElement3": "Edinburgh",
"addressElement5": "EH2 2BY",
"firstName": "Fiona",
"lastName": "MacAllister",
"phoneNo": "+447911654321",
"statusMessage": "Match found"
},
"validations": {
"processing": { "result": "success", "reason": null },
"is_input_valid": { "result": "success", "reason": null },
"identity_is_valid": { "result": "success", "reason": null },
"first_name_match": { "result": "success", "reason": null },
"last_name_match": { "result": "success", "reason": null },
"date_of_birth_match": { "result": "success", "reason": null },
"phone_number_match": { "result": "success", "reason": null },
"address_full_address_match": { "result": "success", "reason": null }
},
"error": null,
"timestamp": null
}
}🇬🇧 United Kingdom Residential (GB_RESIDENTIAL)
Input parameters | POST /sessions example |
|---|---|
Mandatory
Optional
| With all optional data |
Sample response payload
The following info can be found in decision webhook payload and GET /decision endpoint's payload, in verifications.registryValidations object.
{
"GB_RESIDENTIAL": {
"status": "success",
"data": {
"addressElement1": "10 Downing Street",
"addressElement2": "Westminster",
"addressElement3": "London",
"addressElement4": "England",
"addressElement5": "SW1A 2AA",
"emailAddress": null,
"firstName": "William",
"landlineNumber": "+442071234567",
"lastName": "Davies",
"matchedAddress": "10 Downing Street"
},
"validations": {
"processing": {"result": "success", "reason": null},
"is_input_valid": {"result": "success", "reason": null},
"identity_is_valid": {"result": "success", "reason": null},
"first_name_match": {"result": "success", "reason": null},
"last_name_match": {"result": "success", "reason": null},
"date_of_birth_match": {"result": "success", "reason": null},
"address_full_address_match": {"result": "success", "reason": null},
"phone_number_match": {"result": "success", "reason": null},
"land_line_phone_number_match": {"result": "success", "reason": null}
},
"error": null,
"timestamp": null
}
}Status and reason codes
For info about the session, see:
verification.codeabout verification session decision code, one of9001,9102,9103,9104,9121.verification.statusabout verification status, one ofapproved,declined,resubmission_requested,expired,abandoned.
If the Metadata Database Verification session was declined or resubmission_requested, you can find additional information by checking:
verification.reasonfor the reason why the verification failed.verification.reasonCodefor reason code of the failed verification and cross-reference it with Granular reason codes (table).
|
|
| What does it mean? |
|---|---|---|---|
| 529 | Unable to validate National Id data | The registry check failed. The person was not found or data did not match. Check |
| 9102 | Declined | Generic decline. Check |
The table above aims to list the most common reasons why you may see the decline or resubmission_requested reason for a Metadata Database Verification session. However, the session may be declined due to a reason that is not inherently related to this solution's flow (e.g. uploaded document's quality is low). In that case, to find info about the codes you are seeing, refer to:
Additional data
Best practices
In API flow, ensure that initData is present, especially the mandatory fields.
Ensure correct data formats to reduce the possibility of session going to
resubmission_requested.Document image quality: ensure that end-user's document image is of good quality. This will reduce the possibility of session going to
resubmission_requested.Person's ID number is always sent in the
document.numberparameter (notperson.idNumber).Error handling: implement proper error handling for all possible validation results.
Session declined due to third-party provider issues: implement proper session handling flow when possibly legitimate end-user's session is declined due to the third-party service provider having issues, as indicated by session code
registry_unavailable,technical_issue, orregistry_timeout.Webhook security: secure your webhook endpoint and verify request signatures.
User experience: provide clear feedback to users about validation results.
Ensure backwards compatibility for webhooks and API connections.
FAQ
Can I query multiple registries in a single session?
Yes. The workflow can be configured with multiple Metadata Database Verification steps, each targeting a different registry. Results for each registry appear under their respective keys in registryValidations.
What happens if I send a field that the registry does not support?
Extra fields are ignored. Only the fields relevant to the configured registry are used.
How do I know which fields are mandatory for a specific registry?
See the per-registry documentation in the Databases by Regions section. Mandatory fields are listed for each database.
What if the registry returns data about the person?
Returned data appears in the data object of the registry result. Not all registries return data, some only perform matching.
Changelog
Date | Description |
|---|---|
Apr 20, 2026 | Documentation updated |
Apr 16, 2026 | Documentation updated |
Apr 8, 2026 | Documentation published |