Déclenchement du filtrage
Le filtrage crypto s’exécute automatiquement lorsque les deux conditions suivantes sont remplies :- La transaction contient
currency_kind: "crypto"dans ses détails de transaction - La surveillance des transactions est activée dans vos paramètres d’application
include_crypto_screening dans le payload de création de transaction :
Sélection de l’actif et du réseau
L’actif et le réseau sont deux champs distincts. Renseigneztransaction_details.currency avec le symbole du token, transaction_details.currency_kind avec crypto, et transaction_details.crypto_params.crypto_chain avec le réseau.
Par exemple, ce fragment enregistre un token personnalisé sur Base :
BTC, ETH, LTC, XRP, BCH, DOGE, TRX, SOL, MATIC, BNB, BASE, OP, ARB, AVAX, ADA, XLM et HBAR.
BASE désigne Base, OP désigne Optimism, ARB désigne Arbitrum One, AVAX désigne Avalanche C-Chain, ADA désigne Cardano, XLM désigne Stellar et HBAR désigne Hedera.
Les noms de réseaux courants sont acceptés également, par exemple POLYGON ou POL pour MATIC, BSC pour BNB et TRON pour TRX.
Celo, Mode et Plume ne sont pas couverts par l’intégration gérée : ils sont filtrés via un compte TRM Labs connecté (CELO, MODE, PLUME).
La couverture des fournisseurs connectés dépend de chacun d’eux ; Lightning a des exigences supplémentaires décrites plus bas.
Indiquez toujours crypto_chain pour un token, y compris USDT et USDC.
Sans lui, la devise est utilisée comme réseau, et USDT et USDC tirent leur réseau du hash de transaction ou, à défaut de hash, de l’adresse du portefeuille.
Un hash Tron ou Solana sélectionne Tron ou Solana.
Un hash 0x a la même forme sur tous les réseaux EVM : pour USDT, USDC et ETH, Didit le recherche donc sur Ethereum, BNB Chain, Polygon, Base, Arbitrum et Optimism, puis filtre la transaction sur le réseau où il est trouvé.
ETH est inclus car il est natif sur Ethereum, Base, Arbitrum et Optimism, et il est aussi transféré sur BNB Chain sous forme de jeton BEP-20 ponté.
Si aucun réseau ne contient le hash, ou si les réseaux ne peuvent pas être vérifiés à ce moment-là, la transaction n’est pas filtrée et le filtrage n’est pas facturé.
custom_values.aml_screening_status vaut alors FAILED, custom_values.aml_screening_error indique la raison, et une transaction approuvée passe en examen.
Une transaction USDT ou USDC sans hash filtre un portefeuille, et l’adresse du portefeuille sélectionne le réseau.
Une adresse Tron est filtrée sur Tron et une adresse Solana sur Solana.
Une adresse 0x est filtrée sur le premier réseau, parmi Ethereum, BNB Chain, Polygon, Base, Arbitrum et Optimism, où elle a envoyé une transaction ou détient le token.
Une adresse 0x sans activité sur aucun de ces réseaux, ou dont les réseaux ne peuvent pas être vérifiés à ce moment-là, est filtrée sur Ethereum.
Envoyer crypto_chain évite cette recherche.
Ne remplacez jamais le réseau réel par ETH.
Enregistrer un symbole de token personnalisé ne garantit pas que ses transferts sont indexés pour le filtrage par hash de transaction.
La couverture d’un token doit être vérifiée à partir de son contrat et du réseau.
Une transaction créée ne prouve pas un filtrage réussi : vérifiez le statut du filtrage et le résultat du fournisseur avant de considérer la transaction comme filtrée.
Entrant ou sortant
transaction_details.direction est obligatoire, car il indique à Didit quel côté du transfert doit faire l’objet du filtrage.
Pour le filtrage avant transfert, omettez
transaction_details.payment_reference_id ; Didit exécute un filtrage du portefeuille sur l’adresse concernée. Pour le filtrage après transfert, incluez le hash de transaction blockchain dans transaction_details.payment_reference_id ; Didit exécute un filtrage de transaction et enregistre les données récapitulatives de la transaction lorsque l’enrichissement on-chain est disponible.
Lightning Network
Définisseztransaction_details.crypto_params.crypto_chain sur LIGHTNING pour le filtrage Lightning Network.
Le filtrage Lightning exige un fournisseur Elliptic ou Chainalysis BYOK connecté dans le Marketplace de la console.
Merkle Science, Crystal et TRM Labs en mode géré n’acceptent pas LIGHTNING ; Didit rejette ces requêtes avec 400 avant le filtrage ou la facturation.
Pour Elliptic, Didit filtre l’identifiant Lightning fourni via l’analyse de portefeuille BTC Lightning d’Elliptic.
Pour Chainalysis, Didit soumet un transfert Lightning à KYT lorsque transaction_details.payment_reference_id est présent.
Champs obligatoires
Pour toutes les requêtes de filtrage crypto, envoyez :transaction_details.direction—INBOUNDouOUTBOUNDtransaction_details.currency_kind—cryptotransaction_details.currency— le symbole de l’actif, par exempleBTC,ETH,USDCou votre token personnalisé- Une adresse du participant sélectionné selon les règles de direction ci-dessus
transaction_details.payment_reference_id— le hash de transaction blockchain
Exemple de filtrage sortant avant transfert
Avant d’envoyer les fonds, créez une transaction crypto sortante sans hash de transaction. Didit filtre le portefeuille de destination.Exemple de filtrage entrant après transfert
Après réception des fonds, incluez le hash de transaction. Didit filtre le hash rattaché à votre adresse de dépôt et enrichit la réponse avec les informations récapitulatives de la transaction lorsqu’elles sont disponibles.Fournisseurs pris en charge
Configurez votre fournisseur préféré dans Transactions > Paramètres > Provider Preferences dans la Business Console, ou connectez votre propre clé de fournisseur depuis le Marketplace de la console (catégorie Crypto monitoring).
LIGHTNING est pris en charge uniquement avec les configurations Chainalysis et Elliptic à clé connectée.
Résultats du filtrage
Chaque filtrage produit un résultat standardisé, quel que soit le fournisseur utilisé.Statut du filtrage
custom_values.aml_screening_status indique si une transaction a été filtrée.
Une transaction qui serait autrement approuvée passe à
IN_REVIEW tant que son filtrage n’est pas COMPLETED.
Hachages de transaction non encore indexés
Un fournisseur d’analyse blockchain peut mettre quelques minutes à indexer un transfert qui vient d’être miné ; jusque-là, il ne peut pas le filtrer. Lorsque le fournisseur indique qu’il n’a pas encore indexé un hachage de transaction, et que le réseau lui-même confirme que la transaction existe, Didit refiltre celle-ci en arrière-plan au lieu de la faire échouer :- La réponse de création affiche déjà
custom_values.aml_screening_statuscomme étantPENDING, avec la raison danscustom_values.aml_screening_error. Une transaction approuvée est maintenueIN_REVIEWavecdecision_reason_codeaml_screening_pending. - Didit refiltre le hachage de la transaction environ 2, 12 et 42 minutes après la création de la transaction.
- Lorsqu’une nouvelle tentative réalise le filtrage, le résultat est enregistré comme tout autre filtrage, et celui-ci n’est facturé qu’une fois. Vos règles s’exécutent à nouveau sur les données de filtrage, la mise en attente est levée, et vous recevez un seul webhook
transaction.status.updated, avec le statut que la transaction a après l’application des règles, qu’il ait changé ou non. Une transaction refusée ou résolue par un réviseur entre-temps conserve son statut. - Si le fournisseur n’a toujours pas indexé le hachage de la transaction après la dernière tentative, le filtrage se termine en
FAILED, comme il l’aurait fait à la création : la transaction resteIN_REVIEWavecdecision_reason_codeaml_screening_failed, et elle est facturée comme elle l’aurait été à la création en cas d’échec : rien pour le filtrage géré par Didit, une requête fournisseur si la dernière tentative a atteint votre fournisseur connecté. Les tentatives précédentes, qui ont été réessayées, ne sont jamais facturées. - Si votre solde ne couvre plus le filtrage au moment d’une nouvelle tentative, le filtrage se termine en
FAILEDet rien n’est facturé.
Score de risque et gravité
Chaque portefeuille ou transaction filtré reçoit :- Score de risque (0–100) : plus le score est élevé, plus l’exposition à des entités risquées est importante
- Niveau de gravité : dérivé du score,
LOW,MEDIUM,HIGHouCRITICAL
Analyse de l’origine des fonds
Une répartition en pourcentage de l’origine des fonds, catégorisée par type d’entité :
Chaque entité de la répartition comprend le pourcentage des fonds, les montants reçus et envoyés, et indique si le lien est direct ou indirect.
Tableau d’exposition
Un tableau d’exposition présentant les entités source, destination et contrepartie, comprenant :- Le nom et la catégorie de l’entité
- La connexion directe ou indirecte (distance en sauts)
- Les montants reçus et envoyés
- Le niveau de risque par entité
Graphe de réseau
Une représentation visuelle en nœuds et arêtes des relations de transactions du portefeuille :- Nœuds : représentent les portefeuilles, plateformes d’échange, services et autres entités
- Arêtes : représentent les transactions entre les nœuds, avec les montants et les hachages de transaction
- Indicateurs : comprennent des statistiques au niveau du graphe, comme la centralité et la profondeur
Intégration avec les règles
Les résultats du filtrage alimentent directement le moteur de règles. Didit inclut des règles prédéfinies qui se déclenchent automatiquement à partir des données de filtrage :Champs de filtrage pour les règles
Le filtrage crypto écrit ces clés dans lecustom_values de la transaction, afin que les règles puissent les utiliser sous la forme custom_values.<key> :
Utilisez
wallet_sanctioned pour bloquer les transferts vers un portefeuille sanctionné, sans refuser les transferts vers les grandes plateformes d’échange qui ne présentent qu’une exposition indirecte.
Utilisez sanctions_hit ou aml_sanctions_exposure_pct pour examiner ou noter l’exposition.
La règle prédéfinie Sanctions counterparty refuse la transaction lorsque wallet_sanctioned vaut true, et la règle prédéfinie Sanctions exposure envoie en examen les portefeuilles dont l’exposition est seule en cause.
Les deux ne correspondent jamais à la même transaction : un portefeuille sanctionné est donc toujours refusé.
Si vous aviez installé Sanctions counterparty avant cette modification, Didit l’a migrée vers wallet_sanctioned pour vous et a ajouté Sanctions exposure dans le même mode. Un transfert que l’ancienne règle refusait pour simple exposition est désormais envoyé en examen.
Une fois le filtrage terminé, Didit réévalue automatiquement toutes les règles à partir des données de transaction enrichies et déclenche les webhooks applicables.
Étapes suivantes
Soumettre des transactions
Comment soumettre des transactions, y compris les détails des portefeuilles crypto.
Règles et notation
Comment les résultats du filtrage alimentent le moteur de règles.
Guide de la console
Consulter l’analyse de filtrage crypto, l’origine des fonds et les graphes de réseau dans la console.