> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Liste des transferts Travel Rule (API)

> Listez vos transferts Travel Rule avec Didit : statut, rail, VASP, portefeuilles et mémos. Filtrez par sens, statut, rail ou contrepartie.



Prompt API pour lister les transferts Travel Rule
        Copier le prompt dans le presse-papiers



      
      

\<pre>

\`List my application's Travel Rule transfers.

Endpoint:
GET https://verification.didit.me/v3/travel-rule/transfers/

Authentication:
Use the x-api-key header with my Didit API key.

Query parameters (all optional; direction, status, rail and kind are case-sensitive and take comma-separated values to select several, while currency, start_date, end_date and counterparty take one value each):
\- direction - INBOUND, OUTBOUND (case-sensitive).
\- status - any transfer status, for example AWAITING_COUNTERPARTY or COUNTERPARTY_VASP_NOT_FOUND.
\- rail - INTERNAL, TRP, GTR, TRUST, VERIFYVASP, SYGNA, EMAIL, TEST_VASP.
\- kind - withdrawal (outbound), message (an inbound transfer a rail created from a counterparty's message: a TRP inquiry, the INTERNAL inbound leg, or a GTR, VerifyVASP or Sygna Bridge message), deposit (any other inbound transfer).
\- currency - the transaction's currency, case-insensitive.
\- start_date, end_date - YYYY-MM-DD, inclusive, on the transfer's creation day in UTC.
\- counterparty - the id of a directory entry or Didit network member from GET /v3/travel-rule/vasps/.
\- limit (default 50), offset.

What to read from each row:
\- id (the transfer), transaction_id, txn_id, txn_date, kind, direction, status, rail, asset, amount, deadline_at, created_at.
\- reason - why a COUNTERPARTY_VASP_NOT_FOUND or COUNTERPARTY_VASP_NOT_REACHABLE transfer is stuck, for example email_undeliverable or directory_match_no_route; empty for any other status.
\- originator_vasp, beneficiary_vasp - VASP names: my own legal name on my side; on the other side the directory entry, the Didit network member, the TRP sender, the Didit Test VASP in sandbox, or the name the transfer declared. Empty when none is known.
\- originator_wallet, beneficiary_wallet, originator_memo, beneficiary_memo, originator_wallet_type, beneficiary_wallet_type (vasp | self_hosted | own).
\- matched_transaction_id - the other side of a deposit matched by hand.
Rows never carry person data. For a transfer's full detail, read the transaction with GET /v3/transactions/{transaction_id}/.

Failure modes:
\- 400 - a filter value is not valid, for example {"direction": ["Unknown value(s): inbound."]}, {"start_date": ["Use the YYYY-MM-DD format."]} or {"counterparty": ["Use a valid id."]}.

Full guide: /transaction-monitoring/travel-rule.`

\</pre>



      
      

Coller dans



## OpenAPI

````yaml fr/openapi-25.json GET /v3/travel-rule/transfers/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API de vérification d'identité. Authentifiez-vous avec l'en-tête x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/travel-rule/transfers/:
    get:
      tags:
        - Travel Rule
      summary: Lister les transferts Travel Rule
      description: >-
        Les transferts Travel Rule de votre application, du plus récent au plus
        ancien, paginés avec `limit` (50 par défaut) et `offset`. Les lignes
        contiennent uniquement les noms de VASP, les portefeuilles et les mémos,
        jamais de données personnelles. Des valeurs séparées par des virgules
        permettent d'en sélectionner plusieurs. Une valeur inconnue renvoie 400
        en nommant le paramètre, par exemple `{"direction": ["Unknown value(s):
        inbound."]}`.
      operationId: listTravelRuleTransfers
      parameters:
        - name: direction
          in: query
          required: false
          schema:
            type: string
          description: >-
            INBOUND, OUTBOUND, ou les deux séparés par une virgule. Sensible à
            la casse.
        - name: status
          in: query
          required: false
          schema:
            type: string
          description: Un ou plusieurs statuts de transfert, séparés par des virgules.
        - name: rail
          in: query
          required: false
          schema:
            type: string
          description: >-
            Un ou plusieurs parmi INTERNAL, TRP, GTR, TRUST, VERIFYVASP, SYGNA,
            EMAIL, TEST_VASP, séparés par des virgules.
        - name: kind
          in: query
          required: false
          schema:
            type: string
          description: withdrawal, deposit ou message, séparés par des virgules.
        - name: currency
          in: query
          required: false
          schema:
            type: string
          description: La devise de la transaction, insensible à la casse.
        - name: start_date
          in: query
          required: false
          schema:
            type: string
            format: date
          description: Transferts créés à cette date ou après (UTC), YYYY-MM-DD.
        - name: end_date
          in: query
          required: false
          schema:
            type: string
            format: date
          description: Transferts créés à cette date ou avant (UTC), YYYY-MM-DD.
        - name: counterparty
          in: query
          required: false
          schema:
            type: string
            format: uuid
          description: >-
            L'`id` d'une entrée d'annuaire ou d'un membre du réseau Didit
            provenant de GET /v3/travel-rule/vasps/ : vos transferts avec cette
            contrepartie. Une valeur qui n'est pas un identifiant valide renvoie
            une réponse 400.
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
          description: Taille de page, 50 par défaut.
        - name: offset
          in: query
          required: false
          schema:
            type: integer
            minimum: 0
          description: Lignes à ignorer.
      responses:
        '200':
          description: Une page de transferts.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                  next:
                    type: string
                    nullable: true
                  previous:
                    type: string
                    nullable: true
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/TravelRuleTransferRow'
              example:
                count: 1
                next: null
                previous: null
                results:
                  - id: 5b0f6c2e-2a4d-4f0e-9a41-0c3f9a7e1d22
                    transaction_id: a3c1e8f4-7b62-4d1a-8e0b-2f9d6c4b7a10
                    txn_id: wd-2026-10-19-0042
                    txn_date: '2026-10-19T08:41:12Z'
                    kind: withdrawal
                    direction: OUTBOUND
                    status: AWAITING_COUNTERPARTY
                    rail: TRP
                    asset: ETH
                    amount: '1.25'
                    originator_vasp: Origin CASP SL
                    beneficiary_vasp: Example Counterparty VASP
                    originator_wallet: '0x77ccff0cc624a53cd8b8d8703ced826710211ec7'
                    beneficiary_wallet: '0xede2d7e4f5b097e6391ab6bbcf2f47a53f4778cb'
                    originator_memo: ''
                    beneficiary_memo: ''
                    originator_wallet_type: vasp
                    beneficiary_wallet_type: vasp
                    matched_transaction_id: null
                    deadline_at: '2026-10-21T08:41:13Z'
                    created_at: '2026-10-19T08:41:13Z'
        '400':
          description: Une valeur de filtre n'est pas valide.
          content:
            application/json:
              example:
                start_date:
                  - Use the YYYY-MM-DD format.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X GET
            'https://verification.didit.me/v3/travel-rule/transfers/?direction=OUTBOUND&status=AWAITING_COUNTERPARTY'
            \
              -H 'x-api-key: YOUR_API_KEY'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            for item in client.travel_rule.transfers.list():
                print(item)
        - lang: javascript
          label: Node.js
          source: |-
            import Didit from "@didit-protocol/sdk-node";

            // Reads DIDIT_API_KEY.
            const didit = new Didit();

            for await (const item of didit.travelRule.transfers.list()) {
              console.log(item);
            }
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.TravelRule.Transfers.ListAutoPaging(ctx, didit.TravelRuleTransfersListParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
        - lang: java
          label: Java
          source: |-
            import me.didit.Didit;

            // Reads DIDIT_API_KEY.
            Didit client = new Didit();

            for (var item : client.travelRule().transfers().list()) {
                System.out.println(item);
            }
        - lang: php
          label: PHP
          source: |-
            <?php

            require 'vendor/autoload.php';

            use Didit\DiditClient;

            // Reads DIDIT_API_KEY.
            $didit = new DiditClient();

            foreach ($didit->travelRule->transfers->list() as $item) {
                print_r($item->toArray());
            }
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

            # Reads DIDIT_API_KEY.
            didit = Didit::Client.new

            didit.travel_rule.transfers.list.auto_paging_each do |item|
              puts item.to_h
            end
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY.

            using var client = new DiditClient();


            await foreach (var item in await
            client.TravelRule.Transfers.ListAsync())

            {
                Console.WriteLine(JsonSerializer.Serialize(item));
            }
components:
  schemas:
    TravelRuleTransferRow:
      type: object
      description: >-
        Un transfert Travel Rule tel que la liste des transferts l'affiche :
        noms des VASP, portefeuilles et mémos uniquement, jamais les données
        personnelles du donneur d'ordre ou du bénéficiaire.
      properties:
        id:
          type: string
          format: uuid
          description: L'identifiant du transfert.
        transaction_id:
          type: string
          format: uuid
          description: La transaction Didit à laquelle appartient le transfert.
        txn_id:
          type: string
          nullable: true
          description: >-
            Votre propre identifiant pour la transaction. Les transferts que
            Didit enregistre pour vous, comme un transfert entrant Didit Test
            VASP, en portent un généré automatiquement.
        txn_date:
          type: string
          format: date-time
        kind:
          type: string
          enum:
            - withdrawal
            - deposit
            - message
          description: "withdrawal\_: sortant. message\_: un transfert entrant qu'un canal a créé à partir du message d'une contrepartie (une demande TRP, la partie entrante INTERNAL, ou un message GTR, VerifyVASP ou Sygna Bridge). deposit\_: tout autre transfert entrant."
        direction:
          type: string
          enum:
            - INBOUND
            - OUTBOUND
        status:
          type: string
          enum:
            - 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
        reason:
          type: string
          description: >-
            Raison pour laquelle un transfert `COUNTERPARTY_VASP_NOT_FOUND` ou
            `COUNTERPARTY_VASP_NOT_REACHABLE` est bloqué, identique à la valeur
            `reason` du transfert lui-même, afin que la liste permette de
            distinguer un e-mail de conformité rejeté d'une contrepartie sans
            routage sans avoir à ouvrir chaque transfert. `""` pour tout autre
            statut. Voir [Pourquoi un transfert est
            bloqué](/fr/transaction-monitoring/travel-rule#pourquoi-un-transfert-est-bloqué).
        rail:
          type: string
          nullable: true
          enum:
            - INTERNAL
            - TRP
            - GTR
            - TRUST
            - VERIFYVASP
            - SYGNA
            - EMAIL
            - TEST_VASP
            - null
        asset:
          type: string
          description: La devise de la transaction.
        amount:
          type: string
          description: Le montant sous forme décimale simple, par exemple "1.25".
        originator_vasp:
          type: string
          description: >-
            Sortant : la dénomination sociale de votre VASP. Entrant : le nom de
            la contrepartie, issu de son entrée dans l'annuaire, du membre du
            réseau Didit, de l'expéditeur TRP, du VASP de test Didit ou du nom
            déclaré par le transfert. Vide si aucun n'est connu.
        beneficiary_vasp:
          type: string
          description: >-
            Sortant : le nom de la contrepartie, déterminé de la même façon.
            Entrant : la dénomination sociale de votre VASP.
        originator_wallet:
          type: string
        beneficiary_wallet:
          type: string
        originator_memo:
          type: string
          description: >-
            Mémo ou balise de destination, vide sur les blockchains qui n'en ont
            pas.
        beneficiary_memo:
          type: string
        originator_wallet_type:
          type: string
          enum:
            - vasp
            - self_hosted
            - own
          description: >-
            vasp, self_hosted (déclaré non hébergé) ou own (un portefeuille que
            votre carnet d'adresses enregistre comme le vôtre). Votre propre
            côté est toujours vasp.
        beneficiary_wallet_type:
          type: string
          enum:
            - vasp
            - self_hosted
            - own
        matched_transaction_id:
          type: string
          format: uuid
          nullable: true
          description: >-
            L'autre contrepartie d'un dépôt que vous avez associé manuellement à
            un transfert annoncé.
        deadline_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Date et heure auxquelles le transfert expire s'il est toujours en
            attente de sa contrepartie. Défini sur chaque transfert créé avec
            `POST /v3/transactions/` nécessitant un échange, sortant ou entrant.
            Vaut null en dessous du seuil, sur un paiement Lightning auquel la
            Travel Rule ne s'applique pas, et sur les transferts entrants que
            Didit crée lorsqu'une contrepartie vous contacte (une demande TRP
            entrante, un message réseau ou la branche entrante INTERNAL).
        created_at:
          type: string
          format: date-time
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        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.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.