Passer au contenu principal
Il arrive que vous deviez vérifier le risque AML d’un portefeuille crypto avant qu’une transaction soit enregistrée, par exemple lorsqu’un client ajoute une adresse de retrait, ou lorsque votre équipe de conformité souhaite contrôler une adresse au cas par cas. L’endpoint de filtrage des portefeuilles à la demande analyse une seule adresse et renvoie le résultat complet de l’évaluation du risque, sans créer de transaction. Il s’agit de l’équivalent autonome de l’filtrage automatique des cryptomonnaies effectué lors de la soumission d’une transaction. Les deux utilisent les mêmes fournisseurs d’analyse blockchain et la même structure de résultat.

Quand l’utiliser

Le filtrage des portefeuilles n’écrit rien dans la table des transactions. Si vous voulez rattacher l’analyse à une transaction surveillée (avec règles, alertes et webhooks), soumettez plutôt une transaction.

Prérequis

La surveillance des transactions doit être configurée pour l’application, avec un fournisseur géré ou une clé de fournisseur existante. Configurez-la dans Transactions > Paramètres > Provider Preferences de la Business Console. Si aucun fournisseur n’est configuré, l’endpoint renvoie 409 Conflict.

Requête

POST https://verification.didit.me/v3/wallet-screening/ Authentifiez-vous avec l’en-tête x-api-key.

Couverture des chaînes

Le filtrage géré prend en charge Base (BASE), Optimism (OP) et Arbitrum One (ARB) pour le filtrage des portefeuilles et des hachages de transaction. La couverture des fournisseurs connectés peut varier ; une chaîne doit aussi être prise en charge par votre fournisseur et votre compte sélectionnés. Celo (CELO), Mode (MODE) et Plume (PLUME) font l’objet d’un filtrage via un compte TRM Labs connecté (Marketplace, avec votre propre clé) ; l’analyse gérée ne les couvre pas et renvoie 400. N’envoyez pas ETH pour un autre réseau EVM : la même adresse peut avoir une activité et un risque différents sur chaque chaîne. Avec l’analyse gérée, USDT et USDC sont des alias hérités pour Ethereum, et non une recherche sur tous les réseaux où ces jetons existent. Utilisez l’identifiant de réseau (ETH, TRX, SOL, MATIC, BNB, BASE, OP, ARB, AVAX, ADA, XLM, HBAR, ou avec TRM Labs CELO, MODE ou PLUME) correspondant à la chaîne réelle du portefeuille. Pour les jetons des transactions enregistrées, conservez le jeton dans transaction_details.currency et indiquez le réseau séparément dans transaction_details.crypto_params.crypto_chain. Voir sélection de l’actif et du réseau.
LIGHTNING n’est disponible que si l’application dispose d’un fournisseur BYOK Elliptic ou Chainalysis connecté dans la Marketplace de la console. Il n’est pas disponible avec Merkle Science géré, ni avec Crystal ou TRM Labs. Les requêtes sans fournisseur connecté pris en charge renvoient 400 et ne sont ni analysées ni facturées.

Réponse

La réponse est le résultat de filtrage standardisé. Sa structure est identique à celle du résultat du fournisseur WALLET_SCREENING renvoyé par le filtrage des transactions.
Comment severity est défini. severity correspond à la tranche du risk_score normalisé : 0-9 → UNKNOWN, 10-39 → LOW, 40-69 → MEDIUM, 70-89 → HIGH, 90-100 → CRITICAL. UNKNOWN est la tranche la plus basse, et non un état distinct « aucune donnée ». risk_score: 0 (le cas courant d’une adresse saine) signifie que le fournisseur n’a fourni aucune évaluation défavorable, tandis qu’une valeur non nulle dans la plage 1-9 est un signal réel mais inférieur à LOW : lisez donc le risk_score lui-même, et pas seulement la tranche. Dans tous les cas, n’affichez pas UNKNOWN comme un résultat « clair » ou validé.direction ne modifie pas le modèle de risque. Le champ facultatif direction est transmis au fournisseur uniquement à titre de contexte. Il n’affecte ni risk_score, ni severity, ni les listes de détail renvoyées : source_of_funds et destination_of_funds sont toujours renvoyées. Modifier ou omettre direction ne nécessite donc pas de réanalyser une adresse déjà analysée.

Facteurs de risque

risk_factors est la réponse hiérarchisée à la question « pourquoi cette adresse reçoit-elle ce score ». Les fournisseurs notent une adresse selon leur propre modèle et ne renvoient qu’un verdict (Merkle Science renvoie un entier 0-5), si bien que risk_score seul ne permet pas d’agir. Chaque entrée décrit un facteur, les facteurs à haut risque étant classés en premier, puis les autres selon le montant qui y a transité.
Un score élevé sans facteur is_high_risk est un résultat réel et significatif. Cela signifie que le fournisseur a noté l’adresse selon son propre modèle d’exposition, sans signaler de correspondance avec des sanctions, une PEP ou une entité attribuée. Les facteurs listés sont les flux de fonds à l’origine de la note. summary l’indique explicitement : traitez donc ces adresses comme « nécessitant un examen des flux », et non comme une correspondance confirmée. risk_factors est limité aux cinq facteurs les plus déterminants ; source_of_funds et destination_of_funds contiennent toujours le détail complet.
risk_factors est un champ de premier niveau, et non imbriqué. Les résultats filtrés avant son introduction omettent entièrement la clé : lisez-la comme une liste vide plutôt que de supposer une explication vide.

Répartition de l’exposition

Chaque entrée de source_of_funds / destination_of_funds décrit une entité avec laquelle l’adresse a échangé des fonds :

Connexions de contreparties

counterparty_connections répertorie les entités auxquelles le prestataire attribue l’adresse analysée. Pour Merkle Science, ces entités proviennent des étiquettes de propriétaire et d’utilisateur de l’adresse elle-même, de sorte que la même entité peut apparaître deux fois. Elles ne contiennent aucun flux de fonds : received_usd, sent_usd, received_hops et sent_hops valent null, et percentage vaut 0.0. Lisez les flux de fonds dans source_of_funds et destination_of_funds.
Ne vous appuyez pas sur counterparty_connections[].risk_level ni sur counterparty_connections[].is_direct pour orienter vos décisions : pour Merkle Science, le premier reprend la note de risque propre à l’adresse (lisez risk_score), et le second vaut toujours true. Utilisez sanctions_hit, dominant_risk_category et risk_factors[].is_high_risk pour le verdict, et exposure_type dans source_of_funds / destination_of_funds pour savoir si l’exposition est directe.

Exemple

Une réponse réelle pour une adresse figurant sur la liste de sanctions OFAC, filtrée avec Merkle Science. Seuls raw_response et report_signature ont été modifiés : le premier a été raccourci et la seconde remplacée :
Les exemples illustrent la structure de la réponse, et non un verdict garanti pour une adresse réelle. Les scores de risque et l’exposition aux sanctions dépendent du réseau sélectionné, des renseignements actuels et de la politique de risque configurée. Une attribution à une plateforme d’échange n’implique pas un score de risque nul : un portefeuille d’échange peut présenter une exposition aux sanctions via ses flux de fonds. sanctions_hit: true peut indiquer que le portefeuille lui-même est sous sanctions, ou seulement que ses fonds présentent une exposition aux sanctions. Cela ne signifie donc pas à lui seul que le titulaire du portefeuille analysé est sous sanctions. Lorsque le même filtrage s’exécute sur une transaction enregistrée, les règles peuvent aussi lire custom_values.wallet_sanctioned, qui n’est true que si le prestataire attribue le portefeuille lui-même à une entité sous sanctions, ainsi que custom_values.aml_sanctions_exposure_pct. Voir Champs de filtrage pour les règles. Lisez risk_factors, source_of_funds et destination_of_funds pour distinguer l’attribution de l’exposition. Voir Filtrage crypto et des portefeuilles pour un guide pas à pas.

Rapport PDF

Pour obtenir un PDF aux couleurs de Didit d’un résultat de filtrage, renvoyez à l’identique le corps de la réponse, y compris report_signature, à POST /v3/wallet-screening/pdf/. Cette opération est sans état : aucun appel au prestataire, aucune facturation supplémentaire, et rien n’est conservé. Toute modification d’un champ signé (risk_score, severity, sanctions_hit, …) avant le renvoi échoue avec 400.
Voir PDF du filtrage de portefeuille pour le schéma complet des requêtes et des réponses, ainsi que la forme des erreurs.

Facturation

Une utilisation de la surveillance AML est facturée par filtrage réussi, au même tarif que le filtrage crypto couplé aux transactions. Consultez tarifs pour les tarifs en mode géré et avec clé connectée. Les applications sandbox ne sont pas facturées. Les erreurs de validation (400) et les erreurs de fournisseur non configuré (409) ne sont jamais facturées.

Erreurs

Étapes suivantes

Référence de l'API

Schéma complet de la requête et de la réponse pour l’endpoint Screen Wallet.

PDF Screen Wallet

Générez le résultat d’un filtrage sous la forme d’un PDF aux couleurs de Didit.

Filtrage crypto et des portefeuilles

Filtrage automatique lors de la création d’une transaction, et modèle de résultat.
Dernière modification le 7 novembre 2026