Vai al contenuto principale
Un’applicazione sandbox scambia dati Travel Rule con una sola controparte: il Didit Test VASP, un VASP di test integrato nella piattaforma. Risponde a ogni trasferimento come gli chiedi tu, attraverso lo stesso codice che gestisce una controparte reale, così puoi osservare ogni stato, ogni voce della cronologia e ogni webhook di uno scambio prima di andare in produzione. Nulla di ciò che invii in sandbox lascia Didit. Non viene mai contattata alcuna rete, nessun destinatario email né altro cliente Didit, e nulla viene addebitato.

Prima di iniziare

  1. Usa la chiave API di un’applicazione sandbox. Le applicazioni in produzione non raggiungono mai il VASP di test.
  2. Attiva Travel Rule con un nome legale:
  1. Facoltativamente, iscrivi una destinazione webhook a travel_rule.status.updated. La sandbox la consegna, contrassegnata con "environment": "sandbox".

Il Didit Test VASP

GET /v1/sandbox/scenarios/ restituisce il profilo del VASP di test e ogni scenario nel suo oggetto travel_rule, così i tuoi test possono leggere i valori di trigger invece di scriverli nel codice: Ogni valore è un dato di test. Il VASP di test non è membro di alcuna rete Travel Rule, e nessun risultato in sandbox dimostra che una controparte o una rete reale sia raggiungibile.

Scenari in uscita

Ogni transazione travelRule in uscita di un’applicazione sandbox che richiede uno scambio va al VASP di test. Scegli l’esito tramite l’indirizzo wallet del beneficiario (non conta la distinzione tra maiuscole e minuscole) oppure tramite un nome del beneficiario nella forma Didit Test VASP <suffix>; se sono impostati entrambi, prevale il wallet. Se non c’è né l’uno né l’altro, oppure se il suffisso non compare nella tabella, il trasferimento si completa (accept). Un trasferimento che non richiede uno scambio non raggiunge mai il VASP di test: uno al di sotto della tua threshold_amount, uno verso il wallet verificato del tuo utente e uno il cui wallet della controparte hai dichiarato in autocustodia. Un VASP controparte che tu o il tuo utente finale avete scelto manualmente dalla directory è valutato con le stesse rotte di un’applicazione in produzione: se la sua voce ne ha una (un endpoint TRP verificato, una rete su cui invia la tua applicazione oppure un contatto di compliance), il trasferimento va al VASP di test; se non ne ha, il trasferimento termina con COUNTERPARTY_VASP_NOT_FOUND, come accadrebbe su un’applicazione in produzione.
Il rail del trasferimento è TEST_VASP, e nell’elenco dei trasferimenti Didit Test VASP compare come VASP beneficiario. Seguilo nei webhook travel_rule.status.updated, oppure leggi GET /v3/transactions/{transaction_id}/.
  • name_mismatch confronta il nome del beneficiario che hai inviato con il nome del titolare che il VASP di test restituisce, secondo la tua regola sul nome per il tipo di entità del beneficiario (matching_rules.individual.name oppure matching_rules.company.name, che seguono name_matching_strictness finché non le imposti). Il trasferimento e la voce della cronologia che lo ha deciso riportano name_match (con compared_with: "counterparty_vasp") e data_match con mismatched_fields: ["name"].
  • not_reachable mantiene il trasferimento in AWAITING_COUNTERPARTY mentre riprova, con delivery.status RETRYING e last_error test VASP is not answering, poi lo porta a COUNTERPARTY_VASP_NOT_REACHABLE. Invia successivamente {"action": "resend"} per eseguirlo di nuovo.
  • self_hosted fa rispondere al VASP di test che il wallet è in autocustodia. Registra la prova con il widget di verifica della proprietà del wallet (generato per te finché auto_wallet_verification è attivo) oppure con POST .../travel-rule/ownership/ inviando {"confirmed": true}: il wallet viene aggiunto alla tua rubrica degli indirizzi con il nome del beneficiario e il confronto del nome determina l’esito del trasferimento. Una corrispondenza lo completa e contrassegna il wallet come verificato; {"confirmed": false} lo rifiuta.

Transferencias entrantes desde el VASP de prueba

Para probar el lado receptor, pide al VASP de prueba que te envíe una transferencia con POST /v3/travel-rule/test-vasp/inbound/. Indica una de las wallets de tu propio libro de direcciones de la aplicación: la transferencia se decide con la misma ruta entrante que una real, contra tu libro de direcciones, tu modo de titularidad y tus reglas de nombre.
La respuesta 201 incluye transaction_id, txn_id, scenario, travel_rule_status, detail, test_vasp: true y la transferencia travel_rule. Una aplicación en producción recibe 400 ("The Didit Test VASP is only available on sandbox applications."), otro scenario recibe 400, y una aplicación con Travel Rule desactivada recibe 409. Decide una transferencia pendiente mediante POST .../travel-rule/ownership/, igual que con una real: {"confirmed": true} la completa y {"confirmed": false} la rechaza. Un depósito que tú mismo registras con POST /v3/transactions/ no es uno que haya enviado el VASP de prueba: permanece en AWAITING_COUNTERPARTY a la espera de su VASP originador, y su cronología menciona el endpoint anterior. No envía ningún webhook hasta que caduca tras confirmation_timeout_hours. POST /v3/travel-rule/inbound/ sigue liquidando un registro posterior al depósito contra tu libro de direcciones, como en una aplicación en producción.

Webhooks en sandbox

travel_rule.status.updated se envía para las aplicaciones sandbox en cada cambio de estado, con "environment": "sandbox". Una transferencia a la que respondió el VASP de prueba incluye además rail: "TEST_VASP", test_vasp: true y test_vasp_scenario. El resto del sandbox se comporta como se describe en Monitorización de transacciones en sandbox: las reglas no se evalúan, no se envían transaction.created ni transaction.status.updated, y no se factura nada.

Lo que el sandbox no demuestra

  • Que una contraparte real, una pertenencia a una red o el host público TRP de Didit funcionen. No se contacta con ninguno de ellos.
  • Que tus credenciales de red sean válidas. Una membresía conectada queda demostrada mediante su primer intercambio en producción.
  • Las rutas del directorio de VASP reales: en una aplicación sandbox cada ruta aparece como unavailable con reason: sandbox_application, y cada fila con reachable: false.
Consulta Redes de Travel Rule para ver a qué alcanza cada canal en producción hoy.
Ultima modifica il 7 novembre 2026