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

# API de Canadà Credit Bureau 2 (no FINTRAC): ID Match

> Canada Credit Bureau 2 (no FINTRAC): consulta de bases de dades oficials del Canadà amb Didit. Pagament per crida des de $1.75, sense contractes ni mínims.

Verifica les dades introduïdes amb les dades de capçalera de crèdit obtingudes d'una agència de crèdit del Canadà. Aquest servei no proporciona les dades que FINTRAC exigeix, però pot oferir indicadors addicionals de detecció de frau. Cal una aplicació de l'agència. Didit exposa aquest servei a través de `POST /v3/database-validation/` perquè pots verificar les dades enviades amb la font de referència i rebre resultats de coincidència normalitzats.

## Cobertura

* **Cobertura:** \~ 85%
* **País:** Canadà
* **ID del servei:** `can_credit_bureau_2_non_fintrac`
* **Àmbit de dades:** Financer
* **Categoria:** CreditBureau

## Entrades

| Camp | Obligatori | Exemple |
| - | -: | - |
| `first_name` | Sí | `John` |
| `last_name` | Sí | `Doe` |
| `date_of_birth` | Sí | `1990-01-01` |
| `address.street_1` | Sí | `123 Sample Street` |
| `address.postal_code` | Sí | `10001` |
| `address.street_2` | No | `Unit 4` |
| `address.city` | No | `Sample City` |
| `address.region` | No | `Sample State` |
| `vendor_data` | No | `user-1234` |

* **Entrades obligatòries:** `first_name`, `last_name`, `date_of_birth`, `address.street_1`, `address.postal_code`
* **Entrades opcionals:** `address.street_2`, `address.city`, `address.region`, `vendor_data`
* **Consentiment:** Obligatori
* **Disponibilitat:** Disponible al flux de treball
* **Cobertura:** \~ 85%
* **Preu:** \$1.75 per consulta satisfactòria

## Paràmetres del cos

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

Codi de país ISO 3166-1 alpha-3 per a aquest servei de base de dades.

Exemple: `CAN`

**services** `string` *required* (default: can\_credit\_bureau\_2\_non\_fintrac)

Matriu que conté aquest ID de servei. Fixar el servei manté la sol·licitud limitada a aquesta base de dades exacta.

Exemple: `can_credit_bureau_2_non_fintrac`

**consent** `boolean` *required* (default: true)

Consentiment explícit de l'usuari final per a aquest servei.

Exemple: `true`

**first\_name** `string` *required* (default: John)

Nom de pila que cal verificar.

Exemple: `John`

**last\_name** `string` *required* (default: Doe)

Cognom que cal verificar.

Exemple: `Doe`

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

Data de naixement en format `YYYY-MM-DD`.

Exemple: `1990-01-01`

**address** `object` *required* (default: \{"street\_1":"123 Sample Street","street\_2":"Unit 4","city":"Sample City","region":"Sample State","postal\_code":"10001","country":"US"})

Objecte d'adreça residencial estructurat. Utilitza `street_1`, `street_2`, `city`, `region`, `postal_code` i `country`. Encara s'accepta una cadena d'adreça completa en el format anterior, però no es recomana.

Exemple: `{"street_1":"123 Sample Street","street_2":"Unit 4","city":"Sample City","region":"Sample State","postal_code":"10001","country":"US"}`

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

La teva referència estable d'usuari per a aquesta persona, com ara el teu ID d'usuari intern. Didit l'utilitza per vincular les comprovacions independents amb el mateix usuari final i reduir el soroll de la detecció de duplicats.

Exemple: `user-1234`

## Regles d'entrada i notes de validació

* Per als serveis d'adreça, envia camps d'adreça estructurats en lloc d'una única cadena `address` quan sigui possible.
* `address.street_1` és l'adreça del carrer, incloent-hi el número i el tipus de via.
* `address.street_2` és l'apartament, la unitat, l'edifici, la planta o qualsevol línia addicional de l'adreça. Envia'l només quan el tinguis.
* `address.city` és la ciutat, el suburbi, el districte, la localitat o el veïnat.
* `address.region` és l'estat, la província, la regió o el poble.
* `address.postal_code` és el codi postal.
* Els serveis de bases de dades basats en adreces requereixen com a mínim l'adreça del carrer i el codi postal; les sol·licituds rebutjades abans de la consulta a la font no es cobren.

## Com cridar-lo

```bash cURL theme={null}
curl -X POST "https://verification.didit.me/v3/database-validation/" \
  -H "x-api-key: YOUR_API_KEY" \
  -F "issuing_state=CAN" \
  -F "services=can_credit_bureau_2_non_fintrac" \
  -F "vendor_data=user-1234" \
  -F "consent=true" \
  -F "first_name=John" \
  -F "last_name=Doe" \
  -F "date_of_birth=1990-01-01" \
  -F 'address={"street_1":"123 Sample Street","street_2":"Unit 4","city":"Sample City","region":"Sample State","postal_code":"10001","country":"US"}'
```

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

# Reads DIDIT_API_KEY.
client = Didit()

result = client.database_validation.validate(
    issuing_state="CAN",
    services=["can_credit_bureau_2_non_fintrac"],
    consent=True,
    first_name="John",
    last_name="Doe",
    date_of_birth="1990-01-01",
    address={"street_1": "123 Sample Street", "street_2": "Unit 4", "city": "Sample City", "region": "Sample State", "postal_code": "10001", "country": "US"},
    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: "CAN",
  services: ["can_credit_bureau_2_non_fintrac"],
  consent: true,
  first_name: "John",
  last_name: "Doe",
  date_of_birth: "1990-01-01",
  address: { street_1: "123 Sample Street", street_2: "Unit 4", city: "Sample City", region: "Sample State", postal_code: "10001", country: "US" },
  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: "CAN",
	Services:     didit.Some([]string{"can_credit_bureau_2_non_fintrac"}),
	Consent:      didit.Bool(true),
	FirstName:    didit.String("John"),
	LastName:     didit.String("Doe"),
	DateOfBirth:  didit.String("1990-01-01"),
	Address:      didit.Some[any](map[string]any{"street_1": "123 Sample Street", "street_2": "Unit 4", "city": "Sample City", "region": "Sample State", "postal_code": "10001", "country": "US"}),
	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("CAN")
        .services(List.of("can_credit_bureau_2_non_fintrac"))
        .consent(true)
        .firstName("John")
        .lastName("Doe")
        .dateOfBirth(LocalDate.parse("1990-01-01"))
        .address(DatabaseValidationValidateParams.Address.ofVariant1(DatabaseValidationValidateParams.Address.Variant1.builder()
                .street1("123 Sample Street")
                .street2("Unit 4")
                .city("Sample City")
                .region("Sample State")
                .postalCode("10001")
                .country("US")
                .build()))
        .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' => 'CAN',
    'services' => ['can_credit_bureau_2_non_fintrac'],
    'consent' => true,
    'first_name' => 'John',
    'last_name' => 'Doe',
    'date_of_birth' => '1990-01-01',
    'address' => ['street_1' => '123 Sample Street', 'street_2' => 'Unit 4', 'city' => 'Sample City', 'region' => 'Sample State', 'postal_code' => '10001', 'country' => 'US'],
    '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: "CAN",
  services: ["can_credit_bureau_2_non_fintrac"],
  consent: true,
  first_name: "John",
  last_name: "Doe",
  date_of_birth: "1990-01-01",
  address: { street_1: "123 Sample Street", street_2: "Unit 4", city: "Sample City", region: "Sample State", postal_code: "10001", country: "US" },
  vendor_data: "user-1234"
)
puts result.to_h
```

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

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

var result = await client.DatabaseValidation.ValidateAsync(new DatabaseValidationValidateParams
{
    IssuingState = "CAN",
    Services = new string[] { "can_credit_bureau_2_non_fintrac" },
    Consent = true,
    FirstName = "John",
    LastName = "Doe",
    DateOfBirth = "1990-01-01",
    Address = new Dictionary<string, object> { ["street_1"] = "123 Sample Street", ["street_2"] = "Unit 4", ["city"] = "Sample City", ["region"] = "Sample State", ["postal_code"] = "10001", ["country"] = "US" },
    VendorData = "user-1234",
});
Console.WriteLine(JsonSerializer.Serialize(result));
```

Cada crida satisfactòria retorna HTTP `200`. El camp **`outcome_code`** indica què ha passat realment, distingint, per exemple, una discordança biomètrica real (`BIOMETRIC_NO_MATCH`) d'un selfie que no s'ha pogut llegir (`BIOMETRIC_IMAGE_UNUSABLE`). L'`status` mostrat és l'estat predeterminat de la funcionalitat; les teves [accions configurades de coincidència parcial / sense coincidència](https://docs.didit.me/ca/core-technology/database-validation/database-validation-warnings.md) poden substituir-lo.

**`MATCH`**: El registre ha confirmat la identitat i tots els camps comprovats coincideixen.

```json 200 OK — MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "Approved",
  "issuing_state": "CAN",
  "match_type": "full_match",
  "validations": [
    {
      "outcome_code": "MATCH",
      "service_id": "can_credit_bureau_2_non_fintrac",
      "service_name": "Canada Credit Bureau 2 (Non-FINTRAC)",
      "source_data": {
        "address": "123 Sample Street",
        "date_of_birth": "1990-01-01",
        "first_name": "John",
        "last_name": "Doe"
      },
      "validation": {
        "address": "full_match",
        "date_of_birth": "full_match",
        "full_name": "full_match"
      }
    }
  ]
}
```

**`PARTIAL_MATCH`**: Un o més dels camps que compara aquest servei no coincideixen completament. En aquest exemple, `full_name` no coincideix, mentre que `address` i `date_of_birth` sí.

```json 200 OK — PARTIAL_MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "In Review",
  "issuing_state": "CAN",
  "match_type": "partial_match",
  "validations": [
    {
      "outcome_code": "PARTIAL_MATCH",
      "service_id": "can_credit_bureau_2_non_fintrac",
      "service_name": "Canada Credit Bureau 2 (Non-FINTRAC)",
      "source_data": {
        "address": "123 Sample Street",
        "date_of_birth": "1990-01-01",
        "first_name": "John",
        "last_name": "Doe"
      },
      "validation": {
        "address": "full_match",
        "date_of_birth": "full_match",
        "full_name": "no_match"
      }
    }
  ]
}
```

**`NO_MATCH`**: El registre no ha retornat cap coincidència per a les dades enviades.

```json 200 OK — NO_MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "Declined",
  "issuing_state": "CAN",
  "match_type": "no_match",
  "validations": [
    {
      "outcome_code": "NO_MATCH",
      "service_id": "can_credit_bureau_2_non_fintrac",
      "service_name": "Canada Credit Bureau 2 (Non-FINTRAC)",
      "source_data": {
        "address": "NO_MATCH",
        "date_of_birth": "NO_MATCH",
        "full_name": "NO_MATCH"
      },
      "validation": {
        "address": "no_match",
        "date_of_birth": "no_match",
        "full_name": "no_match"
      }
    }
  ]
}
```

## Dades retornades

Els camps exactes que apareixen a `source_data` depenen del que retorni el registre. L'exemple generat per a `can_credit_bureau_2_non_fintrac` documenta actualment aquesta estructura normalitzada:

* `address`
* `date_of_birth`
* `first_name`
* `last_name`

## Preus i SLA

Les consultes de Canada Credit Bureau 2 (Non-FINTRAC) només es facturen quan Didit rep un resultat concloent de la font de validació.

* **Preu per crida:** \$1.75 USD.
* **Facturació:** per consulta satisfactòria. No et cobrem quan el registre no és accessible, quan falten camps obligatoris o quan la sol·licitud es rebutja abans d'arribar a la font.
* **Latència:** p95 típic \< 2 s.
* **Disponibilitat:** 99.9% per trimestre per part de Didit; la disponibilitat de la font d'origen varia segons el país i el conjunt de dades.

## Continua llegint

* [Visió general de la validació en bases de dades al Canadà](https://docs.didit.me/api-reference/database-validation/canada.md)
* [Visió general de la validació en bases de dades](https://docs.didit.me/ca/core-technology/database-validation/overview.md)
* [Codis de resultat](https://docs.didit.me/ca/core-technology/database-validation/database-validation-outcome-codes.md)


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