Passer au contenu principal
Soumettez des transactions à Didit via l’API Créer une transaction. Chaque transaction comprend des données structurées sur les parties, le paiement et le contexte, que le moteur de règles évalue en temps réel.
Lorsque la transaction provient de l’appareil d’un utilisateur final – par exemple un retrait de cryptomonnaie ou un paiement dans l’application –, envisagez la soumission de transaction via le SDK : un token limité remplace la clé API, les données de l’appareil sont collectées automatiquement, et les actions requises de l’utilisateur (preuve de propriété du portefeuille, vérification renforcée) se lancent immédiatement.

Catégories de transactions

Chaque transaction possède un transaction_category qui détermine la manière dont les règles et les analyses la traitent :

Détails de la transaction

L’objet transaction_details contient les données financières :

Sujet et contrepartie

Chaque transaction a un sujet (obligatoire) et une contrepartie (facultative). Les deux utilisent le même modèle de partie : Didit déduit le country_code de la partie à partir de address.country lorsque address est un objet. Lorsque address est une chaîne, country_code est renvoyé null pour cette partie. Lorsque vendor_data correspond à un utilisateur existant ou à une entreprise existante, Didit relie automatiquement la transaction au profil de cette entité, ce qui permet l’évaluation des règles entre sessions et les contrôles de vélocité. Dans la réponse, les deux parties sont renvoyées dans le tableau parties, avec les rôles APPLICANT et COUNTERPARTY.

Moyens de paiement

Associez un payment_method à chaque partie pour décrire l’instrument de ce côté : Sur les transactions travelRule, un moyen de paiement de contrepartie avec method_type: "unhosted_wallet" (alias type) déclare le portefeuille de la contrepartie comme auto-hébergé. Lorsque Travel Rule est activée et que le montant, exprimé dans la devise par défaut de votre application, n’est pas inférieur à threshold_amount, le transfert passe directement à UNCONFIRMED_OWNERSHIP et au flux de preuve de propriété – voir Portefeuilles auto-hébergés déclarés. Pour les transactions crypto, incluez les adresses de portefeuille dans account_id et définissez currency_kind sur crypto afin que le filtrage blockchain puisse s’exécuter automatiquement. Le sens de la transaction détermine le portefeuille filtré : le filtrage entrant avant transfert utilise le portefeuille de l’expéditeur dans counterparty.payment_method.account_id ; le filtrage sortant utilise le portefeuille de destination dans counterparty.payment_method.account_id. Si vous envoyez un hash blockchain dans transaction_details.payment_reference_id, le filtrage de transaction entrante exige l’adresse de dépôt de votre service dans subject.payment_method.account_id, tandis que le filtrage de transaction sortante exige le portefeuille de destination dans counterparty.payment_method.account_id.

Remplacement du filtrage crypto

Utilisez include_crypto_screening au niveau racine de la requête pour remplacer la valeur par défaut configurée dans Transactions > Paramètres de la Console :

Contexte de l’appareil

Incluez les informations sur l’appareil pour la partie sujet (et, facultativement, pour la contrepartie) afin d’alimenter les règles d’intelligence sur l’appareil. Le champ de requête est device_context sur chaque partie. L’alias en camelCase device est également accepté et c’est celui qu’utilise le format filaire du SDK. La réponse le renvoie sous la forme device sur chaque partie, dans le tableau parties.
browser_family et platform ne sont pas déduits de user_agent. Ils doivent être envoyés comme clés de premier niveau explicites dans device_context pour que les règles d’intelligence sur l’appareil se déclenchent. Si vous utilisez le SDK Didit, ces champs sont collectés automatiquement.
Les alias en CamelCase sont acceptés pour chaque champ : userAgent, browserFamily, browserVersion, osFamily, osVersion, acceptLang, sessionId, sessionAgeMs. L’objet network_context accepte les alias ip, countryCode3, lat et lon, et un bloc ipInfo de premier niveau est également intégré à network_context. Le contexte de l’appareil permet d’appliquer des règles comme la détection de multicomptes (même empreinte pour des sujets différents), la détection de la combinaison d’un nouveau navigateur et d’une nouvelle IP, le transfert à forte valeur avec un âge de session faible et la notation de risque fondée sur la localisation.

Propriétés personnalisées

Ajoutez toutes les paires clé-valeur supplémentaires dans l’objet custom_properties. Les règles peuvent référencer ces champs dans leurs conditions. C’est utile pour transmettre un contexte propre à votre activité, comme la catégorie de produit, l’identifiant du marchand ou le canal.
Dans les conditions de règle, référencez chaque clé avec le chemin de champ custom_values.<key>. Par exemple, le payload ci-dessus correspond à custom_values.product_category eq "electronics". Dans le constructeur de règles de la Console, les clés vues sur les transactions ingérées récemment apparaissent dans le sélecteur de champs de condition sous Propriétés personnalisées. Dans le même groupe, Saisir une propriété personnalisée vous permet de saisir manuellement n’importe quelle clé (sensible à la casse). Voir Règles et notation pour plus de détails.

Exemple de requête

Réponse

L’API renvoie la transaction créée avec ses résultats d’évaluation initiaux : Consultez la Référence de l’API pour le schéma complet de la requête et de la réponse, et la référence du schéma de réponse pour un exemple de charge utile annoté, pas à pas.

Assigner une transaction à un réviseur

Assignez une transaction en attente à un membre de votre application, ou retirez-lui son assignation, avec une clé API disposant du privilège write:transactions. Chaque modification est enregistrée dans l’historique de la transaction sous la forme TRANSACTION_ASSIGNED. Les deux appels prennent assignee_email, l’adresse e-mail d’un membre de l’application qui s’est connecté à Didit. Envoyez null ou une chaîne vide pour retirer l’assignation. L’appel groupé prend aussi transaction_ids, une liste de 1 à 500 UUID de transactions.
L’appel unique renvoie uuid, transaction_number, assignee et changed (false lorsque la transaction était déjà assignée à ce membre), ou 404 lorsque la transaction n’existe pas dans l’application. L’appel groupé renvoie transactions (une entrée au format ci-dessus), updated_count et not_found_transaction_ids. Filtrez la liste des transactions avec assignee, une liste séparée par des virgules dont une valeur peut correspondre : me, unassigned, rules (décidée uniquement par les règles, sans intervention d’un réviseur) ou une adresse e-mail de membre.

Idempotence

txn_id (le transaction_id que vous envoyez) est unique par application. Soumettre à nouveau un transaction_id déjà existant renvoie un 400 avec A transaction with this transaction_id already exists. sur le champ transaction_id, et deux requêtes identiques envoyées en parallèle donnent un 409 à la seconde. Aucune de ces réponses ne renvoie la transaction existante. Pour réessayer en toute sécurité, traitez un 400 ou un 409 pour un transaction_id en double comme « déjà créée » et recherchez la transaction existante au lieu de la soumettre à nouveau : lisez-la avec GET /v3/transactions/{uuid}/ en utilisant le uuid de la première réponse, ou utilisez le transaction_id (l’uuid Didit) que le webhook transaction.created transmet à côté de votre txn_id. Générez toujours le txn_id de votre côté (par exemple l’identifiant de votre base de données de transactions, un UUID ou un hash déterministe).

Reprise historique

Transmettez un txn_date antérieur pour ingérer des transactions historiques. Les règles sont tout de même évaluées par défaut. Utilisez l’import CSV depuis la console avec le mode d’ingestion à blanc (dry-ingest) si vous souhaitez ignorer l’évaluation des règles lors de chargements historiques en masse. Voir le guide d’intégration.

Étapes suivantes

Règles et notation

Comment les transactions soumises sont évaluées par rapport aux règles.

Schéma de la réponse

Payload de réponse complet et annoté.

Filtrage crypto

Filtrage automatique des portefeuilles et des transactions pour les transactions crypto.

Travel Rule

Joignez les données de conformité Travel Rule aux transferts d’actifs virtuels.

Enrichissement IP

Contexte dérivé de l’IP disponible pour les règles.

Référence de l'API

Schéma complet de la requête pour l’endpoint de création de transaction.
Dernière modification le 7 novembre 2026