config dentro de cada item do array features em POST /v3/workflows/ e PATCH /v3/workflows/{settings_uuid}/.
features. Envie os recursos na ordem exata de execução.
Qual mecanismo executa um recurso, o próprio da Didit ou o de um provedor terceirizado, não é um dos campos de configuração abaixo. Isso é gerenciado pelo Marketplace do console, que define
provider_key e fallback_to_native no objeto config do recurso para você.Regras de validação
OCRusa por padrão todos os países e tipos de documento compatíveis quandoconfig.documents_allowedé omitido,nullou{}. Se você enviar um objetodocuments_allowedpersonalizado, ele deve conter pelo menos um país válido e um tipo de documento habilitado. Cada configuração de documento pode definirsidescomo1para captura apenas da frente ou2para captura da frente e do verso.QUESTIONNAIREexigeconfig.questionnaire_uuid.KYB_DOCUMENTSexigeconfig.kyb_required_document_groups.SIGNATURErecusasignature_level: "qes"comqes_not_availableaté que assinaturas qualificadas estejam disponíveis, e recusa uma nova etapa comsignature_level: "aes"comaes_not_availableenquantosignature_availability.aesforfalseno fluxo. Os documentos devem existir quando uma sessão é criada: comsignature_documents_sourcedefinido comoworkflow, a etapa precisa de documentos enviados no console, e uma etapa sem nenhum documento pode continuar como rascunho, mas não pode entrar em produção; comsession, toda chamada de criação deve enviarsign.documents.FACE_MATCHdeve vir depois deOCRem requisições de fluxo simples.NFCeDATABASE_VALIDATIONexigemOCRquando aparecem no mesmo fluxo.AMLprecisa de um entreOCR,KYB_REGISTRYouDOCUMENT_AIantes dele; com apenasDOCUMENT_AIà frente, ofull_nameanalisado precisa poder ser preenchido, seja a partir de um campo anterior do Document AI já com a chavefull_name, que é mapeado para você, seja a partir de uma entrada explícita emconfig.aml_field_sources(consulte AML).- Sub-recursos de KYB, como
KYB_DOCUMENTSeKYB_KEY_PEOPLE, exigemKYB_REGISTRYem uma etapa anterior do fluxo. - Um fluxo é de pessoa (KYC) ou de empresa (KYB), nunca os dois. Um fluxo que usa qualquer recurso de KYB (
KYB_REGISTRY,KYB_DOCUMENTS,KYB_KEY_PEOPLE) só pode combiná-lo comAML,DOCUMENT_AI,QUESTIONNAIRE,PHONE_VERIFICATION,EMAIL_VERIFICATION,IP_ANALYSISeSIGNATURE. Ele não pode incluir recursos exclusivos de pessoa, comoOCR,LIVENESS,FACE_MATCH,NFC,PROOF_OF_ADDRESS,DATABASE_VALIDATIONouAGE_ESTIMATION, e um fluxo de pessoa não pode incluir recursos de KYB. Em um fluxo de empresa,DOCUMENT_AIcompara qualquer campo marcado comis_full_namecom a empresa verificada, em vez de uma pessoa. Para verificar as pessoas por trás de uma empresa, crie um fluxo de KYC separado e faça referência a ele a partir do nóKYB_KEY_PEOPLEusandokyb_ubo_verification_workflow,kyb_officer_verification_workflowoukyb_shareholder_verification_workflow. - Campos de ação usam
DECLINE,REVIEWouNO_ACTION, a menos que o campo abaixo indique uma restrição. - Campos de pontuação e de limiar são números de
0a100, a menos que um intervalo mais estreito seja indicado.
Regras de status comuns
Todo recurso aceita um array opcionalstatus_rules. Use-o para substituir o status do recurso quando a condição de um campo for atendida.
Leia o exemplo acima assim:
kyc.extra_fields.profession tem correspondência aproximada com Soft. Engineer com pontuação mínima de 80 → definir o status do recurso como Declined.
Na Verificação de identidade, use como alvo valores extraídos de extra_fields, como kyc.extra_fields.profession, datas de validade das categorias da carteira de habilitação, como kyc.extra_fields.dl_class_code_b_from e kyc.extra_fields.dl_class_code_b_to, ou códigos de restrição/informação por categoria, como kyc.extra_fields.dl_class_code_b_notes (coluna 12 das carteiras de habilitação do Reino Unido). Esses valores vêm do objeto extra_fields do resultado do OCR; eles não fazem parte de expected_details.
dl_class_code_*_from e dl_class_code_*_to são sempre uma data ISO válida ou ficam ausentes de extra_fields: a Didit nunca retorna texto de OCR ilegível em um campo de data. Se a célula da tabela de categorias não puder ser lida, o campo é omitido em vez de ser enviado como string bruta; por isso, use o operador is_empty para direcionar datas de categoria ilegíveis em vez de presumir que o campo está sempre presente.value_type: "relative_date" com um objeto de valor no formato { "direction": "past" | "future", "amount": number, "unit": "days" | "months" | "years" }. Por exemplo, operator: "less_than" com { "direction": "past", "amount": 3, "unit": "years" } corresponde a datas com mais de três anos em relação a hoje.
Comparar com uma etapa específica
Um fluxo de verificação em grafo pode executar o mesmo recurso mais de uma vez, por exemplo, três etapas de Verificação de identidade. Comvalue_type: "field", acrescente @<node_id> ao valor para lê-lo de uma etapa específica.
O nó referenciado deve ser uma etapa de recurso que sempre é executada antes da etapa da própria regra, em todos os caminhos que chegam a ela, ou a própria etapa da regra.
Um valor sem o sufixo é lido da etapa da própria regra.
kyc.full_name desta etapa tem correspondência aproximada com o nome completo lido pela etapa ocr_1 com pontuação mínima de 80 → definir o status do recurso como Declined.
No console, o seletor de variáveis lista cada etapa elegível pelo número dela na tela e armazena o sufixo para você.
OCR / Verificação de identidade
Valor do recurso:OCR.
A prova de vida do documento é configurada com os seis limiares
document_liveness_* acima, e não com
campos de ação por sinal. portrait_replacement_action, printed_copy_action e
screen_capture_action são configurações no nível da conta e não são aceitas na configuração
de recursos de um fluxo: a API remove chaves de configuração desconhecidas ao salvar, então enviá-las ali não tem
efeito. Cada sinal tem um limiar de recusa e um limiar de revisão em uma escala de 0-100, na qual
uma pontuação mais alta significa que é mais provável que o documento seja autêntico.Métodos por país
methods é indexado pelo código de país ISO 3166-1 alpha-3. Cada país tem até três objetos de método; tudo o que você omitir assume o valor padrão.
document.fallback_only. O exemplo usa a Finlândia, onde a Finnish Trust Network vem primeiro e a captura de documento é a alternativa. A Finlândia também precisa ter seus tipos de documento habilitados em documents_allowed (por exemplo, passaporte e carteira de identidade) para que a alternativa tenha documentos a oferecer.
available no catálogo atual, então essa configuração é salva como está. O bloco de carteira está desativado de propósito: nenhuma carteira está ativa em produção ainda, então wallet.enabled: true é rejeitado e faz todo o salvamento falhar, incluindo a configuração das consultas. Quando o catálogo marcar uma carteira como available em um país, adicione-a a esse país:
Validações que a API aplica ao salvar:
- Um código de país desconhecido, uma chave desconhecida dentro de um país ou uma chave desconhecida dentro de um método é recusado: nada é descartado silenciosamente.
- Um país sem nenhum método ativado é recusado, pois ninguém nele conseguiria se verificar.
- Uma carteira ou consulta só pode recorrer à captura de documento quando a captura de documento está ativada para aquele país.
fallback_to_documentem um país ondedocument.enabledéfalseresulta em recusa em tempo de execução, porque não há para onde recorrer. document.fallback_only: trueé recusado com HTTP 400, a menos quedocument.enabledsejatruee pelo menos uma carteira ou consulta de identidade nesse país recorra à captura de documento.
methods, pela aba Países do console ou com a ferramenta MCP didit_workflow_get_id_verification_methods_catalog. Comportamento, cobertura e faturamento estão em Métodos de Verificação de identidade.
NFC / ePassport
Valor do recurso:NFC.
Prova de vida
Valor do recurso:LIVENESS.
Correspondência facial
Valor do recurso:FACE_MATCH.
Estimativa de idade
Valor do recurso:AGE_ESTIMATION.
Verificação de telefone
Valor do recurso:PHONE_VERIFICATION.
A Verificação de telefone fica desativada até que a organização faça sua primeira recarga.
O enriquecimento com inteligência de telefone é um complemento opcional. Quando
phone_enrichment_enabled é true, cada verificação de telefone concluída é enriquecida com inteligência de telefone e cobrada a $0.05 por requisição, além do custo padrão da verificação de telefone. As ações baseadas em pontuação só entram em vigor quando a pontuação do enriquecimento está disponível; as ações de índice de confiança, tipo de telefone e portabilidade se aplicam assim que o enriquecimento é executado.A verificação de presença em plataformas online é um segundo complemento, separado. Quando phone_social_enabled é true, cada verificação de telefone concluída também informa em quais plataformas online o número está registrado (mensagens, redes sociais, e-commerce e serviços profissionais) e é cobrada a $0.05 por requisição. Ela pode ser ativada com ou sem phone_enrichment_enabled: os dois complementos têm preço e faturamento independentes. Uma consulta que não encontra o número em nenhuma das plataformas que cobre é uma resposta válida e cobrável, e aciona phone_no_social_presence_action. Use phone.social_profiles_registered (o número de plataformas em que o número está registrado) para criar ramificações com base no resultado em um grafo de fluxo de trabalho.Verificação de e-mail
Valor do recurso:EMAIL_VERIFICATION.
O enriquecimento de inteligência de e-mail é um complemento opcional. Quando
email_enrichment_enabled é true, cada verificação de e-mail concluída é enriquecida com inteligência de e-mail e cobrada a $0.05 por requisição, além do custo padrão da verificação de e-mail. A ação baseada na pontuação entra em vigor assim que a pontuação do enriquecimento estiver disponível; as ações de vazamento se aplicam assim que o enriquecimento é executado.A verificação de presença online é um segundo complemento, separado. Quando email_social_enabled é true, cada verificação de e-mail concluída também informa em quais plataformas online o endereço está cadastrado (provedores de e-mail, redes sociais e serviços profissionais, de e-commerce e de entretenimento) e é cobrada a $0.05 por requisição. Ela pode ser ativada com ou sem email_enrichment_enabled: os dois complementos têm preços e cobranças independentes. Uma consulta que não encontra o endereço em nenhuma das plataformas que cobre é uma resposta válida e cobrável, e aciona email_no_social_presence_action. Use email.social_profiles_registered (o número de plataformas em que o endereço está cadastrado) para criar ramificações com base no resultado em um grafo de fluxo de trabalho.Validação de banco de dados
Valor do recurso:DATABASE_VALIDATION.
Exemplo:
400 que o identifica e explica o motivo, e nada é salvo.
Isso inclui um ID que não está no catálogo, um ID que pertence a outro país, um serviço que ainda não está disponível e um serviço oferecido apenas pelo POST /v3/database-validation/ independente.
Um serviço cujas entradas não são fornecidas por nenhuma etapa anterior é rejeitado da mesma forma, com a lista das entradas ausentes.
Um serviço que o fluxo salvo já contém, mas que não pode mais ser executado, é removido quando você o salva novamente.
Por exemplo, este fluxo da Argentina lê o número do DNI e o gênero da Verificação de identidade e os confere com o RENAPER sem selfie:
arg_renaper em vez disso, após uma etapa LIVENESS, para também comparar a selfie com a foto que o RENAPER mantém.
Consulte RENAPER para ver a pontuação de correspondência facial e o limiar.
Verificação bancária
Valor do recurso:BANK_VERIFICATION.
O usuário verifica uma conta bancária, e o titular da conta informado pelo banco é comparado com a identidade estabelecida por uma etapa anterior do fluxo. O usuário faz isso por um de dois métodos: o login no banco (open_banking), em que ele entra na conta pelo próprio banco, ou a verificação de conta (account_lookup), em que ele digita os dados da conta e o banco confirma o nome registrado nela. bank_method_order e os methods de cada país definem quais métodos um país oferece e qual vem primeiro; veja Métodos de verificação bancária. A etapa produz evidências (uma pontuação do nome do titular, a comparação que gerou essa pontuação e códigos de motivo), e as chaves bank_*_action transformam essas evidências em um status.
Duas coisas decidem se o nó faz alguma coisa. bank_countries é uma lista de permissão, então um mapa vazio não oferece nenhum banco e não executa nenhuma verificação. Além disso, o titular precisa ser comparado com alguma coisa: coloque uma etapa OCR, DATABASE_VALIDATION ou QUESTIONNAIRE antes dele, envie expected_details na criação da sessão ou mapeie os campos você mesmo com bank_field_sources. Sem nenhuma dessas opções, a propriedade só pode ser unknown, e é bank_reference_identity_missing_action que decide o que acontece nesse caso.
A Verificação bancária ainda está sendo liberada, então um nó
BANK_VERIFICATION só é aceito em uma conta em que ela tenha sido habilitada. Em qualquer outra conta, o salvamento é rejeitado com uma mensagem informando isso. A rota que executa a etapa também não é configurada aqui: ela é definida pelo par provider_key e fallback_to_native, que o Marketplace do console configura para você.Conectar uma conta
Quando o usuário não consegue verificar
O usuário sempre pode continuar sem um banco, e a etapa nunca o deixa sem saída. Veja Quando a pessoa não consegue verificar o banco.
O efeito de continuar sobre a sessão é definido por
bank_unsupported_action, bank_attempts_exhausted_action ou bank_skipped_action, conforme o motivo pelo qual o usuário continuou, a menos que uma tentativa avaliada antes já tenha decidido a etapa: consulte Ações de veredito.
Comparação do titular
Verificação de conta
Estas chaves se aplicam apenas à verificação de conta. O login no banco mantém suas próprias correspondências próximas e seu própriobank_max_attempts.
Dados financeiros
bank_expected_currencies funciona apenas com o consentimento padrão ownership. As outras três chaves leem dados financeiros reais, então cada uma precisa do escopo de consentimento correspondente em bank_scopes, e o salvamento é recusado sem ele.
O que é armazenado
Ações de veredito
Toda chave aqui aceitaDECLINE, REVIEW ou NO_ACTION, a menos que esteja marcada como restrita, e recorre ao padrão abaixo quando você a omite ou envia null. Nada que não seja evidência positiva de propriedade aprova por padrão, e somente evidência demonstrável contra o usuário recusa.
Mais controles
Estas chaves são opcionais. Cada chave de ação aceitaDECLINE, REVIEW ou NO_ACTION.
Exemplo de objeto
config, para uma conta em que a Verificação bancária está ativada e a rota selecionada cobre o país listado:
AML
Valor do recurso:AML.
Para a triagem de pessoas em KYC, use estes campos:
Para a triagem de empresas em KYB, use estes campos:
Triagem de uma entidade extraída por uma etapa de Document AI
Uma etapa de AML normalmente lê quem deve ser triado a partir da etapaOCR (uma pessoa) ou da etapa KYB_REGISTRY (uma empresa). Um fluxo de verificação (workflow) cuja única etapa de extração é DOCUMENT_AI (documentos não padronizados, como uma certidão fiscal ou um contrato social) não tem nenhuma delas, por isso precisa indicar de onde vem cada dado de entrada da triagem.
Exemplo: triagem da empresa indicada em uma acta constitutiva mexicana, sem nenhum documento de identidade no fluxo:
Análise de dispositivo e IP
Valor do recurso:IP_ANALYSIS.
Exemplo:
recovered_device_action separadamente de duplicated_device_action quando quiser monitorar dispositivos identificados por recuperação com alta confiança antes de recusá-los automaticamente. Isso é útil durante a implantação, porque as correspondências por recuperação de dispositivo são projetadas para detectar redes de fraude, mas ainda devem ser calibradas com base no seu próprio tráfego.
Verificação de localização
Valor do recurso:GEOLOCATION.
Verifica onde a pessoa está durante a verificação, pela posição do dispositivo ou pela localização do IP da conexão, em relação às áreas permitidas e bloqueadas, à localização do IP e ao endereço do documento.
Consulte Verificação de localização para saber como a etapa funciona e o relatório dela para os campos de decisão.
Coloque-a depois da Verificação de identidade ou do Comprovante de endereço se quiser a distância até o endereço de um documento, porque a distância só é medida quando há um endereço registrado.
Com geolocation_position_source não definido, a distância até a localização do IP exige uma etapa de Análise de dispositivo e IP no mesmo fluxo.
Todas as chaves são opcionais: uma etapa com config vazio pede ao dispositivo uma posição com precisão de 250 m e com no máximo 120 segundos, dá 3 tentativas à pessoa e não aplica nenhuma regra de área.
Cada constatação tem sua própria chave de ação. Uma chave de ação que você deixa sem definir assume o padrão do geolocation_preset escolhido ou, se você não escolheu nenhum, o padrão por chave listado abaixo.
Uma localização incerta ou recusada tem REVIEW como padrão, nunca DECLINE, porque uma permissão negada ou um raio amplo não é evidência de fraude.
Uma ação definida explicitamente sempre prevalece sobre o preset.
Um desafio reproduzido (LOCATION_REPLAY_DETECTED) e uma falha na atestação do dispositivo (LOCATION_INTEGRITY_FAILED) sempre resultam em recusa e não têm chave de ação.
Formatos de área
Cada item degeolocation_areas tem um id (de 1 a 64 caracteres de A-Z a-z 0-9 _ -, único na lista), um label opcional (até 80 caracteres), um type igual a allowed ou blocked e um kind que define o formato.
Uma lista comporta no máximo 50 áreas e precisa de pelo menos uma área
allowed enquanto is_geolocation_geofencing_enabled for true.
geolocation_areas e geolocation_geofencing_by_country não podem ser enviados juntos, e geolocation_refusal_path: "end_session" exige que geolocation_permission_denied_action seja REVIEW ou DECLINE.
A API recusa uma área que nunca poderia corresponder, como uma região de um país sem limites publicados, em vez de salvá-la.
Exemplo:
Comprovante de endereço
Valor do recurso:PROOF_OF_ADDRESS.
Questionário
Valor do recurso:QUESTIONNAIRE.
Registro KYB
Valor do recurso:KYB_REGISTRY.
kyb_registry_fields_config mapeia cada chave de campo configurável para {"enabled": bool, "required": bool}. enabled: false oculta o campo, enabled: true, required: false o exibe como opcional e enabled: true, required: true o torna obrigatório no envio. company_name, country_code e region são sempre exibidos e obrigatórios e não podem ser configurados. Quando o objeto é omitido, null ou {}, aplica-se o padrão: somente incorporation_date é obrigatório e todos os outros campos são opcionais.
registration_number, incorporation_date, legal_address, vat_number, alternative_names, tax_number, company_type, legal_entity_identifier, location_of_registration, nature_of_business, registered_capital_amount, registered_capital_currency, website, email, phone, control_scheme. Veja campos configuráveis do formulário de registro para o comportamento do usuário final e validação de VAT e de identificação fiscal para saber como vat_number e tax_number são verificados.
Documentos KYB
Valor do recurso:KYB_DOCUMENTS.
Pessoas-chave KYB
Valor do recurso:KYB_KEY_PEOPLE.
Document AI
Valor do recurso:DOCUMENT_AI.
Solicita um ou mais documentos ao usuário e extrai, com um modelo de visão, os campos nomeados que você define. Cada campo configurado se torna um valor document_ai.<key> que pode ser usado em ramificações, e o resultado da etapa é document_ai.status.
Cada item em
document_ai_documents é um documento:
Cada item em
fields de um documento é um campo:
Exemplo:
Assinatura eletrônica
Valor do recurso:SIGNATURE.
Faz com que a pessoa verificada, ou as pessoas-chave de uma empresa, assinem documentos, no nível Simples (padrão) ou Avançado (AES). Coloque-o depois das etapas que verificam o signatário: Verificação de identidade e Verificação de e-mail ou de telefone para o código. Veja Assinatura eletrônica.
Os campos de um documento do fluxo são posicionados no editor de modelos do console. Para documentos da sessão, envie-os em
sign.documents[].fields e envie os valores dos campos api.<key> em sign.field_values. Veja Criar sessão.
Exemplo, para documentos enviados com cada sessão: