Verificación

Reason codes

Taxonomía completa con su significado y cómo tratar cada uno.

Cuando una sesión no aprueba limpio, result.reason_codes explica por qué. Son la misma taxonomía en la API, en los webhooks y en el dashboard, y son estables: programá contra ellos.

Vienen ordenados de más a menos severo. Un array vacío significa aprobación sin observaciones.

Cómo leer la severidad

SeveridadQué implica
rechazoFallo duro. Por sí solo rechaza la sesión.
reintentoProblema recuperable: la persona vuelve a intentar el paso. Si se agotan los intentos, cuenta como rechazo.
revisiónSeñal blanda: no rechaza por sí sola, acumula hacia revisión manual.
variableLa política del proyecto decide el efecto.
informativoDescribe cómo terminó la sesión; no es un juicio sobre la identidad.

Documento

Los emite el validador de documento argentino, cruzando OCR, código de barras, zona legible por máquina y análisis forense.

CódigoSeveridadQué significaQué hacer
DOC_FIELD_MISMATCHrechazoDos fuentes del documento discrepan en un campo crítico: por ejemplo el número que muestra el frente no coincide con el del código de barras del dorso.Es la firma típica de un documento adulterado. No ofrezcas reintento automático: derivá a revisión manual o rechazá.
DOC_CUIL_CHECK_FAILEDrechazoEl CUIL reconstruido no pasa su dígito verificador. El número no puede ser un CUIL válido.Rechazo. Un CUIL real nunca falla este cálculo.
DOC_SCREEN_DETECTEDrechazoLa imagen es la foto de una pantalla, no del documento físico. Se detecta incluso con imagen nítida.Rechazo. Si tu caso de uso lo admite, el proyecto puede permitir capturas de pantalla; en ese caso el código pasa a ser una señal blanda.
DOC_EXPIREDrechazoEl documento está vencido a la fecha de la verificación.Rechazo si tu proyecto rechaza vencidos. Podés desactivar esa regla si tu caso de uso los acepta.
DOC_UNSUPPORTED_TYPErechazoEl documento no es de un tipo que tu proyecto acepte, o no se pudo determinar de qué tipo es.Verificá que la lista de documentos aceptados del proyecto cubra lo que tus usuarios realmente presentan.
DOC_FACE_ABSENTrechazoNo se detectó un rostro en el documento, con una imagen de calidad suficiente como para descartar que sea un problema de captura.Rechazo. Con imagen de calidad pobre, el mismo hecho se reporta como DOC_IMAGE_QUALITY_LOW y admite reintento.
DOC_PDF417_UNREADABLEreintentoNo se pudo decodificar el código de barras PDF417 del dorso del DNI.La persona reintenta la captura. Pedile buena luz, el documento plano y todo el código dentro del cuadro.
DOC_MRZ_UNREADABLEreintentoNo se pudo leer la zona legible por máquina (las líneas de caracteres del dorso del DNI o de la hoja del pasaporte).Reintento de captura, enfocando esas líneas.
DOC_IMAGE_QUALITY_LOWreintentoImagen borrosa, movida o con poca definición para leer los campos con confianza.Reintento. Es el motivo de recaptura más frecuente.
DOC_GLAREreintentoUn reflejo sobre el holograma tapa parte del documento.Reintento, cambiando el ángulo o alejándose de la luz directa.
DOC_FIELD_MISSINGrevisiónFaltan campos comparables entre las fuentes: la regla de cruce no se pudo aplicar, no es que haya fallado.Señal blanda: suma hacia revisión sin rechazar por sí sola.
DOC_MRZ_CHECKDIGIT_FAILrevisiónUn dígito verificador de la zona legible por máquina no cierra. Puede ser una lectura imperfecta o un dato alterado.Señal blanda: acumula hacia revisión manual.
DOC_FORENSICS_SUSPECTrevisiónEl análisis forense encontró señales de manipulación o de captura indirecta, sin llegar al umbral de rechazo.Señal blanda, pero es la que conviene mirar primero en una revisión manual.
DOC_NAME_FUZZY_LOWrevisiónLos nombres de dos fuentes se parecen, pero por debajo del umbral de similitud del proyecto. Típico con acentos, nombres compuestos o abreviaturas.Señal blanda. Si te aparece seguido, considerá bajar levemente el umbral de coincidencia de nombres del proyecto.

Padrón

Los emite el cruce opcional contra el padrón oficial. El padrón sólo puede empeorar o mantener el veredicto: nunca lo mejora.

CódigoSeveridadQué significaQué hacer
PADRON_MISMATCHrechazoEl número de documento no coincide con el del padrón, o el nombre difiere por debajo del piso duro de similitud.Rechazo.
PADRON_MISMATCH_MINORrevisiónEl nombre difiere del padrón pero por encima del piso duro: diferencia menor, compatible con una variante de escritura.Señal blanda: lleva a revisión manual.
PADRON_UNAVAILABLEvariableEl padrón no respondió a tiempo o devolvió un error.Lo resuelve la política del proyecto: aprobar igual, mandar a revisión (opción por defecto) o rechazar. Elegila según tu apetito de riesgo.

Biometría

Los emite el paso de prueba de vida y comparación facial. Los scores que hay detrás son internos y nunca salen de la plataforma.

CódigoSeveridadQué significaQué hacer
LIVENESS_FAILEDreintentoLa prueba de vida no pasó y a la persona todavía le quedan intentos. Cada reintento es una sesión de vivacidad nueva.Reintento dentro del flujo. Suele resolverse con mejor luz y siguiendo las indicaciones en pantalla.
LIVENESS_MAX_RETRIESrechazoLa prueba de vida no pasó y se agotaron los intentos configurados.Rechazo. Si tenés muchos de estos con usuarios legítimos, revisá el umbral de vivacidad y la cantidad de intentos del paso.
BIO_FACE_MISMATCHrechazoLa cara capturada no coincide con la foto del documento: la similitud quedó por debajo de la banda de revisión.Rechazo.
BIO_FACE_GRAY_ZONErevisiónLa similitud cayó dentro de la banda ambigua que el proyecto definió para revisión.Revisión manual. Mover la banda cambia el equilibrio entre falsos rechazos y casos que llegan a un humano.

Códigos de un solo uso

Los emiten los pasos de OTP por email y por WhatsApp.

CódigoSeveridadQué significaQué hacer
OTP_MAX_ATTEMPTSrechazoSe agotaron los intentos de ingresar el código.Rechazo. Los intentos y los reenvíos máximos son parámetros del paso: subilos si tu público los agota seguido de buena fe.

Sesión

No los emite un validador: describen cómo terminó la sesión. Ninguno es un juicio sobre la identidad de la persona.

CódigoSeveridadQué significaQué hacer
SESSION_EXPIREDinformativoEl link venció antes de que la persona completara el flujo.Ofrecele una sesión nueva. Si te pasa seguido, subí expires_in_hours o acortá el tiempo entre que creás la sesión y la enviás.
SESSION_ABANDONEDinformativoLa persona empezó el flujo y lo dejó inactivo más allá del tiempo permitido por el proyecto.Es la métrica de fricción por excelencia: mirá en qué paso se cae la gente antes de cambiar validadores.
SESSION_CANCELEDinformativoLa sesión se canceló desde la API.Ninguna: la decisión fue tuya.
SESSION_STEP_LIMITrechazoLa sesión alcanzó el tope duro de pasos ejecutados. Casi siempre indica un flujo con reintentos que no convergen.Revisá la configuración del flujo: reglas que vuelven sobre pasos ya ejecutados o límites de reintento demasiado altos.

Revisión humana

Lo emite la resolución manual de un caso que quedó en revisión.

CódigoSeveridadQué significaQué hacer
REVIEW_REJECTEDrechazoUna persona revisó el caso y decidió rechazarlo.Rechazo definitivo. Los reason codes que motivaron la revisión siguen en la lista, junto a este.

Varios códigos en la misma sesión

Es lo normal: una captura con reflejo que además tiene el nombre apenas distinto del padrón devuelve dos códigos. La regla de precedencia no la aplicás vos —la sesión ya viene con su outcome resuelto—, pero el orden del array te dice cuál pesó más.

Para explicarle el resultado a la persona, usá el primer código de la lista: es el más severo y el que efectivamente determinó el desenlace.