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

# Vérification de compte bancaire : titularité sans connexion

> Confirmez avec Didit qu'un compte appartient à la personne sans connexion bancaire : IBAN, sort code, CLABE, CBU, IFSC.

La vérification de compte confirme qu'un compte bancaire appartient à la personne que votre workflow a déjà vérifiée, à partir des coordonnées de compte qu'elle saisit. Il n'y a ni connexion bancaire ni écran de consentement : la personne saisit son compte selon le format en vigueur dans son pays, et la banque confirme que le nom associé correspond au nom vérifié lors d'une étape précédente.

Il s'agit de l'une des deux [méthodes de Bank Verification](https://docs.didit.me/fr/core-technology/bank-verification/verification-methods.md), aux côtés de la connexion bancaire, et la valeur de sa méthode est `account_lookup`. L'importation de relevé et les micro-dépôts restent des solutions de repli après ces deux méthodes, et la personne peut toujours [continuer sans banque](https://docs.didit.me/fr/core-technology/bank-verification/fallbacks.md). Pour vérifier un compte depuis votre backend sans session, par exemple avant un versement, utilisez l'[API de vérification de compte](https://docs.didit.me/fr/standalone-apis/bank-account-check.md).

> [!NOTE]
>
> Bank Verification confirme le titulaire d'un compte par rapport à une identité établie par **une autre étape**, et ne constitue donc pas une preuve d'identité à elle seule. Placez une étape de Vérification d'identité, de Validation en base de données, un questionnaire ou `expected_details` avant cette étape. La personne ne saisit jamais de nom pour la vérification : Didit compare toujours le nom que la session a déjà vérifié.

## Comment cela fonctionne

**1. La personne choisit son pays**

Lors de l'étape Bank Verification, la personne choisit un pays proposé par l'étape. Lorsque la vérification de compte y figure en premier, l'étape ouvre un court formulaire adapté au format de compte de ce pays. Lorsque la connexion bancaire figure en premier, la personne sélectionne **Saisissez les coordonnées de votre compte** pour accéder au formulaire.

**2. La personne saisit son compte**

Par exemple un IBAN, un code guichet et un numéro de compte, ou une CLABE. Le flux de vérification génère le formulaire à partir de ce que l'API renvoie pour ce pays ; ainsi, un pays que Didit ajoutera ultérieurement ne nécessite aucune modification de votre côté.

**3. Didit vérifie d'abord le format**

Avant toute facturation, Didit contrôle chaque valeur : sa longueur, ses caractères, ses chiffres de contrôle et, pour un IBAN, son appartenance au pays sélectionné. Une valeur invalide est refusée en indiquant le champ à corriger. La personne la corrige directement, et aucune tentative n'est décomptée.

**4. La banque vérifie le nom associé au compte**

Didit effectue une vérification par rapport au nom vérifié par la session. Toute autre information envoyée par le client est ignorée.

**5. L'étape prend une décision**

La réponse devient un résultat de titularité du compte, et les actions de l'étape la transforment en verdict exactement de la même manière que pour une connexion bancaire.

## Où la vérification est proposée

La couverture est définie par pays. En production, la vérification fonctionne aujourd'hui au Nigeria, au Ghana et au Kenya. Didit l'active pays par pays dès qu'une route tarifée y est disponible ; un pays qui n'en dispose pas ne la propose pas, et les [tarifs de Bank Verification](https://docs.didit.me/fr/getting-started/bank-verification-pricing.md) affichent toujours la liste à jour. Des pays sont ajoutés au fil du temps et l'étape lit en permanence la liste actuelle ; vous n'avez donc jamais besoin de modifier votre intégration lorsqu'un pays est ajouté.

Dans un pays couvert, les méthodes de l'étape déterminent si la personne y a accès :

* **L'ordre de l'étape.** `bank_method_order` définit les méthodes proposées par chaque pays et celle qui apparaît en premier. La valeur par défaut, `["open_banking", "account_lookup"]`, commence par la connexion bancaire et propose la vérification de compte comme solution de secours.
* **L'ordre propre à un pays.** Le paramètre `methods` défini sur un pays dans `bank_countries` remplace l'ordre de l'étape pour ce pays, par exemple `["account_lookup"]` pour la vérification de compte uniquement, ou `["account_lookup", "open_banking"]` pour commencer par celle-ci.
* **Une banque indisponible.** Lorsqu'un pays propose la vérification de compte, celle-ci sert également de solution de secours pour une banque dont la connexion bancaire est dégradée ou indisponible : l'étape bascule vers le formulaire de compte avant de demander le moindre consentement, tant qu'il reste des vérifications de compte disponibles pour la personne.
* **La vérification fonctionne sur les routes propres à Didit.** Une étape qui s'exécute sur votre propre fournisseur de place de marché (`provider_key`) ne la propose que si `fallback_to_native` est activé.
* **Comptes professionnels.** Dans une session de vérification d'entreprise, la vérification compare un compte professionnel avec l'entreprise vérifiée, dans les pays où Didit prend en charge le contrôle des comptes professionnels.

Consultez [Choisir les méthodes par pays](https://docs.didit.me/fr/core-technology/bank-verification/verification-methods.md#choisir-les-méthodes-par-pays) pour connaître les règles appliquées lors de l'enregistrement.

## Ce que la personne saisit

Voici les formats de compte pris en charge par le formulaire. Il ne s'agit pas d'une liste de couverture : l'exécution de la vérification dans un pays dépend des [endroits où elle est proposée](#où-la-vérification-est-proposée), et l'étape affiche toujours les champs exacts correspondant à ce pays.

| Format de compte | Pays | Ce que la personne saisit |
| - | - | - |
| IBAN | Pays utilisant l'IBAN | L'IBAN complet, qui doit appartenir au pays sélectionné |
| Code guichet et numéro de compte | Royaume-Uni | Un code guichet à 6 chiffres et un numéro de compte à 8 chiffres |
| Numéro de routage et numéro de compte | États-Unis | Un numéro de routage ABA à 9 chiffres et le numéro de compte |
| Numéro de transit et d'institution | Canada | Le numéro de transit et d'institution à 8 chiffres (le transit à 5 chiffres suivi de l'institution à 3 chiffres) et le numéro de compte |
| BSB et numéro de compte | Australie | Un BSB à 6 chiffres et le numéro de compte |
| CLABE | Mexique | La CLABE à 18 chiffres, qui identifie déjà la banque |
| CBU ou CVU | Argentine | Le CBU ou CVU à 22 chiffres, qui identifie déjà la banque |
| IFSC et numéro de compte | Inde | L'IFSC à 11 caractères et le numéro de compte |
| NUBAN et code banque | Nigeria | Le NUBAN à 10 chiffres et le code ou BIC de la banque |
| Numéro de compte | Autres pays | Le numéro de compte, ainsi qu'un code banque ou BIC lorsque le pays l'exige |

Dans certains pays, le formulaire demande également un numéro d'immatriculation : pour les comptes professionnels, et dans quelques pays pour tous les comptes.

Les espaces, tirets et points sont supprimés et les lettres sont converties en majuscules avant le contrôle de la valeur, afin que la personne puisse saisir son compte tel que sa banque l'imprime.

## Activer la fonctionnalité

Une nouvelle étape propose la vérification du compte par défaut, en tant que solution de repli à la connexion bancaire. Pour commencer par celle-ci, ou pour la proposer seule, placez `account_lookup` en premier dans l'ordre :

```json theme={null}
{
  "bank_method_order": ["account_lookup", "open_banking"]
}
```

Ces paramètres configurent la vérification :

| Paramètre | Effet sur la vérification du compte |
| - | - |
| `bank_method_order`, `bank_countries.<ISO3>.methods` | Détermine si un pays propose la vérification, et si elle intervient avant ou après la connexion bancaire. |
| `bank_countries` | La vérification ne s'exécute que dans les pays proposés par l'étape. |
| `bank_reference_identity` | L'étape dont le nom vérifié sert de référence pour vérifier le compte. |
| `bank_account_check_max_attempts` | Nombre de vérifications accordées à la personne, de `1` à `5` (`3` par défaut). Il s'agit d'un décompte distinct de celui de `bank_max_attempts` pour la connexion bancaire. |
| `bank_account_check_accept_close_match` | Activé (par défaut) : une correspondance proche mène à la confirmation de correspondance proche, ou à `bank_partial_match_action`. Désactivé : toute correspondance proche équivaut à une absence de correspondance. |
| `bank_name_match_threshold`, `bank_partial_match_floor` | Les mêmes plages de scores de correspondance du nom que pour la connexion bancaire : une correspondance atteignant ou dépassant le seuil (85 par défaut), et une correspondance proche, la tranche de correspondance partielle, entre le plancher (70 par défaut) et le seuil. |
| `bank_use_provider_score` | Activé (par défaut) : le score de correspondance du nom propre à la vérification prévaut lorsqu'il est supérieur à celui de Didit, ou lorsque la vérification renvoie un score sans nom de titulaire ; `ownership.method` indique alors `provider_only`. Désactivé : une réponse sans nom de titulaire donne `not_verifiable`. |
| `bank_suggest_holder_name` | Activé (par défaut) : en cas de correspondance proche mentionnant le titulaire, la personne voit le nom et confirme qu'il s'agit du sien ou essaie un autre compte. |

## Résultats

### Vérifications qui renvoient une réponse

Chacune d'entre elles est facturée une fois et décompte l'une des vérifications de compte accordées à la personne (`bank_account_check_max_attempts`). Tant que l'étape n'est pas terminée, la personne peut réessayer avec un autre compte s'il lui reste des tentatives. Le résultat se trouve dans `ownership.result`, sauf pour un compte inexistant, qui figure dans `connection.reason_code`.

| La vérification renvoie | Résultat | Ce qui décide |
| - | - | - |
| Le compte appartient à la personne vérifiée | `match` | L'étape approuve, sauf si une autre de ses vérifications indique le contraire. |
| Une correspondance proche qui indique le nom du titulaire | `partial_match` | Avec `bank_suggest_holder_name` activé, la personne confirme le nom ou essaie un autre compte. La confirmation termine l'étape selon `bank_partial_match_action` (`REVIEW` par défaut). |
| Une correspondance proche avec un score mais sans nom de titulaire | `partial_match` | `bank_partial_match_action` (`REVIEW` par défaut). `ownership.method` indique `provider_only`. Cela nécessite l'activation de `bank_use_provider_score`, le réglage par défaut ; lorsqu'il est désactivé, la réponse est `not_verifiable`. |
| Le compte appartient à quelqu'un d'autre | `no_match` | `bank_no_match_action` (`DECLINE` par défaut). |
| Une réponse qui n'a comparé aucun nom | `not_verifiable` | `bank_not_verifiable_action` (`REVIEW` par défaut). |
| Aucun compte n'existe avec ces coordonnées | `ACCOUNT_NOT_FOUND` | La personne peut essayer un autre compte tant qu'il lui reste des vérifications. |

Lorsque `bank_account_check_accept_close_match` est désactivé, les deux cas de correspondance proche deviennent `no_match`, avec le code de raison `OWNER_NAME_MISMATCH` : il n'est jamais demandé à la personne de confirmer le nom, et `bank_no_match_action` s'applique. La connexion bancaire conserve ses correspondances proches dans les deux cas.

Dès que la personne a épuisé toutes ses vérifications de compte, ainsi que toutes ses tentatives de connexion bancaire lorsque le pays propose également cette option, sans parvenir à une connexion réussie, l'étape reste ouverte tant qu'elle propose encore à la personne de téléverser un relevé et qu'il lui reste des tentatives : voir [Le téléversement du relevé](https://docs.didit.me/fr/core-technology/bank-verification/fallbacks.md#le-téléversement-de-relevé). Lorsqu'aucun moyen ne subsiste, l'étape se termine selon `bank_attempts_exhausted_action` (`DECLINE` par défaut), à moins qu'une tentative antérieure n'ait déjà abouti à un verdict, comme une discordance de nom. Ce verdict est alors maintenu.

### Résultats qui ne sont jamais facturés

Aucun de ces cas ne consomme de vérification. Chacun d'eux est indiqué dans `connection.reason_code`.

| Ce qui se passe | Code de raison | Ce qui suit |
| - | - | - |
| Le compte est refusé tel qu'il a été saisi, par la validation du format de Didit ou par la banque | `INVALID_ACCOUNT_INPUT`, tant que la tentative reste ouverte | La personne est informée du champ à corriger et le modifie. |
| La vérification est momentanément indisponible | `PROVIDER_UNAVAILABLE` | La personne peut réessayer. |
| La session n'a aucun nom vérifié à comparer | `REFERENCE_IDENTITY_MISSING` | La vérification ne s'exécute jamais. L'étape se termine selon `bank_reference_identity_missing_action` (`REVIEW` par défaut). |

### Dans la décision

La décision de la session répertorie l'étape sous `bank_verifications[]`. Dès qu'un compte a été évalué, `method` indique `account_lookup`. Tant qu'aucun compte n'a été évalué, `method` et `ownership` sont à `null`, et `connection.reason_code` en précise la raison, par exemple `ACCOUNT_NOT_FOUND`, `PROVIDER_UNAVAILABLE` ou `REFERENCE_IDENTITY_MISSING`.

Aucune banque n'est sélectionnée pour la vérification, par conséquent `connection.institution_id`, `connection.institution_name` et `connection.oauth` sont à `null`, et `connection.institution_country` correspond au pays choisi par la personne. Didit ne conserve aucun accès au compte une fois l'étape terminée ; ainsi, une vérification conclue par une correspondance indique `connection.status: revoked` avec `reason_code: VERIFICATION_COMPLETED`. Le résultat lui-même reste associé à la session.

Une vérification de compte ne lit aucun solde, transaction ou revenu. Lorsque l'étape les demande, `financial_data.not_collected` en dresse la liste ; voir [Les données financières nécessitent une connexion bancaire](https://docs.didit.me/fr/core-technology/bank-verification/verification-methods.md#les-données-financières-nécessitent-la-connexion-à-la-banque).

```json theme={null}
{
  "bank_verifications": [
    {
      "status": "Approved",
      "method": "account_lookup",
      "connection": {
        "status": "revoked",
        "institution_id": null,
        "institution_name": null,
        "institution_country": "NGA",
        "oauth": null,
        "attempts": 1,
        "reason_code": "VERIFICATION_COMPLETED"
      },
      "ownership": {
        "result": "match",
        "method": "exact"
      },
      "financial_data": {
        "balances": null,
        "transactions": null,
        "income": null,
        "categorization": null,
        "not_collected": []
      },
      "billing": {
        "route": "native",
        "billed": true,
        "marketplace_fee": null,
        "usage_type": "bank_verification"
      }
    }
  ]
}
```

Cet exemple ne montre que les champs abordés sur cette page. Une fois qu'un compte a été évalué, examinez `method` pour distinguer une vérification de compte d'une connexion bancaire : c'est le champ prévu à cet effet.

### Dans les règles de workflow et les rapports

* **Branches et règles de statut :** `bank.method` vaut `account_lookup` (**Account Check** dans le générateur de règles), et `bank.reason_code` peut être `ACCOUNT_NOT_FOUND`.
* **Rapport PDF de la session :** la ligne **Méthode de vérification** indique **Vérification du compte**.

## Tarifs

Chaque vérification qui renvoie une réponse est facturée comme une vérification Bank Verification : une correspondance, une correspondance partielle, une absence de correspondance, un compte impossible à vérifier et un compte introuvable sont tous facturés. Une valeur refusée avant la vérification, une vérification indisponible et une session sans nom vérifié à comparer ne sont jamais facturées. Le prix est défini par pays : voir les [tarifs de Bank Verification](https://docs.didit.me/fr/getting-started/bank-verification-pricing.md).

La vérification de compte est une méthode payante à part entière, jamais un repli : `bank_fallback_used_action` ne se déclenche pas pour elle. Après une vérification facturée, les micro-virements et le téléversement de relevé sont inclus sans frais supplémentaires dans la même session, lorsque l'étape les active et que le pays les propose.

## Tester dans la sandbox

Dans une application sandbox, la vérification s'exécute sur un service simulé et rien n'est facturé. La sandbox propose les deux méthodes dans chaque pays, dans l'ordre défini par l'étape : avec l'ordre par défaut, choisissez **Saisissez les coordonnées de votre compte** pour lancer la vérification, ou définissez `bank_method_order` sur `["account_lookup", "open_banking"]` pour commencer par celle-ci.

Les quatre derniers caractères du compte saisi par la personne (l'IBAN, sinon le numéro de compte) déterminent la réponse. Toute autre fin correspond au nom vérifié.

| Se termine par | Réponse |
| - | - |
| `0001` | Une correspondance partielle avec le nom du titulaire : la personne est invitée à confirmer le nom. Avec `bank_account_check_accept_close_match` désactivé, une absence de correspondance. |
| `0002` | Une correspondance partielle sans nom de titulaire : `bank_partial_match_action` décide. Avec `bank_use_provider_score` désactivé, la réponse est `not_verifiable` ; avec `bank_account_check_accept_close_match` désactivé, une absence de correspondance. |
| `0003` | Aucune correspondance : le compte appartient à quelqu'un d'autre. Consomme une vérification. |
| `0004` | Une réponse a été obtenue, mais aucun nom n'a été comparé (`not_verifiable`). Consomme une vérification. |
| `0005` | La vérification est indisponible (`PROVIDER_UNAVAILABLE`). Nouvelle tentative gratuite. |
| `0006` | Aucun compte avec ces coordonnées (`ACCOUNT_NOT_FOUND`). Consomme une vérification. |
| `0009` | Refusé tel quel : la personne est invitée à corriger le champ. La tentative reste ouverte. |

La sandbox enregistre chaque vérification ayant obtenu une réponse comme une utilisation sans frais, ce qui vous permet de voir quelles vérifications seraient facturées lors d'une session en production.

Un IBAN, une CLABE et un CBU comportent des chiffres de contrôle, vous ne pouvez donc pas simplement modifier leurs quatre derniers caractères. Utilisez ces valeurs, qui passent toutes les vérifications de format :

> [tab] Allemagne (IBAN)
>
> | Réponse | IBAN |
> | - | - |
> | Correspondance | `DE43123456789012345678` |
> | `0001` | `DE62123456789012340001` |
> | `0002` | `DE35123456789012340002` |
> | `0003` | `DE08123456789012340003` |
> | `0004` | `DE78123456789012340004` |
> | `0005` | `DE51123456789012340005` |
> | `0006` | `DE24123456789012340006` |
> | `0009` | `DE40123456789012340009` |

> [tab] Royaume-Uni
>
> Code guichet `123456`, avec :
>
> | Réponse | Numéro de compte |
> | - | - |
> | Correspondance | `12345678` |
> | `0001` | `12340001` |
> | `0002` | `12340002` |
> | `0003` | `12340003` |
> | `0004` | `12340004` |
> | `0005` | `12340005` |
> | `0006` | `12340006` |
> | `0009` | `12340009` |

> [tab] États-Unis
>
> Numéro d'acheminement `021000021`, avec :
>
> | Réponse | Numéro de compte |
> | - | - |
> | Correspondance | `000123456789` |
> | `0001` | `000123450001` |
> | `0002` | `000123450002` |
> | `0003` | `000123450003` |
> | `0004` | `000123450004` |
> | `0005` | `000123450005` |
> | `0006` | `000123450006` |
> | `0009` | `000123450009` |

> [tab] Mexique (CLABE)
>
> | Réponse | CLABE |
> | - | - |
> | Correspondance | `002010077777777771` |
> | `0001` | `002010077777780001` |
> | `0002` | `002010077777750002` |
> | `0003` | `002010077777720003` |
> | `0004` | `002010077777790004` |
> | `0005` | `002010077777760005` |
> | `0006` | `002010077777730006` |
> | `0009` | `002010077777740009` |

> [tab] Argentine (CBU)
>
> | Réponse | CBU |
> | - | - |
> | Correspondance | `2850590940090418135201` |
> | `0001` | `2850590940090418160001` |
> | `0002` | `2850590940090418170002` |
> | `0003` | `2850590940090418180003` |
> | `0004` | `2850590940090418190004` |
> | `0005` | `2850590940090418100005` |
> | `0006` | `2850590940090418110006` |
> | `0009` | `2850590940090418140009` |

> [tab] Inde
>
> IFSC `ALLA0211480`, avec :
>
> | Réponse | Numéro de compte |
> | - | - |
> | Correspondance | `123456789007` |
> | `0001` | `123456780001` |
> | `0002` | `123456780002` |
> | `0003` | `123456780003` |
> | `0004` | `123456780004` |
> | `0005` | `123456780005` |
> | `0006` | `123456780006` |
> | `0009` | `123456780009` |

L'[API de vérification de compte](https://docs.didit.me/fr/standalone-apis/bank-account-check.md) fournit une réponse à partir d'une clé sandbox avec les mêmes terminaisons, sans session.

Consultez les [tests en sandbox](https://docs.didit.me/fr/integration/sandbox-testing.md) pour comprendre le fonctionnement général des applications sandbox.


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