Skip to main content
POST
/
v3
/
database-validation
curl -X POST "https://verification.didit.me/v3/database-validation/" \
  -H "x-api-key: YOUR_API_KEY" \
  -F "issuing_state=BRA" \
  -F "services=bra_cpf" \
  -F "tax_number=11111111111"
{
  "request_id": "req_01H…",
  "status": "Approved",
  "issuing_state": "BRA",
  "match_type": "full_match",
  "validations": [
    {
      "outcome_code": "MATCH",
      "service_id": "bra_cpf",
      "service_name": "Brazil - CPF status check",
      "source_data": {
        "date_of_birth": "1990-01-01",
        "first_name": "John",
        "identification_number": "SAMPLE-ID-12345",
        "last_name": "Doe",
        "lgpd_minor": "sample_value",
        "minor_under_16": "sample_value",
        "minor_under_18": "sample_value"
      },
      "validation": {
        "date_of_birth": "full_match",
        "full_name": "full_match",
        "identification_number": "full_match"
      }
    }
  ]
}

Documentation Index

Fetch the complete documentation index at: https://docs.didit.me/llms.txt

Use this file to discover all available pages before exploring further.

Returns CPF status (regular, suspended, cancelled), name and date of birth from Receita Federal via SERPRO. 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:
  • Country: Brazil
  • Service ID: bra_cpf
  • Data domain: Identity
  • Category: TaxRegistry

Inputs

FieldRequiredExample
tax_numberYes11111111111
first_nameNoJohn
last_nameNoDoe
date_of_birthNo1990-01-01
  • Required inputs: tax_number
  • Optional inputs: first_name, last_name, date_of_birth
  • Consent: Not required
  • Workflow availability: Available in workflow
  • Coverage:
  • Price: $0.20 per successful query

Body parameters

issuing_state
string
required
ISO 3166-1 alpha-3 country code for this database service.Example: BRA
services
string
required
Array containing this service ID. Pinning the service keeps the request scoped to this exact database.Example: bra_cpf
tax_number
string
required
Tax or fiscal identification number.Example: 11111111111
first_name
string
Given name to validate.Example: John
last_name
string
Family name to validate.Example: Doe
date_of_birth
string
Date of birth in YYYY-MM-DD format.Example: 1990-01-01

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

curl -X POST "https://verification.didit.me/v3/database-validation/" \
  -H "x-api-key: YOUR_API_KEY" \
  -F "issuing_state=BRA" \
  -F "services=bra_cpf" \
  -F "tax_number=11111111111"
{
  "request_id": "req_01H…",
  "status": "Approved",
  "issuing_state": "BRA",
  "match_type": "full_match",
  "validations": [
    {
      "outcome_code": "MATCH",
      "service_id": "bra_cpf",
      "service_name": "Brazil - CPF status check",
      "source_data": {
        "date_of_birth": "1990-01-01",
        "first_name": "John",
        "identification_number": "SAMPLE-ID-12345",
        "last_name": "Doe",
        "lgpd_minor": "sample_value",
        "minor_under_16": "sample_value",
        "minor_under_18": "sample_value"
      },
      "validation": {
        "date_of_birth": "full_match",
        "full_name": "full_match",
        "identification_number": "full_match"
      }
    }
  ]
}

Returned data

The exact fields surfaced in source_data depend on what the registry returns. The generated example for bra_cpf currently documents this normalized shape:
  • date_of_birth
  • first_name
  • identification_number
  • last_name
  • lgpd_minor
  • minor_under_16
  • minor_under_18

Pricing & SLAs

Brazil - CPF status check queries are billed only when Didit receives a conclusive result from the validation source.
  • Per-call price: $0.20 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.

Continue reading