Available via API | Available via SDK | Needs configuration on Veriff's side | Needs a separate integration | Needs a separate webhook |
|---|---|---|---|---|
✅ | ❌ | ✅ | ✅ | ❌ |
Cadastro Único Database Verification is a solution that validates Brazilian users against social benefit registries to determine if they receive government assistance. This solution queries Brazil's unified registry for social programs to check enrollment status in various government benefit programs including Bolsa Família, BCP (Continuous Cash Benefit), Seguro Defeso (Artisanal Fishermen Insurance), and Emergency Aid (Auxílio Emergencial). This solution’s key benefits include regulatory compliance for Brazilian financial services and gambling operators, fraud prevention through cross-referencing government records, and real-time validation against multiple government registries.
Cadastro Único Database Verification is available via API only. The solution can be:
an add-on to your document + selfie IDV or document-only IDV, or
used separately as a standalone check
All the session data is provided via API or in the the Veriff Customer Portal. All session-related info is returned via decision webhook and can be polled from different API endpoints. The results of the verification can also be viewed in the Veriff Customer Portal, on the Session → Webhooks tab.
If any data was extracted from the document, this data is provided in the decision webhook payload and GET /decision endpoint’s response payload.
Contact your solutions engineer for info and configuration.
Prerequisites
You have an integration set up with Veriff
The feature is configured for that integration by your Solutions Engineer
You have configured the decision webhook to get responses from Veriff (see the how-to in webhooks’ Set up webhooks section)
Ensure that you are ready to collect and send Veriff your end-user’s data (CPF number and date of birth)
Because the solution is available only via API:
Veriff strongly recommends you collect and send additional device/session data for improved fraud mitigation
Veriff strongly recommends that you create and send us the endUserId or vendorData
Key terminology
Term | Description |
|---|---|
CPF number | Cadastro de Pessoas Físicas, Brazilian individual taxpayer registry 11-digit number |
Cadastro Único | Brazil's unified registry for social programs |
Bolsa Família | Family assistance program |
BCP | Benefício de Prestação Continuada, continuous cash benefit for elderly and disabled |
Seguro Defeso | Artisanal fishermen insurance |
Auxílio Emergencial | Emergency aid program (COVID-19 related) |
NIS | Social Identification Number |
Quadro Social e Administrativo | Register of partners and administrators of a company |
IBGE, Instituto Brasileiro de Geografia e Estatística | Brazilian Institute of Geography and Statistics, grants 7-digit numeric codes to Brazilian states |
End-user data sources
The “end-user data sources” refer to different origins from which the end-user’s information can be collected for database verification. There are two data sources: document data and initData.
Document data
This is data that is extracted from the end-user’s document. Includes information extracted from Brazilian identity documents (driver's licenses, ID cards).
If using document extraction flow, the CPF number and date of birth are extracted from Brazilian documents and passed automatically to the Cadastro Único Database Verification flow.
InitData
This is data that you provide when creating a verification session, i.e. the parameters you specify in the POST /sessions request. Includes information like names, date of birth, address, phone number, ID number, gender etc.
InitData takes precedence over document extraction if both are present.
Parameters that can be sent via initData:
CPF number via
verification.person.idNumberDate of birth via
verification.person.dateOfBirth
Flow overview
Use via API
Standalone Cadastro Único Database Verification verification
Use when you only need to verify Cadastro Único Database Verification without collecting document images.
Generate a verification session using the API keys and the
baseURLof your Cadastro Único Database Verification integration (see the API Documentation and API Reference[↗] how to find these)Make sure to pass the mandatory
verification.person.idNumberandverification.person.dateOfBirthparameters with the end-user's CPF and date of birth valuesVeriff strongly recommends you create and send the
endUserIdorvendorDataVeriff strongly recommends you collect and send additional session/device data via POST sessions/{sessionid}/collected-data[↗] for improved fraud detection
Session creation bash example
curl -X POST \
--url 'https://example.veriff.com/v1/sessions/' \
-H 'Content-Type: application/json' \
-H 'X-AUTH-CLIENT: API-KEY' \
-d '{
"verification": {
"callback": "https://example.com/webhook",
"person": {
"idNumber": "12345678901",
"dateOfBirth": "1990-01-15"
}
}
}'
Session creation json example
{
"verification": {
"callback": "https://example.com/webhook",
"person": {
"idNumber": "12345678901",
"dateOfBirth": "1990-01-15"
}
}
}
Patch session status to
submittedstatus via PATCH /sessions/{sessionId}[↗]
Session update bash example
curl -X PATCH \
--url 'https://example.veriff.com/v1/sessions/{sessionId}' \
-H 'Content-Type: application/json' \
-H 'X-AUTH-CLIENT: API-KEY' \
-H 'X-HMAC-SIGNATURE: 034c6da2bb31fd9e6892516c6d7b90ebe10f79b47cfb3d155d77b4d9b66e1d53' \
-d '{
"status": "submitted"
}'
Session update json example
{
"status": "submitted"
}
Check the decision data and/or session related info from the decision webhook payload (see an example below) and/or query the data from the GET /sessions/{sessionId}/decision endpoint (see an example below). Solution-specific overview of what to expect is provided below in Solution-specific parameters section.
Cadastro Único Database Verification with document verification
Generate a verification session using the API keys and the
baseURLof your Cadastro Único Database Verification integration (see the API Documentation and API Reference[↗] how to find these)Make sure to pass the mandatory
verification.person.idNumberandverification.person.dateOfBirthparameters if not relying on document extractionVeriff strongly recommends you create and send the
endUserIdorvendorDataVeriff strongly recommends you collect and send additional session/device data via POST sessions/{sessionid}/collected-data[↗] for improved fraud detection
Session creation bash example
curl -X POST \
--url 'https://example.veriff.com/v1/sessions/' \
-H 'Content-Type: application/json' \
-H 'X-AUTH-CLIENT: API-KEY' \
-d '{
"verification": {
"callback": "https://example.com/webhook",
"person": {
"idNumber": "12345678901",
"dateOfBirth": "1990-01-15"
}
}
}'
Session creation json example
{
"verification": {
"callback": "https://example.com/webhook",
"person": {
"idNumber": "12345678901",
"dateOfBirth": "1990-01-15"
}
}
}
Use your image-capturing method, or prepare previously collected document image(s)
Upload the end-user's media via POST /sessions/{sessionId}/media call
Specify the
image.contextas appropriate for the image context types (e.g.,document-frontandfaceorface-pre) (see Context types (image, video) for more info about image context types)
Media upload bash example
curl -X POST \
--url 'https://example.veriff.com/v1/sessions/{sessionId}/media' \
-H 'Content-Type: application/json' \
-H 'X-AUTH-CLIENT: API-KEY' \
-H 'X-HMAC-SIGNATURE: 034c6da2bb31fd9e6892516c6d7b90ebe10f79b47cfb3d155d77b4d9b66e1d53' \
-d '{
"image": {
"data": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAA...",
"context": "document-front"
}
}'
Media upload json example
{
"image": {
"data": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAA...",
"context": "document-front"
}
}
Patch session status to
submittedstatus via PATCH /sessions/{sessionId}[↗]
Session update bash example
curl -X PATCH \
--url 'https://example.veriff.com/v1/sessions/{sessionId}' \
-H 'Content-Type: application/json' \
-H 'X-AUTH-CLIENT: API-KEY' \
-H 'X-HMAC-SIGNATURE: 034c6da2bb31fd9e6892516c6d7b90ebe10f79b47cfb3d155d77b4d9b66e1d53' \
-d '{
"status": "submitted"
}'
Session update json example
{
"status": "submitted"
}
Check the decision data and/or session related info from the decision webhook payload (see an example below) and/or query the data from the GET /sessions/{sessionId}/decision endpoint (see an example below). Solution-specific overview of what to expect is provided below in Solution-specific parameters section.
Find decision and/or session related info
You can get the data from three sources:
Receive the decision webhook (example below)
Query the results via GET /sessions/{sessionId}/decision (example below)
View the session in Veriff Customer Portal
Note that the decision webhook and GET /sessions/{sessionId}/decision payloads are identical.
Solution-specific parameters
Info related to Cadastro Único Database Verification is returned in additionalVerifiedData.cadastroUnico object. This object is structured into two main sections: validations and registryResponse objects.
These provide detailed information about the end-user's enrollment status in various Brazilian government benefit programs and enables you to implement business logic based on government benefit status for compliance with Brazilian regulations.
validations object
This object contains the results of various rule checks run against the user. Each key represents a specific rule. Every rule inside the validations object shares the following structure:
result:stringShows the outcome of the validation, usuallysuccessorfailurereasons:array | nullA list of strings explaining why the validation failed. If result issuccess, this is usuallynullor empty.
To see the full explanation of parameters inside the objects, see the webhook payload explanation section.
Parameter | Description |
|---|---|
| Indicates if the processing of the validation was successful |
| Checks if the input data provided for the end-user (e.g., CPF, Name) format is valid |
| Checks if the end-user is NOT a recipient of BCP (Continuous Cash Benefit). A |
| Checks if the end-user is NOT a recipient Bolsa Família. A |
| Checks if the end-user is NOT a recipient Seguro Defeso (Artisanal Fishermen Insurance). A |
| Checks if the end-user is NOT found in the general Cadastro Único registry. A |
| Checks if the end-user is NOT a recipient of the Emergency Aid (Auxílio Emergencial). A |
registryResponse object
This object presents detailed data regarding specific social benefits from registries. To see the full explanation of parameters inside the objects, see the webhook payload explanation section.
Parameter | Description |
|---|---|
| Details regarding the Benefício de Prestação Continuada (Continuous Cash Benefit), a social assistance benefit for the elderly and people with disabilities |
| Details regarding the Bolsa Família program (formerly Auxílio Brasil) |
| Details regarding the Seguro Defeso, a temporary benefit paid to professional artisanal fishermen during the period when fishing is prohibited (closed season) for species preservation |
| Details regarding the Auxílio Emergencial (Emergency Aid), primarily distributed during the COVID-19 pandemic |
Example with only solution-specific parameters
{
"verifications": {
"additionalVerifiedData": {
"cadastroUnico": {
"validations": {
"processing": {
"result": "success",
"reasons": null
},
"isUserDataValid": {
"result": "success",
"reasons": null
},
"isNotBcpBeneficiary": {
"result": "failure",
"reasons": [
"User is bcp beneficiary"
]
},
"isNotBolsaFamiliaBeneficiary": {
"result": "success",
"reasons": []
},
"isNotSeguroDefesoBeneficiary": {
"result": "failure",
"reasons": [
"User is seguro defeso beneficiary"
]
},
"isNotCadastroUnicoBeneficiary": {
"result": "success",
"reasons": []
},
"isNotAuxilioEmergencialBeneficiary": {
"result": "failure",
"reasons": [
"User is auxilio emergencial beneficiary"
]
}
},
"registryResponse": {
"bcpBenefit": {
"state": "SP",
"benefitNumber": "",
"isInRegistry": true,
"beneficiaryNis": "",
"referenceMonth": "202210",
"competenceMonth": "202210",
"installmentValue": "1.212,00",
"municipalityName": "OSASCO",
"judiciallyGrantedBenefit": ""
},
"bolsaFamiliaBenefit": {
"qsa": true,
"currentlyActive": false,
"lastBenefitDate": "05/12/2022",
"dataInconsistency": false,
"firstBenefitDate": "05/12/2022",
"lastBenefitValue": "",
"last12MonthsData": "dez/25 - NAO, nov/25 - NAO, out/25 - NAO, set/25 - NAO, ago/25 - NAO, jul/25 - NAO, jun/25 - NAO, mai/25 - NAO, abr/25 - NAO, mar/25 - NAO, fev/25 - NAO, jan/25 - NAO",
"lastBenefitPayment": "",
"wasBenefitRecipient": true,
"currentlyInBolsaFamilia": false,
"employmentLinkLast5Years": true
},
"seguroDefesoBenefit": {
"isInRegistry": true,
"beneficiaryCpf": "12345678901",
"beneficiaryNis": "12345678901",
"beneficiaryName": "MARIA SILVA SANTOS",
"beneficiaryState": "AL",
"municipalityCode": "2745",
"municipalityName": "CORURIPE",
"benefitReferenceMonth": "01/10/2022",
"installmentValueReceived": "1212.00",
"fishingRegistrationNumber": "123456",
"bolsaFamiliaInsuranceSameDate": false
},
"auxilioEmergencialBenefit": {
"state": "PR",
"value": "300,00",
"observation": "NAO HA",
"installments": "9",
"municipality": "CAMBE",
"classification": "CADUN NAO BOLSA",
"isInRegistry": true,
"availableMonth": "12/2020",
"municipalityCode": "1234567"
}
}
}
}
}
}
If a document was used in the verification, all the info that the system is able to extract from the document is returned in verification.person and verification.document objects.
Webhook payload
Below is an example and an explanation of the decision webhook payload, showing only the mandatory parameters for a Cadastro Único Database Verification session.
Depending on your integration configuration, the payload may contain additional parameters. To find more info about those parameters, see the decision webhook documentation.
Sample request
{
"status": "success",
"verification": {
"id": "12df6045-3846-3e45-946a-14fa6136d78b",
"attemptId": "00bca969-b53a-4fad-b065-874d41a7b2b8",
"vendorData": null,
"endUserId": null,
"status": "approved",
"code": 9001,
"reason": null,
"reasonCode": null,
"decisionTime": "2025-12-10T12:00:00.000+02:00",
"acceptanceTime": "2025-12-10T11:59:00.000+02:00",
"submissionTime": "2025-12-10T11:59:30.000000+02:00",
"person": {
"firstName": "MARIA",
"lastName": "SILVA SANTOS",
"dateOfBirth": "1990-01-15",
"gender": "F",
"nationality": "BR",
"idNumber": "12345678901",
"yearOfBirth": "1990",
"placeOfBirth": "BRAZIL"
},
"document": {
"number": "AB123456",
"type": "ID_CARD",
"country": "BR",
"state": "DF"
},
"additionalVerifiedData": {
"cadastroUnico": {
"validations": {
"processing": {
"result": "success",
"reasons": null
},
"isUserDataValid": {
"result": "success",
"reasons": null
},
"isNotBcpBeneficiary": {
"result": "failure",
"reasons": ["User is bcp beneficiary"]
},
"isNotBolsaFamiliaBeneficiary": {
"result": "success",
"reasons": []
},
"isNotSeguroDefesoBeneficiary": {
"result": "failure",
"reasons": ["User is seguro defeso beneficiary"]
},
"isNotCadastroUnicoBeneficiary": {
"result": "success",
"reasons": []
},
"isNotAuxilioEmergencialBeneficiary": {
"result": "failure",
"reasons": ["User is auxilio emergencial beneficiary"]
}
},
"registryResponse": {
"bcpBenefit": {
"state": "SP",
"benefitNumber": "",
"isInRegistry": true,
"beneficiaryNis": "",
"referenceMonth": "202210",
"competenceMonth": "202210",
"installmentValue": "1.212,00",
"municipalityName": "OSASCO",
"judiciallyGrantedBenefit": ""
},
"bolsaFamiliaBenefit": {
"qsa": true,
"currentlyActive": false,
"lastBenefitDate": "05/12/2022",
"dataInconsistency": false,
"firstBenefitDate": "05/12/2022",
"lastBenefitValue": "",
"last12MonthsData": "dez/25 - NAO, nov/25 - NAO, out/25 - NAO",
"lastBenefitPayment": "",
"wasBenefitRecipient": true,
"currentlyInBolsaFamilia": false,
"employmentLinkLast5Years": true
},
"seguroDefesoBenefit": {
"isInRegistry": true,
"beneficiaryCpf": "12345678901",
"beneficiaryNis": "12345678901",
"beneficiaryName": "MARIA SILVA SANTOS",
"beneficiaryState": "AL",
"municipalityCode": "1234",
"municipalityName": "CORURIPE",
"benefitReferenceMonth": "01/10/2022",
"installmentValueReceived": "1212.00",
"fishingRegistrationNumber": "123456",
"bolsaFamiliaInsuranceSameDate": false
},
"auxilioEmergencialBenefit": {
"state": "PR",
"value": "300,00",
"observation": "NAO HA",
"installments": "9",
"municipality": "CAMBE",
"classification": "CADUN NAO BOLSA",
"isInRegistry": true,
"availableMonth": "12/2020",
"municipalityCode": "1234567"
}
}
}
},
"comments": [],
"technicalData": {
"ip": "192.168.1.1"
}
}
}
Request properties explained
status:stringStatus of the responseverification:objectVerification request decision object.nullif decision is not available yetid:stringUUID v4 which identifies the verification sessionattemptId:stringUUID v4 of the attempt which received a status (as shown inverification.statusfield)vendorData:string | nullThe unique identifier that you created for your end-user.nullif not specifiedendUserId:string | nullTheUUIDthat you created for your end-user.nullif not specifiedstatus:stringVerification status, one ofapproved,declined,resubmission_requested,review,expired,abandonedcode:integerVerification session decision code, one of9001,9102,9103,9104,9121. For more info, see the verification session decision codesreason:string | nullReason why the verification failedreasonCode:integer | nullReason code of the failed verification. For more info, see the possible codes for a failed verificationdecisionTime:string | nullTimestamp of the decision, represented asUTC YYYY-MM-DDTHH:MM:SS.SSS+Timezone Offset(ISO 8601)acceptanceTime:stringTimestamp of the session generation, represented asUTC YYYY-MM-DDTHH:MM:SS.SSS+Timezone Offset(ISO 8601)submissionTime:stringTimestamp of when the session was submitted, represented asUTC YYYY-MM-DDTHH:MM:SS.SSSSSS+Timezone Offset(ISO 8601)person:objectData about the verified personfirstName:string | nullPerson's first name as written on the documentlastName:string | nullPerson's last name as written on the documentdateOfBirth:stringPerson's date of birth, represented asYYYY-MM-DDgender:string | nullPerson's gender, represented as M or F, ornullif not presentnationality:string | nullPerson's nationality, represented as ISO 3166alpha-2oralpha-3numberidNumber:string | nullNational identification numberyearOfBirth:string | nullPerson's year of birth, represented asYYYYplaceOfBirth:string | nullPerson's place of birth
document:objectVerified documentnumber:string | nullDocument number,[a-zA-Z0-9]characters onlytype:string | nullDocument type, one ofPASSPORT,ID_CARD,RESIDENCE_PERMIT,DRIVERS_LICENSE,VISA,OTHERcountry:string | nullDocument issuing country, represented as ISO 3166alpha-2codestate:string | nullDocument issuing state, represented as ISO 3166alpha-2oralpha-3code
additionalVerifiedData:objectData that has been optionally verified for the sessioncadastroUnico:objectMain container for Cadastro Único Database Verification resultsvalidations:objectContains validation rule resultsprocessing:objectIndicates if registry processing was successfulresult:stringValidation outcome (successorfailure)reasons:array | nullExplanations for failure (nullor empty ifresultvalue issuccessful)
isUserDataValid:objectValidates input data format (CPF number and date of birth)result:stringValidation outcome (successorfailure)reasons:array | nullExplanations for failure (nullor empty ifresultvalue issuccessful)
isNotBcpBeneficiary:objectChecks if user is NOT receiving BCP benefit (failuremeans IS receiving)result:stringValidation outcome (successorfailure)reasons:array | nullExplanations for failure (nullor empty ifresultvalue issuccessful)
isNotBolsaFamiliaBeneficiary:objectChecks if user is NOT receiving Bolsa Família (failuremeans IS receiving)result:stringValidation outcome (successorfailure)reasons:array | nullExplanations for failure (nullor empty ifresultvalue issuccessful)
isNotSeguroDefesoBeneficiary:objectChecks if user is NOT receiving fishermen insurance (failuremeans IS receiving)result:stringValidation outcome (successorfailure)reasons:array | nullExplanations for failure (nullor empty ifresultvalue issuccessful)
isNotCadastroUnicoBeneficiary:objectChecks if user is NOT in general registry (failuremeans IS registered)result:stringValidation outcome (successorfailure)reasons:array | nullExplanations for failure (nullor empty ifresultvalue issuccessful)
isNotAuxilioEmergencialBeneficiary:objectChecks if user is NOT receiving emergency aid (failuremeans IS receiving)result:stringValidation outcome (successorfailure)reasons:array | nullExplanations for failure (nullor empty ifresultvalue issuccessful)
registryResponse:objectContains detailed benefit information from government registriesbcpBenefit:objectContinuous Cash Benefit detailsstate:stringBrazilian state code where benefit is registeredbenefitNumber:stringUnique benefit identification numberisInRegistry:booleanIndicates whether user was found in BCP registrybeneficiaryNis:stringSocial Identification Number of beneficiaryreferenceMonth:stringReference period for data, represented asYYYYMMcompetenceMonth:stringCompetence month for payment, represented asYYYYMMinstallmentValue:stringMonetary value of benefit installmentmunicipalityName:stringCity where beneficiary residesjudiciallyGrantedBenefit:stringIndicates if benefit was court-ordered
bolsaFamiliaBenefit:objectBolsa Família program detailsqsa:booleanQuadro Social e Administrativo indicator, indicating if the beneficiary is registered as a partner or administrator of a businesscurrentlyActive:booleanIndicates whether benefit is currently activelastBenefitDate:stringDate of last benefit payment, represented asDD/MM/YYYYdataInconsistency:booleanFlags data inconsistencies in recordfirstBenefitDate:stringDate user first received benefitlastBenefitValue:stringValue of last installment paidlast12MonthsData:stringPayment history summary for last yearlastBenefitPayment:stringDetails of last payment methodwasBenefitRecipient:booleanIndicates whether user ever received this benefitcurrentlyInBolsaFamilia:booleanCurrent enrollment statusemploymentLinkLast5Years:booleanHad formal employment in last 5 years
seguroDefesoBenefit:objectArtisanal fishermen insurance detailsisInRegistry:booleanShows whether user found in Seguro Defeso registrybeneficiaryCpf:stringCPF number of the beneficiarybeneficiaryNis:stringNIS number of the beneficiarybeneficiaryName:stringFull name of the beneficiarybeneficiaryState:stringState of the beneficiarymunicipalityCode:stringIBGE municipality codemunicipalityName:stringMunicipality namebenefitReferenceMonth:stringReference month for benefit, represented asDD/MM/YYYYinstallmentValueReceived:stringAmount received for installmentfishingRegistrationNumber:stringRGP fishing registration numberbolsaFamiliaInsuranceSameDate:booleanIndicates if the person received both benefits in same period
auxilioEmergencialBenefit:objectEmergency aid detailsstate:stringState where aid was registeredvalue:stringMonetary value of aid installmentobservation:stringRemarks about benefit statusinstallments:stringSpecific installment numbermunicipality:stringCity where beneficiary residesclassification:stringCategory of beneficiaryisInRegistry:booleanWhether user found in Emergency Aid registryavailableMonth:stringMonth funds became available, represented asMM/YYYYmunicipalityCode:stringMunicipality code
comments:array(Deprecated) Always returns empty []technicalData:objectTechnical data objectip:string | nullIP of the device from which the verification was made
API call
Below are a sample and an explanation of a GET /decision API call payload, showing only the mandatory parameters for a Cadastro Único Database Verification session.
Depending on your integration configuration, the payload may contain additional parameters. To find more info about those parameters, see the GET sessions/{sessionId}/decision[↗] documentation.
Sample response
{
"status": "success",
"verification": {
"id": "12df6045-3846-3e45-946a-14fa6136d78b",
"attemptId": "00bca969-b53a-4fad-b065-874d41a7b2b8",
"vendorData": null,
"endUserId": null,
"status": "approved",
"code": 9001,
"reason": null,
"reasonCode": null,
"decisionTime": "2025-12-10T12:00:00.000+02:00",
"acceptanceTime": "2025-12-10T11:59:00.000+02:00",
"submissionTime": "2025-12-10T11:59:30.000000+02:00",
"person": {
"firstName": "MARIA",
"lastName": "SILVA SANTOS",
"dateOfBirth": "1990-01-15",
"gender": "F",
"nationality": "BR",
"idNumber": "12345678901",
"yearOfBirth": "1990",
"placeOfBirth": "BRAZIL"
},
"document": {
"number": "AB123456",
"type": "ID_CARD",
"country": "BR",
"state": "DF"
},
"additionalVerifiedData": {
"cadastroUnico": {
"validations": {
"processing": {
"result": "success",
"reasons": null
},
"isUserDataValid": {
"result": "success",
"reasons": null
},
"isNotBcpBeneficiary": {
"result": "failure",
"reasons": ["User is bcp beneficiary"]
},
"isNotBolsaFamiliaBeneficiary": {
"result": "success",
"reasons": []
},
"isNotSeguroDefesoBeneficiary": {
"result": "failure",
"reasons": ["User is seguro defeso beneficiary"]
},
"isNotCadastroUnicoBeneficiary": {
"result": "success",
"reasons": []
},
"isNotAuxilioEmergencialBeneficiary": {
"result": "failure",
"reasons": ["User is auxilio emergencial beneficiary"]
}
},
"registryResponse": {
"bcpBenefit": {
"state": "SP",
"benefitNumber": "",
"isInRegistry": true,
"beneficiaryNis": "",
"referenceMonth": "202210",
"competenceMonth": "202210",
"installmentValue": "1.212,00",
"municipalityName": "OSASCO",
"judiciallyGrantedBenefit": ""
},
"bolsaFamiliaBenefit": {
"qsa": true,
"currentlyActive": false,
"lastBenefitDate": "05/12/2022",
"dataInconsistency": false,
"firstBenefitDate": "05/12/2022",
"lastBenefitValue": "",
"last12MonthsData": "dez/25 - NAO, nov/25 - NAO, out/25 - NAO",
"lastBenefitPayment": "",
"wasBenefitRecipient": true,
"currentlyInBolsaFamilia": false,
"employmentLinkLast5Years": true
},
"seguroDefesoBenefit": {
"isInRegistry": true,
"beneficiaryCpf": "12345678901",
"beneficiaryNis": "12345678901",
"beneficiaryName": "MARIA SILVA SANTOS",
"beneficiaryState": "AL",
"municipalityCode": "1234",
"municipalityName": "CORURIPE",
"benefitReferenceMonth": "01/10/2022",
"installmentValueReceived": "1212.00",
"fishingRegistrationNumber": "123456",
"bolsaFamiliaInsuranceSameDate": false
},
"auxilioEmergencialBenefit": {
"state": "PR",
"value": "300,00",
"observation": "NAO HA",
"installments": "9",
"municipality": "CAMBE",
"classification": "CADUN NAO BOLSA",
"isInRegistry": true,
"availableMonth": "12/2020",
"municipalityCode": "1234567"
}
}
}
},
"comments": [],
"technicalData": {
"ip": "192.168.1.1"
}
}
}
Response properties explained
status:stringStatus of the responseverification:objectVerification request decision object.nullif decision is not available yetid:stringUUID v4 which identifies the verification sessionattemptId:stringUUID v4 of the attempt which received a status (as shown inverification.statusfield)vendorData:string | nullThe unique identifier that you created for your end-user.nullif not specifiedendUserId:string | nullTheUUIDthat you created for your end-user.nullif not specifiedstatus:stringVerification status, one ofapproved,declined,resubmission_requested,review,expired,abandonedcode:integerVerification session decision code, one of9001,9102,9103,9104,9121. For more info, see the verification session decision codesreason:string | nullReason why the verification failedreasonCode:integer | nullReason code of the failed verification. For more info, see the possible codes for a failed verificationdecisionTime:string | nullTimestamp of the decision, represented asUTC YYYY-MM-DDTHH:MM:SS.SSS+Timezone Offset(ISO 8601)acceptanceTime:stringTimestamp of the session generation, represented asUTC YYYY-MM-DDTHH:MM:SS.SSS+Timezone Offset(ISO 8601)submissionTime:stringTimestamp of when the session was submitted, represented asUTC YYYY-MM-DDTHH:MM:SS.SSSSSS+Timezone Offset(ISO 8601)person:objectData about the verified personfirstName:string | nullPerson's first name as written on the documentlastName:string | nullPerson's last name as written on the documentdateOfBirth:stringPerson's date of birth, represented asYYYY-MM-DDgender:string | nullPerson's gender, represented as M or F, ornullif not presentnationality:string | nullPerson's nationality, represented as ISO 3166alpha-2oralpha-3numberidNumber:string | nullNational identification numberyearOfBirth:string | nullPerson's year of birth, represented asYYYYplaceOfBirth:string | nullPerson's place of birth
document:objectVerified documentnumber:string | nullDocument number,[a-zA-Z0-9]characters onlytype:string | nullDocument type, one ofPASSPORT,ID_CARD,RESIDENCE_PERMIT,DRIVERS_LICENSE,VISA,OTHERcountry:string | nullDocument issuing country, represented as ISO 3166alpha-2codestate:string | nullDocument issuing state, represented as ISO 3166alpha-2oralpha-3code
additionalVerifiedData:objectData that has been optionally verified for the sessioncadastroUnico:objectMain container for Cadastro Único Database Verification resultsvalidations:objectContains validation rule resultsprocessing:objectIndicates if registry processing was successfulresult:stringValidation outcome (successorfailure)reasons:array | nullExplanations for failure (nullor empty ifresultvalue issuccessful)
isUserDataValid:objectValidates input data format (CPF number and date of birth)result:stringValidation outcome (successorfailure)reasons:array | nullExplanations for failure (nullor empty ifresultvalue issuccessful)
isNotBcpBeneficiary:objectChecks if user is NOT receiving BCP benefit (failuremeans IS receiving)result:stringValidation outcome (successorfailure)reasons:array | nullExplanations for failure (nullor empty ifresultvalue issuccessful)
isNotBolsaFamiliaBeneficiary:objectChecks if user is NOT receiving Bolsa Família (failuremeans IS receiving)result:stringValidation outcome (successorfailure)reasons:array | nullExplanations for failure (nullor empty ifresultvalue issuccessful)
isNotSeguroDefesoBeneficiary:objectChecks if user is NOT receiving fishermen insurance (failuremeans IS receiving)result:stringValidation outcome (successorfailure)reasons:array | nullExplanations for failure (nullor empty ifresultvalue issuccessful)
isNotCadastroUnicoBeneficiary:objectChecks if user is NOT in general registry (failuremeans IS registered)result:stringValidation outcome (successorfailure)reasons:array | nullExplanations for failure (nullor empty ifresultvalue issuccessful)
isNotAuxilioEmergencialBeneficiary:objectChecks if user is NOT receiving emergency aid (failuremeans IS receiving)result:stringValidation outcome (successorfailure)reasons:array | nullExplanations for failure (nullor empty ifresultvalue issuccessful)
registryResponse:objectContains detailed benefit information from government registriesbcpBenefit:objectContinuous Cash Benefit detailsstate:stringBrazilian state code where benefit is registeredbenefitNumber:stringUnique benefit identification numberisInRegistry:booleanIndicates whether user was found in BCP registrybeneficiaryNis:stringSocial Identification Number of beneficiaryreferenceMonth:stringReference period for data, represented asYYYYMMcompetenceMonth:stringCompetence month for payment, represented asYYYYMMinstallmentValue:stringMonetary value of benefit installmentmunicipalityName:stringCity where beneficiary residesjudiciallyGrantedBenefit:stringIndicates if benefit was court-ordered
bolsaFamiliaBenefit:objectBolsa Família program detailsqsa:booleanQuadro Social e Administrativo indicator, indicating if the beneficiary is registered as a partner or administrator of a businesscurrentlyActive:booleanIndicates whether benefit is currently activelastBenefitDate:stringDate of last benefit payment, represented asDD/MM/YYYYdataInconsistency:booleanFlags data inconsistencies in recordfirstBenefitDate:stringDate user first received benefitlastBenefitValue:stringValue of last installment paidlast12MonthsData:stringPayment history summary for last yearlastBenefitPayment:stringDetails of last payment methodwasBenefitRecipient:booleanIndicates whether user ever received this benefitcurrentlyInBolsaFamilia:booleanCurrent enrollment statusemploymentLinkLast5Years:booleanHad formal employment in last 5 years
seguroDefesoBenefit:objectArtisanal fishermen insurance detailsisInRegistry:booleanShows whether user found in Seguro Defeso registrybeneficiaryCpf:stringCPF number of the beneficiarybeneficiaryNis:stringNIS number of the beneficiarybeneficiaryName:stringFull name of the beneficiarybeneficiaryState:stringState of the beneficiarymunicipalityCode:stringIBGE municipality codemunicipalityName:stringMunicipality namebenefitReferenceMonth:stringReference month for benefit, represented asDD/MM/YYYYinstallmentValueReceived:stringAmount received for installmentfishingRegistrationNumber:stringRGP fishing registration numberbolsaFamiliaInsuranceSameDate:booleanIndicates if the person received both benefits in same period
auxilioEmergencialBenefit:objectEmergency aid detailsstate:stringState where aid was registeredvalue:stringMonetary value of aid installmentobservation:stringRemarks about benefit statusinstallments:stringSpecific installment numbermunicipality:stringCity where beneficiary residesclassification:stringCategory of beneficiaryisInRegistry:booleanWhether user found in Emergency Aid registryavailableMonth:stringMonth funds became available, represented asMM/YYYYmunicipalityCode:stringMunicipality code
comments:array(Deprecated) Always returns empty []technicalData:objectTechnical data objectip:string | nullIP of the device from which the verification was made
Veriff Customer Portal
You can find the verification session related info, including the decision, in the Veriff Customer Portal → Session page → Webhooks tab.
→ See Review verification in Veriff Customer Portal about how to view the session info in the Veriff Customer portal
Status and reason codes
For an approved session, see:
verification.codeabout verification session decision code, one of9001,9102,9103,9104,9121verification.statusabout verification status, one ofapproved,declined,resubmission_requested,expired,abandoned
If the Cadastro Único Database Verification session was declined or resubmission_requested, you can find additional information by checking:
verification.reasonfor the reason why the verification failedverification.reasonCodefor reason code of the failed verification and cross-reference it with Granular reason codes (table)
|
|
| What does it mean? |
|---|---|---|---|
| 570 | IS_BOLSA_FAMILIA_BENEFICIARY | User is receiving Bolsa Família benefits |
| 570 | IS_BCP_BENEFICIARY | User is receiving continuous cash benefit |
| 570 | IS_SEGURO_DEFESO_BENEFICIARY | User is receiving artisanal fishermen insurance benefits |
| 570 | IS_AUXILIO_EMERGENCIAL_BENEFICIARY | User is receiving emergency aid benefits |
| 570 | IS_CADASTRO_UNICO_BENEFICIARY | User is registered in the general registry |
| 529 | INVALID_CPF | CPF format is invalid. Ensure 11-digit number without punctuation |
| 529 | INVALID_DATE_OF_BIRTH | Date of birth format is invalid |
| 566 | UNAVAILABLE_REGISTRY_PROVIDER | Registry service unavailable |
| 566 | TIMEOUT_ERROR | Registry service timed out |
| 566 | INTERNAL_ERROR | An internal technical error occurred |
The table above aims to list the most common reasons why you may see the decline reason for a Cadastro Único Database Verification session. However, the session may be declined due to a reason that is not inherently Cadastro Único Database Verification verification related (e.g. uploaded document’s quality is low). In that case, to find info about the codes you are seeing, refer to:
Additional information
Best practices
CPF format validation: Always validate CPF format before sending to Veriff. CPF must be exactly 11 digits without any punctuation (dots, hyphens, or spaces). Invalid format will result in session decline with code
529.Error handling for registry issues: Implement proper session handling flow when possibly legitimate end-user’s session is declined due to the third-party service provider having issues, as indicated by session code
566.Error handling: Implement proper error handling for all possible validation results (format issues, registry timeouts and issues, etc.)
Webhook security: Secure your webhook endpoint and verify request signatures
User experience: Provide clear feedback to users about validation results
Ensure backwards compatibility for webhooks and API connections
Changelog
Date | Description |
|---|---|
Dec 16, 2025 | Minor updates to the text formatting |
Dec 15, 2025 | Documentation published |