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

# Verifica conto bancario: titolarità senza accesso

> Didit verifica la titolarità del conto bancario dai dati digitati dall'utente, senza login bancario: IBAN, sort code, CLABE, CBU, IFSC e altri.

Il controllo del conto conferma che un conto bancario appartiene alla persona che il tuo workflow ha già verificato, a partire dai dati del conto digitati. Non è richiesto alcun accesso alla banca né alcuna schermata di consenso: la persona inserisce il proprio conto nel formato previsto dal proprio paese e la banca conferma l'intestatario confrontandolo con il nome verificato in un passaggio precedente.

È uno dei due [metodi di Bank Verification](https://docs.didit.me/it/core-technology/bank-verification/verification-methods.md), insieme all'accesso bancario, e il valore del suo metodo è `account_lookup`. Il caricamento dell'estratto conto e i micro-depositi rimangono soluzioni di fallback dopo entrambi, e la persona può sempre [continuare senza una banca](https://docs.didit.me/it/core-technology/bank-verification/fallbacks.md). Per controllare un conto dal tuo backend senza una sessione, ad esempio prima di un pagamento in uscita, usa l'[API di controllo del conto](https://docs.didit.me/it/standalone-apis/bank-account-check.md).

> [!NOTE]
>
> Bank Verification conferma l'intestatario di un conto confrontandolo con un'identità stabilita da **un altro passaggio**, pertanto non costituisce una prova di identità autonoma. Inserisci Verifica dell'identità, Validazione su database, un questionario o `expected_details` prima del passaggio. La persona non inserisce mai un nome per il controllo: Didit confronta sempre il nome già verificato dalla sessione.

## Come funziona

**1. La persona seleziona il proprio paese**

Nel passaggio Bank Verification, la persona seleziona un paese offerto dal passaggio. Nei paesi in cui il controllo del conto è prioritario, il passaggio apre un breve modulo nel formato di conto di quel paese. Quando invece l'accesso bancario è prioritario, la persona seleziona **Inserisci i dati del tuo conto** per raggiungere il modulo.

**2. La persona inserisce i dati del conto**

Ad esempio un IBAN, un sort code e un numero di conto, oppure una CLABE. Il flusso di verifica genera il modulo a partire da quanto restituito dall'API per quel paese; in questo modo, l'aggiunta di un paese da parte di Didit non richiede alcuna modifica da parte tua.

**3. Didit verifica prima il formato**

Prima di qualsiasi addebito, Didit verifica ciascun valore: lunghezza, caratteri, cifre di controllo e, nel caso di un IBAN, l'appartenenza al paese selezionato. Un valore non valido viene rifiutato indicando il campo da correggere. La persona lo corregge direttamente e non viene consumato alcun tentativo.

**4. La banca verifica l'intestatario del conto**

Didit esegue un controllo a fronte del nome verificato dalla sessione. Qualsiasi altra informazione inviata dal client viene ignorata.

**5. Il passaggio determina l'esito**

La risposta diventa un risultato sull'assetto proprietario e le azioni del passaggio lo convertono nel verdetto esattamente come avviene per l'accesso bancario.

## Dove è offerto il controllo

La copertura è per paese. Oggi in produzione il controllo è attivo in Nigeria, Ghana e Kenya. Didit lo attiva paese per paese, non appena dispone di un percorso con relativo prezzo; un paese che non ne dispone non lo offre, e i [prezzi di Bank Verification](https://docs.didit.me/it/getting-started/bank-verification-pricing.md) mostrano sempre l'elenco aggiornato. I paesi vengono aggiunti nel tempo e il passaggio legge sempre l'elenco attuale, quindi non devi mai modificare la tua integrazione quando ne viene aggiunto uno.

All'interno di un paese coperto, sono i metodi del passaggio a stabilire se la persona lo visualizza:

* **L'ordine del passaggio.** `bank_method_order` definisce quali metodi offre ciascun paese e quale viene presentato per primo. Il valore predefinito, `["open_banking", "account_lookup"]`, inizia con l'accesso bancario e propone il controllo del conto come soluzione di riserva.
* **L'ordine specifico di un paese.** Il campo `methods` di un paese in `bank_countries` sovrascrive l'ordine del passaggio per quel paese, ad esempio `["account_lookup"]` solo per il controllo del conto, oppure `["account_lookup", "open_banking"]` per iniziare da quest'ultimo.
* **Una banca non disponibile.** Nei paesi in cui il controllo del conto è disponibile, funge anche da riserva per le banche il cui accesso bancario risulti degradato o non disponibile: il passaggio reindirizza al modulo del conto prima che venga richiesto alcun consenso, purché la persona abbia ancora tentativi di controllo del conto a disposizione.
* **Il controllo viene eseguito sui percorsi proprietari di Didit.** Un passaggio che utilizza il tuo provider del marketplace (`provider_key`) lo propone solo con `fallback_to_native` attivo.
* **Conti aziendali.** In una sessione di verifica aziendale, il controllo confronta un conto aziendale con l'azienda verificata, nei paesi in cui Didit effettua il controllo dei conti aziendali.

Consulta [Scegli i metodi per paese](https://docs.didit.me/it/core-technology/bank-verification/verification-methods.md#scegliere-i-metodi-per-paese) per le regole applicate al salvataggio.

## Cosa inserisce la persona

Questi sono i formati di conto supportati dal modulo. Non rappresentano un elenco di copertura: la disponibilità del controllo in un paese dipende da [dove è offerto](#dove-è-offerto-il-controllo), e il passaggio mostra sempre i campi esatti per quel paese.

| Formato del conto | Paesi | Cosa inserisce la persona |
| - | - | - |
| IBAN | Paesi che utilizzano l'IBAN | L'IBAN completo, che deve appartenere al paese selezionato |
| Sort code e numero di conto | Regno Unito | Un sort code a 6 cifre e un numero di conto a 8 cifre |
| Routing number e numero di conto | Stati Uniti | Un routing number ABA a 9 cifre e il numero di conto |
| Transit and institution number | Canada | Il transit number e l'institution number, per un totale di 8 cifre (il transit number a 5 cifre seguito dall'institution number a 3 cifre) e il numero di conto |
| BSB e numero di conto | Australia | Un BSB a 6 cifre e il numero di conto |
| CLABE | Messico | La CLABE a 18 cifre, che specifica già la banca |
| CBU o CVU | Argentina | Il CBU o CVU a 22 cifre, che specifica già la banca |
| IFSC e numero di conto | India | L'IFSC a 11 caratteri e il numero di conto |
| NUBAN e codice banca | Nigeria | Il NUBAN a 10 cifre e il codice o BIC della banca |
| Numero di conto | Altri paesi | Il numero di conto e un codice bancario o BIC dove richiesto dal paese |

In alcuni paesi il modulo richiede anche un numero di registrazione: per i conti aziendali e, in alcuni paesi, per qualsiasi tipo di conto.

Spazi, trattini e punti vengono rimossi e le lettere vengono convertite in maiuscolo prima della verifica del valore, consentendo alla persona di inserire il conto così come stampato dalla propria banca.

## Attivalo

Un nuovo passaggio offre la verifica del conto per impostazione predefinita, come opzione di riserva per l'accesso bancario. Per iniziare direttamente da questo metodo, o per offrirlo come unica opzione, posiziona `account_lookup` per primo nell'ordine:

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

Queste impostazioni configurano la verifica:

| Impostazione | Effetto sulla verifica del conto |
| - | - |
| `bank_method_order`, `bank_countries.<ISO3>.methods` | Stabilisce se un paese offre la verifica e se questa viene prima o dopo l'accesso bancario. |
| `bank_countries` | La verifica viene eseguita solo nei paesi in cui il passaggio è disponibile. |
| `bank_reference_identity` | Il passaggio il cui nome verificato viene usato per verificare il conto. |
| `bank_account_check_max_attempts` | Quante verifiche ha a disposizione la persona, da `1` a `5` (`3` per impostazione predefinita). È un conteggio separato rispetto a `bank_max_attempts` dell'accesso bancario. |
| `bank_account_check_accept_close_match` | Attivo (predefinito): una corrispondenza quasi esatta passa alla conferma della corrispondenza quasi esatta o a `bank_partial_match_action`. Disattivo: ogni corrispondenza quasi esatta è considerata come nessuna corrispondenza. |
| `bank_name_match_threshold`, `bank_partial_match_floor` | Le stesse fasce di punteggio del nome usate per l'accesso bancario: una corrispondenza pari o superiore alla soglia (85 per impostazione predefinita) e una corrispondenza quasi esatta, la fascia di corrispondenza parziale, compresa tra il valore minimo (70 per impostazione predefinita) e la soglia. |
| `bank_use_provider_score` | Attivo (predefinito): il punteggio del nome fornito dal controllo stesso decide quando è più alto di quello di Didit, oppure quando la verifica restituisce un punteggio ma nessun nome dell'intestatario; in tal caso `ownership.method` riporta `provider_only`. Disattivo: una risposta senza il nome dell'intestatario risulta `not_verifiable`. |
| `bank_suggest_holder_name` | Attivo (predefinito): in caso di corrispondenza quasi esatta che riporta il nome dell'intestatario, la persona visualizza il nome e conferma che le appartiene o prova con un altro conto. |

## Risultati

### Verifiche che restituiscono una risposta

Ciascuna di queste viene fatturata una sola volta e consuma una delle verifiche del conto a disposizione della persona (`bank_account_check_max_attempts`). Fino al completamento del passaggio, la persona può riprovare con un altro conto finché rimangono tentativi disponibili. Il risultato si trova in `ownership.result`, ad eccezione di un conto inesistente, che è riportato in `connection.reason_code`.

| La verifica restituisce | Risultato | Cosa decide |
| - | - | - |
| Il conto appartiene alla persona verificata | `match` | Il passaggio approva, a meno che un'altra delle sue verifiche non indichi diversamente. |
| Una corrispondenza quasi esatta con il nome dell'intestatario | `partial_match` | Con `bank_suggest_holder_name` attivo, la persona conferma il nome o prova un altro conto. La conferma conclude il passaggio con `bank_partial_match_action` (`REVIEW` per impostazione predefinita). |
| Una corrispondenza quasi esatta con punteggio ma senza nome dell'intestatario | `partial_match` | `bank_partial_match_action` (`REVIEW` per impostazione predefinita). `ownership.method` riporta `provider_only`. Richiede `bank_use_provider_score` attivo, il valore predefinito; se disattivato, la risposta è `not_verifiable`. |
| Il conto appartiene a qualcun altro | `no_match` | `bank_no_match_action` (`DECLINE` per impostazione predefinita). |
| Una risposta che non ha confrontato alcun nome | `not_verifiable` | `bank_not_verifiable_action` (`REVIEW` per impostazione predefinita). |
| Non esiste alcun conto con questi dati | `ACCOUNT_NOT_FOUND` | La persona può provare un altro conto finché rimangono verifiche disponibili. |

Con `bank_account_check_accept_close_match` disattivato, entrambe le corrispondenze quasi esatte diventano invece un `no_match`, con il codice motivo `OWNER_NAME_MISMATCH`: alla persona non viene mai chiesto di confermare il nome, e la decisione spetta a `bank_no_match_action`. L'accesso bancario mantiene le sue corrispondenze quasi esatte in entrambi i casi.

Una volta che la persona ha esaurito ogni verifica del conto, e ogni tentativo di accesso bancario nei paesi in cui è previsto anche l'accesso bancario, senza una connessione riuscita, il passaggio rimane aperto se offre ancora il caricamento dell'estratto conto con tentativi residui: vedi [Il caricamento dell'estratto conto](https://docs.didit.me/it/core-technology/bank-verification/fallbacks.md#caricamento-dell’estratto-conto). Quando non resta alcuna opzione, il passaggio si conclude con `bank_attempts_exhausted_action` (`DECLINE` per impostazione predefinita), a meno che un tentativo precedente non abbia già raggiunto un verdetto, come una mancata corrispondenza del nome. Quel verdetto rimane valido.

### Esiti che non vengono mai fatturati

Nessuno di questi consuma una verifica. Ciascuno è mostrato in `connection.reason_code`.

| Cosa accade | Codice motivo | Cosa succede dopo |
| - | - | - |
| Il conto viene rifiutato così come inserito, dal controllo di formato di Didit o dalla banca | `INVALID_ACCOUNT_INPUT`, mentre il tentativo rimane aperto | Alla persona viene indicato quale campo correggere e provvede alla modifica. |
| La verifica non è al momento disponibile | `PROVIDER_UNAVAILABLE` | La persona può riprovare. |
| La sessione non ha alcun nome verificato da confrontare | `REFERENCE_IDENTITY_MISSING` | La verifica non viene mai eseguita. Il passaggio si conclude con `bank_reference_identity_missing_action` (`REVIEW` per impostazione predefinita). |

### Nella decisione

La decisione della sessione elenca il passaggio sotto `bank_verifications[]`. Una volta valutato un conto, `method` riporta `account_lookup`. Finché nessun conto è stato valutato, `method` e `ownership` sono `null`, e `connection.reason_code` indica il motivo, ad esempio `ACCOUNT_NOT_FOUND`, `PROVIDER_UNAVAILABLE` o `REFERENCE_IDENTITY_MISSING`.

Poiché non viene selezionata alcuna banca per la verifica, `connection.institution_id`, `connection.institution_name` e `connection.oauth` sono `null`, e `connection.institution_country` corrisponde al paese scelto dalla persona. Didit non conserva alcun accesso al conto una volta completato il passaggio, quindi una verifica terminata con una corrispondenza riporta `connection.status: revoked` con `reason_code: VERIFICATION_COMPLETED`. Il risultato vero e proprio rimane registrato nella sessione.

La verifica del conto non legge saldi, transazioni o entrate. Quando il passaggio li richiede, `financial_data.not_collected` li elenca; vedi [I dati finanziari richiedono l'accesso bancario](https://docs.didit.me/it/core-technology/bank-verification/verification-methods.md#i-dati-finanziari-richiedono-l’accesso-alla-banca).

```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"
      }
    }
  ]
}
```

L'esempio mostra solo i campi trattati in questa pagina. Una volta valutato un conto, leggi `method` per distinguere una verifica del conto dall'accesso bancario: è l'unico campo deputato a tale scopo.

### Nelle regole del workflow e nei report

* **Rami e regole di stato:** `bank.method` è `account_lookup` (**Verifica del conto** nel costruttore di regole) e `bank.reason_code` può essere `ACCOUNT_NOT_FOUND`.
* **Report PDF della sessione:** la riga **Metodo di verifica** riporta **Verifica del conto**.

## Prezzi

Ogni controllo che restituisce una risposta costituisce un addebito di Bank Verification: una corrispondenza, una corrispondenza ravvicinata, una mancata corrispondenza, un conto che non è stato possibile verificare e un conto non trovato vengono tutti fatturati. Un valore rifiutato prima del controllo, un controllo non disponibile e una sessione senza un nome verificato da confrontare non vengono mai fatturati. Il prezzo è stabilito per paese: consulta [Prezzi di Bank Verification](https://docs.didit.me/it/getting-started/bank-verification-pricing.md).

Il controllo del conto è un metodo a pagamento a sé stante, mai un fallback: `bank_fallback_used_action` non si attiva per esso. Dopo un controllo fatturato, i micro-depositi e il caricamento dell'estratto conto sono inclusi senza costi aggiuntivi nella stessa sessione, laddove il passaggio li abiliti e il paese li offra.

## Test in sandbox

In un'applicazione sandbox, il controllo viene eseguito su un servizio simulato e non viene fatturato nulla. L'ambiente sandbox offre entrambi i metodi in ogni paese, nell'ordine impostato dal passaggio: con l'ordine predefinito, seleziona **Inserisci i dati del tuo conto** per eseguire il controllo, oppure imposta `bank_method_order` su `["account_lookup", "open_banking"]` per iniziare da esso.

Gli ultimi quattro caratteri del conto digitati dalla persona (l'IBAN, altrimenti il numero di conto) determinano la risposta. Qualsiasi altra terminazione produce una corrispondenza con il nome verificato.

| Termina con | Risposta |
| - | - |
| `0001` | Una corrispondenza ravvicinata che indica il titolare: viene chiesto alla persona di confermare il nome. Con `bank_account_check_accept_close_match` disattivato, una mancata corrispondenza. |
| `0002` | Una corrispondenza ravvicinata senza il nome del titolare: decide `bank_partial_match_action`. Con `bank_use_provider_score` disattivato, la risposta è `not_verifiable`; con `bank_account_check_accept_close_match` disattivato, una mancata corrispondenza. |
| `0003` | Nessuna corrispondenza: il conto appartiene a qualcun altro. Consuma un controllo. |
| `0004` | È stata fornita una risposta, ma non è stato confrontato alcun nome (`not_verifiable`). Consuma un controllo. |
| `0005` | Il controllo non è disponibile (`PROVIDER_UNAVAILABLE`). Nuovo tentativo gratuito. |
| `0006` | Nessun conto con questi dettagli (`ACCOUNT_NOT_FOUND`). Consuma un controllo. |
| `0009` | Rifiutato per come è stato digitato: viene chiesto alla persona di correggere il campo. Il tentativo rimane aperto. |

L'ambiente sandbox registra ogni controllo a cui è stata data risposta come utilizzo a costo zero, in modo da poter verificare quali controlli verrebbero fatturati in una sessione di produzione.

L'IBAN, la CLABE e la CBU contengono cifre di controllo, quindi non puoi semplicemente modificarne gli ultimi quattro caratteri. Utilizza questi valori, che superano ogni controllo di formato:

> [tab] Germania (IBAN)
>
> | Risposta | IBAN |
> | - | - |
> | Corrispondenza | `DE43123456789012345678` |
> | `0001` | `DE62123456789012340001` |
> | `0002` | `DE35123456789012340002` |
> | `0003` | `DE08123456789012340003` |
> | `0004` | `DE78123456789012340004` |
> | `0005` | `DE51123456789012340005` |
> | `0006` | `DE24123456789012340006` |
> | `0009` | `DE40123456789012340009` |

> [tab] Regno Unito
>
> Codice bancario `123456`, con:
>
> | Risposta | Numero di conto |
> | - | - |
> | Corrispondenza | `12345678` |
> | `0001` | `12340001` |
> | `0002` | `12340002` |
> | `0003` | `12340003` |
> | `0004` | `12340004` |
> | `0005` | `12340005` |
> | `0006` | `12340006` |
> | `0009` | `12340009` |

> [tab] Stati Uniti
>
> Numero di instradamento `021000021`, con:
>
> | Risposta | Numero di conto |
> | - | - |
> | Corrispondenza | `000123456789` |
> | `0001` | `000123450001` |
> | `0002` | `000123450002` |
> | `0003` | `000123450003` |
> | `0004` | `000123450004` |
> | `0005` | `000123450005` |
> | `0006` | `000123450006` |
> | `0009` | `000123450009` |

> [tab] Messico (CLABE)
>
> | Risposta | CLABE |
> | - | - |
> | Corrispondenza | `002010077777777771` |
> | `0001` | `002010077777780001` |
> | `0002` | `002010077777750002` |
> | `0003` | `002010077777720003` |
> | `0004` | `002010077777790004` |
> | `0005` | `002010077777760005` |
> | `0006` | `002010077777730006` |
> | `0009` | `002010077777740009` |

> [tab] Argentina (CBU)
>
> | Risposta | CBU |
> | - | - |
> | Corrispondenza | `2850590940090418135201` |
> | `0001` | `2850590940090418160001` |
> | `0002` | `2850590940090418170002` |
> | `0003` | `2850590940090418180003` |
> | `0004` | `2850590940090418190004` |
> | `0005` | `2850590940090418100005` |
> | `0006` | `2850590940090418110006` |
> | `0009` | `2850590940090418140009` |

> [tab] India
>
> IFSC `ALLA0211480`, con:
>
> | Risposta | Numero di conto |
> | - | - |
> | Corrispondenza | `123456789007` |
> | `0001` | `123456780001` |
> | `0002` | `123456780002` |
> | `0003` | `123456780003` |
> | `0004` | `123456780004` |
> | `0005` | `123456780005` |
> | `0006` | `123456780006` |
> | `0009` | `123456780009` |

L'[API di verifica del conto](https://docs.didit.me/it/standalone-apis/bank-account-check.md) risponde a una chiave sandbox in base alle stesse terminazioni, senza alcuna sessione.

Consulta [Test in sandbox](https://docs.didit.me/it/integration/sandbox-testing.md) per scoprire come funzionano in generale le applicazioni sandbox.


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