Pular para o conteúdo principal
Este guia cobre todos os aspectos da integração do Monitoramento de transações. O guia de início rápido permite que você comece a usar; esta página prepara você para produção.

Arquitetura

Autenticação

Cabeçalho padrão x-api-key. São as mesmas chaves usadas para sessões e entidades. Consulte autenticação da API.

Envio de uma transação

Um único endpoint: POST /v3/transactions/. Consulte envio de transações para ver o esquema completo. Payload mínimo:
Payload mais completo, com métodos de pagamento, contexto de dispositivo e propriedades personalizadas:
Aliases em camelCase são aceitos para todos os campos de nível superior (txnId, txnDate, type, info, applicant, props, travelRule, includeCryptoScreening): o formato de transmissão do SDK e o formato snake_case são processados da mesma forma.

Modelagem das partes

Toda transação tem um subject obrigatório (seu cliente, a parte que você monitora) e uma counterparty opcional (o outro lado). Cada uma tem seu próprio payment_method e um contexto de device opcional. Na resposta, elas voltam no array parties com as funções APPLICANT e COUNTERPARTY. Uma parte sem vendor_data é armazenada como um snapshot externo (kind: EXTERNAL), sem entidade vinculada. Consulte payload de transações para ver os campos das partes.

Idempotência

txn_id (o transaction_id que você envia) é único por aplicação. Reenviar um transaction_id que já existe retorna 400 com A transaction with this transaction_id already exists. no campo transaction_id. Quando duas requisições idênticas concorrem entre si, a segunda recebe 409. Nenhuma das duas respostas retorna a transação existente. Diante de um 400 ou 409 por transaction_id duplicado, consulte a transação existente em vez de reenviá-la: leia-a com GET /v3/transactions/{uuid}/ usando o uuid da primeira resposta, ou use o transaction_id (o uuid da Didit) que o webhook transaction.created traz junto com o seu txn_id. Sempre gere o txn_id do seu lado antes de enviar; não dependa de um ID gerado pela Didit para a idempotência. Use o ID do seu próprio banco de dados, um UUID ou um hash dos campos da transação.

Tempo real vs. lote

  • Tempo real: recomendado para a maioria dos casos de uso. Envie a transação no momento em que ela acontece no seu sistema. As regras são avaliadas de forma síncrona e retornam a decisão.
  • Lote / carga retroativa: para ingestão de histórico, informe um txn_date no passado. As regras continuam sendo executadas e podem disparar webhooks. Para evitar que as regras sejam acionadas na carga retroativa, use a importação de CSV do console com a opção “dry ingest”.

Ingestão de histórico

Quando você estiver migrando de outro sistema de monitoramento de transações:
  1. Exporte suas transações históricas para um CSV.
  2. Use Transactions → Import history na console (ou envie pela API em um loop) com txn_date no passado.
  3. Ative as regras somente depois que a ingestão terminar, ou use o dry ingest para pular a avaliação de regras.
Pense bem antes de avaliar regras sobre o histórico. Passar 6 meses de histórico por uma regra de “20 transferências em 30 dias” vai gerar milhares de alertas de uma só vez.

Webhooks

Inscreva-se em:
  • transaction.created: toda transação enviada.
  • transaction.status.updated: mudanças de status (por exemplo, um analista muda de IN_REVIEW para APPROVED, ou uma verificação AML assíncrona atualiza a pontuação).
Detalhes completos: webhooks de TM.

Tratamento dos status

Consulte status de TM.

Vinculação de transações a entidades

Informe vendor_data para cada parte. Benefícios:
  • Todas as transações são agregadas ao perfil do usuário ou da empresa.
  • As regras de velocidade e de comportamento têm acesso ao histórico completo para avaliação.
  • O bloqueio de uma entidade se propaga automaticamente para as transações futuras.
A ausência de vendor_data não é um erro bloqueante (a transação é armazenada como um snapshot externo), mas você perde a agregação no nível da entidade.

Sessões de remediação

Quando a ação de uma regra move uma transação para AWAITING_USER, a Didit cria automaticamente uma sessão de remediação: uma sessão de verificação hospedada padrão para o mesmo vendor_data. Regras personalizadas sempre indicam o fluxo de verificação (workflow) na própria ação. Para regras da biblioteca integrada, o fluxo usado é, primeiro, o fluxo de remediação nas configurações de transações, depois o fluxo de Autenticação biométrica da sua aplicação (quando o titular tem um rosto de referência armazenado) e, por fim, o fluxo padrão da sua aplicação. Transações de Travel Rule ficam fora dessa fallback automático, pois a ação pendente delas é a comprovação de propriedade da carteira. A transação (na resposta, em toda leitura posterior e em todo webhook) traz essa sessão no bloco canônico action_required:
remediation é mantido por compatibilidade com versões anteriores. action_required é o bloco canônico (ele também traz ações wallet_ownership para transferências de Travel Rule). Uma ação wallet_ownership não altera o status da transação por si só: a transação mantém o status que suas regras atribuírem, muitas vezes APPROVED. Por isso, verifique action_required em toda resposta, e não apenas em AWAITING_USER. O usuário conclui a verificação. Em um fluxo de Autenticação biométrica, isso é uma selfie com prova de vida comparada ao rosto capturado no onboarding de KYC original, a verificação adicional mais forte para transações de alto valor. Quando a sessão chega a uma decisão, a transação a segue automaticamente: APPROVED (decision_reason_code: user_action_approved), DECLINED (user_action_declined) ou IN_REVIEW (user_action_in_review), e um webhook transaction.status.updated é disparado.
É possível selecionar qualquer tipo de fluxo, exceto KYB. Fluxos de Autenticação biométrica (e fluxos em que a correspondência facial é executada antes da verificação de identidade) exigem que o titular já tenha um rosto de referência armazenado obtido em uma verificação aprovada. Usuários sem esse rosto são enviados para o fluxo padrão da sua aplicação, e uma nota na transação registra a substituição.

Boas práticas

Limites de requisições

Veja limite de requisições. A criação de transações é um dos endpoints de maior vazão; os limites típicos ficam na casa das centenas de requisições por segundo. Envie rajadas de requisições com cautela.

Próximos passos

Transações

Referência completa do payload.

Regras

Como as regras são avaliadas.

Webhooks

Catálogo de eventos.

Solução de problemas

Problemas comuns de integração.
Última modificação em 1 de novembro de 2026