> ## 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ção de conta bancária: propriedade sem login

> Didit confirma que a conta bancária pertence à pessoa verificada a partir dos dados digitados, sem login no banco. IBAN, CLABE, CBU, IFSC e mais.

A verificação de conta confirma que uma conta bancária pertence à pessoa que o seu fluxo de verificação (workflow) já verificou, a partir dos dados da conta que ela digita. Não há login no banco nem tela de consentimento: a pessoa informa a conta no formato usado no país dela, e o banco confere o nome do titular com o nome que uma etapa anterior verificou.

É um dos dois [métodos de Verificação bancária](https://docs.didit.me/pt-br/core-technology/bank-verification/verification-methods.md), ao lado do login no banco, e o valor do método é `account_lookup`. O envio de extrato e os microdepósitos continuam como alternativas depois desses dois, e a pessoa sempre pode [continuar sem banco](https://docs.didit.me/pt-br/core-technology/bank-verification/fallbacks.md). Para verificar uma conta a partir do seu backend sem sessão, por exemplo antes de um pagamento, use a [API de verificação de conta](https://docs.didit.me/pt-br/standalone-apis/bank-account-check.md).

> [!WARNING]
>
> A Verificação bancária ainda não está habilitada em produção.
> Até que esteja, você não pode adicionar esta etapa a um fluxo nem chamar esta API, nem em produção nem no sandbox, e esta página descreve como ela vai funcionar.

> [!NOTE]
>
> A Verificação bancária confirma quem é o titular de uma conta com base em uma identidade que **outra etapa** estabeleceu, portanto não é, por si só, uma prova de identidade. Coloque Verificação de identidade, Validação de banco de dados, um questionário ou `expected_details` antes da etapa. A pessoa nunca digita um nome para a verificação: a Didit sempre compara o nome que a sessão já verificou.

## Como funciona

**1. A pessoa escolhe o país**

Na etapa de Verificação bancária, a pessoa escolhe um dos países oferecidos pela etapa. Nos países em que a verificação de conta vem primeiro, a etapa abre um formulário curto no formato de conta daquele país. Nos países em que o login no banco vem primeiro, a pessoa escolhe **Informe os dados da sua conta** para chegar ao formulário.

**2. A pessoa digita os dados da conta**

Por exemplo, um IBAN, um sort code e um número de conta, ou uma CLABE. O fluxo de verificação monta o formulário a partir do que a API retorna para aquele país, então um país que a Didit adicionar depois não exige nenhuma mudança do seu lado.

**3. A Didit verifica o formato primeiro**

Antes de qualquer cobrança, a Didit verifica cada valor: o comprimento, os caracteres, os dígitos verificadores e, no caso de um IBAN, se ele pertence ao país selecionado. Um valor reprovado é recusado com a indicação do campo a corrigir. A pessoa corrige no mesmo lugar, e nenhuma tentativa é consumida.

**4. O banco confere o nome do titular**

A Didit executa uma verificação com base no nome que a sessão verificou. Qualquer outro dado enviado pelo cliente é ignorado.

**5. A etapa decide**

A resposta se torna um resultado de propriedade, e as ações da etapa o transformam no veredito exatamente como fazem no login no banco.

## Onde a verificação é oferecida

A cobertura é definida por país. A Didit habilita a verificação país a país, assim que tem uma rota com preço definido ali; um país sem essa rota não a oferece. Novos países são adicionados ao longo do tempo, e a etapa sempre lê a lista atual, então você nunca precisa alterar sua integração quando um país é adicionado.

Em um país coberto, os métodos da etapa decidem se a pessoa a vê:

* **A ordem da etapa.** `bank_method_order` define quais métodos todos os países oferecem e qual vem primeiro. O padrão, `["open_banking", "account_lookup"]`, começa pelo login no banco e oferece a verificação de conta como alternativa.
* **A ordem própria de um país.** `methods` em um país de `bank_countries` substitui a ordem da etapa naquele país, por exemplo `["account_lookup"]` para oferecer apenas a verificação de conta, ou `["account_lookup", "open_banking"]` para começar por ela.
* **Um banco fora do ar.** Onde um país oferece a verificação de conta, ela também serve de alternativa para um banco cujo login no banco esteja degradado ou fora do ar: a etapa passa para o formulário de conta antes de qualquer pedido de consentimento, enquanto a pessoa ainda tiver verificações de conta disponíveis.
* **A verificação usa as rotas da própria Didit.** Uma etapa que usa o seu próprio provedor do marketplace (`provider_key`) só a oferece com `fallback_to_native` ativado.
* **Contas empresariais.** Em uma sessão de verificação empresarial, a verificação compara uma conta empresarial com a empresa verificada, nos países em que a Didit verifica contas empresariais.

Veja [Escolha os métodos por país](https://docs.didit.me/pt-br/core-technology/bank-verification/verification-methods.md#escolha-os-métodos-por-país) para conhecer as regras seguidas ao salvar.

## O que a pessoa digita

Estes são os formatos de conta que o formulário reconhece. Não se trata de uma lista de cobertura: a execução da verificação em um país depende de [onde ela é oferecida](#onde-a-verificação-é-oferecida), e a etapa sempre mostra os campos exatos daquele país.

| Formato de conta | Países | O que a pessoa digita |
| - | - | - |
| IBAN | Países que usam IBAN | O IBAN completo, que deve pertencer ao país selecionado |
| Sort code e número de conta | Reino Unido | Um sort code de 6 dígitos e um número de conta de 8 dígitos |
| Routing number e número de conta | Estados Unidos | Um routing number ABA de 9 dígitos e o número da conta |
| Número de trânsito e de instituição | Canadá | O número de trânsito e de instituição de 8 dígitos (o trânsito de 5 dígitos seguido da instituição de 3 dígitos) e o número da conta |
| BSB e número de conta | Austrália | Um BSB de 6 dígitos e o número da conta |
| CLABE | México | A CLABE de 18 dígitos, que já identifica o banco |
| CBU ou CVU | Argentina | O CBU ou CVU de 22 dígitos, que já identifica o banco |
| IFSC e número de conta | Índia | O IFSC de 11 caracteres e o número da conta |
| NUBAN e código do banco | Nigéria | O NUBAN de 10 dígitos e o código ou BIC do banco |
| Número de conta | Outros países | O número da conta e, quando o país exige, um código do banco ou BIC |

Em alguns países, o formulário também pede um número de registro: para contas empresariais e, em alguns poucos países, para todas as contas.

Espaços, hífens e pontos são removidos e as letras são convertidas para maiúsculas antes de um valor ser verificado, então a pessoa pode digitar a conta do jeito que o banco dela a imprime.

## Ativar

Uma nova etapa oferece a verificação de conta por padrão, como alternativa ao login bancário. Para começar por ela, ou para oferecê-la sozinha, coloque `account_lookup` em primeiro lugar na ordem:

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

Estas configurações definem a verificação:

| Configuração | Efeito na verificação de conta |
| - | - |
| `bank_method_order`, `bank_countries.<ISO3>.methods` | Se um país oferece a verificação e se ela vem antes ou depois do login bancário. |
| `bank_countries` | A verificação só é executada nos países que a etapa oferece. |
| `bank_reference_identity` | A etapa cujo nome verificado é usado para verificar a conta. |
| `bank_account_check_max_attempts` | Quantas verificações a pessoa pode realizar, de `1` a `5` (`3` por padrão). É uma contagem separada do `bank_max_attempts` do login bancário. |
| `bank_account_check_accept_close_match` | Ativado (padrão): uma correspondência próxima vai para a confirmação de correspondência próxima ou para `bank_partial_match_action`. Desativado: toda correspondência próxima é uma não correspondência. |
| `bank_name_match_threshold`, `bank_partial_match_floor` | As mesmas faixas de pontuação de nome do login bancário: uma correspondência no limiar ou acima dele (85 por padrão) e uma correspondência próxima, a faixa de correspondência parcial, entre o piso (70 por padrão) e o limiar. |
| `bank_use_provider_score` | Ativado (padrão): a pontuação de nome da própria verificação decide quando é maior que a da Didit, ou quando a verificação retorna uma pontuação mas nenhum nome de titular, e nesse caso `ownership.method` indica `provider_only`. Desativado: uma resposta sem nome de titular é `not_verifiable`. |
| `bank_suggest_holder_name` | Ativado (padrão): em uma correspondência próxima que identifica o titular, a pessoa vê o nome e confirma que é dela ou tenta outra conta. |

## Resultados

### Verificações que retornam uma resposta

Cada uma delas é cobrada uma vez e consome uma das verificações de conta da pessoa (`bank_account_check_max_attempts`). Até a etapa ser concluída, a pessoa pode tentar novamente com outra conta enquanto restarem verificações. O resultado fica em `ownership.result`, exceto no caso de uma conta que não existe, que fica em `connection.reason_code`.

| A verificação retorna | Resultado | O que decide |
| - | - | - |
| A conta pertence à pessoa verificada | `match` | A etapa é aprovada, a menos que outra de suas verificações indique o contrário. |
| Uma correspondência aproximada que informa o nome do titular | `partial_match` | Com `bank_suggest_holder_name` ativado, a pessoa confirma o nome ou tenta outra conta. A confirmação encerra a etapa com `bank_partial_match_action` (`REVIEW` por padrão). |
| Uma correspondência aproximada com pontuação, mas sem o nome do titular | `partial_match` | `bank_partial_match_action` (`REVIEW` por padrão). `ownership.method` indica `provider_only`. Isso exige `bank_use_provider_score` ativado, o padrão; com ele desativado, a resposta é `not_verifiable`. |
| A conta pertence a outra pessoa | `no_match` | `bank_no_match_action` (`DECLINE` por padrão). |
| Uma resposta que não comparou nenhum nome | `not_verifiable` | `bank_not_verifiable_action` (`REVIEW` por padrão). |
| Não existe conta com esses dados | `ACCOUNT_NOT_FOUND` | A pessoa pode tentar outra conta enquanto restarem verificações. |

Com `bank_account_check_accept_close_match` desativado, as duas correspondências aproximadas passam a ser `no_match`, com o código de motivo `OWNER_NAME_MISMATCH`: a pessoa nunca é solicitada a confirmar o nome, e `bank_no_match_action` decide. O login bancário mantém suas correspondências próximas em qualquer caso.

Quando a pessoa já usou todas as verificações de conta, e todas as tentativas de login bancário quando o país também oferece login bancário, sem uma conexão bem-sucedida, a etapa continua aberta enquanto ainda permitir o envio de extrato com tentativas restantes: consulte [O envio de extrato](https://docs.didit.me/pt-br/core-technology/bank-verification/fallbacks.md#o-envio-de-extrato). Quando não resta nenhuma opção, a etapa termina com `bank_attempts_exhausted_action` (`DECLINE` por padrão), a menos que uma tentativa anterior já tenha chegado a um veredito, como uma divergência de nome. Nesse caso, esse veredito prevalece.

### Resultados que não geram cobrança

Nenhum destes consome uma verificação. Cada um aparece em `connection.reason_code`.

| O que acontece | Código de motivo | O que vem em seguida |
| - | - | - |
| A conta é recusada como foi digitada, pela verificação de formato da Didit ou pelo banco | `INVALID_ACCOUNT_INPUT`, enquanto a tentativa continua aberta | A pessoa é informada sobre qual campo corrigir e o corrige. |
| A verificação está indisponível no momento | `PROVIDER_UNAVAILABLE` | A pessoa pode tentar novamente. |
| A sessão não tem nome verificado para comparar | `REFERENCE_IDENTITY_MISSING` | A verificação nunca é executada. A etapa termina com `bank_reference_identity_missing_action` (`REVIEW` por padrão). |

### Na decisão

A decisão da sessão lista a etapa em `bank_verifications[]`. Depois que uma conta é avaliada, `method` indica `account_lookup`. Enquanto nenhuma conta tiver sido avaliada, `method` e `ownership` são `null`, e `connection.reason_code` informa o motivo, por exemplo `ACCOUNT_NOT_FOUND`, `PROVIDER_UNAVAILABLE` ou `REFERENCE_IDENTITY_MISSING`.

Nenhum banco é escolhido para a verificação, então `connection.institution_id`, `connection.institution_name` e `connection.oauth` são `null`, e `connection.institution_country` é o país que a pessoa escolheu. A Didit não mantém acesso à conta depois que a etapa é concluída, então uma verificação que terminou em correspondência indica `connection.status: revoked` com `reason_code: VERIFICATION_COMPLETED`. O resultado em si permanece na sessão.

Uma verificação de conta não lê saldos, transações nem renda. Quando a etapa os solicita, `financial_data.not_collected` os lista; consulte [Dados financeiros exigem login bancário](https://docs.didit.me/pt-br/core-technology/bank-verification/verification-methods.md#dados-financeiros-exigem-login-no-banco).

```json theme={null}
{
  "bank_verifications": [
    {
      "status": "Approved",
      "method": "account_lookup",
      "connection": {
        "status": "revoked",
        "institution_id": null,
        "institution_name": null,
        "institution_country": "ESP",
        "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"
      }
    }
  ]
}
```

O exemplo mostra apenas os campos discutidos nesta página. Depois que uma conta é avaliada, leia `method` para distinguir uma verificação de conta do login bancário: é o único campo destinado a isso.

### Em regras de fluxo e relatórios

* **Ramificações e regras de status:** `bank.method` é `account_lookup` (**Verificação da conta** no construtor de regras), e `bank.reason_code` pode ser `ACCOUNT_NOT_FOUND`.
* **Relatório PDF da sessão:** a linha **Método de verificação** indica **Verificação da conta**.

## Preços

Cada verificação que retorna uma resposta gera uma cobrança de Verificação bancária: correspondência, correspondência aproximada, não correspondência, conta que não pôde ser verificada e conta não encontrada são todas cobradas. Um valor recusado antes da verificação, uma verificação indisponível e uma sessão sem nome verificado para comparar nunca são cobrados. O preço é definido por país: consulte [Preços da Verificação bancária](https://docs.didit.me/pt-br/getting-started/bank-verification-pricing.md).

A verificação de conta é um método pago independente, nunca um fallback: `bank_fallback_used_action` não é disparado por ela. Após uma verificação cobrada, os microdepósitos e o envio do extrato estão incluídos sem custo adicional na mesma sessão, quando a etapa os ativa e o país os oferece.

## Teste no sandbox

Em uma aplicação de sandbox, a verificação é executada em um serviço simulado e nada é cobrado. O sandbox oferece os dois métodos em todos os países, na ordem definida pela etapa: com a ordem padrão, escolha **Informe os dados da sua conta** para executar a verificação, ou defina `bank_method_order` como `["account_lookup", "open_banking"]` para iniciar por esse método.

Os últimos quatro caracteres da conta que a pessoa digita (o IBAN ou, na falta dele, o número da conta) determinam a resposta. Qualquer outro final corresponde ao nome verificado.

| Termina em | Resposta |
| - | - |
| `0001` | Uma correspondência aproximada que informa o nome do titular: a pessoa é solicitada a confirmar o nome. Com `bank_account_check_accept_close_match` desativado, o resultado é sem correspondência. |
| `0002` | Uma correspondência aproximada sem nome do titular: `bank_partial_match_action` decide. Com `bank_use_provider_score` desativado, a resposta é `not_verifiable`; com `bank_account_check_accept_close_match` desativado, o resultado é sem correspondência. |
| `0003` | Não correspondência: a conta pertence a outra pessoa. Consome uma verificação. |
| `0004` | Há uma resposta, mas nenhum nome é comparado (`not_verifiable`). Consome uma verificação. |
| `0005` | A verificação está indisponível (`PROVIDER_UNAVAILABLE`). É possível tentar novamente sem custo. |
| `0006` | Nenhuma conta com esses dados (`ACCOUNT_NOT_FOUND`). Consome uma verificação. |
| `0009` | Recusado como digitado: a pessoa é solicitada a corrigir o campo. A tentativa continua aberta. |

O sandbox registra cada verificação respondida como uso sem custo, para que você veja quais verificações uma sessão em produção cobraria.

IBAN, CLABE e CBU têm dígitos verificadores, então não basta alterar os últimos quatro caracteres. Use estes valores, que passam em todas as validações de formato:

> [tab] Alemanha (IBAN)
>
> | Resposta | IBAN |
> | - | - |
> | Correspondência | `DE43123456789012345678` |
> | `0001` | `DE62123456789012340001` |
> | `0002` | `DE35123456789012340002` |
> | `0003` | `DE08123456789012340003` |
> | `0004` | `DE78123456789012340004` |
> | `0005` | `DE51123456789012340005` |
> | `0006` | `DE24123456789012340006` |
> | `0009` | `DE40123456789012340009` |

> [tab] Reino Unido
>
> Sort code `123456`, com:
>
> | Resposta | Número da conta |
> | - | - |
> | Correspondência | `12345678` |
> | `0001` | `12340001` |
> | `0002` | `12340002` |
> | `0003` | `12340003` |
> | `0004` | `12340004` |
> | `0005` | `12340005` |
> | `0006` | `12340006` |
> | `0009` | `12340009` |

> [tab] Estados Unidos
>
> Routing number `021000021`, com:
>
> | Resposta | Número da conta |
> | - | - |
> | Correspondência | `000123456789` |
> | `0001` | `000123450001` |
> | `0002` | `000123450002` |
> | `0003` | `000123450003` |
> | `0004` | `000123450004` |
> | `0005` | `000123450005` |
> | `0006` | `000123450006` |
> | `0009` | `000123450009` |

> [tab] México (CLABE)
>
> | Resposta | CLABE |
> | - | - |
> | Correspondência | `002010077777777771` |
> | `0001` | `002010077777780001` |
> | `0002` | `002010077777750002` |
> | `0003` | `002010077777720003` |
> | `0004` | `002010077777790004` |
> | `0005` | `002010077777760005` |
> | `0006` | `002010077777730006` |
> | `0009` | `002010077777740009` |

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

> [tab] Índia
>
> IFSC `ALLA0211480`, com:
>
> | Resposta | Número da conta |
> | - | - |
> | Correspondência | `123456789007` |
> | `0001` | `123456780001` |
> | `0002` | `123456780002` |
> | `0003` | `123456780003` |
> | `0004` | `123456780004` |
> | `0005` | `123456780005` |
> | `0006` | `123456780006` |
> | `0009` | `123456780009` |

A [API de verificação de conta](https://docs.didit.me/pt-br/standalone-apis/bank-account-check.md) retorna respostas para uma chave de sandbox com base nas mesmas terminações, sem sessão.

Consulte [Testes no sandbox](https://docs.didit.me/pt-br/integration/sandbox-testing.md) para saber como as aplicações de sandbox funcionam em geral.


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