> ## 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.

# Transaktionen auflisten: API für Transaktionsüberwachung

> Rufen Sie überwachte Didit-Transaktionen mit Risiko-Scores, Schweregrad, Gegenparteien, Tags und Screening-Status ab. KYT pro Aufruf, ohne Verträge.



Prompt für die API zum Auflisten von Transaktionen
        Prompt in die Zwischenablage kopieren



      
      

\<pre>

\`List monitored transactions for my Didit application through the Management API.

Endpoint:
GET https://verification.didit.me/v3/transactions/

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

Goal:
\- Retrieve a paginated list of high-level transaction summaries (score, severity, status, parties, tags, decision metadata) — suitable for back-office review screens, fraud dashboards, and audit exports.

Query parameters:
\- limit - page size (default 50, min 1).
\- offset — zero-based offset (default 0). Prefer following the next URL from the previous page.

Ordering & pagination:
\- Ordered by txn_date descending (most recent first), with created_at as a tie-breaker.
\- count is a bounded counter (exact up to 100, capped above). Use total_transactions when present for the true count.
\- Transactions deleted via the Console are not returned.

Filtering:
\- Besides limit / offset, this endpoint accepts travel_rule_status, an exact Travel Rule status (for example ON_HOLD), and then returns only transactions whose Travel Rule transfer is in that status.
count follows this filter, but total_transactions always counts every transaction in the application.
\- It also accepts assignee, a comma-separated list where any value matches: me (the calling reviewer, with a user token), unassigned, rules (decided by the rules alone, no reviewer involved), or a member email.
\- For other filtering (party, status, severity, date range), use the Console UI.

Example call:
curl -X GET "https://verification.didit.me/v3/transactions/?limit=50" \
-H "x-api-key: YOUR_API_KEY"

What to read from each row:
\- uuid — stable Didit transaction id; use as {transaction_id} in GET /v3/transactions/{transaction_id}/.
\- transaction_number — application-scoped sequential number shown in Console.
\- txn_id — the identifier you supplied at create time (max 128 chars, unique per application).
\- status, score, severity, decision_reason_code, decision_reason_label — live monitoring verdict.
\- direction, amount, currency — raw submission. amount is a decimal string.
\- subject_name / subject_vendor_data / subject_country — denormalized APPLICANT party fields.
\- counterparty_name / counterparty_vendor_data / counterparty_country — denormalized COUNTERPARTY fields (may be null).
\- tags — Console tags (uuid, name, color).
\- assigned_to_name — Console reviewer who owns the transaction.
\- travel_rule_status - the status of the transaction's Travel Rule transfer (for example COMPLETED), or null when it has none.
\- travel_rule - the same Travel Rule block as GET /v3/transactions/{transaction_id}/ (status, direction, rail, counterparty_vasp, delivery, discovery, reason, next_actions and the rest), or null when the transaction has none.
Read reason and next_actions to see why each COUNTERPARTY_VASP_NOT_FOUND or COUNTERPARTY_VASP_NOT_REACHABLE transfer is stuck without one read per transaction.

Failure modes:
\- 403 - missing x-api-key (a wrong, revoked or expired key gets 401), or a key without permission for this action; the body is a { "detail": "..." } envelope.
\- 429 — rate limited; back off and retry.

Side effects: none. This is a pure read.

For the full integration shape, see /integration/integration-prompt.`

\</pre>



      
      

Einfügen in



## OpenAPI

````yaml de/openapi-25.json GET /v3/transactions/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API für Ausweisverifizierung. Authentifizierung über den x-api-key-Header.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/transactions/:
    get:
      tags:
        - Transactions
      summary: Transaktionen auflisten
      description: >-
        Paginierte Liste der überwachten Transaktionen, die neuesten zuerst
        (`txn_date` absteigend). `count` ist auf 100 gedeckelt; verwenden Sie
        `total_transactions` für die tatsächliche Zeilenanzahl. Dieser Endpoint
        unterstützt keine Filter- oder Suchparameter.
      operationId: listTransactions
      parameters:
        - name: limit
          in: query
          schema:
            type: integer
            default: 50
            minimum: 1
            maximum: 1000000
          description: >-
            Seitengröße. Standardmäßig 50, wenn nicht angegeben. Es gibt kein
            festes Maximum, aber halten Sie die Seiten klein, um die Latenz
            gering zu halten.
        - name: offset
          in: query
          schema:
            type: integer
            maximum: 1000000
            minimum: 0
            default: 0
          description: >-
            Nullbasierter Offset des ersten zurückzugebenden Datensatzes. Folgen
            Sie vorzugsweise der `next`-URL der vorherigen Seite.
        - name: travel_rule_status
          in: query
          required: false
          schema:
            type: string
          description: >-
            Gibt nur Transaktionen zurück, deren Transfer gemäß der Travel Rule
            sich in genau diesem Status befindet (z. B. `ON_HOLD` oder
            `AWAITING_COUNTERPARTY`). `count` richtet sich nach diesem Filter;
            `total_transactions` zählt weiterhin jede Transaktion in der
            Anwendung.
        - name: assignee
          in: query
          required: false
          schema:
            type: string
          description: >-
            Kommagetrennt; eine Transaktion stimmt überein, wenn sie mindestens
            einem Wert entspricht. `unassigned` steht für Fälle, die noch
            niemandem zugewiesen sind, `rules` steht für Entscheidungen, die
            Regeln eigenständig ohne Prüfer getroffen haben, und eine
            Mitglieds-E-Mail entspricht dem zugewiesenen Prüfer. `me` ist der
            angemeldete Console-Prüfer, sodass ein API-Schlüssel, der `me`
            sendet, `400` erhält.
      responses:
        '200':
          description: >-
            Paginierte Liste von Transaktionszusammenfassungen, die neuesten
            zuerst.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                    description: >-
                      Gedeckelte Anzahl übereinstimmender Transaktionen (exakt
                      bis 100, danach gedeckelt). Verwenden Sie
                      `total_transactions` für die tatsächliche Anzahl bei
                      Paginierung.
                  next:
                    type: string
                    nullable: true
                    description: >-
                      Absolute URL der nächsten Seite oder `null` auf der
                      letzten Seite.
                  previous:
                    type: string
                    nullable: true
                    description: >-
                      Absolute URL der vorherigen Seite oder `null` auf der
                      ersten Seite.
                  total_transactions:
                    type: integer
                    description: >-
                      Exakte Gesamtzahl der (nicht gelöschten) Transaktionen für
                      die Anwendung. In paginierten Antworten enthalten.
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                          format: uuid
                          description: >-
                            Stabiler Didit-Transaktionsidentifikator. Als
                            `{transaction_id}` in Aufrufen für Details, Notizen
                            und verwandte Ressourcen verwenden.
                        transaction_number:
                          type: integer
                          description: >-
                            Fortlaufende Transaktionsnummer innerhalb der
                            Anwendung, wie in der Console angezeigt (z. B.
                            `4123`).
                        txn_id:
                          type: string
                          description: >-
                            Vom Kunden bereitgestellter Bezeichner aus dem
                            Erstellungsaufruf (max. 128 Zeichen). Eindeutig pro
                            Anwendung.
                        transaction_type:
                          type: string
                          description: >-
                            Kategorie auf oberster Ebene wie gespeichert:
                            `finance`, `kyc`, `travelRule`, `userPlatformEvent`,
                            `gamblingBet`, `gamblingLimitChange`,
                            `gamblingBonusChange`, `auditTrailEvent`. Beachten
                            Sie, dass mehrteilige Werte in camelCase
                            zurückgegeben werden, selbst wenn sie in snake_case
                            übermittelt wurden.
                        action_type:
                          type: string
                          description: >-
                            Untertyp innerhalb der Kategorie (z. B. `deposit`,
                            `withdrawal`, `transfer`).
                        status:
                          type: string
                          enum:
                            - APPROVED
                            - IN_REVIEW
                            - DECLINED
                            - AWAITING_USER
                          description: Aktuelles Überwachungsergebnis.
                        direction:
                          type: string
                          enum:
                            - INBOUND
                            - OUTBOUND
                          description: >-
                            Richtung relativ zur betreffenden Entität. Wird
                            unabhängig von der übermittelten Schreibweise in
                            Großbuchstaben gespeichert.
                        amount:
                          type: string
                          description: >-
                            Transaktionsbetrag als Dezimalstring ohne
                            nachgestellte Nullen (z. B. `"1500"`, `"0.5"`,
                            `"0.123456789012345678"`). Bis zu 18 Dezimalstellen.
                        currency:
                          type: string
                          description: >-
                            Währungscode von `amount`. Jeder alphabetische
                            ISO-4217-Code wird akzeptiert (z. B. `EUR`, `USD`,
                            `NGN`), ebenso wie ein Krypto-Asset-Symbol (z. B.
                            `BTC`). Bevorzugen Sie einen aktuell im Umlauf
                            befindlichen Code. Nicht jeder akzeptierte Code
                            verfügt über einen Wechselkurs: Wenn für den Code
                            keiner verfügbar ist (beispielsweise die
                            ISO-Verrechnungseinheit `XSU` oder ein
                            Krypto-Symbol, für das Didit keine Kurse
                            bereitstellt), schlägt die automatische
                            Konvertierung fehl und `preferred_currency_amount`
                            wird als null zurückgegeben, es sei denn, die
                            Anfrage enthielt einen vorkonvertierten Wert für
                            `amount_in_default_currency`.
                        preferred_currency_amount:
                          type: string
                          nullable: true
                          description: >-
                            `amount` umgerechnet in die bevorzugte Währung der
                            Anwendung, sofern verfügbar.
                        preferred_currency_code:
                          type: string
                          nullable: true
                          description: >-
                            Bevorzugter Währungscode für
                            `preferred_currency_amount` – die Basiswährung der
                            Anwendung, jeder aktuell im Umlauf befindliche
                            ISO-4217-Code. Bei einem Code ohne verfügbaren
                            Wechselkurs bleibt `preferred_currency_amount` null,
                            es sei denn, die Anfrage enthielt einen vorab
                            umgerechneten `amount_in_default_currency`.
                        payment_details:
                          type: string
                          nullable: true
                          description: >-
                            Freitext-Zahlungsreferenz oder -Verwendungszweck aus
                            der Übermittlung.
                        score:
                          type: integer
                          description: >-
                            Risiko-Score (typischerweise 0–100). Höher =
                            riskanter.
                        severity:
                          type: string
                          nullable: true
                          enum:
                            - UNKNOWN
                            - LOW
                            - MEDIUM
                            - HIGH
                            - CRITICAL
                          description: >-
                            Kategorische Risikoschwere, festgelegt durch
                            Regeln/Anbieter (`UNKNOWN`, `LOW`, `MEDIUM`, `HIGH`,
                            `CRITICAL`). `null`, bis ein Wert festgelegt wird.
                        subject_name:
                          type: string
                          nullable: true
                          description: Vollständiger Name der Partei `APPLICANT`.
                        subject_vendor_data:
                          type: string
                          nullable: true
                          description: >-
                            Ihre interne Benutzer-/Unternehmenskennung für den
                            Antragsteller.
                        subject_country:
                          type: string
                          nullable: true
                          description: >-
                            Ländercode des Antragstellers aus der übermittelten
                            `address.country` (üblicherweise ISO 3166-1
                            Alpha-3).
                        counterparty_name:
                          type: string
                          nullable: true
                          description: >-
                            Vollständiger Name der Partei `COUNTERPARTY`, falls
                            vorhanden.
                        counterparty_vendor_data:
                          type: string
                          nullable: true
                          description: Ihre interne Kennung für die Gegenpartei.
                        counterparty_country:
                          type: string
                          nullable: true
                          description: >-
                            Ländercode der Gegenpartei aus der übermittelten
                            `address.country`.
                        tags:
                          type: array
                          items:
                            type: object
                            properties:
                              uuid:
                                type: string
                                format: uuid
                              name:
                                type: string
                              color:
                                type: string
                              description:
                                type: string
                                nullable: true
                              source:
                                type: string
                                enum:
                                  - didit
                                  - custom
                                description: >-
                                  Gibt an, ob das Tag eine Didit-Voreinstellung
                                  oder ein benutzerdefiniertes Tag ist.
                          description: >-
                            An die Transaktion angehängte Tags (manuell oder
                            durch Regeln).
                        txn_date:
                          type: string
                          format: date-time
                          description: >-
                            Wann die Transaktion stattgefunden hat (aus
                            `transaction_at` zum Erstellungszeitpunkt).
                        created_at:
                          type: string
                          format: date-time
                          description: Wann Didit die Einreichung aufgezeichnet hat.
                        decision_reason_code:
                          type: string
                          nullable: true
                          description: >-
                            Maschinenlesbarer Grund für den aktuellen `status`
                            (z. B. `WALLET_HIGH_RISK`).
                        decision_reason_label:
                          type: string
                          nullable: true
                          description: Lesbare Bezeichnung für `decision_reason_code`.
                        assigned_to_name:
                          type: string
                          nullable: true
                          description: >-
                            Anzeigename des dieser Transaktion zugewiesenen
                            Console-Prüfers.
                        travel_rule_status:
                          type: string
                          nullable: true
                          description: >-
                            Status des Travel-Rule-Transfers der Transaktion
                            (zum Beispiel `COMPLETED`) oder `null`, wenn keiner
                            vorhanden ist.
                        travel_rule:
                          nullable: true
                          allOf:
                            - $ref: '#/components/schemas/TransactionTravelRule'
                          description: >-
                            Der Travel-Rule-Transfer der Transaktion, derselbe
                            Block wie `travel_rule` bei `GET
                            /v3/transactions/{transaction_id}/`, oder `null`,
                            wenn die Transaktion keinen hat.
              examples:
                Single transaction:
                  value:
                    count: 1
                    next: null
                    previous: null
                    total_transactions: 1
                    results:
                      - uuid: abcdef12-3456-4890-abcd-ef1234567890
                        transaction_number: 4123
                        txn_id: your-txn-2026-05-17-001
                        transaction_type: finance
                        action_type: withdrawal
                        status: IN_REVIEW
                        direction: OUTBOUND
                        amount: '1500'
                        currency: EUR
                        preferred_currency_amount: '1620.45'
                        preferred_currency_code: USD
                        payment_details: Withdrawal to crypto wallet
                        txn_date: '2026-05-17T08:42:00Z'
                        created_at: '2026-05-17T08:42:11Z'
                        score: 78
                        severity: HIGH
                        decision_reason_code: WALLET_HIGH_RISK
                        decision_reason_label: Destination wallet flagged as high risk
                        tags:
                          - uuid: 9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d
                            name: Manual review
                            color: '#F59E0B'
                            description: null
                            source: custom
                        subject_name: Maria Garcia
                        subject_vendor_data: user-12345
                        counterparty_name: null
                        counterparty_vendor_data: null
                        counterparty_country: null
                        subject_country: null
                        assigned_to_name: Alex Reviewer
                        travel_rule_status: null
                        travel_rule: null
        '403':
          description: >-
            Fehlender, ungültiger oder widerrufener API-Schlüssel, oder der
            Schlüssel kann keine Transaktionen für diese Anwendung auflisten.
            Ein fehlender Schlüssel gibt `403` zurück; ein falscher,
            widerrufener oder abgelaufener Schlüssel gibt `401` zurück.
          content:
            application/json:
              examples:
                Forbidden:
                  value:
                    detail: You do not have permission to perform this action.
        '429':
          description: >-
            Rate-Limit überschritten; drosseln Sie die Anfragen und wiederholen
            Sie den Versuch nach dem in `Retry-After` angegebenen Intervall.
          content:
            application/json:
              examples:
                Throttled:
                  value:
                    detail: Request was throttled. Expected available in 30 seconds.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X GET
            'https://verification.didit.me/v3/transactions/?limit=50' \
              -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.transactions.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.transactions.list()) {
              console.log(item);
            }
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.Transactions.ListAutoPaging(ctx, didit.TransactionsListParams{})\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.transactions().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->transactions->list() as $item) {
                print_r($item->toArray());
            }
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            didit.transactions.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.Transactions.ListAsync())
            {
                Console.WriteLine(JsonSerializer.Serialize(item));
            }
components:
  schemas:
    TransactionTravelRule:
      type: object
      description: >-
        Der Travel-Rule-Transfer einer Transaktion, wie `GET
        /v3/transactions/{transaction_id}/`, der `201`-Status von `POST
        /v3/transactions/` und jede Zeile von `GET /v3/transactions/` ihn
        zurückgeben. `direction`, `rail`, `counterparty_vasp`, `delivery`,
        `discovery`, `reason` und `next_actions` haben dieselbe Struktur wie bei
        `PATCH /v3/transactions/{transaction_id}/travel-rule/`, sodass ein
        einziger Lesevorgang einer Transaktion zeigt, warum ihr Transfer
        feststeckt und was ihn weiterbringt.
      properties:
        uuid:
          type: string
          format: uuid
        status:
          type: string
        protocol:
          type: string
          nullable: true
        required:
          type: boolean
        obligations_count:
          type: integer
        originator_data:
          type: object
          description: >-
            Auftraggeber-Partei. Bei einer eingehenden Überweisung werden die
            Werte der Gegenpartei maskiert, bis die Eigentümerstruktur bestätigt
            ist.
        beneficiary_data:
          type: object
          description: >-
            Begünstigter. Bei eingehenden Übertragungen werden die Werte der
            Gegenpartei maskiert, bis die Eigentümerschaft bestätigt ist.
        name_match:
          type: object
          nullable: true
          description: >-
            Der Namensabgleich, der über den Transfer entschieden hat (Wert und
            Strenge). Null, bis einer ausgeführt wurde. Die verglichenen Namen
            werden zusammen mit den Parteien maskiert.
        data_match:
          $ref: '#/components/schemas/TravelRuleDataMatch'
        mismatched_fields:
          type: array
          items:
            type: string
          description: >-
            Kürzel für `data_match.mismatched_fields`. Leer, wenn keine
            Unterschiede vorliegen.
        data_unmasked:
          $ref: '#/components/schemas/TravelRuleDataUnmasked'
        data_masked:
          type: boolean
          description: >-
            Wahr, solange die personenbezogenen Daten der Gegenpartei in dieser
            Antwort maskiert sind.
        metadata:
          type: object
        direction:
          type: string
          enum:
            - INBOUND
            - OUTBOUND
          description: Welche Seite des Austauschs diese Überweisung darstellt.
        rail:
          type: string
          nullable: true
          description: >-
            Die Schiene (Rail), über die der Transfer lief: `INTERNAL`, `TRP`,
            `GTR`, `TRUST`, `VERIFYVASP`, `SYGNA` oder `EMAIL` (`TEST_VASP` bei
            einer Sandbox-Anwendung, wenn der Didit Test VASP geantwortet hat),
            oder `null`, bis eine Schiene ausgewählt ist.
        counterparty_vasp:
          type: object
          nullable: true
          properties:
            name:
              type: string
            lei:
              type: string
            dd_score:
              type: integer
              description: >-
                Due-Diligence-Score von 0 bis 100, wobei ein höherer Wert besser
                ist. Gleiche Skala wie im VASP-Verzeichnis.
            dd_score_breakdown:
              type: object
              description: >-
                Beiträge pro Komponente zu dd_score, ein Objekt pro Komponente
                wie im VASP-Verzeichnis (jurisdiction, verification, protocol,
                lei, history, essentials, responsiveness), jeweils {points, max,
                reason, detail}. {}, bis die Gegenpartei bewertet wurde.
              additionalProperties:
                type: object
                properties:
                  points:
                    type: number
                    description: Für diese Komponente vergebene Punkte.
                  max:
                    type: integer
                    description: Maximale Punktzahl, die diese Komponente vergeben kann.
                  reason:
                    type: string
                    description: Maschinenlesbarer Code der Entscheidung der Komponente.
                  detail:
                    type: string
                    description: Für Menschen lesbare Begründung für die vergebenen Punkte.
            dd_assessed_at:
              type: string
              format: date-time
              nullable: true
              description: >-
                Wann die Due-Diligence-Bewertung zuletzt durchgeführt wurde.
                Null, bis die Gegenpartei bewertet wurde.
          description: >-
            Der Verzeichniseintrag der Gegenpartei oder `null`, wenn der
            Transfer mit keinem verknüpft ist.
        delivery:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/TravelRuleDelivery'
          description: >-
            Die neueste Nachricht, die der Transfer einer anderen Partei
            schuldet. `null`, wenn er keine geschuldet hat, beispielsweise unter
            `threshold_amount` oder bei einer deklarierten selbstverwahrten
            Wallet.
        discovery:
          type: array
          description: >-
            Wie Didit nach der Gegenpartei gesucht hat, ein Eintrag pro
            ausgeführtem Schritt. Leer, wenn keine Ermittlung stattgefunden hat,
            beispielsweise bei einem eingehenden Transfer.
          items:
            $ref: '#/components/schemas/TravelRuleDiscoveryStep'
        reason:
          type: string
          description: >-
            Warum ein Transfer mit `COUNTERPARTY_VASP_NOT_FOUND` oder
            `COUNTERPARTY_VASP_NOT_REACHABLE` feststeckt; `""` für jeden anderen
            Status. Eine fehlgeschlagene Zustellung bestimmt dies zuerst,
            ausschließlich bei `COUNTERPARTY_VASP_NOT_REACHABLE`:
            `email_undeliverable` (der E-Mail-Provider hat die Compliance-E-Mail
            abgelehnt und es bleibt keine Adresse mehr zum Ausprobieren: beim
            Senden, bei einer Erinnerung oder als später gemeldeter permanenter
            Bounce) oder `delivery_failed` (die zustellende Schiene ist
            endgültig fehlgeschlagen: eine Netzwerkschiene hat die Nachricht
            abgelehnt oder keine Wiederholungsversuche mehr übrig, ein
            `TRP`-Identitäts-Host hat nicht geantwortet oder der `TRP`-Host der
            Gegenpartei hat die Anfrage nicht akzeptiert). Andernfalls bestimmt
            es der `discovery`-Trace: `awaiting_end_user` (kein Schritt hat eine
            Gegenpartei benannt, die Didit erreichen kann),
            `directory_match_no_route` (ein Schritt hat einen Verzeichnis-VASP
            benannt, der keine Route hat), `picked_member_without_proven_wallet`
            (der Endbenutzer hat einen Didit-Kunden ausgewählt, der die
            Kontrolle über die Wallet nicht nachgewiesen hat) oder
            `no_directory_match`, wenn der Trace keinen anderen Grund liefert.
            Ein erneutes Senden bringt den Transfer voran, sodass der Grund
            zurückgesetzt wird. Siehe [Warum ein Transfer
            feststeckt](/de/transaction-monitoring/travel-rule#warum-ein-transfer-blockiert-ist).
        next_actions:
          type: array
          description: >-
            Was den Transfer voranbringt; `[]` für jeden Status außer
            `COUNTERPARTY_VASP_NOT_FOUND` oder
            `COUNTERPARTY_VASP_NOT_REACHABLE`. `email_undeliverable` bietet
            `update_compliance_email`, dann `resend`. `delivery_failed` bietet
            `resend`. Ein Discovery-Grund bietet `select_counterparty_vasp`,
            `declare_self_hosted`, `add_vasp_hint` und `resend`.
          items:
            $ref: '#/components/schemas/TravelRuleNextAction'
        chain_details:
          $ref: '#/components/schemas/TravelRuleChainDetails'
    TravelRuleDataMatch:
      type: object
      nullable: true
      description: >-
        Feldweiser Abgleich der Daten der an der Übertragung beteiligten Partei
        mit den Informationen der Gegenseite über den Wallet-Inhaber. Nennt
        Felder und Ergebnisse, niemals Werte, damit die Lesbarkeit erhalten
        bleibt, während die Daten der Gegenpartei maskiert sind. Null, bis ein
        Abgleich ausgeführt wurde.
      properties:
        matched:
          type: boolean
          description: True, wenn kein verglichenes Feld abweicht.
        mismatched_fields:
          type: array
          items:
            type: string
            enum:
              - name
              - date_of_birth
              - address
              - account
          description: Die Felder, die sich unterscheiden.
        fields:
          type: object
          description: >-
            Ein Eintrag pro verglichenem Feld für den Entitätstyp der Partei
            (`name`, `date_of_birth`, `address`, `account`; ein Unternehmen hat
            kein `date_of_birth`).
          additionalProperties:
            type: object
            properties:
              result:
                type: string
                enum:
                  - matched
                  - mismatched
                  - not_compared
                description: >-
                  `not_compared`, wenn die Regel `NONE` ist oder eine der beiden
                  Seiten keinen Wert für das Feld aufweist.
              strictness:
                type: string
                enum:
                  - NONE
                  - STRICT
                  - CONTAINS
                  - DEFAULT
                  - FUZZY
    TravelRuleDataUnmasked:
      type: object
      nullable: true
      description: >-
        Audit-Eintrag des Zeitpunkts, zu dem die Daten der Gegenpartei
        demaskiert wurden. Null, solange die Daten noch maskiert sind, sowie bei
        ausgehenden Überweisungen.
      properties:
        at:
          type: string
          format: date-time
        reason:
          type: string
          enum:
            - ownership_confirmed
            - wallet_proof
            - address_book_match
            - own_verified_wallet
            - inquiry_approved
            - known_payment_method
            - travel_address
          description: >-
            Was die Inhaberschaft bestätigt hat: ownership_confirmed (Ihre
            Bestätigung über die Konsole oder die API), wallet_proof (ein
            Wallet-Nachweis im Widget oder ein eingehender INTERNAL-Transfer,
            festgelegt bei der Erstellung), address_book_match (eine
            verifizierte Adressbuch-Wallet), own_verified_wallet (die eigene
            verifizierte Wallet Ihres Benutzers), inquiry_approved (Ihre
            Genehmigung einer eingehenden TRP-Anfrage oder einer GTR- oder
            Sygna-Nachricht), known_payment_method (eine Wallet, mit der Ihr
            Benutzer bereits bezahlt hat) oder travel_address (die pro Wallet
            angegebene Travel Address).
        actor:
          type: string
          description: >-
            Wer die Bestätigung vorgenommen hat: die E-Mail-Adresse des
            Konsolenbenutzers oder die Bezeichnung des API-Schlüssels. Leer bei
            einer automatischen Entscheidung.
    TravelRuleDelivery:
      type: object
      description: >-
        Status der neuesten Nachricht, die der Transfer der anderen Seite
        schuldet. Didit kontaktiert die Gegenpartei, nachdem die Anfrage
        zurückgegeben wurde, die den Transfer erstellt oder geändert hat. Dieses
        Objekt gibt daher an, ob diese Nachricht durchgegangen ist: in der
        Warteschlange, wird gesendet, wartet auf Wiederholungsversuch nach einem
        Fehler, zugestellt oder fehlgeschlagen. Bei einem Fehler, von dem sich
        das Netzwerk noch erholen kann (keine rechtzeitige Antwort,
        fehlgeschlagene Verbindung, HTTP `408`, `429` oder `5xx`), wird der
        Versuch nach 30 Sekunden, 2 Minuten, 10 Minuten, 30 Minuten und 1 Stunde
        wiederholt. Wenn eine erste Nachricht (`kind: SEND`) endgültig
        fehlschlägt, weil das Netzwerk sie abgelehnt hat oder auch der sechste
        Versuch fehlgeschlagen ist, wechselt der Transfer zu
        `COUNTERPARTY_VASP_NOT_REACHABLE` mit `last_error` in seiner `timeline`;
        jede andere Nachricht, die endgültig fehlschlägt, wird in der `timeline`
        vermerkt. Der `status` des Transfers bleibt die maßgebliche Quelle für
        den Austausch selbst.
      required:
        - kind
        - status
        - rail
        - attempts
        - last_error
        - next_attempt_at
        - delivered_at
      properties:
        kind:
          type: string
          enum:
            - SEND
            - ANSWER
            - TXID
            - CANCEL
            - POLL
          description: >-
            Was die Nachricht übermittelt. `SEND`: die erste Nachricht des
            Transfers an die Gegenpartei (ausgehend; das Übertragungsnetzwerk
            wird beim Senden ausgewählt). `ANSWER`: Ihre Annahme oder Ablehnung
            gegenüber dem anfragenden Netzwerk (eingehend). `TXID`: der
            On-Chain-Transaktions-Hash, nachdem Sie den Transfer abgeschlossen
            haben. `CANCEL`: die Stornierung, nachdem Sie ihn abgebrochen haben.
            `POLL`: eine Statusabfrage an ein Netzwerk, das dies anbietet, die
            alle 5 Minuten wiederholt wird, während der Transfer auf die
            Gegenpartei wartet.
        status:
          type: string
          enum:
            - QUEUED
            - SENDING
            - RETRYING
            - DELIVERED
            - FAILED
          description: >-
            `QUEUED`: Wartet auf den Versand. `SENDING`: Ein Versuch läuft.
            `RETRYING`: Ein Versuch ist fehlgeschlagen und der nächste erfolgt
            um `next_attempt_at`. `DELIVERED`: Die Gegenseite hat die Nachricht
            entgegengenommen. `FAILED`: Die Gegenseite hat sie abgelehnt oder
            der letzte Versuch ist fehlgeschlagen.
        rail:
          type: string
          enum:
            - INTERNAL
            - TRP
            - GTR
            - TRUST
            - VERIFYVASP
            - SYGNA
            - EMAIL
            - ''
          description: >-
            Die Schiene (Rail), die die Nachricht übermittelt. Leer, bis Didit
            eine für eine erste Nachricht ausgewählt hat.
        attempts:
          type: integer
          minimum: 0
          description: >-
            Bisher durchgeführte Versuche für diese Nachricht. Für eine
            Nachricht, die keine Statusabfrage ist, werden maximal 6 Versuche
            unternommen.
        last_error:
          type: string
          description: >-
            Die Art des Fehlers, der beim letzten Versuch aufgetreten ist, `""`,
            wenn keiner aufgetreten ist: beispielsweise `email undeliverable`,
            `trp identity endpoint unreachable` oder `trp transfer inquiry
            delivery failed`. Sie enthält niemals die eigene Antwort der
            Gegenpartei, die in der `timeline` des Transfers verbleibt.

            Wenn GTR mit einem Fehler antwortet, sind dessen eigener Statuscode
            und dessen Nachricht enthalten. Antwortinhalte sind niemals
            enthalten.
          example: email undeliverable
        next_attempt_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Wann der nächste Versuch ausgeführt wird, während die Nachricht
            `QUEUED` oder `RETRYING` ist.
        delivered_at:
          type: string
          format: date-time
          nullable: true
          description: Wann die Gegenseite die Nachricht entgegengenommen hat.
    TravelRuleDiscoveryStep:
      type: object
      description: >-
        Ein Schritt der Gegenpartei-Ermittlung, die Didit für einen ausgehenden
        Transfer durchgeführt hat, in der Reihenfolge der Ausführung. Der erste
        Schritt, der einen VASP mit einer Route benennt, beendet die Kette.
      properties:
        step:
          type: string
          enum:
            - internal_address_book
            - wallet_attribution
            - network_lookup
            - customer_hint
            - end_user
          description: >-
            `internal_address_book`: ein anderer Didit-Kunde, der die Kontrolle
            über die Ziel-Wallet nachgewiesen hat. `wallet_attribution`: die
            Blockchain-Analyse-Zuordnung der Wallet. `network_lookup`: ein
            Netzwerk, das angeben kann, welcher VASP die Adresse hält.
            `customer_hint`: der VASP-Name, der LEI oder die Jurisdiktion, die
            Sie in `beneficiary_data` übermittelt haben. `end_user`: die
            Gegenpartei, die der Endbenutzer (oder Sie) ausgewählt hat, oder die
            Aufforderung, eine auszuwählen.
        outcome:
          type: string
          enum:
            - match
            - miss
            - skipped
          description: >-
            `match`: Der Schritt hat eine Gegenpartei benannt. `miss`: Er wurde
            ausgeführt und hat keine gefunden. `skipped`: Er konnte nicht
            ausgeführt werden, und `reason` gibt den Grund an.
        reason:
          type: string
          description: >-
            Maschinenlesbarer Grund, `""` bei einer Übereinstimmung:
            `no_proven_internal_wallet`, `attribution_disabled`,
            `already_attributed`, `no_attributed_entity`,
            `directory_match_no_route`, `gtr_address_lookup_runs_on_dispatch`,
            `no_membership`, `network_switched_off`,
            `no_network_address_lookup`, `no_directory_match`,
            `awaiting_end_user` oder `picked_member_without_proven_wallet`.
        vasp:
          type: string
          format: uuid
          nullable: true
          description: >-
            Der Verzeichnis-VASP, den der Schritt benannt hat, sofern einer
            benannt wurde.
        rail:
          type: string
          nullable: true
          description: >-
            Die Schiene (Rail), die diese Gegenpartei erreicht, sofern der
            Schritt eine gefunden hat.
        at:
          type: string
          format: date-time
    TravelRuleNextAction:
      type: object
      description: >-
        Eine Maßnahme, die einen Transfer mit dem Status
        `COUNTERPARTY_VASP_NOT_FOUND` oder `COUNTERPARTY_VASP_NOT_REACHABLE`
        voranbringt. Siehe [Warum ein Transfer
        festhängt](/de/transaction-monitoring/travel-rule#warum-ein-transfer-blockiert-ist).
      properties:
        action:
          type: string
          enum:
            - select_counterparty_vasp
            - declare_self_hosted
            - add_vasp_hint
            - update_compliance_email
            - resend
          description: >-
            `select_counterparty_vasp`: Der Endbenutzer wählt die Ziel-VASP im
            Widget zum Wallet-Eigentumsnachweis aus, oder Sie senden einen PATCH
            mit `action=beneficiary_vasp`. `declare_self_hosted`: Der
            Endbenutzer deklariert die Wallet im Widget als selbstverwahrt.
            `add_vasp_hint`: Teilen Sie Didit über einen VASP-Namen, LEI oder
            eine Travel Address (beispielsweise eine `travel_address` im
            Adressbucheintrag der Ziel-Wallet) mit, wer die Gegenpartei ist, und
            senden Sie die Anfrage erneut. `update_compliance_email` und
            `resend` sind `action`-Werte von `PATCH
            /v3/transactions/{transaction_id}/travel-rule/`: Geben Sie die
            Compliance-E-Mail der Gegenpartei erneut an und führen Sie das
            Routing noch einmal durch.
        url:
          type: string
          format: uri
          description: >-
            Der Link zum Wallet-Ownership-Widget, bei `select_counterparty_vasp`
            und `declare_self_hosted`, solange der Transfer eine offene
            Widget-Sitzung hat.
      required:
        - action
    TravelRuleChainDetails:
      type: object
      description: >-
        Wie die Blockchain des Transfers ihre beiden Wallets benennt, wenn mehr
        als eine Adresse eine andere bezahlt. Leer (`{}`) bei einem
        Account-Chain-Transfer (EVM, Solana, Tron), bei dem die beiden Adressen
        die Wallets sind. Abgleich, Weiterleitung und das Adressbuch lesen die
        Wallets zuerst von hier aus.
      properties:
        chain:
          type: string
          description: >-
            Kanonische Chain, z. B. `BTC`, `XRP` oder `LIGHTNING` für einen
            Lightning-Transfer.
        shape:
          type: string
          enum:
            - utxo
            - memo
            - lightning
        originator:
          $ref: '#/components/schemas/TravelRuleChainSide'
        beneficiary:
          $ref: '#/components/schemas/TravelRuleChainSide'
        utxo:
          type: object
          description: >-
            Bei einem UTXO-Transfer: die Inputs und Outputs wie gespeichert
            (Beträge als Dezimal-Strings) und welche Outputs Didit als was
            interpretiert hat.
          properties:
            inputs:
              type: array
              items:
                $ref: '#/components/schemas/TravelRuleUtxoEntry'
            outputs:
              type: array
              items:
                $ref: '#/components/schemas/TravelRuleUtxoEntry'
            change_output_indexes:
              type: array
              items:
                type: integer
              description: Ausgaben, die an eine Eingabeadresse zurückzahlen.
            beneficiary_output_index:
              type: integer
              nullable: true
              description: >-
                Der Output, der den Begünstigten bezahlt; null, wenn keine
                unterschieden werden konnten.
        lightning:
          type: object
          description: >-
            Bei einem Lightning-Transfer: Inhalt der Zahlungsanforderung. Immer
            `kind` (`bolt11`, `bolt12_offer`, `bolt12_invoice`,
            `bolt12_invoice_request`, `lnurl`, `lightning_address`, `node_id`
            oder `unknown`); eine BOLT11-Rechnung ergänzt `network`,
            `payee_node_id`, `payment_hash`, `amount_msat`, `created_at` und
            `expires_at`; ein BOLT12-String ergänzt `blinded_paths` und
            `payee_node_id`; eine LNURL oder Lightning Address ihre `domain`. Es
            wird nichts über das Netzwerk aufgelöst: Die Anforderung wird
            lediglich decodiert.
          additionalProperties: true
        warnings:
          type: array
          items:
            type: string
            enum:
              - declared_originator_not_an_input
              - declared_beneficiary_not_an_output
              - beneficiary_output_ambiguous
              - beneficiary_output_amount_differs
          description: >-
            UTXO-Inkonsistenzen, die eine Überprüfung wert sind: Der angegebene
            Auftraggeber ist kein Input, der angegebene Begünstigte ist kein
            Output, es konnte kein einzelner Output des Begünstigten
            unterschieden werden oder der Begünstigten-Output zahlt einen
            anderen Betrag aus, als in der Transaktion angegeben ist.
        not_applicable_reason:
          type: string
          enum:
            - LIGHTNING_NO_PAYEE_IDENTIFIER
            - LIGHTNING_BOLT12_BLINDED_PAYEE
            - LIGHTNING_LNURL_NAMES_NO_PAYEE
          description: >-
            Bei einem ausgehenden Lightning-Transfer, dessen Zahlungsanforderung
            keinen Begünstigten nennt: der Grund, warum der Transfer
            `NOT_APPLICABLE` ist. `LIGHTNING_NO_PAYEE_IDENTIFIER` (die
            Anforderung nennt keinen Knoten des Begünstigten oder konnte nicht
            decodiert werden), `LIGHTNING_BOLT12_BLINDED_PAYEE` (das Angebot
            verbirgt seinen Begünstigten hinter blinden Pfaden),
            `LIGHTNING_LNURL_NAMES_NO_PAYEE` (eine LNURL nennt einen Dienst,
            keinen Begünstigten). Derselbe Code leitet den letzten
            `timeline`-Eintrag des Transfers ein.
    TravelRuleChainSide:
      type: object
      description: Die Wallet einer Seite, wie von Didit aus den Chain-Daten aufgelöst.
      properties:
        address:
          type: string
          description: >-
            Die Wallet. Auf einem Memo-Netzwerk die klassische Adresse (eine
            XRP-X-Adresse wird in ihre klassische Adresse und ihr Tag
            aufgeteilt); auf Lightning die Knoten-ID des Zahlungsempfängers oder
            die Lightning-Adresse.
        memo:
          type: string
          description: >-
            Das Destination-Tag oder Memo, das Teil der Wallet ist; `""` für
            keines.
        source:
          type: string
          enum:
            - declared
            - x_address
            - largest_input
            - only_non_change_output
            - amount_match
            - invoice_payee
            - updated
          description: >-
            Woher die Wallet stammt: `declared` (Ihre Anfrage), `x_address` (aus
            einer XRP-X-Adresse aufgeteilt), `largest_input` (die
            UTXO-Input-Adresse mit dem größten Beitrag),
            `only_non_change_output` (der einzige UTXO-Output, der kein
            Wechselgeld ist), `amount_match` (der eine UTXO-Output, der den
            Überweisungsbetrag zahlt), `invoice_payee` (der Zahlungsempfänger,
            den eine Lightning-Zahlungsanforderung benennt), `updated`
            (nachträglich mit `action: update_originator_wallet` festgelegt).
    TravelRuleUtxoEntry:
      type: object
      description: >-
        Eine Eingabe oder Ausgabe einer UTXO-Transaktion, wie sie von der
        Blockchain erfasst wurde.
      required:
        - address
      properties:
        address:
          type: string
          maxLength: 128
        amount:
          type: string
          nullable: true
          description: >-
            Dezimal-Zeichenkette in der Einheit des Coins selbst (BTC, nicht
            Satoshis). Optional.
          example: '0.0125'
        txid:
          type: string
          maxLength: 128
          description: Optional. Die Transaktion, deren Output ein Input ausgibt.
        vout:
          type: integer
          nullable: true
          minimum: 0
          description: Optional. Der Index des Outputs, den ein Input ausgibt.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Der API-Schlüssel Ihrer Anwendung, aus Entwickler -> API-Schlüssel in
        der Business Console. Der Primärschlüssel hat Vollzugriff. Ein benannter
        Schlüssel kann im Geltungsbereich eingeschränkt werden: keine, Lese-
        oder Schreibberechtigung pro Ressource, beschränkt auf bestimmte
        Workflows oder genehmigte Sitzungen, auf eine Liste von IP-Adressen und
        auf ein Ablaufdatum. 401 bedeutet, dass der Schlüssel falsch, widerrufen
        oder abgelaufen ist; 403 bedeutet, dass kein Schlüssel gesendet wurde,
        der Schlüssel keinen Zugriff auf diese Ressource oder Aktion hat oder
        die Anfrage von einer Adresse außerhalb seiner IP-Liste stammte; 404 bei
        einer Sitzungsroute bedeutet, dass die Sitzung außerhalb der Workflows
        oder Status des Schlüssels liegt. Ein Schlüssel ohne Medienzugriff
        erhält Bild-, Video- und PDF-URLs als null, und ein Schlüssel ohne
        Schreibberechtigung für Sitzungen erhält Sitzungslinks und Token als
        null. Siehe https://docs.didit.me/console/api-keys.

````

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