Spain eKYC verification matches submitted individual data against Spain's Utility - Phone 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 |
|---|---|---|
| Spain Phone Register 2 | ES_1 |
Verifies submitted data against Spain's Utility - Phone Register. |
Spain Phone Register 2
Request parameters
| Parameter | Required | Description |
|---|---|---|
source |
Mandatory | Must be ES_1. |
country |
Mandatory | Must be ES. |
taxID |
Mandatory | Spanish DNI. Nine characters: eight digits followed by a letter. |
firstName |
Mandatory | First name of the individual. |
surName |
Mandatory | Last name (Apellido2, mother's last name). |
middleName |
Optional | Apellido1 (father's last name). |
houseNo |
Optional | House or building number. |
street |
Optional | Street name. |
city |
Optional | City of the individual's address (for example, Madrid). |
state |
Optional | State or autonomous community (for example, Comunidad de Madrid). |
postalCode |
Optional | Postal code. |
dateOfBirth |
Optional | Format: yyyy-mm-dd. |
phone |
Optional | Phone number. |
Response fields
Spain Phone Register 2 anchors verification on the source-of-truth register. 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. |
middleNameMatch |
exact, fuzzy, nomatch, nodata |
Matches middle 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. |
fullNameMatch |
exact, fuzzy, nomatch |
Matches full name submitted against the value in the source of truth. |
dobMatch |
exact, fuzzy, nomatch, nodata |
Matches date of birth submitted against the value in the source of truth. |
streetMatch |
exact, fuzzy, nomatch, nodata |
Matches street submitted against the value in the source of truth. |
houseNoMatch |
exact, fuzzy, nomatch, nodata |
Matches house number submitted against the value in the source of truth. |
streetAddressMatch |
exact, fuzzy, nomatch, nodata |
Matches street and house number submitted against the value in the source of truth. |
cityMatch |
exact, fuzzy, nomatch, nodata |
Matches city submitted against the value in the source of truth. |
stateMatch |
exact, fuzzy, nomatch, nodata |
Matches state submitted against the value in the source of truth. |
postalCodeMatch |
exact, fuzzy, nomatch, nodata |
Matches postal code submitted against the value in the source of truth. |
fullAddressMatch |
exact, fuzzy, nomatch, nodata |
Matches full address submitted against the value in the source of truth. |
idNumMatch |
exact, fuzzy, nomatch, nodata |
Matches DNI submitted against the value in the source of truth. |
phoneMatch |
exact, fuzzy, nomatch, nodata |
Matches phone 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 DNI:
lowwhenfullNameMatchandidNumMatchare bothexact.highwhenfullNameMatchandidNumMatchare bothnomatch.mediumfor all other combinations.
Contact your Incode representative to customize the overallLevel calculation for your use case.
Sample response
{
"kyc": [
{ "key": "firstNameMatch", "status": "exact" },
{ "key": "middleNameMatch", "status": "exact" },
{ "key": "lastNameMatch", "status": "fuzzy" },
{ "key": "fullNameMatch", "status": "fuzzy" },
{ "key": "dobMatch", "status": "exact" },
{ "key": "streetMatch", "status": "exact" },
{ "key": "cityMatch", "status": "exact" },
{ "key": "stateMatch", "status": "exact" },
{ "key": "postalCodeMatch", "status": "exact" },
{ "key": "fullAddressMatch", "status": "fuzzy" },
{ "key": "idNumMatch", "status": "exact" },
{ "key": "phoneMatch", "status": "nomatch" },
{ "key": "overallLevel", "status": "low" }
]
}