> [!NOTE] > This version is no longer recommended for use and will be retired in 2026. Identity data verification checks personal information such as name, address, date of birth and/or national ID from various data sources to quickly confirm if an individual is who they claim to be. --- ## Validate Identity global This service verifies a person’s address or identity information such as name and address via background data source lookups in a multitude of registers. The list of supported countries is large and is expanded through quick configuration. ### APIs [Set up:](https://developers.zignsec.com/legacy/register-checks#validateIdRequest)POST to https://`env`.zignsec.com/v2/ekyc/validateidentity where `env` is API or test. ### MatchLevel The main response is a `MatchLevel` set to HIGH, MEDIUM or LOW indicating the similarity between the in-data and the best found match in the specified country. - **HIGH** – a very good match – The data item (ex user) should be accepted as referring to the same item (ex individual). - **MEDIUM** – a **business decision**. Maybe the item (ex user) could be accepted but needs manual inspection. - **LOW** – a poor match – The data item (ex user) should **not** be accepted as the items are too different. ### ValidationMethod and the Pricing Level To know more about the price level, please contact sales. ## 1. ValidationMethods: **Validate identity id1x1:** Queries until found in one data source allows: - a. validate identity fields. See more details in [zignsec_id_1x1-1.pdf](https://docs.zignsec.com/wp-content/uploads/2022/04/zignsec_id_1x1-1.pdf) - b. Validate Name, National ID and Date of birth. [NID matchguide](https://docs.zignsec.com/wp-content/uploads/2021/05/Validate_Identity_Remaining-matchguide_V2.pdf) - c. Validate Name_Address_ID. [NAI_Match Guide](https://docs.zignsec.com/wp-content/uploads/2021/06/NAI_Match-Guide.pdf) - d. Validate Name_Address_ID. [NAI_v2_Match Guide](https://docs.zignsec.com/wp-content/uploads/2021/06/NAI_v2_Match-Guide.pdf) - e. Validate Name_Address **2. Validate identity id2x2:** Queries until found in two data sources. Suitable for UK. [MatchGuide for Validate_Identity_Default_2x2](https://docs.zignsec.com/wp-content/uploads/2021/06/MatchGuide_Validate_Identity_Default_2x2.pdf) Note that the different tenants described above are available in different countries. You can check the coverage with sales or support service. You can select a specialized query configuration with the `ValidationMethod` parameter. Contact ZignSec for the correct set up. ### Test Data and Tuning [In our test environment we query against a cache of test persons listed in a table here.](http://docs.zignsec.com/wp-content/uploads/2018/06/testdata.htm) The test cache is designed for integration testing and validation not for quality or match rate tuning, we would suggest using live data for that. [Here is a link to global_sourcebook](https://www.grcdi.nl/gsb/global%20sourcebook.html) – a site with excellent coverage of address formats country per country. Click on the Country, and then on the link Addresses or Address examples. ## Parameters On the Query node level: | | | |---|---| |CountryCode|Mandatory parameter. Sets the country to query in. This should be in the 2 digit code format (ISO 3166-1) [https://www.nationsonline.org/oneworld/country_code_list.htm](https://www.nationsonline.org/oneworld/country_code_list.htm)| |FirstName|| |LastName|| |DateOfBirth|In the form YYYY-MM-DD| |PersonalNumber|The national identity number| |MobileNumber|Enables search by phone number where service is available.| |Address|First address line, normally street name and number, possibly other info such as floor.| |Address2|An optional second address line.| |PostalCode|| |City|| On the root level: | | | |---|---| |**Environment**|Optional parameter. Can switch between test/prod for easier testing. See [Environment](http://docs.zignsec.com/api/common-data/#environment) at the Common Data documentation.| |**QuerySettings**|Optional settings for the query. ValidationMethod: Use a specified validation method, for example requiring that two data sources are needed.| |**ResponseFormat**|Possible values: <br>`flat`: Strings format. Readable format. <br>`structured`: Object format. JSON parsing format.| **Request example:** ```swift POST https://test.zignsec.com/v2/ekyc/validateIdentity HTTP/1.1 User-Agent: Fiddler Content-Length: 200 Content-Type: application/json; charset=UTF-8 Authorization: YOUR ACCESS TOKEN Host: test.zignsec.com { "Query": { "FirstName":"Viktor", "LastName":"Rydberg", "CountryCode":"SE", "Address":"SOMMARBO 207", "PostalCode":"13767", "City":"JORDBRO", "DateOfBirth":"1971-02-01" } } ``` **Response example** ```swift { "id": "adc94a88-262a-428e-b721-93213c5d3d00", "errors": [], "DetailCode": "WS-646267.2019.10.29.8.55.27.643", "MatchLevel": "HIGH", "VerifiedAge":48, "WasFound": true, "ValidationMethod": "GDC_ValidateIdentitySvc_env (tenant=zignsec_test)", "ValidationDetailsFLAT": [ "Total match level: HIGH", "Validation strategy: 1+1", "Validation country: SE", "Match results per field:", "CompleteName | Total=MTC | CNS1=MTC | GVT1=MTC | TEL2=MTC | FullName=Victor Rydberg", "FirstInitial | Total=MTC | CNS1=MTC | GVT1=MTC | TEL2=MTC | =...", "FirstName | Total=MTC | CNS1=MTC | GVT1=MTC | TEL2=MTC | FirstName=Victor", "LastName | Total=MTC | CNS1=MTC | GVT1=MTC | TEL2=MTC | LastName=Rydberg", "Address | Total=MTC | CNS1=MTC | GVT1=MTC | TEL2=MTC | Address=SOMMARBO 207", "HouseNumber | Total=MTC | CNS1=MTC | GVT1=MTC | TEL2=MTC | Address=SOMMARBO 207", "ThoroughFare | Total=MTC | CNS1=MTC | GVT1=MTC | TEL2=MTC | Address=SOMMARBO 207", "Locality | Total=MTC | CNS1=MTC | GVT1=MTC | TEL2=MTC | City=JORDBRO", "PostalCode | Total=MTC | CNS1=MTC | GVT1=MTC | TEL2=MTC | PostalCode=13767", "DateOfBirth | Total=MTC | CNS1=MTC | GVT1=MTC | TEL2=MTC | DateOfBirth=1971-02-01", "DayOfBirth | Total=MTC | CNS1=MTC | GVT1=MTC | TEL2=MTC | DateOfBirth=1", "MonthOfBirth | Total=MTC | CNS1=MTC | GVT1=MTC | TEL2=MTC | DateOfBirth=2", "YearOfBirth | Total=MTC | CNS1=MTC | GVT1=MTC | TEL2=MTC | DateOfBirth=1971", "SubPremise | Total= | CNS1=_X_ | GVT1=_X_ | TEL2=_X_ | Address=SOMMARBO 207" ], "ValidationDetails": { "1MT-SE-CNS1-COMPLETENAME": "Full match was made on Complete Name", "1MT-SE-CNS1-FIRSTINITIAL": "Full match was made on First Initial", "1MT-SE-CNS1-FIRSTNAME": "Full match was made on First Name/Given Name", "1MT-SE-CNS1-LASTNAME": "Full match was made on Last Name/Surname ", "1MT-SE-CNS1-ADDRESS": "Full match was made on address elements provided in Address Lines", "1MT-SE-CNS1-HOUSENUMBER": "Full match was made on House Number/Street Number", "1MT-SE-CNS1-THOROUGHFARE": "Full match was made on Street/Thoroughfare", "1MT-SE-CNS1-LOCALITY": "Full match was made on City/Locality", "1MT-SE-CNS1-POSTALCODE": "Full match was made on Postal Code/Zip Code", "1MT-SE-CNS1-DATEOFBIRTH": "Full match was made on Date of Birth", "1MT-SE-CNS1-DAYOFBIRTH": "Full match was made on Day of Birth", "1MT-SE-CNS1-MONTHOFBIRTH": "Full match was made on Month of Birth", "1MT-SE-CNS1-YEAROFBIRTH": "Full match was made on Year of Birth", "4MT-SE-CNS1-SUBPREMISE": "Datasource does not contain element Sub Premise Descriptors provided in Address Lines", "1MT-SE-GVT1-COMPLETENAME": "Full match was made on Complete Name", "1MT-SE-GVT1-FIRSTINITIAL": "Full match was made on First Initial", "1MT-SE-GVT1-FIRSTNAME": "Full match was made on First Name/Given Name", "1MT-SE-GVT1-LASTNAME": "Full match was made on Last Name/Surname ", "1MT-SE-GVT1-ADDRESS": "Full match was made on address elements provided in Address Lines", "1MT-SE-GVT1-HOUSENUMBER": "Full match was made on House Number/Street Number", "1MT-SE-GVT1-THOROUGHFARE": "Full match was made on Street/Thoroughfare", "1MT-SE-GVT1-LOCALITY": "Full match was made on City/Locality", "1MT-SE-GVT1-POSTALCODE": "Full match was made on Postal Code/Zip Code", "1MT-SE-GVT1-DATEOFBIRTH": "Full match was made on Date of Birth", "1MT-SE-GVT1-DAYOFBIRTH": "Full match was made on Day of Birth", "1MT-SE-GVT1-MONTHOFBIRTH": "Full match was made on Month of Birth", "1MT-SE-GVT1-YEAROFBIRTH": "Full match was made on Year of Birth", "4MT-SE-GVT1-SUBPREMISE": "Datasource does not contain element Sub Premise Descriptors provided in Address Lines", "1MT-SE-TEL2-COMPLETENAME": "Full match was made on Complete Name", "1MT-SE-TEL2-FIRSTINITIAL": "Full match was made on First Initial", "1MT-SE-TEL2-FIRSTNAME": "Full match was made on First Name/Given Name", "1MT-SE-TEL2-LASTNAME": "Full match was made on Last Name/Surname ", "1MT-SE-TEL2-ADDRESS": "Full match was made on address elements provided in Address Lines", "1MT-SE-TEL2-HOUSENUMBER": "Full match was made on House Number/Street Number", "1MT-SE-TEL2-THOROUGHFARE": "Full match was made on Street/Thoroughfare", "1MT-SE-TEL2-LOCALITY": "Full match was made on City/Locality", "1MT-SE-TEL2-POSTALCODE": "Full match was made on Postal Code/Zip Code", "1MT-SE-TEL2-DATEOFBIRTH": "Full match was made on Date of Birth", "1MT-SE-TEL2-DAYOFBIRTH": "Full match was made on Day of Birth", "1MT-SE-TEL2-MONTHOFBIRTH": "Full match was made on Month of Birth", "1MT-SE-TEL2-YEAROFBIRTH": "Full match was made on Year of Birth", "4MT-SE-TEL2-SUBPREMISE": "Datasource does not contain element Sub Premise Descriptors provided in Address Lines", "1AU-425-COMPLETENAME": "Full match was made on Complete Name", "1AU-375-FIRSTINITIAL": "Full match was made on First Initial", "1AU-350-FIRSTNAME": "Full match was made on First Name/Given Name", "1AU-400-LASTNAME": "Full match was made on Last Name/Surname ", "1AU-200-ADDRESS": "Full match was made on address elements provided in Address Lines", "1AU-150-HOUSENUMBER": "Full match was made on House Number/Street Number", "1AU-175-THOROUGHFARE": "Full match was made on Street/Thoroughfare", "1AU-250-LOCALITY": "Full match was made on City/Locality", "1AU-275-POSTALCODE": "Full match was made on Postal Code/Zip Code", "1AU-550-DATEOFBIRTH": "Full match was made on Date of Birth", "1AU-575-DAYOFBIRTH": "Full match was made on Day of Birth", "1AU-600-MONTHOFBIRTH": "Full match was made on Month of Birth", "1AU-625-YEAROFBIRTH": "Full match was made on Year of Birth", "Codes": "1AU-150-HOUSENUMBER;1AU-175-THOROUGHFARE;1AU-200-ADDRESS;1AU-250-LOCALITY;1AU-275-POSTALCODE;1AU-350-FIRSTNAME;1AU-375-FIRSTINITIAL;1AU-400-LASTNAME;1AU-425-COMPLETENAME;1AU-550-DATEOFBIRTH;1AU-575-DAYOFBIRTH;1AU-600-MONTHOFBIRTH;1AU-625-YEAROFBIRTH;1MT-SE-CNS1-ADDRESS;1MT-SE-CNS1-COMPLETENAME;1MT-SE-CNS1-DATEOFBIRTH;1MT-SE-CNS1-DAYOFBIRTH;1MT-SE-CNS1-FIRSTINITIAL;1MT-SE-CNS1-FIRSTNAME;1MT-SE-CNS1-HOUSENUMBER;1MT-SE-CNS1-LASTNAME;1MT-SE-CNS1-LOCALITY;1MT-SE-CNS1-MONTHOFBIRTH;1MT-SE-CNS1-POSTALCODE;1MT-SE-CNS1-THOROUGHFARE;1MT-SE-CNS1-YEAROFBIRTH;1MT-SE-GVT1-ADDRESS;1MT-SE-GVT1-COMPLETENAME;1MT-SE-GVT1-DATEOFBIRTH;1MT-SE-GVT1-DAYOFBIRTH;1MT-SE-GVT1-FIRSTINITIAL;1MT-SE-GVT1-FIRSTNAME;1MT-SE-GVT1-HOUSENUMBER;1MT-SE-GVT1-LASTNAME;1MT-SE-GVT1-LOCALITY;1MT-SE-GVT1-MONTHOFBIRTH;1MT-SE-GVT1-POSTALCODE;1MT-SE-GVT1-THOROUGHFARE;1MT-SE-GVT1-YEAROFBIRTH;1MT-SE-TEL2-ADDRESS;1MT-SE-TEL2-COMPLETENAME;1MT-SE-TEL2-DATEOFBIRTH;1MT-SE-TEL2-DAYOFBIRTH;1MT-SE-TEL2-FIRSTINITIAL;1MT-SE-TEL2-FIRSTNAME;1MT-SE-TEL2-HOUSENUMBER;1MT-SE-TEL2-LASTNAME;1MT-SE-TEL2-LOCALITY;1MT-SE-TEL2-MONTHOFBIRTH;1MT-SE-TEL2-POSTALCODE;1MT-SE-TEL2-THOROUGHFARE;1MT-SE-TEL2-YEAROFBIRTH;4MT-SE-CNS1-SUBPREMISE;4MT-SE-GVT1-SUBPREMISE;4MT-SE-TEL2-SUBPREMISE;", "1MT-SE-MATCHED-1+1": "Full Match for 1+1 verification" } } ```