config dentro de cada elemento del array features para POST /v3/workflows/ y PATCH /v3/workflows/{settings_uuid}/.
features. Envía las funciones en el orden exacto de ejecución.
Qué motor ejecuta una función (el de Didit o el de un proveedor externo) no es uno de los campos de configuración que se indican a continuación. Se gestiona desde el Marketplace de la consola, que define por ti
provider_key y fallback_to_native en el objeto config de la función.Reglas de validación
OCRincluye de forma predeterminada todos los países y tipos de documento compatibles cuandoconfig.documents_allowedse omite o valenullo{}. Si envías un objetodocuments_allowedpersonalizado, debe contener al menos un país válido y un tipo de documento habilitado. Cada configuración de documento puede establecersidesen1para capturar solo el anverso o en2para capturar el anverso y el reverso.QUESTIONNAIRErequiereconfig.questionnaire_uuid.KYB_DOCUMENTSrequiereconfig.kyb_required_document_groups.SIGNATURErechazasignature_level: "qes"conqes_not_availablehasta que las firmas cualificadas estén disponibles, y rechaza un paso nuevo consignature_level: "aes"conaes_not_availablemientrassignature_availability.aesseafalseen el flujo. Sus documentos deben existir cuando se crea una sesión: consignature_documents_sourceestablecido enworkflow, el paso necesita documentos subidos en la consola, y un paso sin documentos puede quedarse como borrador, pero no puede pasar a producción; consession, cada llamada de creación debe enviarsign.documents.FACE_MATCHdebe ir después deOCRen las solicitudes de flujos simples.NFCyDATABASE_VALIDATIONrequierenOCRcuando aparecen en el mismo flujo.AMLnecesita uno deOCR,KYB_REGISTRYoDOCUMENT_AIantes que él; si solo tieneDOCUMENT_AIdelante, elfull_nameanalizado tiene que poder completarse, ya sea a partir de un campo de Document AI anterior con la clavefull_name, que se asigna automáticamente, o a partir de una entrada explícita enconfig.aml_field_sources(consulta AML).- Las subfunciones de KYB como
KYB_DOCUMENTSyKYB_KEY_PEOPLErequierenKYB_REGISTRYantes en el flujo. - Un flujo es de personas (KYC) o de empresas (KYB), nunca ambas cosas. Un flujo que usa cualquier función de KYB (
KYB_REGISTRY,KYB_DOCUMENTS,KYB_KEY_PEOPLE) solo puede combinarla conAML,DOCUMENT_AI,QUESTIONNAIRE,PHONE_VERIFICATION,EMAIL_VERIFICATION,IP_ANALYSISySIGNATURE. No puede incluir funciones exclusivas de personas comoOCR,LIVENESS,FACE_MATCH,NFC,PROOF_OF_ADDRESS,DATABASE_VALIDATIONoAGE_ESTIMATION, y un flujo de personas no puede incluir funciones de KYB. En un flujo de empresas,DOCUMENT_AIcompara cualquier campo marcado conis_full_namecon la empresa verificada en lugar de con una persona. Para verificar a las personas detrás de una empresa, crea un flujo de KYC independiente y haz referencia a él desde el nodoKYB_KEY_PEOPLEmediantekyb_ubo_verification_workflow,kyb_officer_verification_workflowokyb_shareholder_verification_workflow. - Los campos de acción usan
DECLINE,REVIEWoNO_ACTION, salvo que a continuación se indique que el campo está restringido. - Los campos de puntuación y de umbral son números de
0a100, salvo que se indique un rango más estrecho.
Reglas de estado comunes
Todas las funciones admiten un array opcionalstatus_rules. Úsalo para sobrescribir el estado de la función cuando se cumple una condición sobre un campo.
El ejemplo anterior se lee así:
kyc.extra_fields.profession coincide de forma aproximada con Soft. Engineer con una puntuación mínima de 80 → se establece el estado de la función en Declined.
En Verificación de identidad, apunta a valores extraídos de extra_fields, como kyc.extra_fields.profession, a fechas de validez de las categorías del permiso de conducir, como kyc.extra_fields.dl_class_code_b_from y kyc.extra_fields.dl_class_code_b_to, o a códigos de restricción o información por categoría, como kyc.extra_fields.dl_class_code_b_notes (columna 12 de los permisos del Reino Unido). Estos valores proceden del objeto extra_fields del resultado del OCR; no forman parte de expected_details.
dl_class_code_*_from y dl_class_code_*_to son siempre una fecha ISO válida o no aparecen en extra_fields: Didit nunca devuelve texto de OCR ilegible en un campo de fecha. Si la celda de la tabla de categorías no se puede leer, el campo se omite en lugar de enviarse como una cadena sin procesar, así que usa el operador is_empty para tratar las fechas de categoría ilegibles en lugar de dar por hecho que el campo siempre está presente.value_type: "relative_date" con un objeto de valor con la forma { "direction": "past" | "future", "amount": number, "unit": "days" | "months" | "years" }. Por ejemplo, operator: "less_than" con { "direction": "past", "amount": 3, "unit": "years" } coincide con fechas de hace más de tres años respecto a hoy.
Comparar con un paso concreto
Un flujo de verificación (workflow) en forma de grafo puede ejecutar la misma función más de una vez, por ejemplo, tres pasos de Verificación de identidad. Convalue_type: "field", añade @<node_id> al valor para leerlo de un paso concreto.
El nodo referenciado debe ser un paso de una función que se ejecute siempre antes del paso de la propia regla, en todas las rutas que llegan a él, o bien el propio paso de la regla.
Un valor sin el sufijo se lee del paso de la propia regla.
kyc.full_name de este paso coincide de forma aproximada con el nombre completo leído por el paso ocr_1 con una puntuación mínima de 80 → se establece el estado de la función en Declined.
En la consola, el selector de variables muestra cada paso elegible con su número en el lienzo y guarda el sufijo por ti.
OCR / Verificación de identidad
Valor de la función:OCR.
La prueba de vida del documento se configura con los seis umbrales
document_liveness_* anteriores, no con
campos de acción por señal. portrait_replacement_action, printed_copy_action y
screen_capture_action son parte de la configuración a nivel de cuenta y no se aceptan en la configuración
de funciones de un flujo: la API elimina las claves de configuración desconocidas al guardar, por lo que enviarlas ahí no tiene
ningún efecto. Cada señal tiene un umbral de rechazo y un umbral de revisión en una escala de 0 a 100 en la que
una puntuación más alta indica que es más probable que el documento sea auténtico.Métodos por país
methods usa como clave el código de país ISO 3166-1 alpha-3. Cada país admite hasta tres objetos de método; todo lo que omitas toma su valor predeterminado.
document.fallback_only. El ejemplo usa Finlandia, donde primero se ofrece la Finnish Trust Network y la captura del documento es la alternativa. Finlandia también necesita sus tipos de documento habilitados en documents_allowed (por ejemplo, pasaporte y documento de identidad) para que la alternativa tenga documentos que ofrecer.
available en el catálogo actual, así que esa configuración se guarda tal cual. El bloque de wallet está desactivado a propósito: todavía no hay ninguna wallet activa en producción, por lo que wallet.enabled: true se rechaza y hace fallar todo el guardado, incluida la configuración de las consultas. Cuando el catálogo marque una wallet como available en un país, añádela a ese país:
Validación que aplica la API al guardar:
- Se rechaza un código de país desconocido, una clave desconocida dentro de un país o una clave desconocida dentro de un método: nada se descarta en silencio.
- Se rechaza un país sin ningún método habilitado: nadie allí podría verificarse.
- Una wallet o una consulta solo puede recurrir a la captura de documento cuando la captura de documento está habilitada para ese país.
fallback_to_documenten un país dondedocument.enabledesfalserechaza en tiempo de ejecución, porque no hay ninguna alternativa a la que recurrir. document.fallback_only: truese rechaza con HTTP 400 salvo quedocument.enabledseatruey al menos una wallet o consulta de identidad de ese país recurra a la captura de documento.
methods: en la pestaña Países de la consola o con la herramienta MCP didit_workflow_get_id_verification_methods_catalog. El comportamiento, la cobertura y la facturación se describen en Métodos de verificación de identidad.
NFC / pasaporte electrónico
Valor de la función:NFC.
Prueba de vida
Valor de la función:LIVENESS.
Coincidencia facial
Valor de la función:FACE_MATCH.
Estimación de edad
Valor de la función:AGE_ESTIMATION.
Verificación de teléfono
Valor de la función:PHONE_VERIFICATION.
La Verificación de teléfono está desactivada hasta que la organización realice su primera recarga.
El enriquecimiento con inteligencia telefónica es un complemento opcional. Cuando
phone_enrichment_enabled es true, cada verificación de teléfono completada se enriquece con inteligencia telefónica y se factura a $0.05 por solicitud, además del coste estándar de la verificación de teléfono. Las acciones basadas en la puntuación solo surten efecto cuando la puntuación de enriquecimiento está disponible; las acciones de índice de confianza, tipo de teléfono y portabilidad se aplican en cuanto se ejecuta el enriquecimiento.La comprobación de huella social es un segundo complemento independiente. Cuando phone_social_enabled es true, cada verificación de teléfono completada indica también en qué plataformas en línea está registrado el número (mensajería, redes sociales, comercio electrónico y servicios profesionales) y se factura a $0.05 por solicitud. Puede activarse con o sin phone_enrichment_enabled: los dos complementos tienen precios y facturación independientes. Una consulta que no encuentra el número en ninguna de las plataformas que cubre es una respuesta válida y facturable, y activa phone_no_social_presence_action. Usa phone.social_profiles_registered (el número de plataformas en las que está registrado el número) para crear ramas según el resultado en el grafo de un flujo.Verificación de correo electrónico
Valor de la función:EMAIL_VERIFICATION.
El enriquecimiento con inteligencia de correo electrónico es un complemento opcional. Cuando
email_enrichment_enabled es true, cada verificación de correo electrónico completada se enriquece con inteligencia de correo electrónico y se factura a $0.05 por solicitud, además del coste estándar de la verificación de correo electrónico. La acción basada en la puntuación se aplica en cuanto la puntuación de enriquecimiento está disponible; las acciones de brechas de datos se aplican en cuanto se ejecuta el enriquecimiento.La comprobación de huella social es un segundo complemento, independiente del anterior. Cuando email_social_enabled es true, cada verificación de correo electrónico completada también indica en qué plataformas en línea está registrada la dirección (proveedores de correo electrónico, redes sociales y servicios profesionales, de comercio electrónico y de entretenimiento) y se factura a $0.05 por solicitud. Puede activarse con o sin email_enrichment_enabled: los dos complementos tienen precios propios y se facturan por separado. Una consulta que no encuentra la dirección en ninguna de las plataformas que cubre es una respuesta válida y facturable, y dispara email_no_social_presence_action. Usa email.social_profiles_registered (el número de plataformas en las que está registrada la dirección) para crear una rama según el resultado en un grafo de workflow.Validación de base de datos
Valor de la función:DATABASE_VALIDATION.
Ejemplo:
400 que lo identifica y explica el motivo, y no se guarda nada.
Esto incluye un ID que no está en el catálogo, un ID que pertenece a otro país, un servicio que todavía no está disponible y un servicio que solo se ofrece a través del endpoint independiente POST /v3/database-validation/.
Un servicio cuyos datos de entrada no proporciona ningún paso anterior se rechaza del mismo modo, con la lista de los datos de entrada que faltan.
Un servicio que el flujo guardado ya incluye pero que ya no puede ejecutarse se elimina cuando vuelves a guardarlo.
Por ejemplo, este flujo de Argentina lee el número de DNI y el género desde Verificación de identidad y los comprueba con RENAPER sin selfie:
arg_renaper en su lugar, después de un paso LIVENESS, para comparar además la selfie con la foto que tiene RENAPER.
Consulta RENAPER para conocer su puntuación de coincidencia facial y su umbral.
Verificación bancaria
Valor de la función:BANK_VERIFICATION.
El usuario verifica una cuenta bancaria, y el titular de la cuenta que informa el banco se compara con la identidad que estableció un paso anterior del flujo. El usuario lo hace mediante uno de dos métodos: el inicio de sesión bancario (open_banking), en el que inicia sesión en su banco, o la comprobación de cuenta (account_lookup), en la que escribe los datos de la cuenta y el banco confirma el nombre que figura en ella. bank_method_order y los methods de cada país determinan qué métodos ofrece un país y cuál va primero; consulta Métodos de verificación bancaria. El paso genera evidencias (una puntuación del nombre del titular, la comparación que la produjo y códigos de motivo) y las claves bank_*_action convierten esas evidencias en un estado.
Dos cosas deciden si el nodo hace algo. bank_countries es una lista de permitidos, así que un mapa vacío no ofrece ningún banco ni ejecuta ninguna comprobación. Además, el titular necesita algo con lo que compararse: coloca antes un paso OCR, DATABASE_VALIDATION o QUESTIONNAIRE, envía expected_details al crear la sesión o asigna tú mismo los campos con bank_field_sources. Sin ninguno de ellos, la propiedad solo puede ser unknown, y eso es lo que decide bank_reference_identity_missing_action.
La Verificación bancaria todavía se está desplegando, por lo que un nodo
BANK_VERIFICATION solo se acepta en una cuenta en la que se haya habilitado. En cualquier otra, el guardado se rechaza con un mensaje que lo indica. Tampoco se configura aquí qué ruta ejecuta el paso: lo determina el par provider_key y fallback_to_native que el Marketplace de la consola establece por ti.Conectar una cuenta
Cuando el usuario no puede verificar
El usuario siempre puede continuar sin un banco, y el paso nunca lo deja bloqueado. Consulta Cuando la persona no puede verificar su banco.
Lo que significa continuar para la sesión lo determina
bank_unsupported_action, bank_attempts_exhausted_action o bank_skipped_action, según el motivo por el que el usuario continuó, salvo que un intento evaluado antes ya haya decidido el paso: consulta Acciones de veredicto.
Comparación del titular
Comprobación de cuenta
Estas claves solo se aplican a la comprobación de cuenta. El inicio de sesión bancario conserva sus coincidencias aproximadas y su propiobank_max_attempts.
Datos financieros
bank_expected_currencies funciona solo con el consentimiento ownership por defecto. Las otras tres claves leen datos financieros reales, por lo que cada una necesita el alcance de consentimiento correspondiente en bank_scopes, y sin él se rechaza el guardado.
Qué se almacena
Acciones de veredicto
Cada clave de esta sección admiteDECLINE, REVIEW o NO_ACTION, salvo que esté marcada como restringida, y recurre al valor predeterminado indicado si la omites o envías null. Por defecto, nada que no sea una prueba positiva de propiedad aprueba, y solo una prueba demostrable en contra del usuario rechaza.
Más controles
Estas claves son opcionales. Cada clave de acción admiteDECLINE, REVIEW o NO_ACTION.
Objeto
config de ejemplo, para una cuenta en la que la Verificación bancaria está habilitada y la ruta que seleccionaste cubre el país que indicas:
AML
Valor de la función:AML.
Para el análisis AML de personas (KYC), usa estos campos:
Para el análisis AML de empresas (KYB), usa estos campos:
Analizar una entidad extraída por un paso de Document AI
Normalmente, un paso AML obtiene a quién analiza del pasoOCR (una persona) o del paso KYB_REGISTRY (una empresa). Un flujo cuyo único paso de extracción es DOCUMENT_AI (documentos no estandarizados, como un certificado fiscal o una escritura de constitución) no tiene ninguno de los dos, así que debe indicar de dónde procede cada dato de entrada del análisis.
Ejemplo: análisis de la empresa que figura en un acta constitutiva mexicana, sin ningún documento de identidad en todo el flujo:
Análisis de dispositivo e IP
Valor de la función:IP_ANALYSIS.
Ejemplo:
recovered_device_action por separado de duplicated_device_action cuando quieras supervisar los dispositivos recuperados con alta confianza antes de rechazarlos automáticamente. Esto resulta útil durante el despliegue, porque las coincidencias de dispositivos recuperados están diseñadas para detectar redes de fraude, pero aun así conviene calibrarlas con tu propio tráfico.
Verificación de ubicación
Valor de la función:GEOLOCATION.
Comprueba dónde está la persona mientras se verifica, a partir de la posición del dispositivo o de la ubicación IP de la conexión, y la contrasta con las zonas permitidas y bloqueadas, la ubicación IP y la dirección del documento.
Consulta Verificación de ubicación para ver cómo se comporta el paso y su informe para los campos de decisión.
Colócalo después de Verificación de identidad o Prueba de domicilio si quieres obtener la distancia a la dirección de un documento, porque la distancia solo se mide cuando hay una dirección registrada.
Si geolocation_position_source no está definido, la distancia a la ubicación IP requiere un paso de Análisis de dispositivo e IP en el mismo flujo.
Todas las claves son opcionales: un paso con un config vacío pide al dispositivo una posición con una precisión de 250 m y una antigüedad máxima de 120 segundos, da a la persona 3 intentos y no aplica ninguna regla de zona.
Cada hallazgo tiene su propia clave de acción, y una clave de acción que no definas toma el valor predeterminado del geolocation_preset que elegiste, o el valor predeterminado de cada clave que se indica abajo si no elegiste ninguno.
Una ubicación incierta o denegada toma por defecto REVIEW, nunca DECLINE, porque un permiso denegado o un radio amplio no son prueba de fraude.
Una acción que defines explícitamente siempre prevalece sobre el preajuste.
Un desafío reproducido (LOCATION_REPLAY_DETECTED) y una atestación del dispositivo fallida (LOCATION_INTEGRITY_FAILED) siempre se rechazan y no tienen clave de acción.
Formas de las áreas
Cada elemento degeolocation_areas tiene un id (de 1 a 64 caracteres de A-Z a-z 0-9 _ -, único en la lista), una label opcional (hasta 80 caracteres), un type de allowed o blocked, y un kind que elige la forma.
Una lista contiene como máximo 50 áreas y necesita al menos un área
allowed mientras is_geolocation_geofencing_enabled sea true.
geolocation_areas y geolocation_geofencing_by_country no se pueden enviar juntos, y geolocation_refusal_path: "end_session" requiere que geolocation_permission_denied_action sea REVIEW o DECLINE.
La API rechaza un área que nunca podría coincidir, como una región de un país sin límites publicados, en lugar de guardarla.
Ejemplo:
Prueba de domicilio
Valor de la función:PROOF_OF_ADDRESS.
Cuestionario
Valor de la función:QUESTIONNAIRE.
Registro KYB
Valor de la función:KYB_REGISTRY.
kyb_registry_fields_config asigna a cada clave de campo configurable un objeto {"enabled": bool, "required": bool}. enabled: false oculta el campo, enabled: true, required: false lo muestra como opcional y enabled: true, required: true lo hace obligatorio al enviar. company_name, country_code y region siempre se muestran, son obligatorios y no se pueden configurar. Si el objeto se omite, es null o es {}, se aplica el valor predeterminado: solo incorporation_date es obligatorio y todos los demás campos son opcionales.
registration_number, incorporation_date, legal_address, vat_number, alternative_names, tax_number, company_type, legal_entity_identifier, location_of_registration, nature_of_business, registered_capital_amount, registered_capital_currency, website, email, phone, control_scheme. Consulta campos configurables del formulario de registro para ver el comportamiento para el usuario final y validación del IVA y de la identificación fiscal para saber cómo se comprueban vat_number y tax_number.
Documentos KYB
Valor de la función:KYB_DOCUMENTS.
Personas clave KYB
Valor de la función:KYB_KEY_PEOPLE.
Document AI
Valor de la función:DOCUMENT_AI.
Solicita uno o varios documentos al usuario y extrae, con un modelo de visión, los campos que definas. Cada campo configurado se convierte en un valor que se puede usar para ramificar document_ai.<key>, y el resultado del paso es document_ai.status.
Cada entrada de
document_ai_documents es un documento:
Cada entrada de
fields de un documento es un campo:
Ejemplo:
Firma electrónica
Valor de la función:SIGNATURE.
Permite que la persona verificada, o las personas clave de una empresa, firmen documentos con el nivel Simple (predeterminado) o Avanzado (AES). Colócala después de los pasos que verifican al firmante: Verificación de identidad, y Verificación de correo electrónico o de teléfono para el código. Consulta Firma electrónica.
Los campos de un documento del flujo se añaden en el editor de plantillas de la consola. Para los documentos de la sesión, envíalos en
sign.documents[].fields y envía los valores de los campos api.<key> en sign.field_values. Consulta Crear sesión.
Ejemplo, para documentos enviados con cada sesión: