> ## 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 del número de verificació bancària (BVN) de Nigèria

> Consulta el BVN de Nigèria amb Didit: validació en bases de dades oficials. Des de $0.35 per crida, sense contractes ni mínims.

Verifica les dades introduïdes amb la base de dades del Nigerian Banking Industry. Cal un selfie: el retrat de registre associat al BVN es compara facialment amb aquest selfie, i el registre només es retorna quan tots dos corresponen a la mateixa persona. Didit ofereix aquest servei a través de `POST /v3/database-validation/` perquè puguis verificar les dades enviades amb la font autoritzada i rebre resultats de coincidència normalitzats. Format d'entrada: `bvn` accepta el Nigerian Bank Verification Number (exactament 11 dígits).

## Cobertura

* **Cobertura:** \~ 100%
* **País:** Nigèria
* **ID del servei:** `nga_bank_verification_number`
* **Domini de dades:** Financer
* **Categoria:** Banca

## Entrades

| Camp | Obligatori | Exemple |
| - | -: | - |
| `bvn` | Sí | `11111111111` |
| `selfie` | Sí | `@./selfie.jpg` |
| `first_name` | No | `John` |
| `last_name` | No | `Doe` |
| `date_of_birth` | No | `1990-01-01` |
| `vendor_data` | No | `user-1234` |

* **Entrades obligatòries:** `bvn`, `selfie`
* **Entrades opcionals:** `first_name`, `last_name`, `date_of_birth`, `vendor_data`
* **Consentiment:** No cal
* **Disponibilitat al flux:** Disponible al flux de treball amb mapatge de camps
* **Cobertura:** \~ 100%
* **Preu:** \$0.35 per consulta satisfactòria

En un flux de treball, `bvn` no apareix imprès en cap document d'identitat, de manera que cap pas no el produeix per si sol. Recull-lo d'una resposta d'un qüestionari, d'un camp d'extracció de Document AI o d'un valor que enviïs en crear la sessió, i mapa'l al pas de Validació en bases de dades. Mentre no estigui mapat, l'editor de fluxos mostra aquest servei desactivat i indica quina entrada falta; en temps d'execució, una entrada que falta fa que la comprovació s'omet abans de cap consulta, de manera que mai no es factura una base de dades que no s'ha pogut consultar.

## Paràmetres del cos

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

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

Exemple: `NGA`

**services** `string` *required* (default: nga\_bank\_verification\_number)

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

Exemple: `nga_bank_verification_number`

**bvn** `string` *required* (default: 11111111111)

Bank Verification Number.

Exemple: `11111111111`

**selfie** `file` *required*

Fitxer d'imatge selfie per pujar per a la validació biomètrica de la base de dades. Formats acceptats: JPEG, PNG o WebP.

Exemple: `@./selfie.jpg`

**first\_name** `string`

Nom de pila a validar.

Exemple: `John`

**last\_name** `string`

Cognoms a validar.

Exemple: `Doe`

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

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

Exemple: `1990-01-01`

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

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

Exemple: `user-1234`

## Notes sobre les regles d'entrada i la validació

* Nigerian Bank Verification Number (exactament 11 dígits)
* `bvn` ha de contenir només dígits; elimina espais, guions i signes de puntuació abans d'enviar la sol·licitud.
* `bvn` ha de tenir exactament 11 caràcters.

## Com fer la crida

```bash cURL theme={null}
curl -X POST "https://verification.didit.me/v3/database-validation/" \
  -H "x-api-key: YOUR_API_KEY" \
  -F "issuing_state=NGA" \
  -F "services=nga_bank_verification_number" \
  -F "vendor_data=user-1234" \
  -F "bvn=11111111111" \
  -F "selfie=@./selfie.jpg" \
  -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="NGA",
    services=["nga_bank_verification_number"],
    date_of_birth="1990-01-01",
    bvn="11111111111",
    vendor_data="user-1234",
    selfie=open("selfie.jpg", "rb"),
)
print(result)
```

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

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

const result = await didit.databaseValidation.validate({
  issuing_state: "NGA",
  services: ["nga_bank_verification_number"],
  date_of_birth: "1990-01-01",
  bvn: "11111111111",
  vendor_data: "user-1234",
  selfie: await fileFromPath("selfie.jpg"),
});
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: "NGA",
	Services:     didit.Some([]string{"nga_bank_verification_number"}),
	DateOfBirth:  didit.String("1990-01-01"),
	Bvn:          didit.String("11111111111"),
	VendorData:   didit.String("user-1234"),
	Selfie:       didit.Some(didit.FileFromPath("selfie.jpg")),
})
if err != nil {
	log.Fatal(err)
}
fmt.Printf("%+v\n", result)
```

```java Java theme={null}
import java.nio.file.Path;
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("NGA")
        .services(List.of("nga_bank_verification_number"))
        .dateOfBirth(LocalDate.parse("1990-01-01"))
        .bvn("11111111111")
        .vendorData("user-1234")
        .selfie(Path.of("selfie.jpg"))
        .build());
System.out.println(result);
```

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

require 'vendor/autoload.php';

use Didit\DiditClient;
use Didit\File;

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

$result = $didit->databaseValidation->validate([
    'issuing_state' => 'NGA',
    'services' => ['nga_bank_verification_number'],
    'date_of_birth' => '1990-01-01',
    'bvn' => '11111111111',
    'vendor_data' => 'user-1234',
    'selfie' => File::fromPath('selfie.jpg'),
]);
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: "NGA",
  services: ["nga_bank_verification_number"],
  date_of_birth: "1990-01-01",
  bvn: "11111111111",
  vendor_data: "user-1234",
  selfie: Pathname("selfie.jpg")
)
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 = "NGA",
    Services = new string[] { "nga_bank_verification_number" },
    DateOfBirth = "1990-01-01",
    Bvn = "11111111111",
    VendorData = "user-1234",
    Selfie = FileUpload.FromPath("selfie.jpg"),
});
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 discrepància biomètrica real (`BIOMETRIC_NO_MATCH`) d'un selfie que no s'ha pogut llegir (`BIOMETRIC_IMAGE_UNUSABLE`). L'`status` que es mostra és l'estat predeterminat de la funcionalitat; les teves [accions de coincidència parcial / cap coincidència](https://docs.didit.me/ca/core-technology/database-validation/database-validation-warnings.md) configurades poden substituir-lo.

**`MATCH`**: el registre ha confirmat la identitat i tots els camps verificats coincideixen.

```json 200 OK — MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "Approved",
  "issuing_state": "NGA",
  "match_type": "full_match",
  "validations": [
    {
      "outcome_code": "MATCH",
      "service_id": "nga_bank_verification_number",
      "service_name": "Nigeria Bank Verification Number (BVN)",
      "source_data": {
        "date_of_birth": "1990-01-01",
        "first_name": "John",
        "last_name": "Doe"
      },
      "validation": {
        "identification_number": "full_match"
      }
    }
  ]
}
```

**`PARTIAL_MATCH`**: el BVN consta al registre i el selfie coincideix amb el retrat d'alta de NIBSS, però un nom o una data de naixement que has enviat no coincideix amb el registre. Es retorna el registre perquè puguis veure quin camp difereix.

```json 200 OK — PARTIAL_MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "In Review",
  "issuing_state": "NGA",
  "match_type": "partial_match",
  "validations": [
    {
      "outcome_code": "PARTIAL_MATCH",
      "service_id": "nga_bank_verification_number",
      "service_name": "Nigeria Bank Verification Number (BVN)",
      "source_data": {
        "date_of_birth": "1990-01-01",
        "first_name": "John",
        "last_name": "Doe"
      },
      "validation": {
        "date_of_birth": "no_match",
        "identification_number": "full_match"
      }
    }
  ]
}
```

**`BIOMETRIC_NO_MATCH`**: la puntuació de coincidència facial ha estat inferior al llindar d'acceptació; la persona del selfie no és la mateixa que la de la fotografia del registre.

```json 200 OK — BIOMETRIC_NO_MATCH theme={null}
{
  "request_id": "req_01H…",
  "status": "Declined",
  "issuing_state": "NGA",
  "match_type": "no_match",
  "validations": [
    {
      "outcome_code": "BIOMETRIC_NO_MATCH",
      "service_id": "nga_bank_verification_number",
      "service_name": "Nigeria Bank Verification Number (BVN)",
      "source_data": {
        "identification_number": "NO_MATCH"
      },
      "validation": {
        "identification_number": "no_match"
      }
    }
  ]
}
```

**`INCONCLUSIVE`**: el registre no ha pogut determinar si la persona coincideix; el resultat és realment incert (pot ser que hi sigui o no al registre). Això NO és una falta de coincidència ni un problema tècnic amb la imatge; no es pot confirmar cap camp, de manera que match\_type és null i la verificació s'envia a revisió.

```json 200 OK — INCONCLUSIVE theme={null}
{
  "request_id": "req_01H…",
  "status": "In Review",
  "issuing_state": "NGA",
  "match_type": null,
  "validations": [
    {
      "outcome_code": "INCONCLUSIVE",
      "service_id": "nga_bank_verification_number",
      "service_name": "Nigeria Bank Verification Number (BVN)",
      "source_data": {},
      "validation": {}
    }
  ]
}
```

**`DOCUMENT_NOT_FOUND`**: el número de document enviat no correspon a cap registre de la base de dades.

```json 200 OK — DOCUMENT_NOT_FOUND theme={null}
{
  "request_id": "req_01H…",
  "status": "Declined",
  "issuing_state": "NGA",
  "match_type": "no_match",
  "validations": [
    {
      "outcome_code": "DOCUMENT_NOT_FOUND",
      "service_id": "nga_bank_verification_number",
      "service_name": "Nigeria Bank Verification Number (BVN)",
      "source_data": {
        "identification_number": "NO_MATCH"
      },
      "validation": {
        "identification_number": "no_match"
      }
    }
  ]
}
```

## Dades retornades

Els camps exactes que es mostren a `source_data` depenen del que retorni el registre. L'exemple generat per a `nga_bank_verification_number` documenta actualment aquesta forma normalitzada:

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

## Preus i SLA

Les consultes del Nigerian Bank Verification Number (BVN) només es facturen quan Didit rep un resultat concloent de la font de validació.

* **Preu per crida:** \$0.35 USD.
* **Facturació:** per consulta satisfactòria. No se't factura 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 habitual \< 2 s.
* **Disponibilitat:** 99.9% per trimestre per part de Didit; la disponibilitat de la font externa varia segons el país i el conjunt de dades.

## Continua llegint

* [Visió general de la validació en bases de dades de Nigèria](https://docs.didit.me/api-reference/database-validation/nigeria.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.