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

# Verificación bancaria: alternativas y continuar sin banco

> La verificación bancaria de Didit nunca es un callejón sin salida: alternativas por país, continuar sin banco y cómo se informa el resultado.

La Verificación bancaria nunca deja a una persona sin salida. Mientras el paso la espera, siempre puede elegir **Continue without your bank**, y el paso se lo muestra en cuanto ningún método funciona para su país o su banco. La sesión sigue entonces el resultado que elegiste para ese caso, que por defecto es una revisión. Cuando un intento fallido agota el último intento de todas las vías que todavía se le ofrecen, incluida la subida de un extracto, el paso no espera: termina por sí solo y sigue `bank_attempts_exhausted_action`, que por defecto es un rechazo, salvo que un intento anterior ya haya llegado a un veredicto, como una discrepancia de nombre. En ese caso, ese veredicto se mantiene.

Esta página explica las demás vías de verificación que ofrece cada país, cuándo ve la persona **Continue without your bank**, cómo se decide cada caso y cómo leerlo en el resultado.

> [!WARNING]
>
> La Verificación bancaria todavía no está habilitada en producción.
> Hasta que lo esté, no puedes añadir este paso a un flujo de verificación (workflow) ni llamar a esta API, ni en producción ni en sandbox, y esta página describe cómo funcionará.

## Las vías de verificación

| Vía de verificación | `method` | Dónde se ofrece |
| - | - | - |
| Inicio de sesión en el banco | `open_banking` | Donde una ruta da servicio al país. |
| Verificación de cuenta | `account_lookup` | Donde una ruta da servicio al país. |
| Subida de extracto | `statement` | En cualquier país, cuando el paso la activa (`bank_statement_enabled`). |
| Microdepósitos | `microdeposits` | Solo donde una ruta envía los depósitos, después de un inicio de sesión en el banco o una verificación de cuenta cobrados en la misma sesión (`bank_microdeposits_enabled`). |
| Continue without your bank | `none` | Siempre. No se puede desactivar. |

La persona empieza con el inicio de sesión en el banco o con la verificación de cuenta, en el orden que configures para su país: consulta [Elegir los métodos por país](https://docs.didit.me/es/core-technology/bank-verification/verification-methods.md#elige-los-métodos-por-país). La subida de extracto y los microdepósitos son alternativas posteriores a esos dos. **Continue without your bank** va al final.

Una vía que un país no puede usar nunca se ofrece a las personas de ese país. En la consola, **Países y métodos** la muestra como **No disponible** para ese país.

### Un país al que no da servicio ninguna ruta bancaria

Un país en el que ni el inicio de sesión en el banco ni la verificación de cuenta tienen una ruta permanece en el paso. Sus usuarios suben un extracto, cuando el paso lo ofrece, o continúan sin banco.

Al guardar, se conserva ese país si se omite `methods` o se establece en `null`. Su `methods` no puede incluir ningún método, porque ninguna ruta da servicio a ninguno allí: eso se rechaza al guardar, por ejemplo con `Account check is not available in VNM.` Una lista vacía también se rechaza, como en cualquier país habilitado, con `Choose a method: bank sign-in, account check, or both.` Si tu contrato fija sus propios precios y no incluye la subida de extracto, también se rechaza ese país al guardar una configuración que ofrece la subida sin un intento bancario previo.

```json theme={null}
{
  "bank_statement_enabled": true,
  "bank_countries": {
    "GBR": { "enabled": true, "institutions": "all" },
    "VNM": { "enabled": true, "institutions": "all" }
  }
}
```

Aquí Vietnam representa un país al que no da servicio ninguna ruta bancaria. No establece `methods`, así que se conserva al guardar, y sus usuarios ven la subida de extracto y **Continue without your bank**.

### La subida de extracto

La subida de extracto pide un extracto bancario de los últimos 3 meses que muestre el nombre de la persona, su banco y el número de cuenta. Didit lo lee, comprueba si ha sido editado y verifica la coincidencia del nombre del titular igual que verifica el nombre del titular proporcionado por un banco.

Con `bank_statement_enabled` activado, el paso la ofrece en dos casos:

* **Después de un intento cobrado:** una vez que se ha cobrado un inicio de sesión en el banco o una verificación de cuenta en la misma sesión, la subida de extracto es una alternativa, incluida sin cargo adicional.
* **Sin un intento bancario previo:** en cualquier país, incluido uno al que no da servicio ninguna ruta bancaria. Esto requiere `bank_statement_standalone_enabled`, que está activado por defecto. Desactívalo para ofrecer la subida de extracto solo después de un intento cobrado.

La subida de extracto y los microdepósitos consumen cada uno uno de los `bank_max_attempts` del paso, los mismos intentos que usa el inicio de sesión en el banco. Cuando la persona los ha agotado todos, ya no se ofrece ninguno de los dos, ni siquiera después de un intento cobrado. La verificación de cuenta tiene su propio `bank_account_check_max_attempts`, así que, donde es el único método, una persona que ha usado todas las verificaciones de cuenta todavía puede subir un extracto, cuando el paso lo ofrece. Cuando un intento fallido agota el último intento de todas las vías que todavía se le ofrecen a la persona, incluida la subida de un extracto, el paso termina por sí solo: no se le pide a la persona que continúe y el resultado no registra ninguna continuación. La sesión sigue `bank_attempts_exhausted_action`, salvo que un intento anterior ya haya llegado a un veredicto, como una discrepancia de nombre, que entonces se mantiene. Para dejar margen a una alternativa después de un inicio de sesión en el banco fallido, establece `bank_max_attempts` en `2` o más.

## Cuándo ve la persona Continuar sin tu banco

`bank_continue_without_bank` define cuándo muestra el paso **Continuar sin tu banco**:

| Valor | El paso lo muestra |
| - | - |
| `when_needed` (el valor predeterminado) | Cuando ningún método funciona para el país o el banco de la persona, cuando no se puede contactar con su banco en este momento y ningún otro método pudo verificarla, o cuando indica que no tiene banca en línea o que su banco no aparece en la lista. |
| `from_start` | También en la primera pantalla. |

Ningún valor desactiva la opción: la persona siempre puede continuar. En la consola, configúralo en el paso de Verificación bancaria, en **Cuando la persona no puede verificar**, como **Mostrar Continuar sin banco**: **Cuando nada más funciona** o **Desde el principio**.

```json theme={null}
{
  "bank_continue_without_bank": "when_needed"
}
```

### Qué ve la persona

* **Ninguna vía en su país:** por ejemplo, "Todavía no podemos conectar con bancos de Vietnam", con la carga del extracto en **Otras formas de verificar**, y **Continuar sin tu banco**.
* **Un banco que no se puede usar aquí:** "Este banco no se puede usar aquí". La persona puede introducir los datos de su cuenta si el país ofrece la comprobación de cuenta, subir un extracto, elegir otro banco o continuar sin su banco.
* **Sin banca en línea, o un banco que no aparece en la lista:** "Verifica tu cuenta de otra forma", con las formas que ofrece su país, y **Continuar sin tu banco**.
* **Un banco con el que no se puede contactar en este momento:** la persona puede volver a intentarlo. La pantalla también ofrece **Continuar sin tu banco** cuando el otro método, el inicio de sesión bancario o la comprobación de cuenta, no puede ayudar: su país no lo ofrece, no le quedan intentos o en el último intento tampoco se pudo contactar con el banco.
* **Después de continuar:** "Gracias, puedes continuar". A la persona nunca se le muestra un fallo, y pasa al siguiente paso de tu flujo.

## Elige el resultado

Cuando la persona continúa sin banco, Didit determina el motivo a partir de lo que ocurrió en el paso. Nunca toma un motivo del dispositivo de la persona. Cada motivo, registrado como `continuation.reason`, sigue su propia configuración de resultado:

* `no_route`: ninguna vía de inicio de sesión bancario ni de comprobación de cuenta da servicio a su país. Lo decide `bank_unsupported_action`, `REVIEW` de forma predeterminada, con el código de motivo `NOT_COVERED`.
* `institution_unsupported`: el banco que eligió no se puede usar en este paso. Lo decide `bank_unsupported_action`, `REVIEW` de forma predeterminada, con el código de motivo `NOT_COVERED`.
* `attempts_exhausted`: todos los intentos ya se habían agotado, y ninguno seguía en curso, cuando continuó. Lo decide `bank_attempts_exhausted_action`, `DECLINE` de forma predeterminada.
* `person_choice`: había una forma de verificar disponible y la persona eligió continuar. Esto incluye un banco con el que no se podía contactar en ese momento: el banco es compatible, así que el motivo es la propia elección de la persona. Lo decide `bank_skipped_action`, `REVIEW` de forma predeterminada, con el código de motivo `SKIPPED`.

`bank_skipped_action` y `bank_attempts_exhausted_action` aceptan `REVIEW` o `DECLINE`. `bank_unsupported_action` también acepta `NO_ACTION`, que aprueba el paso y aun así registra `NOT_COVERED`.

En la consola, son las filas **Bank or country not covered**, **Continued without a bank** and **Attempts exhausted** de la pestaña **Outcomes** del paso.

```json theme={null}
{
  "bank_continue_without_bank": "when_needed",
  "bank_unsupported_action": "REVIEW",
  "bank_skipped_action": "REVIEW",
  "bank_attempts_exhausted_action": "DECLINE"
}
```

> [!NOTE]
>
> Continuar nunca sustituye un veredicto que ya se haya emitido para un intento. Si un intento ya se evaluó, por ejemplo, el banco o un extracto devolvió un titular que no coincide y a la persona le quedaban intentos, o una coincidencia cercana que no confirmó, el paso conserva ese veredicto y sus códigos de motivo. En ese caso no se aplica ninguna configuración de resultado de la lista anterior, y no se añade `NOT_COVERED` ni `SKIPPED`. El resultado sigue registrando que la persona continuó: consulta [Consúltalo en el resultado](#cómo-leerlo-en-el-resultado).

## Cómo leerlo en el resultado

### Decisión y webhooks

El elemento del paso en `bank_verifications[]`, tanto en la [decisión de la sesión](https://docs.didit.me/es/sessions-api/retrieve-session.md#verificación-bancaria) como en el objeto `decision` de los [webhooks `status.updated`](https://docs.didit.me/es/integration/webhooks#arrays-en-plural-de-v3-importante), indica que la persona continuó sin banco:

* `continued_without_bank` es `true`: la persona salió del paso con **Continue without your bank**.
* `method` es `none` cuando no se evaluó ningún intento antes de que la persona continuara. Tras un intento evaluado, por ejemplo uno en el que el titular no coincide, `method` sigue siendo el método de ese intento y su veredicto se mantiene.
* `continuation` indica cómo continuó la persona:
  * `reason`: `no_route`, `institution_unsupported`, `attempts_exhausted` o `person_choice`.
  * `country`: el país en el que la persona estaba verificándose, en formato ISO 3166-1 alfa-3, o `null` si continuó antes de elegir uno.
  * `offered`: las otras formas de verificación disponibles para ese país, en el orden en que se ofrecían: `statement` y luego `microdeposits`. Vacío si no ofreció ninguna.
  * `institution_id` y `institution_name`: para `institution_unsupported`, el banco que la persona no pudo usar, es decir, el banco que eligió o el banco en el que terminó su último intento. Didit toma ambos valores de su propia lista de bancos, nunca del dispositivo de la persona, por lo que un banco que no está en esa lista deja ambos en `null`. Ambos son `null` para cualquier otro motivo.
  * `continued_at`: cuándo continuó la persona.
* `reason_codes` contiene `NOT_COVERED` o `SKIPPED`, como se explica en [Elige el resultado](#elige-el-resultado), cuando la continuación determinó el resultado del paso. Tras un intento evaluado, conserva los códigos de motivo de ese intento.
* `not_covered` es `true` para `no_route` e `institution_unsupported`.

```json theme={null}
{
  "bank_verifications": [
    {
      "node_id": "feature_bank_verification",
      "status": "In Review",
      "method": "none",
      "continued_without_bank": true,
      "continuation": {
        "reason": "institution_unsupported",
        "country": "ESP",
        "offered": ["statement"],
        "institution_id": "example_bank_es",
        "institution_name": "Example Bank",
        "continued_at": "2026-11-03T08:15:41.512870+00:00"
      },
      "not_covered": true,
      "ownership": null,
      "reason_codes": ["NOT_COVERED"]
    }
  ]
}
```

El ejemplo muestra solo los campos que trata esta página. Todos los campos están en el esquema `BankVerificationResult` de la [referencia de la API](https://docs.didit.me/es/sessions-api/retrieve-session.md).

Cuando tu flujo limita los datos que devuelve, `continued_without_bank` y `continuation.reason` se siguen devolviendo, así que puedes seguir distinguiendo `no_route` de `institution_unsupported`, que comparten `NOT_COVERED`. En ese caso, todas las demás claves de `continuation` son `null`: el país, el banco, lo que se ofreció y cuándo. `continuation` en sí es `null` cuando la persona no continuó. Tampoco se devuelve `method` en ese caso, así que lee `continued_without_bank`, no `method`, para saber que la persona continuó.

### Reglas del flujo

Las ramas y las reglas de estado personalizadas pueden leer:

* `bank.continued_without_bank`: `true` o `false`.
* `bank.continue_reason`: `no_route`, `institution_unsupported`, `attempts_exhausted` o `person_choice`.
* `bank.method`: `none` cuando la persona continuó sin banco antes de que se evaluara ningún intento. Tras un intento evaluado, el método de ese intento.

### Informe de la sesión

Cuando la persona continuó sin banco antes de que se evaluara ningún intento, la fila **Método de verificación** del informe PDF de la sesión indica **Continuó sin banco**. Tras un intento evaluado, indica el método de ese intento.

## Precios

* **Continue without your bank** nunca se factura. Los intentos que la persona hizo antes de continuar se facturan como de costumbre.
* **Una carga de extracto sin que se haya cobrado antes un intento bancario** cuesta \$0.20 por extracto que Didit lee y evalúa. Se factura en su propia línea de uso, **Bank verification - statement upload** (`bank_statement_upload`), y se le aplica tu tarifa contractual o precio especial como a cualquier complemento. Si tu contrato fija sus propios precios y no incluye la carga de extractos, el paso no la ofrece.
* **Una carga de extracto o los microdepósitos después de un inicio de sesión bancario o una comprobación de cuenta cobrados** en la misma sesión están incluidos sin coste adicional.

## Nodos guardados antes de Continue without your bank

`bank_allow_skip` se ha retirado. Un nodo guardado con él ahora se ejecuta con el valor que representaba:

| `bank_allow_skip` | El nodo se ejecuta con |
| - | - |
| `true` | `bank_continue_without_bank: "from_start"` |
| `false` o sin definir | `bank_continue_without_bank: "when_needed"` |

Un nodo que no permitía omitir el paso dejaba antes a la persona sin forma de avanzar cuando nada le funcionaba. Ahora muestra **Continue without your bank** en esos casos, y `bank_unsupported_action`, `bank_attempts_exhausted_action` o `bank_skipped_action` deciden la sesión.

Durante una versión, una operación de guardado que envía `bank_allow_skip` pero no `bank_continue_without_bank` sigue definiendo el modo a partir de él. Cada guardado vuelve a escribir `bank_allow_skip`: `true` para `from_start` y `false` para `when_needed`. Usa `bank_continue_without_bank` en las integraciones nuevas.

## Pruebas en sandbox

Una aplicación de sandbox no factura nada, y la carga de extracto y los microdepósitos no necesitan ningún intento bancario previo. Establece `bank_continue_without_bank` en `from_start` para ver **Continue without your bank** en la primera pantalla, y elígelo para probar `bank_skipped_action`. Consulta [Pruebas en sandbox](https://docs.didit.me/es/integration/sandbox-testing.md) para saber cómo funcionan las aplicaciones de sandbox en general.

## Relacionado

* [Métodos de verificación bancaria](https://docs.didit.me/es/core-technology/bank-verification/verification-methods.md): inicio de sesión en la banca en línea y comprobación de cuenta, por país.
* [Comprobación de cuenta](https://docs.didit.me/es/core-technology/bank-verification/account-check.md): formatos de cuenta, resultados y valores de sandbox.
* [Claves de configuración de la verificación bancaria](https://docs.didit.me/es/management-api/workflows/feature-configs.md#verificación-bancaria): todas las claves del paso.


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