Error de txn_id duplicat
Símptoma. En enviar una transacció es retorna 400 amb A transaction with this transaction_id already exists. al camp transaction_id, o 409 quan dues sol·licituds idèntiques competeixen entre si.
Causa. txn_id (el transaction_id que envies) és únic per a cada aplicació. Didit rebutja una segona transacció amb el mateix transaction_id i no retorna el registre existent.
Solució.
- Genera
txn_idde manera determinista al teu costat (per exemple, usant l’ID de la teva base de dades de transaccions). - Davant d’un
400o409per untransaction_idduplicat durant un reintent, consulta la transacció existent en lloc de tornar-la a enviar: llegeix-la ambGET /v3/transactions/{uuid}/usant l’uuidde la primera resposta, o usa eltransaction_id(l’uuid de Didit) que el webhooktransaction.createdporta al costat del teutxn_id. - Si la sol·licitud no era un reintent, assigna a la nova transacció el seu propi
transaction_id.
La regla no s’activa
Símptoma. Has creat una regla que hauria de coincidir, però cap transacció apareix arule_runs[] amb matched: true.
Causes i solucions.
- L’aplicació està en mode sandbox: una aplicació sandbox omet l’avaluació de regles, el cribratge AML, la facturació i els webhooks
transaction.createditransaction.status.updated. Els intercanvis de Travel Rule continuen executant-se quan estan habilitats, contra el Didit Test VASP, i envien webhookstravel_rule.status.updatedmarcats ambenvironment: sandbox.rule_runstorna buit i la puntuació es manté en0, independentment del mode de les teves regles, i la transacció es manté enAPPROVEDtret que una transferència de Travel Rule que caduca apliqui el teutimeout_outcome. Comprovaenvironmenta la resposta de la transacció:"sandbox"vol dir que mai no s’ha avaluat. Consulta Monitoratge de transaccions en sandbox per saber com validar una regla abans de posar-la en producció. - El mode de la regla és
DISABLEDoTEST: revisa Rules → [rule] → Mode. Només les reglesACTIVEcontribueixen a la puntuació; les reglesTESTs’avaluen però no afecten l’estat. - El filtre d’àmbit exclou la transacció: per exemple, un àmbit establert a
transaction_type = financeno coincidirà amb transaccionstravelRule. - La finestra d’agregació és més curta de la necessària: una regla de «20 transaccions en 30 dies» no coincidirà després de només 15 transaccions.
- El camp de la condició és nul: per exemple, la teva regla comprova
counterparty.country_codeperò no has enviat cap contrapart. - Conversió de moneda: la regla estableix els llindars sobre
amount_in_default_currency; si la moneda per defecte de la teva aplicació és diferent de la de la transacció, l’import convertit pot quedar per sota del llindar.
La regla s’activa en tots els casos
Símptoma. Una regla s’activa en més del 90% de les transaccions: la teva cua de revisió està inundada. Causa. Les condicions són massa àmplies o els llindars són massa baixos. Solució.- Afegeix filtres de
scopeper restringir l’aplicabilitat (per exemple, només transaccions sortints, o només certs tipus de transacció). - Augmenta els llindars (imports, comptadors de velocitat).
- Posa la regla en mode
TESTdurant una setmana: analitza elsrule_runsper veure la taxa de coincidència i ajusta les condicions abans de tornar-la a activar.
El cribratge de criptoactius ha exhaurit el temps d’espera
Símptoma. La transacció s’ha completat ambstatus: APPROVED, però la matriu provider_results[] mostra status: FAILED per a una cartera, un hash de transacció o un proveïdor de cribratge de criptoactius.
Causes.
- L’API del proveïdor no ha estat disponible durant un moment.
- La consulta ha superat el temps d’espera (normalment ~10s).
- Les transaccions mai fallen per problemes dels proveïdors: l’enriquiment es fa tan bé com sigui possible.
- Si un proveïdor específic falla repetidament, consulta la seva pàgina d’estat o obre un tiquet de suport.
- Considera configurar les preferències de proveïdors a Settings → Transaction Monitoring → Providers per encaminar les consultes a proveïdors alternatius.
Falta l’enriquiment de la IP
Símptoma. Elapplicant.ip_enrichment d’una transacció és absent o parcial.
Causes.
- No hi ha
applicant.device.ipa l’enviament. - La IP és privada o reservada (no encaminable).
- Cap proveïdor d’enriquiment no ha estat disponible temporalment.
- Captura la IP de qui envia la transacció al teu client o servidor i passa-la en cada transacció.
- Usa només IP encaminables: Didit omet silenciosament els rangs privats.
- Revisa Settings → Status a la consola per veure l’estat dels proveïdors.
La signatura del webhook no coincideix
Símptoma. El teu endpoint rebutja els esdeveniments perquè la signatura no coincideix. Causes.- El cos brut de la sol·licitud s’ha modificat (el JSON s’ha tornat a serialitzar amb un espaiat diferent).
- El secret és incorrecte.
- Hi ha diverses destinacions amb la mateixa URL: les signatures són diferents per a cada destinació.
- Signa sobre el cos brut de la sol·licitud, no sobre el JSON analitzat. Molts marcs de treball exposen un middleware per al cos en brut.
- Renova el secret si s’ha compromès: Webhook destinations → [destination] → Rotate secret.
- Mantén una sola destinació per URL per evitar confusions amb els secrets.
El webhook no arriba
Símptoma. Es creen transaccions però els webhooks no arriben mai. Causes.enabledde la destinació ésfalse.- La URL no és accessible públicament.
- La destinació s’ha desactivat automàticament després de fallades repetides.
- L’esdeveniment no és a
subscribed_events.
- Envia un esdeveniment de prova: Webhook destinations → [destination] → Send test.
- Revisa els lliuraments recents: Webhooks → [destination] → Deliveries. Consulta les respostes 4xx/5xx amb el cos i les capçaleres.
- Torna a activar les destinacions desactivades.
La conversió de moneda sembla incorrecta
Símptoma.amount_in_default_currency no coincideix amb el tipus de canvi que esperes.
Causes.
- El tipus de canvi és el tipus de canvi mitjà de mercat a
txn_date. - Les transaccions amb data retroactiva fan servir el tipus històric d’aquella data.
- Algunes monedes (divises exòtiques) tenen intervals d’actualització més espaiats.
- Usa
amounticurrency(la moneda original) per mostrar els imports. - Usa
amount_in_default_currencynomés per establir internament els llindars de les regles. - Per a auditoria, el registre de la transacció fixa el tipus de conversió usat en el moment de l’avaluació.
Counterparty no coincideix amb la meva llista de bloqueig
Símptoma. Has posat a la llista de bloqueig una empresa pel seuvendor_data, però una transacció amb aquesta contrapart s’ha executat igualment.
Causes.
- La contrapart del payload de la transacció no té
vendor_data: es guarda com a instantània externa. - El
vendor_dataté una capitalització diferent.
- Passa sempre
counterparty.vendor_dataquan la contrapart sigui una entitat de la teva plataforma. - Fes servir la mateixa capitalització a tot arreu:
vendor_datadistingeix majúscules i minúscules.
Transaccions AWAITING_USER bloquejades
Símptoma. Les transaccions es queden bloquejades aAWAITING_USER perquè l’usuari no completa mai la sessió de resolució.
Causes.
- L’usuari no ha obert l’URL de la sessió de resolució.
- La sessió de resolució ha caducat.
- La transacció és una transferència subjecta a la Travel Rule que una regla de la biblioteca, com
travel-rule-pending-action, ha mogut aAWAITING_USER: Didit no crea la seva sessió de resolució predeterminada per a una transacció de la Travel Rule, de manera que, tret que la regla indiqui el seu propi flux de treball de resolució, no hi ha cap enllaç per lliurar.
- L’enllaç que s’ha de lliurar és el
remediation_session_urlde la resposta de la transacció. Torna a lliurar-lo a l’usuari. - Per a una transacció de la Travel Rule, resol la transferència des de la pestanya Travel Rule i després canvia tu mateix l’estat de la transacció, perquè resoldre la transferència no fa que la transacció surti de
AWAITING_USERper si sola. - Les sessions de resolució segueixen el mateix patró de la guia d’inici ràpid de KYC: subscriu-te als webhooks de finalització.
- Estableix un temps límit al teu sistema per caducar les transaccions pendents si la resolució no es completa mai.
Límit de freqüència en la creació
Símptoma.429 Too Many Requests durant ràfegues de gran volum.
Solució.
- Respecta la capçalera
Retry-After. - Aplica una limitació de freqüència al client per al trànsit en ràfegues.
- Contacta amb el suport per obtenir límits més alts amb un volum de producció demostrat.
Passos següents
Guia d'integració
Patrons d’integració complets.
Regles
Com funciona l’avaluació de regles.
Webhooks
Funcionament dels webhooks.