Skip to main content
POST
SERPRO Datavalid v4 pf-facial — validates CPF (mandatory) against Receita Federal and matches the live selfie (mandatory) against the CNH portrait stored at Senatran. Optionally screens name and date of birth. Didit exposes this service through POST /v3/database-validation/ so you can verify the submitted data against the authoritative source and receive normalized match results.

Coverage

  • Coverage: ~50%
  • Country: Brazil
  • Service ID: bra_cpf_facial
  • Data domain: Biometric
  • Category: NationalIDRegistry
Roughly 50% of Brazilian adults — the face-match step relies on the CNH portrait held at Senatran, so only driver-licence holders can be matched.

Inputs

  • Required inputs: tax_number, selfie
  • Optional inputs: first_name, last_name, date_of_birth, vendor_data
  • Consent: Required
  • Workflow availability: Available in workflow
  • Coverage: ~50%
  • Price: $0.45 per successful query

Body parameters

string
default:"BRA"
required
ISO 3166-1 alpha-3 country code for this database service.Example: BRA
string
default:"bra_cpf_facial"
required
Array containing this service ID. Pinning the service keeps the request scoped to this exact database.Example: bra_cpf_facial
Explicit end-user consent for this service.Example: true
string
default:"11111111111"
required
Tax or fiscal identification number.Example: 11111111111
file
required
Selfie image file to upload for biometric database validation. Accepted formats: JPEG, PNG, or WebP.Example: @./selfie.jpg
string
default:"John"
Given name to validate.Example: John
string
default:"Doe"
Family name to validate.Example: Doe
string
default:"1990-01-01"
Date of birth in YYYY-MM-DD format.Example: 1990-01-01
string
default:"user-1234"
Your stable user reference for this person, such as your internal user ID. Didit uses it to link standalone checks to the same end user and reduce duplicate-detection noise.Example: user-1234

Input rules & validation notes

  • Brazilian CPF (exactly 11 digits)
  • tax_number must contain digits only; remove spaces, hyphens, and punctuation before sending the request.
  • tax_number must be exactly 11 characters long.

How to call it

Returned data

The exact fields surfaced in source_data depend on what the registry returns. The generated example for bra_cpf_facial currently documents this normalized shape:
  • date_of_birth
  • face_match_probability
  • face_match_score
  • first_name
  • identification_number
  • last_name
  • name_match_score

Pricing & SLAs

Brazil - CPF + face match (Datavalid) queries are billed only when Didit receives a conclusive result from the validation source.
  • Per-call price: $0.45 USD.
  • Billing: per successful query. You are not charged when the registry is unreachable, when required fields are missing, or when the request is rejected before reaching the source.
  • Latency: typical p95 < 2 s.
  • Availability: 99.9% per quarter on Didit’s side; downstream source availability varies by country and dataset.

About this source

This is the official government source: SERPRO Datavalid, operated by the Brazilian federal data-processing service. The CPF is checked against Receita Federal, and the selfie is matched against the portrait held for that person at Senatran — the national driver-licensing registry. Because the portrait comes from the CNH (driver’s licence) record, only people who hold a CNH have a face on file. That is what caps coverage at roughly 50% of the adult population: the data is authoritative, but it is missing for every Brazilian who has never held a driver’s licence. Need broader coverage? Use BRA - Unico IDCloud (CPF + selfie) instead. It reaches about 96% of Brazilian adults through Unico’s private biometric registry, and costs $0.20 against $0.45 here. Choose Datavalid when you specifically need the government registry as your source of truth; choose IDCloud when you need to verify everyone.

Continue reading