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:

eKYB module configuration

eKYC user input flow example

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.

eKYB module configuration

eKYC BR module configuration


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 KeyStatusDefinition
taxIdMatchexact, nomatchSubmitted taxId (CPF) has a match or no match associated to the taxId (CPF) in the government source of truth
taxIdNameMatchexact, nomatchSubmitted name has a match or no match associated to the taxId (CPF) in the government source of truth
taxIdDobMatchexact, nomatchSubmitted date of birth has a match or no match associated to the taxId (CPF) in the government source of truth
taxIdLevellow, 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
taxIdStateMatchexact, nomatch, unabletoverifySubmitted state has a match or no match associated to the government database. See note below for unable to verify
taxIdAddressMatchexact, approximatematch, nomatch, unabletoverifySubmitted 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
taxIdCityMatchexact, nomatch, unabletoverifySubmitted city has a match or no match associated to the government source of truth. See note below for unable to verify.
taxIdPostalCodeMatchexact, nomatch, unabletoverifySubmitted postal code has a match or no match associated to the government source of truth. See note below for unable to verify.
taxIdNationalityMatchexact, nomatchSubmitted nationality has an exact match or no match associated to the taxId (CPF) in the government source of truth
overallLevellow, medium, highOverall 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 CodeDESCRIPTION
ASDLUnable to verify address because CPF consulted does not have a CNH in the official government database
TSRFTax ID Status (situacao CPF) is not regular. It is suspended or canceled due to pending regularization, being null, with the holder being deceased.
TSRTax ID Status (situacao CPF) is regular
TNPINtaxId check was not performed due to invalid nationality
TLGPDtaxId check was not performed due to LGPD: Minor's data
ASCVState, Country Validated

Single Session Dashboard Results

To view results directly in the dashboard, you can navigate to Single Session view under ID Verification tab

eKYB single session dashboard results

eKYC results