Vai al contenuto principale
PATCH
curl

Autorizzazioni

x-api-key
string
header
obbligatorio

La chiave API della tua applicazione, da Developers -> API keys nella Business Console. La chiave primaria ha accesso completo. Una chiave con nome può avere un ambito definito: nessuno, lettura o scrittura per risorsa, limitata ad alcuni workflow o a sessioni approvate, a un elenco di indirizzi IP e a una data di scadenza. 401 indica che la chiave è errata, revocata o scaduta; 403 indica che non è stata inviata alcuna chiave, che la chiave non ha accesso a questa risorsa o azione, oppure che la richiesta proviene da un indirizzo non incluso nel suo elenco IP; 404 su una route di sessione indica che la sessione non rientra nei workflow o negli stati previsti dalla chiave. Una chiave senza accesso ai media riceve gli URL di immagini, video e PDF come null, e una chiave senza permessi di scrittura sulle sessioni riceve link e token di sessione come null. Consulta https://docs.didit.me/console/api-keys.

Parametri del percorso

transaction_id
string<uuid>
obbligatorio

UUID della transazione stabile di Didit a cui appartiene il trasferimento.

Corpo

application/json

Fornisci esattamente uno tra: payment_txn_id (finish), action=cancel, action=resend, action=update_compliance_email con compliance_email, action=update_originator_wallet con wallet_address o action=beneficiary_vasp con beneficiary_vasp.

payment_txn_id
string

L'hash della transazione on-chain. Richiede che il trasferimento sia un trasferimento in uscita con stato COMPLETED.

action
enum<string>

"cancel" annulla un trasferimento non definitivo. "resend" esegue nuovamente l'instradamento per un trasferimento in uscita bloccato in COUNTERPARTY_VASP_NOT_FOUND, COUNTERPARTY_VASP_NOT_REACHABLE o NOT_ENOUGH_COUNTERPARTY_DATA. "update_compliance_email" sostituisce l'email di compliance a cui viene inviata la richiesta, per un trasferimento in uscita in uno di questi tre stati; invia successivamente "resend". "update_originator_wallet" registra il wallet da cui sono effettivamente partiti i fondi (wallet_address, memo). "beneficiary_vasp" indica direttamente il VASP di controparte (richiede beneficiary_vasp) per un trasferimento in uscita in uno di questi stati: viene instradato verso quel VASP e inviato di nuovo.

Opzioni disponibili:
cancel,
resend,
update_compliance_email,
update_originator_wallet,
beneficiary_vasp
compliance_email
string<email>

Obbligatorio con action: update_compliance_email. Mantenuto come beneficiary_data.counterparty_vasp_email di questo trasferimento: appartiene esclusivamente a questo trasferimento e non viene aggiunto a nessuna voce di directory né ad alcuna lista di contatti.

Maximum string length: 254
wallet_address
string

Con action: update_originator_wallet: il wallet da cui sono partiti i fondi. Quando gli input UTXO del trasferimento sono noti, deve essere uno di essi.

Maximum string length: 128
memo
string

Con action: update_originator_wallet: il memo o tag del wallet su una rete memo. Opzionale.

Maximum string length: 256
beneficiary_vasp
string<uuid>

Obbligatorio con action=beneficiary_vasp: l'id di un VASP della directory, ottenuto da GET /v3/travel-rule/vasps/. La tua scelta ha la priorità su ogni passaggio di rilevamento automatico, che non la sovrascrive mai.

Risposta

Il trasferimento aggiornato. Dopo update_compliance_email, il suo stato rimane invariato e mantiene reason: email_undeliverable fino al successivo resend.

Oggetto di trasferimento completo restituito dagli endpoint di conferma della titolarità e di completamento/annullamento. Finché la titolarità del wallet di un trasferimento in entrata non è confermata, i campi originator_data e beneficiary_data della controparte vengono restituiti mascherati (viene mantenuta la prima lettera di ogni parola; il wallet, la chain e l'instradamento VASP rimangono leggibili) e data_masked è true.

uuid
string<uuid>
status
enum<string>
Opzioni disponibili:
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>
Opzioni disponibili:
INBOUND,
OUTBOUND
rail
enum<string> | null

Il canale (rail) su cui è stato instradato il trasferimento, o null quando non è stato selezionato alcun canale (ad esempio sotto la soglia, un wallet della controparte in autocustodia, una registrazione post-deposito o nessuna controparte raggiungibile). INTERNAL indica che entrambe le parti sono applicazioni Didit; EMAIL indica che la controparte è stata raggiunta tramite un link di ritiro inviato via email. TEST_VASP indica che il Didit Test VASP ha risposto al trasferimento sandbox. Tramite GTR, VERIFYVASP e SYGNA, Didit legge la risposta della controparte dalla risposta della rete o effettuando un polling ogni 5 minuti. TRUST invia soltanto, quindi un trasferimento TRUST rimane AWAITING_COUNTERPARTY fino alla scadenza. Un canale di rete viene utilizzato solo dopo aver collegato la propria iscrizione per tale rete. Viene scelto dopo che la creazione della transazione ha restituito risposta, quindi è null in tale risposta.

Opzioni disponibili:
INTERNAL,
TRP,
GTR,
TRUST,
VERIFYVASP,
SYGNA,
EMAIL,
TEST_VASP,
null
protocol
string | null
ivms_version
string
Esempio:

"ivms101.2023"

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

Soggetto ordinante. Per un trasferimento in entrata, i valori della controparte sono oscurati fino alla conferma dell'assetto proprietario.

beneficiary_data
object

Parte beneficiaria. Per un trasferimento in entrata i valori della controparte sono mascherati fino a quando non viene confermato l'assetto proprietario.

name_match
object · null · null

Il confronto dei nomi che ha determinato il trasferimento, o null fino all'esecuzione. Mentre le parti sono oscurate, e sulla copia dell'altro cliente di uno scambio INTERNAL, transfer_name, compared_name, matched_names e mismatched_names rimangono nascosti. score e matched possono discordare: matched segue il livello di rigore, score è la somiglianza dei due nomi completi.

data_match
object | null

Confronto campo per campo tra i dati della parte del trasferimento e ciò che l'altra parte sa sul titolare del wallet. Riporta i nomi dei campi e i risultati, mai i valori, in modo che rimanga leggibile mentre i dati della controparte sono oscurati. Null finché non viene eseguito un confronto.

mismatched_fields
string[]

Scorciatoia per data_match.mismatched_fields. Vuoto quando non ci sono differenze.

data_unmasked
object | null

Registro di audit del momento in cui i dati della controparte sono stati smascherati. Null finché i dati sono ancora mascherati e per i trasferimenti in uscita.

data_masked
boolean

True mentre i dati personali della controparte sono mascherati in questa risposta.

created_at
string<date-time>
delivery
object | null

Lo stato dell'ultimo messaggio dovuto da questo trasferimento alla controparte. Null quando il trasferimento non ha mai dovuto inviarne uno (ad esempio al di sotto di threshold_amount, un wallet in autocustodia dichiarato o una registrazione sunrise).

discovery
object[]

Modalità con cui Didit ha cercato la controparte, una voce per ogni passaggio eseguito. Vuoto se non è stata eseguita alcuna ricerca, ad esempio per un trasferimento in entrata.

reason
string

Il motivo per cui un trasferimento COUNTERPARTY_VASP_NOT_FOUND o COUNTERPARTY_VASP_NOT_REACHABLE è bloccato; "" per qualsiasi altro stato. Una consegna non riuscita lo determina per prima, solo su COUNTERPARTY_VASP_NOT_REACHABLE: email_undeliverable (il provider di posta ha rifiutato l'email di compliance e non è rimasto alcun indirizzo da provare: quando è stata inviata, in un promemoria o come bounce permanente segnalato successivamente) o delivery_failed (il canale che effettuava la consegna è fallito definitivamente: un canale di rete ha rifiutato il messaggio o ha esaurito i tentativi, un host di identità TRP non ha risposto o l'host TRP della controparte non ha accettato la richiesta). Altrimenti lo determina la traccia di discovery: awaiting_end_user (nessun passaggio ha indicato una controparte raggiungibile da Didit), directory_match_no_route (un passaggio ha indicato un VASP della directory privo di rotta), picked_member_without_proven_wallet (l'utente finale ha scelto un cliente Didit che non ha dimostrato il controllo del wallet) o no_directory_match quando la traccia non fornisce altri motivi. Un nuovo invio fa avanzare il trasferimento, quindi il motivo viene azzerato. Consulta Perché un trasferimento è bloccato.

next_actions
object[]

Cosa fa procedere il trasferimento; [] per qualsiasi stato tranne COUNTERPARTY_VASP_NOT_FOUND o COUNTERPARTY_VASP_NOT_REACHABLE. email_undeliverable propone update_compliance_email, poi resend. delivery_failed propone resend. Un motivo di discovery propone select_counterparty_vasp, declare_self_hosted, add_vasp_hint e resend.

chain_details
object

In che modo la blockchain del trasferimento identifica i suoi due wallet, quando si tratta di più di un indirizzo che ne paga un altro. Vuoto ({}) per un trasferimento su blockchain basata su account (EVM, Solana, Tron), dove i due indirizzi corrispondono ai wallet. La corrispondenza, l'instradamento e la rubrica leggono innanzitutto i wallet da qui.

Ultima modifica il 7 novembre 2026