Passer au contenu principal
PATCH
curl

Autorisations

x-api-key
string
header
requis

La clé API de votre application, issue de Développeurs -> Clés API dans la Business Console. La clé principale dispose d'un accès complet. Une clé nommée peut être restreinte : aucun, lecture ou écriture par ressource, limitée à certains workflows ou aux sessions approuvées, à une liste d'adresses IP et à une date d'expiration. 401 signifie que la clé est incorrecte, révoquée ou expirée ; 403 signifie qu'aucune clé n'a été envoyée, que la clé n'a pas accès à cette ressource ou action, ou que la requête provient d'une adresse hors de sa liste d'IP ; 404 sur une route de session signifie que la session est hors des workflows ou des statuts de la clé. Une clé sans accès aux médias reçoit les URL d'images, de vidéos et de PDF à null, et une clé sans accès en écriture aux sessions reçoit les liens et tokens de session à null. Voir https://docs.didit.me/console/api-keys.

Paramètres de chemin

transaction_id
string<uuid>
requis

UUID de transaction stable attribué par Didit propriétaire du transfert.

Corps

application/json

Fournissez exactement un des éléments suivants : payment_txn_id (finish), action=cancel, action=resend, action=update_compliance_email avec compliance_email, action=update_originator_wallet avec wallet_address, ou action=beneficiary_vasp avec beneficiary_vasp.

payment_txn_id
string

Le hash de la transaction on-chain. Nécessite que le transfert soit un transfert sortant au statut COMPLETED.

action
enum<string>

"cancel" annule un transfert non terminal. "resend" réexécute le routage pour un transfert sortant bloqué dans COUNTERPARTY_VASP_NOT_FOUND, COUNTERPARTY_VASP_NOT_REACHABLE ou NOT_ENOUGH_COUNTERPARTY_DATA. "update_compliance_email" remplace l'e-mail de conformité auquel la requête est envoyée, sur un transfert sortant dans l'un de ces trois statuts ; envoyez "resend" par la suite. "update_originator_wallet" enregistre le portefeuille depuis lequel les fonds sont réellement partis (wallet_address, memo). "beneficiary_vasp" vous permet d'indiquer vous-même le VASP de contrepartie (requiert beneficiary_vasp) pour un transfert sortant dans l'un de ces statuts : il est routé vers ce VASP et envoyé à nouveau.

Options disponibles:
cancel,
resend,
update_compliance_email,
update_originator_wallet,
beneficiary_vasp
compliance_email
string<email>

Requis avec action: update_compliance_email. Conservé comme beneficiary_data.counterparty_vasp_email de ce transfert : il appartient uniquement à ce transfert et n'est associé à aucune entrée d'annuaire ni à aucune liste de contacts.

Maximum string length: 254
wallet_address
string

Avec action: update_originator_wallet : le portefeuille depuis lequel les fonds sont partis. Lorsque les entrées UTXO du transfert sont connues, il doit s'agir de l'une d'entre elles.

Maximum string length: 128
memo
string

Avec action: update_originator_wallet : le mémo ou tag du portefeuille sur un réseau à mémos. Facultatif.

Maximum string length: 256
beneficiary_vasp
string<uuid>

Requis avec action=beneficiary_vasp : l'id d'un VASP de l'annuaire, issu de GET /v3/travel-rule/vasps/. Votre choix prévaut sur chaque étape de découverte automatique, qui ne l'écrase jamais.

Réponse

Le transfert mis à jour. Après update_compliance_email, son statut reste inchangé et conserve reason: email_undeliverable jusqu'au prochain resend.

Objet de transfert complet renvoyé par les endpoints de confirmation d'actionnariat et de finalisation/annulation. Tant que l'actionnariat du portefeuille d'un transfert entrant n'est pas confirmé, les champs originator_data et beneficiary_data de la contrepartie sont renvoyés masqués (la première lettre de chaque mot est conservée ; le portefeuille, la blockchain et le routage VASP restent lisibles) et data_masked est à true.

uuid
string<uuid>
status
enum<string>
Options disponibles:
AWAITING_COUNTERPARTY,
ON_HOLD,
COMPLETED,
FINISHED,
CANCELLED,
EXPIRED,
COUNTERPARTY_MISMATCHED_DATA,
COUNTERPARTY_VASP_NOT_FOUND,
COUNTERPARTY_VASP_NOT_REACHABLE,
UNCONFIRMED_OWNERSHIP,
COUNTERPARTY_VASP_GENERAL_DECLINE,
NOT_ENOUGH_COUNTERPARTY_DATA,
NOT_APPLICABLE
direction
enum<string>
Options disponibles:
INBOUND,
OUTBOUND
rail
enum<string> | null

Le réseau sur lequel le transfert a été acheminé, ou null lorsqu'aucun réseau n'a été sélectionné (par exemple en dessous du seuil, un portefeuille de contrepartie auto-hébergé, un enregistrement après dépôt ou aucune contrepartie joignable). INTERNAL signifie que les deux parties sont des applications Didit ; EMAIL signifie que la contrepartie a été jointe via un lien de récupération envoyé par e-mail. TEST_VASP signifie que le VASP de test Didit a répondu au transfert sandbox. Sur GTR, VERIFYVASP et SYGNA, Didit lit la réponse de la contrepartie à partir de la réponse du réseau ou en l'interrogeant toutes les 5 minutes. TRUST effectue uniquement des envois, de sorte qu'un transfert TRUST reste à l'état AWAITING_COUNTERPARTY jusqu'à son expiration. Un canal de réseau n'est utilisé que si vous avez connecté votre propre adhésion à ce réseau. Il est choisi après le retour de la création de la transaction, il est donc null dans cette réponse.

Options disponibles:
INTERNAL,
TRP,
GTR,
TRUST,
VERIFYVASP,
SYGNA,
EMAIL,
TEST_VASP,
null
protocol
string | null
ivms_version
string
Exemple:

"ivms101.2023"

required
boolean
ownership_confirmed
boolean | null
deadline_at
string<date-time> | null
timeline
object[]
counterparty_vasp
object | null
originator_data
object

Partie du donneur d'ordre. Pour un transfert entrant, les valeurs de la contrepartie sont masquées jusqu'à ce que l'actionnariat soit confirmé.

beneficiary_data
object

Partie bénéficiaire. Pour un transfert entrant, les valeurs de la contrepartie sont masquées jusqu'à confirmation de la propriété.

name_match
object · null · null

La comparaison de noms qui a déterminé le transfert, ou null tant qu'aucune n'a été exécutée. Lorsque les parties sont masquées, ainsi que sur la copie de l'autre client d'un échange INTERNAL, transfer_name, compared_name, matched_names et mismatched_names sont masqués. score et matched peuvent différer : matched suit le niveau d'exigence, score correspond à la similarité entre les deux noms complets.

data_match
object | null

Comparaison champ par champ des données des parties au transfert avec ce que l'autre partie sait du détenteur du portefeuille. Elle nomme les champs et les résultats, jamais les valeurs, afin de rester lisible pendant que les données de la contrepartie sont masquées. Null jusqu'à ce qu'une comparaison ait été exécutée.

mismatched_fields
string[]

Raccourci pour data_match.mismatched_fields. Vide lorsque rien ne diffère.

data_unmasked
object | null

Enregistrement d'audit du moment où les données de la contrepartie ont été démasquées. Null tant que les données sont encore masquées, ainsi que pour les transferts sortants.

data_masked
boolean

Vrai tant que les données personnelles de la contrepartie sont masquées dans cette réponse.

created_at
string<date-time>
delivery
object | null

État d'acheminement du dernier message que ce transfert doit à l'autre partie. Vaut null lorsque le transfert n'a jamais dû en envoyer un (par exemple en dessous de threshold_amount, pour un portefeuille auto-hébergé déclaré ou un enregistrement sunrise).

discovery
object[]

Manière dont Didit a recherché la contrepartie, une entrée par étape exécutée. Vide lorsqu'aucune recherche n'a été effectuée, par exemple lors d'un transfert entrant.

reason
string

Raison pour laquelle un transfert COUNTERPARTY_VASP_NOT_FOUND ou COUNTERPARTY_VASP_NOT_REACHABLE est bloqué ; "" pour tout autre statut. Un échec de livraison la détermine en premier, sur COUNTERPARTY_VASP_NOT_REACHABLE uniquement : email_undeliverable (le fournisseur de messagerie a refusé l'e-mail de conformité et il ne reste aucune adresse à essayer : lors de son envoi, lors d'un rappel ou sous la forme d'un rejet permanent signalé ultérieurement) ou delivery_failed (le canal assurant la livraison a définitivement échoué : un canal réseau a refusé le message ou a épuisé ses tentatives, un hôte d'identité TRP n'a pas répondu, ou l'hôte TRP de la contrepartie n'a pas accepté la demande). Sinon, la trace discovery la détermine : awaiting_end_user (aucune étape n'a désigné de contrepartie que Didit peut joindre), directory_match_no_route (une étape a désigné un VASP de l'annuaire qui ne dispose d'aucun routage), picked_member_without_proven_wallet (l'utilisateur final a choisi un client Didit qui n'a pas prouvé le contrôle du portefeuille) ou no_directory_match lorsque la trace ne donne aucune autre raison. Un nouvel envoi fait progresser le transfert, ce qui efface le motif. Voir Pourquoi un transfert est bloqué.

next_actions
object[]

Ce qui permet de faire avancer le transfert ; [] pour tout statut autre que COUNTERPARTY_VASP_NOT_FOUND ou COUNTERPARTY_VASP_NOT_REACHABLE. email_undeliverable propose update_compliance_email, puis resend. delivery_failed propose resend. Un motif lié à la découverte propose select_counterparty_vasp, declare_self_hosted, add_vasp_hint et resend.

chain_details
object

Manière dont la blockchain du transfert nomme ses deux portefeuilles, lorsque plus d'une adresse en paie une autre. Vide ({}) pour un transfert sur une blockchain basée sur des comptes (EVM, Solana, Tron), où les deux adresses sont les portefeuilles. La correspondance, le routage et le carnet d'adresses lisent d'abord les portefeuilles ici.

Dernière modification le 7 novembre 2026