Les règles peuvent être gérées depuis la Business Console, la Management API et le Didit MCP. Utilisez la console lorsqu’une personne de votre équipe conformité doit examiner chaque modification ; utilisez l’API ou le MCP lorsque les règles sont créées et ajustées par programmation - par exemple lors de la migration d’un jeu de règles depuis un autre fournisseur. Consultez la référence de l’API et le guide de gestion des règles via l’API et le MCP. Les règles sont évaluées à chaque transaction soumise via
POST /v3/transactions/, et le résultat apparaît dans le tableau rule_runs[] de la transaction (voir le schéma de réponse).Lots de règles intégrés
Didit fournit une bibliothèque de règles préconfigurées couvrant les typologies réglementaires courantes. Installez les préréglages (ou des lots complets) de votre choix depuis la bibliothèque, dans la console, via l’API d’installation ou avec les outils MCP, et contrôlez le mode de chaque préréglage installé. Pour le catalogue complet de chaque règle prédéfinie, avec ses seuils et ses actions, consultez la bibliothèque de règles.Sources des règles
Chaque règle possède unesource qui indique qui la gère :
Anatomie d’une règle
Chaque règle se compose des éléments suivants :Actions
Lorsqu’une règle correspond à une transaction, une ou plusieurs actions sont exécutées. Chaque règle peut comporter plusieurs actions, appliquées ensemble :
La plupart des règles prédéfinies combinent ajouter un score avec changer le statut. Par exemple, une règle relative à une contrepartie sous sanctions ajoute 90 points au score et refuse immédiatement la transaction.
Exiger une vérification de l’utilisateur (AWAITING_USER)
Une action changer le statut → AWAITING_USER fait plus que définir un statut : Didit crée automatiquement une session de vérification hébergée pour le sujet de la transaction (même vendor_data) dès que la règle se déclenche.
La session est renvoyée dans le bloc action_required de la transaction (ainsi que dans l’objet remediation) à la création et à chaque lecture ultérieure, ainsi que dans les deux webhooks de transaction. Vous pouvez donc rediriger l’utilisateur immédiatement. Voir actions requises de l’utilisateur.
Les règles personnalisées doivent indiquer le workflow directement sur l’action (workflow_id) : l’éditeur de règles de la console comme l’API des règles l’exigent.
Les règles de la bibliothèque intégrée ne contiennent pas de workflow. Pour elles, le workflow de la session est déterminé dans l’ordre suivant :
- Le workflow de remédiation configuré dans vos paramètres de transaction.
- Le workflow Authentification biométrique de votre application, lorsque le sujet dispose déjà d’un visage de référence enregistré à partir d’une vérification approuvée.
- Le workflow par défaut de votre application.
AWAITING_USER produisent toujours une session exploitable dès leur activation : une étape d’authentification biométrique renforcée pour les utilisateurs déjà vérifiés, et une vérification complète dans les autres cas.
Les transactions Travel Rule sont exclues de ce mécanisme de repli automatique : leur attente AWAITING_USER concerne la preuve de propriété du portefeuille, qui suit son propre parcours.
La meilleure option pour les transactions à haut risque est un workflow Authentification biométrique. Le sujet étant l’utilisateur dont vous avez déjà vérifié l’identité via un KYC, Didit réutilise le visage de référence vérifié issu de son onboarding (le selfie approuvé avec détection du vivant, la photo de la puce du passeport ou le portrait du document). L’utilisateur n’a qu’à prendre un selfie en direct : Didit effectue alors une détection du vivant et une correspondance faciale 1:1 avec l’identité qui a ouvert le compte.
Les identifiants volés, les codes OTP obtenus par hameçonnage et les échanges de cartes SIM échouent tous à cette étape.
Parcours complet : biométrie renforcée pour un retrait de montant élevé.
Lorsque la session aboutit à une décision, la transaction suit automatiquement cette décision et un webhook transaction.status.updated est déclenché : une session approuvée approuve la transaction (decision_reason_code: user_action_approved), une session refusée refuse la transaction (user_action_declined), et une session qui se termine par un examen envoie la transaction en IN_REVIEW (user_action_in_review).
Une session expirée ou abandonnée maintient la transaction en AWAITING_USER.
Tout type de workflow, à l’exception du KYB, peut être utilisé comme action de remédiation.
Les workflows Authentification biométrique (et les workflows dans lesquels la correspondance faciale intervient avant la vérification d’identité) exigent en outre un visage de référence enregistré pour le sujet : un selfie approuvé avec détection du vivant, une photo de la puce du passeport, un portrait du document ou un visage du profil enregistré manuellement.
Si aucun visage de ce type n’existe, l’utilisateur est invité à effectuer à la place le workflow par défaut de votre application, qui enregistre aussi son visage pour la prochaine fois. Une note sur la transaction indique cette substitution.
La session n’est ignorée que si aucun workflow par défaut approprié n’existe non plus, et la note en explique alors la raison.
Notation
Lorsqu’une transaction correspond à une ou plusieurs règles, les scores sont combinés :- Chaque correspondance à une règle contribue au score de risque global de la transaction via l’action
add_score. - Le score final détermine le statut de la transaction selon les seuils de score de votre application.
- Si une règle comporte une action
change_status, ce statut est appliqué directement.DECLINEDprime toujours.
Créer des règles personnalisées
Les règles personnalisées peuvent être créées depuis la Console Business ou via l’API de gestion (également accessible depuis le Didit MCP et tout assistant IA connecté au MCP).- Console
- API
- Accédez à Transactions > Règles dans la console
- Cliquez sur Create Rule
- Définissez le titre, la description et la catégorie de la règle
- Définissez le mode :
Activepour une exécution en production, ouTestpour évaluer sans affecter les transactions - Choisissez le mode d’évaluation :
All(toutes les conditions doivent correspondre) ouAny(au moins une) - Définissez le périmètre : les types ou sens de transaction auxquels la règle s’applique
- Ajoutez des conditions : comparaisons de champs, comme des seuils de montant, des codes pays ou des contrôles de propriétés personnalisées
- Ajoutez éventuellement une agrégation : contrôles de vélocité sur une fenêtre temporelle (nombre, somme, nombre de valeurs distinctes, et plus encore)
- Définissez une ou plusieurs actions : ajouter un score, modifier le statut, ajouter des tags, ajouter des notes, ajouter à une liste ou ouvrir un dossier
- Enregistrez et activez la règle
Active prennent effet immédiatement pour toutes les nouvelles transactions. Les titres sont uniques par application.
Test rétrospectif
Avant d’activer une règle, vous pouvez la valider sur des données historiques :- Passez une règle en mode Test : elle est évaluée sur chaque nouvelle transaction, mais ses résultats n’affectent ni le statut ni le score de la transaction. Les statistiques d’exécution (nombre de correspondances, entités concernées) s’accumulent afin de mesurer l’impact avant la mise en production.
- Utilisez la fonctionnalité backtest : dans la console ou via
POST /v3/transactions/rules/backtest/, pour évaluer rétroactivement les conditions et l’agrégation d’une règle sur les transactions d’une période donnée. Le backtest renvoie le nombre de transactions évaluées et correspondantes, ainsi que les entités concernées, sans modifier aucune donnée historique. Envoyez les mêmesconditions,aggregation,evaluation_modeetscopeque la règle que vous prévoyez d’activer : un périmètre omis signifie aucune restriction, donc le backtest compterait des transactions que la règle enregistrée ignore.
Fenêtres de vélocité (agrégation)
Les règles de vélocité agrègent les données historiques de transactions sur une période donnée pour détecter des schémas que les contrôles portant sur une seule transaction manqueraient :
Chaque agrégation définit :
- Une fenêtre temporelle :
<N>m(minutes),<N>h(heures) ou<N>d(jours), par exemple30m,6h,7d,30d. Attention :mcorrespond à des minutes, et non à des mois. - Des filtres pour restreindre les transactions historiques incluses. Les clés sont des chemins de champs issus du catalogue des champs ; la valeur spéciale
"__current__"correspond à la valeur du même champ sur la transaction évaluée (par exemple"subject_vendor_data": "__current__"limite la fenêtre au même sujet), et une liste de valeurs signifie appartenance. Les filtres comparent uniquement par égalité ou par appartenance : il n’existe pas de filtrelt/gte, donc une plage comme transactions de moins de 10,000 ne peut pas être exprimée par un filtre. Placez plutôt la plage sur la métrique (maxinférieur à 10,000,minsupérieur à 1,000), et rappelez-vous qu’une condition porte sur la transaction évaluée, jamais sur la fenêtre. - Un opérateur et un seuil (
eq,ne,gt,gte,lt,ltepar rapport àvalue, par exemple count >= 20)
Exemples de schémas
Catalogue des champs
Les conditions et les filtres d’agrégation font référence aux champs de transaction par leur chemin :Opérateurs de condition
Les règles prennent en charge les opérateurs de comparaison suivants pour les conditions :
Tout autre opérateur exige une valeur
value non vide, et l’API répond 400 sans elle.
contains, not_contains et regex acceptent une seule chaîne, et non une liste ou un objet ; contains_any accepte une liste de chaînes.
Types de valeur de condition
Unvalue_type facultatif sur une condition modifie l’interprétation de value :
Conditions groupées
Une liste plate de conditions est combinée selon l’evaluation_mode de la règle (ALL/ANY). Pour une logique mixte, attribuez un group_index à chaque condition : les conditions qui partagent un même index forment un groupe, group_logic (AND/OR, par défaut AND) combine les conditions d’un groupe, et groups_logic sur la première condition (AND/OR, par défaut OR) combine les résultats des groupes. Lorsqu’une condition porte un group_index, l’évaluation groupée remplace evaluation_mode.
Référencer les propriétés personnalisées
Chaque clé envoyée dans l’objetcustom_properties de POST /v3/transactions/ est enregistrée sur la transaction sous la forme custom_values et peut être utilisée dans les conditions avec le chemin de champ custom_values.<key>. Par exemple, une transaction envoyée avec "custom_properties": {"channel": "mobile_app"} correspond à la condition custom_values.channel eq "mobile_app". Tous les opérateurs ci-dessus fonctionnent avec les propriétés personnalisées, qui peuvent aussi être comparées à d’autres champs ou utilisées dans des filtres de vélocité.
Dans le créateur de règles de la Console, les clés observées sur les transactions récemment ingérées apparaissent automatiquement dans le sélecteur de champs de condition, sous Propriétés personnalisées. Vous pouvez aussi référencer une clé avant qu’aucune transaction ne la porte : choisissez Saisir une propriété personnalisée dans le même groupe, puis saisissez la clé exactement comme votre intégration l’envoie (les clés sont sensibles à la casse). La règle est simplement évaluée comme non correspondante tant que des transactions portant cette clé n’arrivent pas.
Refus automatique par liste de blocage
Avant l’évaluation de toute règle, Didit vérifie les entités de la transaction par rapport aux listes de blocage de votre application. Si au moins une correspondance est trouvée, la transaction est immédiatement refusée : les règles ne sont pas évaluées. Les entités suivantes sont vérifiées :
Lorsqu’une correspondance avec une liste de blocage est trouvée :
- Le statut de la transaction est défini sur
DECLINED - Le motif de décision est défini sur
blocklisted - Un enregistrement d’activité est créé pour le suivi d’audit
Les vérifications des listes de blocage s’exécutent avant l’évaluation des règles. Une entité figurant sur une liste de blocage est toujours refusée, quelle que soit la configuration des règles ou les seuils de score.
Filtrage des transactions
Didit s’intègre à des fournisseurs externes d’analyse AML et blockchain pour enrichir les transactions avec des informations de risque. Lorsqu’une transaction est soumise, le système peut :- Filtrer les contreparties par rapport aux bases mondiales de sanctions et de listes de surveillance
- Évaluer les adresses de portefeuille (pour les transactions crypto) à partir des données d’analyse blockchain, y compris l’exposition à des mixeurs, les liens avec des entités sanctionnées et les interactions avec des services à haut risque
- Vérifier le statut AML du demandeur en comparant l’utilisateur lié à la transaction avec ses derniers résultats de filtrage AML
Prochaines étapes
Soumission de transactions
Comment les transactions sont structurées pour l’évaluation des règles.
Filtrage crypto
Résultats du filtrage crypto et utilisation qu’en font les règles prédéfinies.
Paramètres
Configurez les seuils de score et les workflows de remédiation.
Référence de l'API
Endpoint de l’API de création de transaction.