Categorie di transazione
Ogni transazione ha untransaction_category che determina come la trattano regole e analisi:
Dettagli della transazione
L’oggettotransaction_details contiene i dati finanziari:
Soggetto e controparte
Ogni transazione ha un soggetto (obbligatorio) e una controparte (facoltativa). Entrambi usano lo stesso modello di parte:
Quando
address è un oggetto, Didit ricava il country_code della parte da address.country. Quando address è una stringa, il country_code di quella parte viene restituito come null.
Quando vendor_data corrisponde a un utente o a un’azienda esistente, Didit collega automaticamente la transazione al profilo di quell’entità, abilitando la valutazione delle regole tra sessioni diverse e i controlli di velocità.
Nella risposta, entrambe le parti vengono restituite nell’array parties con i ruoli APPLICANT e COUNTERPARTY.
Metodi di pagamento
Allega unpayment_method a ciascuna parte per descrivere lo strumento di quel lato:
Nelle transazioni
travelRule, un metodo di pagamento della controparte con method_type: "unhosted_wallet" (alias type) dichiara il wallet della controparte come wallet in autocustodia.
Quando la Travel Rule è attiva e l’importo, nella valuta predefinita della tua applicazione, non è inferiore a threshold_amount, il trasferimento passa direttamente a UNCONFIRMED_OWNERSHIP e al flusso di prova di proprietà: vedi Wallet in autocustodia dichiarati.
Per le transazioni crypto, includi gli indirizzi wallet in account_id e imposta currency_kind su crypto, così lo screening blockchain può essere eseguito automaticamente. La direzione controlla quale wallet viene sottoposto a screening: lo screening inbound prima del trasferimento usa il wallet mittente in counterparty.payment_method.account_id; lo screening outbound usa il wallet di destinazione in counterparty.payment_method.account_id. Se invii un hash blockchain in transaction_details.payment_reference_id, lo screening inbound della transazione richiede l’indirizzo di deposito del tuo servizio in subject.payment_method.account_id, mentre lo screening outbound della transazione richiede il wallet di destinazione in counterparty.payment_method.account_id.
Sovrascrittura dello screening crypto
Usainclude_crypto_screening al livello superiore della richiesta per sostituire il valore predefinito configurato in Transazioni > Impostazioni nella Console:
Contesto del dispositivo
Includi le informazioni sul dispositivo nella parte relativa al soggetto (e, facoltativamente, in quella relativa alla controparte) per alimentare le regole di analisi del dispositivo. Il campo della richiesta èdevice_context su ciascuna parte; è accettato anche l’alias in camelCase device, che è quello usato dal formato di trasmissione dell’SDK. La risposta lo restituisce come device su ciascuna parte nell’array parties.
browser_family e platform non vengono ricavati da user_agent. Devono essere inviati come chiavi esplicite di primo livello all’interno di device_context, altrimenti le regole di analisi del dispositivo non si attivano. Se usi l’SDK di Didit, questi campi vengono raccolti automaticamente.userAgent, browserFamily, browserVersion, osFamily, osVersion, acceptLang, sessionId, sessionAgeMs. L’oggetto network_context accetta gli alias ip / countryCode3 / lat / lon, e un blocco ipInfo di primo livello viene anch’esso unito a network_context.
Il contesto del dispositivo abilita regole come il rilevamento del multi-account (stesso fingerprint su soggetti diversi), il rilevamento della combinazione di un nuovo browser e di un nuovo IP, i trasferimenti di valore elevato con una sessione di breve durata e il punteggio di rischio basato sulla posizione.
Proprietà personalizzate
Aggiungi qualsiasi altra coppia chiave-valore nell’oggettocustom_properties. Le regole possono fare riferimento a questi campi nelle loro condizioni: è utile per passare un contesto specifico dell’azienda, come la categoria di prodotto, l’ID dell’esercente o il canale.
custom_values.<key>: ad esempio, il payload sopra corrisponde a custom_values.product_category eq "electronics". Nel generatore di regole della Console, le chiavi viste nelle transazioni acquisite di recente compaiono nel selettore dei campi delle condizioni sotto Proprietà personalizzate, e Inserisci proprietà personalizzata nello stesso gruppo ti permette di digitare manualmente qualsiasi chiave (con distinzione tra maiuscole e minuscole). Vedi Regole e punteggio per i dettagli.
Esempio di richiesta
Risposta
L’API restituisce la transazione creata con i risultati della valutazione iniziale:
Consulta il Riferimento API per lo schema completo di richiesta e risposta, e il riferimento dedicato allo schema della risposta per una spiegazione annotata del payload.
Assegnare una transazione a un revisore
Assegna una transazione in attesa a un membro della tua applicazione, oppure rimuovi l’assegnazione, con una chiave API che ha il privilegiowrite:transactions.
Ogni modifica viene registrata nella cronologia della transazione come TRANSACTION_ASSIGNED.
Entrambe le chiamate accettano
assignee_email, l’email di un membro dell’applicazione che ha effettuato l’accesso a Didit.
Invia null o una stringa vuota per rimuovere l’assegnazione.
La chiamata multipla accetta anche transaction_ids, un elenco da 1 a 500 UUID di transazioni.
uuid, transaction_number, assignee e changed (false se la transazione aveva già questo assegnatario), oppure 404 se la transazione non esiste nell’applicazione.
La chiamata multipla restituisce transactions (una voce come quella sopra), updated_count e not_found_transaction_ids.
Filtra l’elenco delle transazioni con assignee, un elenco separato da virgole in cui basta che un valore corrisponda: me, unassigned, rules (decisa solo dalle regole, senza intervento di un revisore) oppure l’email di un membro.
Idempotenza
txn_id (il transaction_id che invii) è univoco per applicazione.
Reinviare un transaction_id già esistente restituisce 400 con A transaction with this transaction_id already exists. sul campo transaction_id, e due richieste identiche inviate contemporaneamente restituiscono alla seconda un 409.
Nessuna delle due risposte restituisce la transazione esistente.
Per ritentare in sicurezza, tratta un 400 o un 409 per un transaction_id duplicato come “già creata” e cerca la transazione esistente invece di reinviarla: leggila con GET /v3/transactions/{uuid}/ usando l’uuid della prima risposta, oppure usa il transaction_id (l’uuid di Didit) che il webhook transaction.created riporta accanto al tuo txn_id.
Genera sempre txn_id sul tuo lato (ad esempio l’ID del tuo database delle transazioni, un UUID o un hash deterministico).
Caricamento storico
Passa untxn_date nel passato per importare transazioni storiche. Le regole vengono comunque valutate per impostazione predefinita: se durante i caricamenti storici in blocco vuoi saltare la valutazione delle regole, usa l’importazione CSV dalla console in modalità dry-ingest. Vedi la guida all’integrazione.
Passaggi successivi
Regole e punteggio
Come le transazioni inviate vengono valutate rispetto alle regole.
Schema della risposta
Payload completo della risposta, con annotazioni.
Screening crypto
Screening automatico di wallet e transazioni per le transazioni crypto.
Travel Rule
Allega i dati di conformità alla Travel Rule ai trasferimenti di asset virtuali.
Arricchimento IP
Contesto derivato dall’IP disponibile per le regole.
Riferimento API
Schema completo della richiesta per l’endpoint Create Transaction.