General reference, eKYC Reference / eKYC Coverage

Turkey

Turkey eKYC verification matches submitted individual data against Turkey's official voter register as the source of truth. See the eKYC API Reference for common response semantics that apply across all sources.

Available sources

Source API source string Description
Turkey Voter Register TR_VOTER_REGISTER Verifies submitted data against Turkey's official voter register.

Turkey Voter Register

Request parameters

Parameter Required Description
source Mandatory Must be TR_VOTER_REGISTER.
country Mandatory Must be TR.
firstName Mandatory First name of the individual. Can be submitted with or without Turkish characters (for example, Daşlı and Dasli both match).
surName Mandatory Last name of the individual. All surnames in one field (for example, Boztepe Köktürk). Can be submitted with or without Turkish characters.
middleName Optional Middle name of the individual. Not included in fullNameMatch.
dateOfBirth Optional Format: yyyy-mm-dd.
gender Optional Accepted values are M or F.
street Optional Street, house, and flat number in one field (for example, Atatürk Caddesi No:12 D:3). Can be submitted with or without Turkish characters.
city Optional Province (il) of the individual's address (for example, İstanbul, İzmir). Provide the province, not the district (ilçe). Sending the province is needed for both cityMatch and streetMatch to match — a district (for example, Fatih, Bayraklı) causes both to fail.
idNum Optional TC Kimlik No (Turkish national identity number). Format: exactly 11 numeric digits, first digit cannot be 0 (for example, 12345678901).

Info

Non-Latin input (for example, Arabic or Cyrillic script) is automatically transliterated to Turkish Latin script before the request is sent. Names and street can also be submitted directly in Latin script with or without Turkish characters — both match. See Input transliteration below for details.

Sample request

{
    "plugins": ["kyc"],
    "source": "TR_VOTER_REGISTER",
    "firstName": "Jane",
    "middleName": "Example",
    "surName": "Doe",
    "country": "TR",
    "city": "İstanbul",
    "street": "Atatürk Caddesi No:1 D:1",
    "dateOfBirth": "2000-01-01",
    "gender": "F",
    "idNum": "12345678901"
}

Response fields

Turkey Voter Register anchors verification on full name plus at least one of: date of birth, TC Kimlik No, or street address. See the eKYC API Reference for common match field definitions and status values.

Field Statuses Description
firstNameMatch exact, fuzzy, nomatch Matches first name submitted against the value in the source of truth.
lastNameMatch exact, fuzzy, nomatch Matches last name submitted against the value in the source of truth.
middleNameMatch exact, fuzzy, nomatch, nodata Matches middle name submitted against the value in the source of truth. Shown as a standalone field, not included in fullNameMatch.
fullNameMatch exact, fuzzy, nomatch, nodata Composite match derived from firstNameMatch and lastNameMatch only. See below for calculation logic.
dobMatch exact, fuzzy, nomatch, nodata Matches date of birth submitted against the value in the source of truth.
genderMatch exact, fuzzy, nomatch, nodata Matches gender submitted against the value in the source of truth.
streetMatch exact, fuzzy, nomatch, nodata Matches street address submitted against the value in the source of truth. Only streetMatch = exact counts toward a low-risk result; fuzzy does not.
cityMatch exact, fuzzy, nomatch, nodata Matches province (il) submitted against the value in the source of truth.
fullAddressMatch exact, fuzzy, nomatch, nodata Composite match derived from streetMatch and cityMatch. See below for calculation logic.
idNumMatch exact, fuzzy, nomatch, nodata Matches the Turkish national ID number (TC Kimlik No) submitted against the value in the source of truth.
overallLevel low, medium, high Overall risk level. See below for calculation logic.

overallLevel calculation

overallLevel is calculated based on the risk associated with the submitted full name and at least one verified attribute (date of birth, TC Kimlik No, or street address).

  • low when fullNameMatch is exact AND at least one of the following is exact: dobMatch, idNumMatch, or streetMatch.
  • high when fullNameMatch is nomatch OR all of the following are nomatch or nodata: streetMatch, dobMatch, and idNumMatch.
  • medium for all other combinations.

Contact your Incode representative to customize the overallLevel calculation for your use case.

Input transliteration

Non-Latin input (for example, Arabic, Persian, or Cyrillic script) is automatically transliterated to Turkish Latin script before the request is sent to the source of truth. Latin input, including Turkish characters (ç, ğ, ı, İ, ö, ş, ü), is sent exactly as provided.

Field Transliteration applied Rule
firstName Only if non-Latin Written in Turkish Latin script using Turkish name forms where they exist (for example, أحمد → Ahmet, Сергей → Sergey).
middleName Only if non-Latin Same rules as firstName.
surName Only if non-Latin Written in Turkish Latin script using Turkish spelling conventions.
street Only if non-Latin Written in Turkish Latin script; numbers kept exactly as given. Street words translated to Turkish equivalents (for example, شارع → Caddesi).
city Always Returned as one of Turkey's 81 provinces (il) in its official Turkish spelling. Districts (ilçe) are mapped to their province (for example, Fatih → İstanbul, Bayraklı → İzmir). Non-Latin city input is translated (for example, مرسين → Mersin).
idNum Digits only Non-Western digits converted to 0–9 (for example, ١٢٣ → 123). Nothing else changes.

Sample response

{
    "kyc": [
        { "key": "firstNameMatch",   "status": "exact" },
        { "key": "lastNameMatch",    "status": "exact" },
        { "key": "middleNameMatch",  "status": "exact" },
        { "key": "fullNameMatch",    "status": "exact" },
        { "key": "dobMatch",         "status": "exact" },
        { "key": "genderMatch",      "status": "exact" },
        { "key": "streetMatch",      "status": "exact" },
        { "key": "cityMatch",        "status": "exact" },
        { "key": "fullAddressMatch", "status": "exact" },
        { "key": "idNumMatch",       "status": "exact" },
        { "key": "overallLevel",     "status": "low" }
    ]
}

Was this page helpful?