Pular para o conteúdo principal
POST
Confirma que uma conta bancária sul-africana pertence ao titular informado por meio do serviço interbancário Account Holder Verification. A Didit disponibiliza esse serviço em POST /v3/database-validation/ para que você verifique os dados enviados contra a fonte oficial e receba resultados de correspondência normalizados.

Cobertura

  • Cobertura: —
  • País: África do Sul
  • ID do serviço: zaf_bank_account_holder
  • Domínio de dados: Financeiro
  • Categoria: Serviços bancários

Entradas

  • Entradas obrigatórias: national_id, bank_account_number, bank_name
  • Entradas opcionais: account_type, first_name, last_name, initials, email, phone_number, vendor_data
  • Consentimento: Obrigatório
  • Disponibilidade no fluxo de verificação (workflow): Disponível no fluxo com mapeamento de campos
  • Cobertura: —
  • Preço: $0.40 por consulta bem-sucedida
Em um fluxo, bank_account_number e bank_name não aparecem impressos em um documento de identidade, então nenhuma etapa os gera por conta própria. Colete-os a partir de uma resposta de Questionário, de um campo de extração do Document AI ou de um valor que você envia ao criar a sessão, e mapeie cada um deles na etapa de Validação de banco de dados. Enquanto não forem mapeados, o editor de fluxos mostra este serviço desativado e indica a entrada ausente; durante a execução, uma entrada ausente faz com que a verificação seja ignorada antes de qualquer consulta, então você nunca é cobrado por um banco de dados que não pôde ser consultado.

Parâmetros do corpo

string
padrão:"ZAF"
obrigatório
Código de país ISO 3166-1 alpha-3 deste serviço de banco de dados.Exemplo: ZAF
string
padrão:"zaf_bank_account_holder"
obrigatório
Array que contém o ID deste serviço. Fixar o serviço mantém a requisição restrita exatamente a este banco de dados.Exemplo: zaf_bank_account_holder
Consentimento explícito do usuário final para este serviço.Exemplo: true
string
padrão:"8708150847085"
obrigatório
Número de identidade nacional para este serviço.Exemplo: 8708150847085
string
padrão:"1234567890"
obrigatório
Valor de bank_account_number exigido por este serviço de banco de dados.Exemplo: 1234567890
string
padrão:"ABSA"
obrigatório
Valor de bank_name exigido por este serviço de banco de dados.Exemplo: ABSA
string
padrão:"current"
Valor de account_type exigido por este serviço de banco de dados.Exemplo: current
string
Nome a ser validado.Exemplo: John
string
padrão:"Doe"
Sobrenome a ser validado.Exemplo: Doe
string
padrão:"JD"
Valor de initials exigido por este serviço de banco de dados.Exemplo: JD
string
Endereço de e-mail.Exemplo: john.doe@example.com
string
Valor de phone_number exigido por este serviço de banco de dados.Exemplo: +15550101000
string
padrão:"user-1234"
Sua referência estável para este usuário, como o seu ID interno de usuário. A Didit a usa para vincular verificações avulsas ao mesmo usuário final e reduzir o ruído na detecção de duplicatas.Exemplo: user-1234

Regras de entrada e observações de validação

  • account_type deve ser um dos tipos de conta do AVS sul-africano: current, savings, transmission, subscriptionShare, notKnown. A correspondência não diferencia maiúsculas de minúsculas. Omita o campo quando você não souber o tipo de conta: nesse caso, a Didit envia notKnown e a verificação cruzada do tipo de conta é informada como não confirmada, em vez de fazer a requisição falhar.

Como fazer a chamada

Dados retornados

Os campos exatos exibidos em source_data dependem do que o registro retorna. O exemplo gerado para zaf_bank_account_holder documenta atualmente esta estrutura normalizada:
  • accepts_credits
  • accepts_debits
  • account_found
  • account_number_length_valid
  • account_open
  • account_type_match
  • id_match
  • identification_number
  • initials_match
  • surname_match

Preços e SLAs

As consultas de Verificação do Titular de Conta Bancária da África do Sul são cobradas somente quando a Didit recebe um resultado conclusivo da fonte de validação.
  • Preço por chamada: $0.40 USD.
  • Faturamento: por consulta bem-sucedida. Você não é cobrado quando o registro está inacessível, quando faltam campos obrigatórios ou quando a requisição é rejeitada antes de chegar à fonte.
  • Latência: p95 típico < 2 s.
  • Disponibilidade: 99.9% por trimestre do lado da Didit; a disponibilidade da fonte externa varia conforme o país e o conjunto de dados.

O que um MATCH confirma

A Verificação do Titular da Conta (AVS) é um conjunto de verificações cruzadas de sim/não, e não uma consulta de registros. A fonte nunca retorna um nome, um número de identidade ou o saldo de uma conta: ela recebe os dados que você envia, compara-os com o que o banco tem para aquela conta e responde a cada comparação com um indicador. source_data traz esses indicadores:
  • account_found - o banco tem uma conta com esse número. Todos os demais indicadores perdem o sentido quando este é false.
  • account_open - a conta está aberta. Uma conta pode ser encontrada, mas estar encerrada.
  • id_match - a conta pertence ao documento de identidade nacional que você enviou. É para esta verificação que o serviço existe.
  • initials_match, surname_match - os valores de initials e last_name enviados correspondem ao titular da conta registrado.
  • account_type_match - o account_type enviado corresponde ao tipo real da conta.
  • email_match, phone_match - os valores de email e phone_number enviados correspondem aos dados de contato que o banco tem.
  • accepts_debits, accepts_credits - a conta pode receber débitos automáticos e créditos.
  • account_number_length_valid - o número da conta tem o comprimento que o banco espera.
O código de resultado os resume:
  • MATCH - a conta existe e todos os campos que você enviou corresponderam, incluindo id_match.
  • PARTIAL_MATCH - a conta pertence ao documento de identidade nacional enviado, mas pelo menos um dos outros campos que você enviou não correspondeu (por exemplo, um sobrenome grafado de forma diferente nos registros do banco). outcome_detail indica os campos que falharam.
  • NO_MATCH - o banco não tem essa conta, ou a conta existe, mas pertence a outra pessoa. As duas são respostas conclusivas sobre a pessoa.
Uma verificação cruzada que você não solicitou não é contabilizada nem informada. A AVS responde N para todo campo que não foi fornecido, portanto surname_match, initials_match, email_match, phone_match e account_type_match aparecem em source_data somente quando você envia o dado correspondente. Por isso, enviar apenas national_id, bank_account_number e bank_name ainda produz um MATCH completo.

Valores aceitos de bank_name e account_type

bank_name e account_type são enumerações. Um valor fora de qualquer uma das listas é recusado antes de a consulta ser executada, então um erro de digitação custa apenas uma ida e volta, e não uma cobrança. account_type é opcional e aceita, sem diferenciar maiúsculas de minúsculas: current · savings · transmission · subscriptionShare · notKnown Omita-o quando você não souber o tipo de conta. A Didit então envia notKnown, a requisição é bem-sucedida e account_type_match retorna false, porque não havia nada para comparar. Qualquer outro valor (checking, cheque, bond) é rejeitado com um 400 que lista os valores aceitos. bank_name é obrigatório, e estes valores têm aceitação confirmada (sem diferenciar maiúsculas de minúsculas): ABSA · Capitec · FNB · Nedbank · Standard Bank · Investec · African Bank · Discovery Bank · Old Mutual · Bank Zero · Tyme · Grindrod Contas de pessoa física em todos esses bancos estão incluídas, incluindo o Capitec. Envie a forma abreviada exatamente como listada: Capitec, e não Capitec Bank; Tyme, e não TymeBank. Um banco não reconhecido resulta em REGISTRY_ERROR, cujo outcome_detail indica o campo que a fonte recusou.

Como distinguir uma conta inexistente de uma fonte indisponível

Esses são resultados HTTP diferentes, então não é preciso analisar mensagens de erro:
  • A conta não existe - 200 OK, match_type: "no_match", outcome_code: "NO_MATCH", source_data.account_found: false. Uma resposta real do banco. É cobrada, e a sua ação para ausência de correspondência é aplicada.
  • A fonte não respondeu - 502 Bad Gateway com validation_errors[].code = empty_provider_response e retryable: true. Nada foi apurado sobre a pessoa, nada é cobrado e é seguro tentar a requisição novamente.
  • A fonte se recusou a executar a consulta - 400 Bad Request com validation_errors[].code = provider_rejected_input e retryable: false. A fonte nem chegou a pesquisar, porque não aceitou o que recebeu. Corrija os dados; tentar novamente com os mesmos valores não terá sucesso. Nada é cobrado.
  • A fonte respondeu e rejeitou os seus dados - 502 Bad Gateway com validation_errors[].code = provider_invalid_input (por exemplo, um número de conta que não passa na verificação de formato do próprio banco). Não adianta tentar novamente até que os dados sejam corrigidos; nada é cobrado.
  • A sua requisição nunca saiu da Didit - 400 Bad Request, indicando o campo a corrigir. Nada é cobrado.
Apenas o primeiro desses casos é uma resposta sobre a pessoa. Trate um 502 como transitório (a AVS repassa a consulta ao banco do titular da conta em vez de ler um registro, por isso é o mais lento dos serviços sul-africanos) e tente novamente com backoff.

Continue lendo

Última modificação em 1 de novembro de 2026