> ## 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.

# Brasilien CPF-Statusprüfung per API in Echtzeit

> Brasilien-CPF-Statusprüfung mit Didit: maßgebliche Datenbankvalidierung. Pro Aufruf ab $0.20, ohne Verträge und Mindestabnahme.

Gibt den CPF-Status (regulär, gesperrt, annulliert), den Namen, den sozialen Namen und das Registrierungsdatum von der Receita Federal über SERPRO zurück. Die Abfrage erfolgt anhand der CPF und des Geburtsdatums. Didit stellt diesen Dienst über `POST /v3/database-validation/` bereit, sodass Sie die übermittelten Daten mit der maßgeblichen Quelle abgleichen und normalisierte Übereinstimmungsergebnisse erhalten können. Eingabeformat: `tax_number` nimmt die brasilianische CPF entgegen (genau 11 Ziffern).

## Abdeckung

* **Abdeckung:** \~ 100%
* **Land:** Brasilien
* **Service-ID:** `bra_cpf`
* **Datenbereich:** Identität
* **Kategorie:** TaxRegistry

## Eingaben

| Feld | Pflichtfeld | Beispiel |
| - | -: | - |
| `tax_number` | Ja | `11111111111` |
| `date_of_birth` | Ja | `1990-01-01` |
| `first_name` | Nein | `John` |
| `last_name` | Nein | `Doe` |
| `vendor_data` | Nein | `user-1234` |

* **Pflichteingaben:** `tax_number`, `date_of_birth`
* **Optionale Eingaben:** `first_name`, `last_name`, `vendor_data`
* **Einwilligung:** Nicht erforderlich
* **Verfügbarkeit im Workflow:** Im Workflow verfügbar
* **Abdeckung:** \~ 100%
* **Preis:** \$0.20 pro erfolgreicher Abfrage

Nicht jedes Dokument, das dieser Dienst akzeptiert, enthält die Kennung, über die abgefragt wird. Wird die Kennung nicht aus dem Dokument extrahiert, wird die Prüfung als **nicht anwendbar** erfasst: Es wird keine Datenbank abgefragt, und Ihnen wird nichts berechnet. In manchen Ländern betrifft das einen erheblichen Anteil der tatsächlichen Nutzer. Um diese Fälle abzudecken, erfassen Sie die Kennung zusätzlich aus einer Antwort im Fragebogen, einem Feld der Document-AI-Extraktion oder einem Wert, den Sie beim Erstellen der Sitzung übermitteln, und ordnen Sie sie im Schritt Datenbankvalidierung zu.

## Body-Parameter

**issuing\_state** `string` *required* (default: BRA)

ISO-3166-1-Ländercode mit drei Buchstaben (Alpha-3) für diesen Datenbankdienst.

Beispiel: `BRA`

**services** `string` *required* (default: bra\_cpf)

Array mit dieser Dienst-ID. Die Festlegung des Dienstes beschränkt die Anfrage auf genau diese Datenbank.

Beispiel: `bra_cpf`

**tax\_number** `string` *required* (default: 11111111111)

Steuernummer.

Beispiel: `11111111111`

**date\_of\_birth** `string` *required* (default: 1990-01-01)

Geburtsdatum im Format `YYYY-MM-DD`.

Beispiel: `1990-01-01`

**first\_name** `string`

Zu validierender Vorname.

Beispiel: `John`

**last\_name** `string`

Zu validierender Nachname.

Beispiel: `Doe`

**vendor\_data** `string` (default: user-1234)

Ihre stabile Benutzerreferenz für diese Person, etwa Ihre interne Benutzer-ID. Didit verwendet sie, um eigenständige Prüfungen demselben Endbenutzer zuzuordnen und unnötige Treffer bei der Duplikaterkennung zu reduzieren.

Beispiel: `user-1234`

## Eingaberegeln und Validierungshinweise

* Brasilianische CPF (genau 11 Ziffern)
* `tax_number` darf nur Ziffern enthalten. Entfernen Sie Leerzeichen, Bindestriche und Satzzeichen, bevor Sie die Anfrage senden.
* `tax_number` muss genau 11 Zeichen lang sein.

## So rufen Sie den Dienst auf

```bash cURL theme={null}
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 "vendor_data=user-1234" \
  -F "tax_number=11111111111" \
  -F "date_of_birth=1990-01-01"
```

```python Python theme={null}
from didit import Didit

# Reads DIDIT_API_KEY.
client = Didit()

result = client.database_validation.validate(
    issuing_state="BRA",
    services=["bra_cpf"],
    date_of_birth="1990-01-01",
    tax_number="11111111111",
    vendor_data="user-1234",
)
print(result)
```

```javascript Node.js theme={null}
import Didit from "@didit-protocol/sdk-node";

// Reads DIDIT_API_KEY.
const didit = new Didit();

const result = await didit.databaseValidation.validate({
  issuing_state: "BRA",
  services: ["bra_cpf"],
  date_of_birth: "1990-01-01",
  tax_number: "11111111111",
  vendor_data: "user-1234",
});
console.log(result);
```

```go Go theme={null}
ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()

result, err := client.DatabaseValidation.Validate(ctx, didit.DatabaseValidationValidateParams{
	IssuingState: "BRA",
	Services:     didit.Some([]string{"bra_cpf"}),
	DateOfBirth:  didit.String("1990-01-01"),
	TaxNumber:    didit.String("11111111111"),
	VendorData:   didit.String("user-1234"),
})
if err != nil {
	log.Fatal(err)
}
fmt.Printf("%+v\n", result)
```

```java Java theme={null}
import java.time.LocalDate;
import java.util.List;
import me.didit.Didit;
import me.didit.types.DatabaseValidationValidateParams;

// Reads DIDIT_API_KEY.
Didit client = new Didit();

var result = client.databaseValidation().validate(DatabaseValidationValidateParams.builder()
        .issuingState("BRA")
        .services(List.of("bra_cpf"))
        .dateOfBirth(LocalDate.parse("1990-01-01"))
        .taxNumber("11111111111")
        .vendorData("user-1234")
        .build());
System.out.println(result);
```

```php PHP theme={null}
<?php

require 'vendor/autoload.php';

use Didit\DiditClient;

// Reads DIDIT_API_KEY.
$didit = new DiditClient();

$result = $didit->databaseValidation->validate([
    'issuing_state' => 'BRA',
    'services' => ['bra_cpf'],
    'date_of_birth' => '1990-01-01',
    'tax_number' => '11111111111',
    'vendor_data' => 'user-1234',
]);
print_r($result->toArray());
```

```ruby Ruby theme={null}
require "didit"

# Reads DIDIT_API_KEY.
didit = Didit::Client.new

result = didit.database_validation.validate(
  issuing_state: "BRA",
  services: ["bra_cpf"],
  date_of_birth: "1990-01-01",
  tax_number: "11111111111",
  vendor_data: "user-1234"
)
puts result.to_h
```

```csharp .NET theme={null}
using System;
using System.Text.Json;
using Didit;

// Reads DIDIT_API_KEY.
using var client = new DiditClient();

var result = await client.DatabaseValidation.ValidateAsync(new DatabaseValidationValidateParams
{
    IssuingState = "BRA",
    Services = new string[] { "bra_cpf" },
    DateOfBirth = "1990-01-01",
    TaxNumber = "11111111111",
    VendorData = "user-1234",
});
Console.WriteLine(JsonSerializer.Serialize(result));
```

Jeder erfolgreiche Aufruf gibt HTTP `200` zurück. Das Feld **`outcome_code`** zeigt an, was tatsächlich passiert ist. Es unterscheidet zum Beispiel einen echten biometrischen Nichttreffer (`BIOMETRIC_NO_MATCH`) von einem Selfie, das nicht gelesen werden konnte (`BIOMETRIC_IMAGE_UNUSABLE`). Der angezeigte `status` ist der Standardstatus der Funktion. Ihre konfigurierten [Aktionen für Teilübereinstimmung / keine Übereinstimmung](https://docs.didit.me/de/core-technology/database-validation/database-validation-warnings.md) können ihn überschreiben.

**`MATCH`**: Das Register hat die Identität bestätigt, und alle geprüften Felder stimmten überein.

```json 200 OK — MATCH theme={null}
{
  "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",
        "registration_date": "1990-01-01"
      },
      "validation": {
        "date_of_birth": "full_match",
        "identification_number": "full_match"
      }
    }
  ]
}
```

**`PARTIAL_MATCH`**: Die Identifikationsnummer wurde gefunden, aber ein oder mehrere personenbezogene Felder (meist Name oder Geburtsdatum) stimmen nicht vollständig überein.

```json 200 OK — PARTIAL_MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "In Review",
  "issuing_state": "BRA",
  "match_type": "partial_match",
  "validations": [
    {
      "outcome_code": "PARTIAL_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",
        "registration_date": "1990-01-01"
      },
      "validation": {
        "date_of_birth": "no_match",
        "identification_number": "full_match"
      }
    }
  ]
}
```

**`NO_MATCH`**: Das Register hat für die übermittelten Daten keine Übereinstimmung zurückgegeben.

```json 200 OK — NO_MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "Declined",
  "issuing_state": "BRA",
  "match_type": "no_match",
  "validations": [
    {
      "outcome_code": "NO_MATCH",
      "service_id": "bra_cpf",
      "service_name": "Brazil - CPF status check",
      "source_data": {
        "date_of_birth": "NO_MATCH",
        "identification_number": "NO_MATCH"
      },
      "validation": {
        "date_of_birth": "no_match",
        "identification_number": "no_match"
      }
    }
  ]
}
```

## Rückgabedaten

Welche Felder genau in `source_data` erscheinen, hängt davon ab, was das Register zurückgibt. Das generierte Beispiel für `bra_cpf` dokumentiert derzeit diese normalisierte Struktur:

* `date_of_birth`
* `first_name`
* `identification_number`
* `last_name`
* `lgpd_minor`
* `minor_under_16`
* `minor_under_18`
* `registration_date`

## Preise und SLAs

Brasilien - Statusabfragen zur CPF werden nur berechnet, wenn Didit von der Validierungsquelle ein schlüssiges Ergebnis erhält.

* **Preis pro Aufruf:** \$0.20 USD.
* **Abrechnung:** pro erfolgreicher Abfrage. Ihnen wird nichts berechnet, wenn das Register nicht erreichbar ist, wenn Pflichtfelder fehlen oder wenn die Anfrage abgelehnt wird, bevor sie die Quelle erreicht.
* **Latenz:** typischer p95-Wert \< 2 s.
* **Verfügbarkeit:** 99.9% pro Quartal auf Seiten von Didit. Die Verfügbarkeit der nachgelagerten Quelle variiert je nach Land und Datensatz.

## Weiterlesen

* [Übersicht zur Datenbankvalidierung für Brasilien](https://docs.didit.me/api-reference/database-validation/brazil.md)
* [Übersicht zur Datenbankvalidierung](https://docs.didit.me/de/core-technology/database-validation/overview.md)
* [Ergebniscodes](https://docs.didit.me/de/core-technology/database-validation/database-validation-outcome-codes.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.