Arquitetura
Autenticação
Cabeçalhox-api-key padrão. As mesmas chaves de API são usadas para sessões e entidades. Consulte Autenticação da API.
Envio de uma transação
Endpoint único:POST /v3/transactions/. Consulte envio de transações para o esquema completo.
Payload mínimo:
txnId, txnDate, type, info, applicant, props, travelRule, includeCryptoScreening): o formato de transmissão do SDK e o formato snake_case são tratados da mesma forma.
Modelação das partes
Cada transação tem umsubject obrigatório (o seu cliente, a parte que é monitorizada) e um counterparty opcional (a contraparte, o outro lado). Cada um tem o seu próprio payment_method e um contexto device opcional.
Na resposta, são devolvidos no array parties com as funções APPLICANT e COUNTERPARTY; uma parte sem vendor_data é guardada como um instantâneo externo (kind: EXTERNAL) sem entidade associada.
Consulte payload de transações para os campos das partes.
Idempotência
txn_id (o transaction_id que envia) é único por aplicação.
Reenviar um transaction_id que já existe devolve 400 com A transaction with this transaction_id already exists. no campo transaction_id; quando dois pedidos idênticos entram em conflito em simultâneo, o segundo recebe 409.
Nenhuma destas respostas devolve a transação existente.
Perante um 400 ou 409 por transaction_id duplicado, consulte a transação existente em vez de a reenviar: 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 ao lado do seu txn_id.
Gere sempre o txn_id do seu lado antes de submeter; não dependa de um ID gerado pela Didit para a idempotência. Use o ID da sua base de dados, um UUID ou um hash dos campos da transação.
Tempo real vs. lote
- Tempo real: recomendado para a maioria dos casos. Envie a transação no momento em que acontece no seu sistema. As regras são avaliadas de forma síncrona e devolvem a decisão.
- Lote / carregamento retroativo: para ingestão histórica, passe um
txn_dateno passado. As regras continuam a ser executadas e podem acionar webhooks. Para evitar acionar regras no carregamento retroativo, use a importação CSV da consola com a opção “dry ingest”.
Ingestão histórica
Quando estiver a migrar de outro sistema de monitorização de transações:- Exporte as suas transações históricas para um CSV.
- Use Transactions → Import history na consola (ou envie através da API num ciclo) com
txn_dateno passado. - Ative as regras apenas depois de a ingestão terminar, ou use o dry ingest para ignorar a avaliação de regras.
Webhooks
Subscreva:transaction.created: todas as transações enviadas.transaction.status.updated: alterações de estado (por exemplo, o analista passa deIN_REVIEWparaAPPROVED, ou uma verificação AML assíncrona atualiza a pontuação).
Gestão dos estados
Consulte estados de Monitorização de Transações.
Associar transações a entidades
Passevendor_data em todas as partes. Vantagens:
- Cada transação é agregada ao perfil do utilizador ou da empresa.
- As regras de velocidade e de comportamento têm o histórico completo para fazer a avaliação.
- Bloquear uma entidade propaga-se automaticamente às transações futuras.
vendor_data não é um erro impeditivo: a transação é guardada como instantâneo externo, mas perde a agregação ao nível da entidade.
Sessões de remediação
Quando uma ação de uma regra move uma transação paraAWAITING_USER, a Didit cria automaticamente uma sessão de remediação - uma sessão de verificação alojada padrão para o mesmo vendor_data.
As regras personalizadas indicam sempre o fluxo na própria ação; para as regras incluídas na biblioteca, o fluxo recai sobre o fluxo de remediação nas definições de transação, depois sobre o fluxo de Autenticação biométrica da sua aplicação (quando o titular tem um rosto de referência guardado) e, por fim, sobre o fluxo predefinido da sua aplicação.
As transações Travel Rule são excluídas deste mecanismo de recurso automático - a ação pendente é a prova de propriedade da carteira.
A transação (a resposta, todas as leituras seguintes e todos os webhooks) inclui a sessão no bloco canónico action_required:
remediation é mantido por compatibilidade com versões anteriores; action_required é o bloco canónico (inclui também as ações wallet_ownership das transferências Travel Rule).
Uma ação wallet_ownership não altera, por si só, o estado da transação: a transação mantém o estado que as suas regras lhe atribuem, frequentemente APPROVED. Por isso, verifique action_required em todas as respostas, e não apenas quando o estado for AWAITING_USER.
O utilizador conclui a verificação - num fluxo de Autenticação biométrica, uma selfie com prova de vida comparada com o rosto capturado no onboarding KYC inicial, o reforço de autenticação mais forte para transações de valor elevado.
Quando a sessão atinge uma decisão, a transação segue-a automaticamente - APPROVED (decision_reason_code: user_action_approved), DECLINED (user_action_declined) ou IN_REVIEW (user_action_in_review) - e é disparado um webhook transaction.status.updated.
Pode ser selecionado qualquer tipo de fluxo, exceto KYB.
Os fluxos de Autenticação biométrica (e os 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 guardado, proveniente de uma verificação aprovada. Os utilizadores que não tenham um são encaminhados para o fluxo predefinido da sua aplicação, com uma nota na transação a registar essa substituição.
Boas práticas
Limites de pedidos
Consulte a limitação de pedidos. A criação de transações é um dos endpoints com maior capacidade de processamento; os limites típicos situam-se nas centenas de pedidos por segundo. Envie rajadas de pedidos com cuidado.Próximos passos
Transações
Referência completa do payload.
Regras
Como as regras são avaliadas.
Webhooks
Catálogo de eventos.
Resolução de problemas
Problemas comuns de integração.