Saltar para o conteúdo principal
POST
Confirma que uma conta bancária sul-africana pertence ao titular indicado, através do serviço interbancário de verificação do titular da conta. A Didit disponibiliza este serviço em POST /v3/database-validation/ para que possa verificar os dados submetidos contra a fonte autorizada e receber 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: Banca

Entradas

  • Campos obrigatórios: national_id, bank_account_number, bank_name
  • Campos opcionais: account_type, first_name, last_name, initials, email, phone_number, vendor_data
  • Consentimento: Obrigatório
  • Disponibilidade no fluxo: Disponível no fluxo com mapeamento de campos
  • Cobertura: —
  • Preço: $0.40 por consulta bem-sucedida
Num fluxo, bank_account_number e bank_name não são impressos num documento de identidade, pelo que nenhum passo os produz por si só. Recolha-os a partir de uma resposta a um Questionário, de um campo extraído pelo Document AI ou de um valor que envie ao criar a sessão, e mapeie cada um deles no passo Validação de base de dados. Enquanto não forem mapeados, o editor de fluxos mostra este serviço desativado e indica o campo em falta. Em execução, um campo em falta significa que a verificação é ignorada antes de qualquer consulta, pelo que não é cobrado por uma base de dados que não pôde ser consultada.

Parâmetros do corpo

string
padrão:"ZAF"
obrigatório
Código de país ISO 3166-1 alfa-3 para este serviço de base de dados.Exemplo: ZAF
string
padrão:"zaf_bank_account_holder"
obrigatório
Lista que contém o ID deste serviço. Fixar o serviço mantém o pedido limitado a esta base de dados específica.Exemplo: zaf_bank_account_holder
Consentimento explícito do utilizador final para este serviço.Exemplo: true
string
padrão:"8708150847085"
obrigatório
Número de identificação nacional para este serviço.Exemplo: 8708150847085
string
padrão:"1234567890"
obrigatório
Valor de bank_account_number exigido por este serviço de base de dados.Exemplo: 1234567890
string
padrão:"ABSA"
obrigatório
Valor de bank_name exigido por este serviço de base de dados.Exemplo: ABSA
string
padrão:"current"
Valor de account_type exigido por este serviço de base de dados.Exemplo: current
string
Nome próprio a validar.Exemplo: John
string
padrão:"Doe"
Apelido a validar.Exemplo: Doe
string
padrão:"JD"
Valor de initials exigido por este serviço de base 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 base de dados.Exemplo: +15550101000
string
padrão:"user-1234"
A sua referência estável de utilizador para esta pessoa, como o seu ID interno de utilizador. A Didit usa-a para ligar verificações independentes ao mesmo utilizador final e reduzir o ruído na deteção de duplicados.Exemplo: user-1234

Regras de entrada e notas de validação

  • account_type tem de ser um dos tipos de conta AVS sul-africanos: current, savings, transmission, subscriptionShare, notKnown. A correspondência não distingue maiúsculas de minúsculas. Omita o campo quando não souber o tipo de conta: a Didit envia então notKnown, e a verificação cruzada do tipo de conta é reportada como não confirmada, em vez de falhar o pedido.

Como chamar

Dados devolvidos

Os campos exatos apresentados em source_data dependem do que o registo devolve. 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 da conta na África do Sul são faturadas apenas quando a Didit recebe um resultado conclusivo da fonte de validação.
  • Preço por chamada: $0.40 USD.
  • Faturação: por consulta bem-sucedida. Não é cobrado quando o registo está inacessível, quando faltam campos obrigatórios ou quando o pedido é rejeitado antes de chegar à fonte.
  • Latência: p95 típico < 2 s.
  • Disponibilidade: 99.9% por trimestre do lado da Didit; a disponibilidade das fontes a jusante varia consoante o país e o conjunto de dados.

O que confirma um MATCH

A Verificação do titular da conta (AVS) é um conjunto de verificações cruzadas de sim/não, e não uma consulta de registos. A fonte nunca devolve um nome, um número de identificação nem um saldo de conta. Compara os dados que envia com o que o banco tem registado para essa conta e responde a cada comparação com um indicador. O source_data contém esses indicadores:
  • account_found - o banco tem uma conta com este número. Tudo o resto não tem significado quando este valor é false.
  • account_open - a conta está aberta. Uma conta pode ser encontrada e estar encerrada.
  • id_match - a conta pertence ao número de identificação nacional que submeteu. Esta é a verificação para a qual o serviço existe.
  • initials_match, surname_match - os initials e o last_name submetidos correspondem ao titular da conta registado.
  • account_type_match - o account_type submetido corresponde ao tipo real da conta.
  • email_match, phone_match - o email e o phone_number submetidos correspondem aos dados de contacto que o banco tem registados.
  • accepts_debits, accepts_credits - a conta pode receber ordens de débito e créditos.
  • account_number_length_valid - o número da conta tem o comprimento que o banco espera.
O código de resultado resume-as:
  • MATCH - a conta existe e todos os campos que submeteu correspondem, incluindo id_match.
  • PARTIAL_MATCH - a conta está associada ao titular identificado pelo número de identificação nacional submetido, mas pelo menos outro campo enviado não corresponde (por exemplo, um apelido escrito de forma diferente nos registos do banco). O outcome_detail indica os campos que falharam.
  • NO_MATCH - o banco não tem nenhuma conta com esse número, ou a conta existe mas pertence a outra pessoa. Ambos são respostas conclusivas sobre a pessoa.
Uma verificação cruzada que não pediu não é contabilizada nem reportada. A AVS responde N a todos os campos que não foram fornecidos, pelo que surname_match, initials_match, email_match, phone_match e account_type_match só aparecem no source_data quando enviou o respetivo dado de entrada. Enviar apenas national_id, bank_account_number e bank_name continua, portanto, a produzir um MATCH completo.

Valores aceites 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, pelo que um erro de escrita lhe custa uma ida e volta ao servidor e não uma cobrança. account_type é opcional e aceita, sem distinção entre maiúsculas e minúsculas: current · savings · transmission · subscriptionShare · notKnown Omita-o quando não souber o tipo de conta. A Didit envia então notKnown, o pedido é concluído com êxito e account_type_match volta como false, porque não havia nada para comparar. Qualquer outro valor - checking, cheque, bond - é rejeitado com um 400 que lista o conjunto de valores aceites. bank_name é obrigatório, e estes valores estão confirmados como aceites (sem distinção entre maiúsculas e minúsculas): ABSA · Capitec · FNB · Nedbank · Standard Bank · Investec · African Bank · Discovery Bank · Old Mutual · Bank Zero · Tyme · Grindrod As contas de particulares em todos estes bancos estão abrangidas, incluindo o Capitec. Envie a forma curta exatamente como indicada: Capitec, e não Capitec Bank; Tyme, e não TymeBank. Um banco não reconhecido devolve um resultado REGISTRY_ERROR cujo outcome_detail indica o campo que a fonte recusou.

Distinguir uma conta inexistente de uma fonte indisponível

Estes são resultados HTTP diferentes, por isso não é necessário 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. A consulta é faturada, e aplica-se a sua ação para casos sem correspondência.
  • A fonte não respondeu - 502 Bad Gateway com validation_errors[].code = empty_provider_response e retryable: true. Nada ficou estabelecido sobre a pessoa, nada é faturado, e o pedido pode ser repetido em segurança.
  • A fonte recusou executar a consulta - 400 Bad Request com validation_errors[].code = provider_rejected_input e retryable: false. A fonte não pesquisou, porque não aceitaria o que lhe foi enviado. Corrija os dados; repetir os mesmos valores não pode resultar. Nada é faturado.
  • A fonte respondeu e rejeitou os dados enviados - 502 Bad Gateway com validation_errors[].code = provider_invalid_input (por exemplo, um número de conta que não passa a verificação de formato do banco). Repetir o pedido não serve de nada até os dados serem corrigidos; nada é faturado.
  • O pedido nunca saiu da Didit - 400 Bad Request, a indicar o campo a corrigir. Nada é faturado.
Só o primeiro destes resultados é uma resposta sobre a pessoa. Trate um 502 como transitório - a AVS encaminha o pedido para o banco do titular da conta em vez de ler um registo, pelo que é o mais lento dos serviços sul-africanos - e repita com espera progressiva.

Continuar a ler

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