Zum Hauptinhalt springen
Eine Sandbox-Anwendung tauscht Travel-Rule-Daten nur mit einer Gegenpartei aus: dem Didit Test VASP, einem in die Plattform integrierten Test-VASP. Er beantwortet jede Transaktion so, wie Sie es vorgeben, und zwar über denselben Code, der auch eine echte Gegenpartei verarbeitet. So können Sie jeden Status, jeden Verlaufseintrag und jeden Webhook eines Austauschs beobachten, bevor Sie live gehen. Nichts, was Sie in der Sandbox senden, verlässt Didit. Kein Netzwerk, kein E-Mail-Empfänger und kein anderer Didit-Kunde wird je kontaktiert, und es fallen keine Kosten an.

Bevor Sie beginnen

  1. Verwenden Sie den API-Schlüssel einer Sandbox-Anwendung. Live-Anwendungen erreichen den Test-VASP nie.
  2. Aktivieren Sie die Travel Rule mit einem rechtlichen Namen:
  1. Optional können Sie ein Webhook-Ziel für travel_rule.status.updated abonnieren. Die Sandbox stellt es zu und kennzeichnet es mit "environment": "sandbox".

Der Didit Test VASP

GET /v1/sandbox/scenarios/ gibt das Profil des Test-VASP und alle Szenarien in seinem Objekt travel_rule zurück. So können Ihre Tests die Auslösewerte auslesen, statt sie fest zu codieren: Alle Werte sind Testdaten. Der Test-VASP ist keinem Travel-Rule-Netzwerk angeschlossen, und kein Ergebnis in der Sandbox zeigt, dass eine echte Gegenpartei oder ein echtes Netzwerk erreichbar ist.

Ausgehende Szenarien

Jede ausgehende travelRule-Transaktion einer Sandbox-Anwendung, für die ein Austausch nötig ist, geht an den Test-VASP. Wählen Sie das Ergebnis über die Wallet-Adresse des Begünstigten (Groß- und Kleinschreibung spielt keine Rolle) oder über einen Begünstigtennamen in der Form Didit Test VASP <suffix>. Sind beide gesetzt, hat die Wallet Vorrang. Ohne beides oder mit einem Suffix, das die Tabelle nicht aufführt, wird die Transaktion abgeschlossen (accept). Eine Transaktion, für die kein Austausch nötig ist, erreicht den Test-VASP nie: eine unterhalb Ihres threshold_amount, eine an die eigene verifizierte Wallet Ihres Benutzers und eine, deren Gegenpartei-Wallet Sie als selbstverwahrt angegeben haben. Eine Gegenpartei-VASP, die Sie oder Ihr Endbenutzer manuell aus dem Verzeichnis ausgewählt haben, wird nach den Wegen beurteilt, die auch eine Live-Anwendung hätte. Hat ihr Eintrag einen solchen Weg (einen verifizierten TRP-Endpoint, ein Netzwerk, über das Ihre Anwendung sendet, oder einen Compliance-Kontakt), geht die Transaktion an den Test-VASP. Hat der Eintrag keinen, endet die Transaktion mit COUNTERPARTY_VASP_NOT_FOUND, wie es auch bei einer Live-Anwendung wäre.
Der rail der Transaktion ist TEST_VASP, und in der Transaktionsliste ist Didit Test VASP als Begünstigten-VASP angegeben. Verfolgen Sie die Transaktion in den Webhooks travel_rule.status.updated, oder lesen Sie GET /v3/transactions/{transaction_id}/.
  • name_mismatch vergleicht den Begünstigtennamen, den Sie gesendet haben, mit dem Kontoinhabernamen, den der Test-VASP zurückmeldet. Maßstab ist Ihre Namensregel für den Entitätstyp des Begünstigten (matching_rules.individual.name bzw. matching_rules.company.name, die so lange name_matching_strictness folgen, bis Sie sie setzen). Die Transaktion und der Verlaufseintrag, der die Entscheidung getroffen hat, enthalten name_match (mit compared_with: "counterparty_vasp") und data_match mit mismatched_fields: ["name"].
  • not_reachable hält die Transaktion im Status AWAITING_COUNTERPARTY, solange sie wiederholt wird, mit delivery.status RETRYING und last_error test VASP is not answering. Danach wechselt die Transaktion in den Status COUNTERPARTY_VASP_NOT_REACHABLE. Senden Sie anschließend {"action": "resend"}, um sie erneut auszuführen.
  • self_hosted lässt den Test-VASP bestätigen, dass die Wallet selbstverwahrt ist. Erfassen Sie den Nachweis mit dem Widget zur Wallet-Eigentumsprüfung (für Sie ausgestellt, solange auto_wallet_verification aktiv ist) oder mit POST .../travel-rule/ownership/ und {"confirmed": true}. Die Wallet wird dann unter dem Namen des Begünstigten in Ihr Adressbuch aufgenommen, und der Namensabgleich entscheidet über die Transaktion. Eine Übereinstimmung schließt sie ab und markiert die Wallet als verifiziert. {"confirmed": false} lehnt sie ab.

Eingehende Überweisungen vom Test-VASP

Um die Empfangsseite zu testen, lassen Sie den Test-VASP mit POST /v3/travel-rule/test-vasp/inbound/ eine Überweisung an Sie senden. Geben Sie dabei eine der eigenen Wallets Ihrer Anwendung aus dem Adressbuch an. Die Überweisung wird über denselben eingehenden Pfad entschieden wie eine echte, anhand Ihres Adressbuchs, Ihres Eigentumsmodus und Ihrer Namensregeln.
Die Antwort 201 enthält transaction_id, txn_id, scenario, travel_rule_status, detail, test_vasp: true und die Überweisung travel_rule. Eine Live-Anwendung erhält 400 ("The Didit Test VASP is only available on sandbox applications."). Ein anderer Wert für scenario ergibt ebenfalls 400, und eine Anwendung mit deaktivierter Travel Rule erhält 409. Entscheiden Sie über eine wartende Überweisung mit POST .../travel-rule/ownership/, wie Sie es bei einer echten tun würden: {"confirmed": true} schließt sie ab, {"confirmed": false} lehnt sie ab. Eine Einzahlung, die Sie selbst über POST /v3/transactions/ melden, wurde nicht vom Test-VASP gesendet. Sie bleibt AWAITING_COUNTERPARTY und wartet auf ihren Ursprungs-VASP. Ihre Zeitleiste nennt den oben genannten Endpoint. Es wird kein Webhook ausgelöst, bis sie nach confirmation_timeout_hours abläuft. POST /v3/travel-rule/inbound/ schließt eine Registrierung nach der Einzahlung weiterhin anhand Ihres Adressbuchs ab, wie auf einer Live-Anwendung.

Webhooks in der Sandbox

travel_rule.status.updated wird für Sandbox-Anwendungen bei jeder Statusänderung ausgelöst, mit "environment": "sandbox". Eine Überweisung, auf die der Test-VASP geantwortet hat, enthält außerdem rail: "TEST_VASP", test_vasp: true und test_vasp_scenario. Der übrige Teil der Sandbox verhält sich wie in Transaktionsüberwachung in der Sandbox beschrieben: Regeln werden nicht ausgewertet, transaction.created und transaction.status.updated werden nicht gesendet, und es fallen keine Kosten an.

Was die Sandbox nicht beweist

  • Dass eine echte Gegenpartei, eine Netzwerkmitgliedschaft oder der öffentliche TRP-Host von Didit funktioniert. Keines davon wird kontaktiert.
  • Dass Ihre Netzwerk-Zugangsdaten gültig sind. Eine verbundene Mitgliedschaft wird erst durch ihren ersten Live-Austausch bestätigt.
  • Die Routen echter VASPs im Verzeichnis. Auf einer Sandbox-Anwendung hat jede Route den Status unavailable mit reason: sandbox_application, und jede Zeile hat reachable: false.
Welche Ziele die einzelnen Netzwerke heute in der Produktion erreichen, finden Sie unter Travel-Rule-Netzwerke.
Zuletzt geändert am 7. November 2026