Brazil Government
Brazilian eKYC non-doc verification leverages Brazil's government source of truth to validate individuals. It is essential in eKYC processes for ensuring identity authenticity, regulatory compliance, and enhanced security. It helps prevent fraud, boosts user trust, and streamlines operations through automated and efficient verification methods.
Integration
User input flow
eKYC module configuration gives various options to specify different search criteria with various sources of truth for each country (eg. US has multiple via Telco, Credit Bureau, and Driver's License). User data can be collected via a user input flow by using pre-selected fields where users can type in their name or date of birth, etc. See an example below:
Module configuration
The module configuration can be leveraged to select the applicable fields for the input data you would like to collect from the end user.
Direct API Approach
All module configurations and user data can be forwarded directly in the request for performing an eKYC search. This will override existing configuration and data collected about the user.
API Authentication
All endpoints require authentication headers to be specified as stated in Incode API Documentation
POST /omni/externalVerification/kyc
This endpoint performs an eKYC check for the individual specified. Note: Endpoint can have empty body {} and in that case information will be pulled from module configuration and session details.
- country: (mandatory) String. Two letter Alpha-2 country code. (Must be BR).
- taxID: (mandatory) Brazilian CPF. 11 digit tax ID of the individual.
- firstName:: (mandatory) String. First name of the individual.
- surName: (mandatory) String. Last name of the individual.
- houseNo: (optional) String. House number
- street: (optional) String. Full street including apartment number.
- city: (optional) String. City of the individual's address. (eg. Rio de Janerio).
- state: (optional) String. Two letter state of the individual's address (eg. RJ).
- postalCode: (optional) String. postalCode formatted based on per-country postalCode basis.
- dateOfBirth: (optional) String. Format: yyyy-mm-dd (eg. 1980-06-01)
- nationality: (optional) String. It is either BRAZILIAN, NATURALIZED_BRAZILIAN, FOREIGNER, BRAZILIAN_BORN_ABROAD
Example request:
{
"plugins": ["kyc"], //required field
"firstName": "Renata", // required field
"surName": "De Maria Santos", //required field
"houseNo" : "121",
"street" : "Rua Luiz Ferreira Dorta",
"postalCode": "76535000",
"country": "BR", //required firled
"state" : "RJ",
"city" : "Rio de Janerio",
"dateOfBirth": "1980-06-01",
"nationality" : "1",
"taxId" : "23490843490" //required field
}
Note: If individual has a middle name, this can be included in surName field so it includes both middle + last name
Direct API Response
API Authentication
All endpoints require authentication headers to be specified as stated in Incode API Documentation
Note: Endpoint can have empty body {} and in that case information will be pulled from module configuration and session details.
{
"kyc": [
{
"key": "taxIdNationalityMatch",
"status": "exact"
},
{
"key": "taxIdDobMatch",
"status": "exact"
},
{
"key": "taxIdMatch",
"status": "exact"
},
{
"key": "taxIdAddressMatch",
"status": "approximatematch",
"reasonCodes": [
"ASCV"
]
},
{
"key": "taxIdNameMatch",
"status": "exact"
},
{
"key": "taxIdStateMatch",
"status": "exact"
},
{
"key": "taxIdCityMatch",
"status": "exact"
},
{
"key": "taxIdPostalCodeMatch",
"status": "nomatch"
},
{
"key": "taxIdLevel",
"status": "low",
"reasonCodes": [
"TSR"
]
},
{
"key": "overallLevel",
"status": "low"
}
]
}
Please refer to error response to see conventional HTTP response codes to indicate the success or failure of an API request.
For Brazil, custom 400 error messages if taxId, or country is “ “ or null:
message: taxId, and country are minimum required fields.
BR API Key | Status | Definition |
---|---|---|
taxIdMatch | exact, nomatch | Submitted taxId (CPF) has a match or no match associated to the taxId (CPF) in the government source of truth |
taxIdNameMatch | exact, nomatch | Submitted name has a match or no match associated to the taxId (CPF) in the government source of truth |
taxIdDobMatch | exact, nomatch | Submitted date of birth has a match or no match associated to the taxId (CPF) in the government source of truth |
taxIdLevel | low, high | The risk level of the submitted taxId associated to the taxId in the government source of truth. Low Risk: Verified CPF status is regular. High risk: CPF status is suspended, associated with a deceased holder, pending regularization, canceled due to multiplicity, or canceled by authority |
taxIdStateMatch | exact, nomatch, unabletoverify | Submitted state has a match or no match associated to the government database. See note below for unable to verify |
taxIdAddressMatch | exact, approximatematch, nomatch, unabletoverify | Submitted address has an exact match, approximate match, or no match associated to the government source of truth. See note below for unable to verify. Approximate match is presented when not all but still at least two address elements (either street, postal code, city, or state) returns back as exact |
taxIdCityMatch | exact, nomatch, unabletoverify | Submitted city has a match or no match associated to the government source of truth. See note below for unable to verify. |
taxIdPostalCodeMatch | exact, nomatch, unabletoverify | Submitted postal code has a match or no match associated to the government source of truth. See note below for unable to verify. |
taxIdNationalityMatch | exact, nomatch | Submitted nationality has an exact match or no match associated to the taxId (CPF) in the government source of truth |
overallLevel | low, medium, high | Overall risk level of the attributes submitted associated to the taxId in the government source of truth. |
Note: "unabletoverify" can occur for address based elements (taxIdStateMatch, taxIdAddressMatch, taxIdCityMatch, taxIdPostalCodeMatch). This is because addresses are validated through the driver's license Brazilian government source of truth. So if the individual does not have a driver's license, the address components cannot be validated
Reason Codes
Reason Codes help you further understand why you may have gotten a certain response for a certain API key. The full list of 300+ reason codes are here. Below are a few examples of Brazilian reason codes that you can see in your API response:
Reason Code | DESCRIPTION |
---|---|
ASDL | Unable to verify address because CPF consulted does not have a CNH in the official government database |
TSRF | Tax ID Status (situacao CPF) is not regular. It is suspended or canceled due to pending regularization, being null, with the holder being deceased. |
TSR | Tax ID Status (situacao CPF) is regular |
TNPIN | taxId check was not performed due to invalid nationality |
TLGPD | taxId check was not performed due to LGPD: Minor's data |
ASCV | State, Country Validated |
Single Session Dashboard Results
To view results directly in the dashboard, you can navigate to Single Session view under ID Verification tab
Updated 3 months ago