Entrar

Como interpretar a resposta do Screening

Manual para uma aplicação cliente interpretar a resposta do endpoint público POST /v1/screening, inclusive quando a consulta avançada expande a rede societária por meio de ownership_network.

Textos apresentados ao usuário podem ser localizados pela camada cliente. A documentação interativa (/docs) é a referência de tipos e campos; este manual explica a semântica e a ordem de leitura.

A recomendação da API apoia a decisão de compliance. Ela não substitui a política, as aprovações ou a análise humana exigida pelo cliente.

Ordem segura de leitura

Uma resposta longa não deve ser lida como uma lista única de ocorrências. O consumidor deve seguir esta sequência:

  1. Confirmar se a resposta é conclusiva (status).
  2. Ler a decisão sobre o sujeito consultado diretamente.
  3. Avaliar as ocorrências e a cobertura das fontes.
  4. Avaliar separadamente a rede societária, quando solicitada.
  5. Usar o dossiê e a cobrança como evidência e rastreabilidade.

1. A resposta é conclusiva?

{
  "status": "COMPLETE",
  "billable": true,
  "warnings": [],
  "notices": []
}
CampoInterpretação
status: COMPLETEAs etapas solicitadas foram concluídas.
status: PARTIALPelo menos uma fonte ou etapa não concluiu. A resposta é inconclusiva. Não trate CLEAR como aprovação automática.
status: ERRORA consulta não produziu uma classificação confiável. Não tomar decisão de risco.
billableInforma se houve cobrança; não informa se o resultado é favorável.
warningsMensagens para leitura humana.
noticesOs mesmos alertas em formato estruturado, com code, severity e message.

Exemplo de resposta que exige repetição ou revisão, e não aprovação:

{
  "status": "PARTIAL",
  "billable": false,
  "notices": [
    {
      "code": "PARTIAL_SOURCE_FAILURE",
      "severity": "WARNING",
      "message": "Partial screening: at least one selected live source was unavailable. The result is not conclusive and was not charged. Run the screening again."
    }
  ]
}

2. Decisão sobre o sujeito consultado diretamente

{
  "risk_level": "HIGH",
  "identity_class": "TRUE_MATCH",
  "recommendation": "REJECT",
  "summary": "One or more high-risk matches have confirmed identity. Blocking is recommended subject to your compliance policy."
}

Esses quatro campos descrevem somente a pessoa ou empresa enviada no request. Eles não devem ser assumidos como um resumo automático da rede QSA.

CampoPergunta respondida
risk_levelQuão grave é o risco efetivo encontrado?
identity_classQuão certa é a identidade entre o registro e o sujeito consultado?
recommendationQual ação a API sugere ao cliente?
summaryExplicação curta para uma interface humana.

Classes de identidade

ValorUso prático
TRUE_MATCHIdentidade confirmada por documento ou evidência forte.
POTENTIAL_MATCHEvidência relevante, mas revisão humana é necessária.
WEAK_MATCHEvidência insuficiente para ocorrência acionável.
NO_MATCHNenhuma correspondência relevante encontrada.

Níveis de risco

ValorUso prático
CLEARNão há risco acionável dentro do escopo efetivamente consultado.
MEDIUMRequer revisão; por exemplo, PEP confirmado ou potencial match de fonte grave.
HIGHOcorrência grave com identidade suficientemente confirmada.
ERRORNão houve classificação confiável.

Uma política típica de integração é:

COMPLETE + CLEAR + NO_MATCH             -> seguir, respeitando o escopo consultado
COMPLETE + MEDIUM ou POTENTIAL_MATCH    -> revisão humana
COMPLETE + HIGH + TRUE_MATCH            -> bloquear ou escalar conforme a política
PARTIAL ou ERROR                        -> não aprovar automaticamente

PEP é um caso próprio: requires_edd: true exige diligência reforçada, mas a condição de PEP, isoladamente, não é motivo de bloqueio automático.

3. Ocorrências diretas: hits

{
  "total_hits": 2,
  "actionable_hits_count": 2,
  "informational_hits_count": 3,
  "returned_hits_count": 2,
  "hits_truncated": false,
  "hits": [
    {
      "source": "OFAC_SDN",
      "category": "Financial Sanction",
      "name_similarity": 0.98,
      "identity_confidence": 1.0,
      "document_evidence": "EXACT_MATCH",
      "identity_class": "TRUE_MATCH",
      "risk_level": "HIGH",
      "requires_edd": true,
      "downgraded": false
    }
  ]
}
CampoComo usar
hitsOcorrências acionáveis que sustentam a decisão do sujeito principal.
total_hits / actionable_hits_countOcorrências acionáveis encontradas antes do limite de tamanho da resposta.
returned_hits_countSempre igual a hits.length.
informational_hitsCandidatos descartados ou fracos; úteis para auditoria, não para bloqueio automático.
hits_truncatedSe true, hits não contém todas as ocorrências.
truncated_hits_by_sourceQuantidade omitida por fonte.
categoryNatureza regulatória do registro, por exemplo sanção, PEP ou insolvência.
source_risk_levelGravidade original da fonte.
risk_level no hitGravidade efetiva após considerar a identidade.
name_similaritySemelhança de nome; não é prova isolada de identidade.
identity_confidenceConfiança final de identidade.
document_evidenceComo o documento contribuiu para a identificação.
downgradedA confiança ou o risco foi reduzido pela evidência disponível.
requires_eddO caso pede enhanced due diligence.

Nunca tome uma decisão somente por name_similarity. Use identity_class, risk_level, document_evidence e o contexto da fonte.

4. Cobertura das fontes: sources_checked

sources_checked é a prova de quais fontes foram efetivamente consultadas e do que ocorreu em cada uma delas.

{
  "sources_checked": {
    "OFAC_SDN": {
      "list_status": "AVAILABLE",
      "query_result": "MATCH",
      "risk_level": "HIGH",
      "hits": 1,
      "confirmed_hits": 1,
      "potential_hits": 0,
      "skip_reason": null
    },
    "PY_DNIT_RUC": {
      "list_status": "NOT_APPLICABLE",
      "query_result": "NOT_QUERIED",
      "hits": 0,
      "skip_reason": "COMPATIBLE_DOCUMENT_REQUIRED"
    }
  }
}

5. Solicitação de QSA

O QSA é um enriquecimento interno retornado pela mesma chamada de Screening. Para solicitá-lo, o consumidor adiciona estes campos ao corpo de POST /v1/screening:

{
  "name": "EMPRESA ALFA LTDA",
  "cnpj": "12345678000190",
  "groups": ["national", "sanctions"],
  "advanced": true,
  "ownership_depth": 3
}

ownership_depth pode ir de 1 a 8 e exige advanced: true mais CPF ou CNPJ. O QSA não é executado em profundidade 0.

6. O que um nível QSA representa

Um nível é uma rodada completa de expansão societária, não uma alternância fixa entre empresas e sócios.

ProfundidadeResultado esperado
0QSA não solicitado.
1Vínculos diretos do sujeito consultado.
2Expansão de todas as novas PFs e PJs encontradas no nível 1.
3Expansão de todas as entidades novas do nível 2.
4 a 8Repetição da mesma regra para a rodada anterior.

Raiz CPF

PF consultada
└── nível 1: empresas em que a PF aparece como sócia
    └── nível 2: sócios dessas empresas e empresas participadas por elas
        └── nível 3: expansão das entidades novas do nível 2

Raiz CNPJ

Empresa consultada (nível 0)
├── nível 1: seus sócios
├── nível 1: empresas das quais ela também participa
└── nível 2: expansão das novas PFs e PJs do nível 1
    └── nível 3: expansão das entidades novas do nível 2

O nível mede distância na expansão, não risco, participação societária ou controle. Uma entidade de nível 3 pode ser mais grave que uma de nível 1, e vice-versa.

7. Como ler uma resposta em vários níveis

{
  "ownership_network": {
    "status": "FOUND",
    "queried_cnpj_root": "12345678",
    "requested_depth": 3,
    "reached_depth": 3,
    "billable_depth": 3,
    "total_companies": 4,
    "companies": [
      {
        "cnpj_root": "12345678",
        "legal_name": "EMPRESA CONSULTADA LTDA",
        "level": 0,
        "partners": [
          {
            "level": 1,
            "name": "ANA EXEMPLO",
            "party_type": "PF",
            "role": "SOCIO-ADMINISTRADOR"
          }
        ]
      },
      {
        "cnpj_root": "87654321",
        "legal_name": "HOLDING ALFA LTDA",
        "level": 1,
        "originating_partner_name": "EMPRESA CONSULTADA LTDA",
        "screening": {
          "risk_level": "CLEAR",
          "identity_class": "NO_MATCH",
          "recommendation": "APPROVE"
        }
      },
      {
        "cnpj_root": "11223344",
        "legal_name": "BETA PARTICIPACOES LTDA",
        "level": 2,
        "originating_partner_name": "ANA EXEMPLO",
        "screening": {
          "risk_level": "MEDIUM",
          "identity_class": "TRUE_MATCH",
          "recommendation": "REVIEW",
          "actionable_hits_count": 1
        }
      },
      {
        "cnpj_root": "55667788",
        "legal_name": "GAMMA INVESTIMENTOS LTDA",
        "level": 3,
        "originating_partner_name": "BETA PARTICIPACOES LTDA",
        "screening": {
          "risk_level": "HIGH",
          "identity_class": "TRUE_MATCH",
          "recommendation": "REJECT",
          "actionable_hits_count": 1
        }
      }
    ]
  }
}

O cliente deve analisar cada company.screening e cada company.partners[].screening como uma conclusão sobre aquela entidade relacionada.

Resultado em entidade relacionadaTratamento recomendado
CLEAR + NO_MATCHNão há ocorrência acionável naquela entidade, dentro do escopo derivado consultado.
MEDIUM, POTENTIAL_MATCH ou requires_edd: trueSinalizar a rede para revisão humana.
HIGH + TRUE_MATCHSinalizar risco alto na rede; bloquear, escalar ou exigir aprovação conforme a política do cliente.
PARTIAL, ERROR, hits_truncated ou aviso de limiteNão considerar a análise daquela entidade ou da rede como completa.

No exemplo acima, o resultado principal pode continuar CLEAR, mas o cliente deve exibir algo como:

Sujeito principal: sem ocorrência acionável.
Rede societária: risco alto encontrado no nível 3 em GAMMA INVESTIMENTOS LTDA.
Próxima ação: revisão de compliance da rede societária.

Isso preserva a verdade do contrato: risco direto e risco de relacionamento não são a mesma afirmação.

Apresentação recomendada

Agrupar a lista por level é mais seguro que tentar desenhar uma árvore jurídica exata:

Rede societária — 3 de 3 níveis concluídos

Nível 0
• EMPRESA CONSULTADA LTDA

Nível 1 — vínculos diretos
• ANA EXEMPLO — sócia-administradora
• HOLDING ALFA LTDA — sem ocorrência acionável

Nível 2 — vínculos dos relacionados
• BETA PARTICIPAÇÕES LTDA — revisão necessária

Nível 3 — expansão adicional
• GAMMA INVESTIMENTOS LTDA — risco alto confirmado

companies é uma lista plana. originating_partner_name indica por qual sócio a empresa foi encontrada, mas o contrato não inclui um identificador de empresa-pai ou de aresta. Assim, nomes iguais podem tornar uma árvore gráfica ambígua. A interface deve preferir a formulação "encontrada no nível X via Y".

8. Completude, limites e custo do QSA

{
  "ownership_network": {
    "requested_depth": 3,
    "reached_depth": 2,
    "warnings": ["The ownership entity limit was reached."],
    "derived_screening": {
      "entities_processed": 100,
      "unique_entities": 98,
      "relationships_found": 156,
      "entity_limit": 100,
      "interpol_excluded": true
    },
    "billing": {
      "base_groups": ["national", "sanctions"],
      "base_group_cost": 2,
      "billable_depth": 2,
      "ownership_tokens": 4,
      "interpol_excluded": true
    }
  }
}
CampoInterpretação
requested_depthProfundidade solicitada no request.
reached_depthMaior rodada efetivamente alcançada. Pode ser menor que a solicitada se não havia novos vínculos.
warningsSe houver aviso de limite ou indisponibilidade, a rede não deve ser tratada como completa.
billable_depthProfundidade efetivamente usada para a cobrança.
derived_screeningMétricas da análise de risco das entidades relacionadas.
entities_processed / unique_entitiesVolume processado e volume após deduplicação.
relationships_foundVínculos societários encontrados.
entity_limitLimite operacional que protege contra redes excessivamente grandes.
interpol_excludedO Interpol não participa da análise derivada de QSA.
billing.ownership_tokensComponente de tokens da expansão societária.

Quando o QSA é executado, a profundidade cobrável mínima é 1, mesmo sem vínculos encontrados. O custo de expansão é baseado no custo dos grupos de fontes e na profundidade efetivamente cobrável. Se o QSA estiver indisponível, a consulta principal pode continuar; nesse caso, trate o bloco societário como indisponível e siga os avisos e a cobrança devolvidos.

9. Dossiê e trilha de auditoria

dossier organiza as evidências do sujeito principal para auditoria:

{
  "dossier": {
    "audit_trail": {
      "api_version": "v1",
      "timestamp_utc": "2026-08-04T12:15:18Z",
      "groups_checked": ["national", "sanctions"],
      "tokens_charged": 6
    },
    "decision": {
      "risk_level": "MEDIUM",
      "identity_class": "POTENTIAL_MATCH",
      "recommendation": "REVIEW"
    },
    "regulatory_taxonomy": {
      "by_category": {
        "Politically Exposed Person (PEP)": 1
      },
      "risk_by_category": {
        "Politically Exposed Person (PEP)": "MEDIUM"
      }
    },
    "proof_of_compliance": {
      "status": "RECORDED",
      "ledger_ref": "SCR-20260804-ABC123",
      "hash": "..."
    }
  }
}

O dossiê não deve ser usado para recalcular a decisão: ele é uma apresentação auditável de decision, detailed_hits, taxonomia e evidência de cobrança.

10. Resultado resumido para a interface do cliente

Uma aplicação pode exibir um resumo próprio, desde que preserve a resposta original para auditoria:

{
  "screening_completeness": "COMPLETE",
  "direct_subject": {
    "risk": "CLEAR",
    "identity": "NO_MATCH",
    "recommendation": "APPROVE",
    "actionable_hits": 0
  },
  "ownership_network": {
    "status": "FOUND",
    "requested_depth": 3,
    "reached_depth": 3,
    "related_entities_with_actionable_hits": 2,
    "highest_related_risk": "HIGH"
  },
  "next_action": "MANUAL_REVIEW"
}

related_entities_with_actionable_hits, highest_related_risk e next_action são exemplos de campos calculados pela aplicação cliente. Eles não substituem os campos oficiais devolvidos pela API.

11. Checklist de implementação

Veja funcionando

As cinco chamadas mais comuns — health, sources, balance, screening (com e sem ocorrência) e statement — rodando ao vivo, lado a lado, na página Veja funcionando.

Solicitar acesso