flow_items.items del account-flow. Se dividen en dos categorías:
- Items del widget (
ubos,forms): información que el widget captura del prospecto mediante UI. El usuario final interactúa con ellos. - Consultas a fuentes externas (
siger,rues,public_sat_signatures, etc.): Trébol las ejecuta automáticamente al crear cada verificación con este flujo. No tienen UI — corren en segundo plano.
Los documentos que el widget le solicita al prospecto son distintos: se configuran en el
record_validation_schema del flujo (no son items). Ver Crear el flujo.ubos — beneficiarios finales
Captura la declaración de beneficiarios finales (UBOs) de una empresa. El prospecto declara personas físicas con participación relevante y sus datos de identificación. Solo se puede agregar un ubos por flujo.
Cuándo usarlo: onboarding de empresas que requiera cumplir con políticas de conocimiento del beneficiario final (KYB/AML).
Opciones
| Opción | Tipo | Descripción |
|---|---|---|
ubos_data_extraction | boolean | Extrae información automáticamente de los documentos cargados en esta sección. |
ubos_form_schema | "mx_form" | "co_form" | Define el esquema de campos del formulario usando los esquemas por defecto. Si no se especifica, se infiere del país de la verificación. Usa ubos_schema_id para esquemas completamente personalizados. |
ubos_schema_id | string | ID de un esquema de formulario personalizado creado con el endpoint de esquemas de formularios. Cuando se especifica, el widget usa este esquema en lugar de los predeterminados (mx_form / co_form). El esquema debe existir en la cuenta. Prioridad: ubos_schema_id > ubos_form_schema > inferencia por país. |
ubos_threshold | number | Porcentaje mínimo de participación accionaria para declarar un UBO. Por defecto: 5% para Colombia, 25% para otros países. Por defecto este valor se recalcula recursivamente para empresas anidadas según el porcentaje de participación de cada accionista; ese comportamiento puede modificarse con maintain_threshold_on_add. |
reported_levels_required | number | Cantidad de niveles del árbol societario que el prospecto debe completar para que el ítem se considere complete automáticamente. El nivel raíz (accionistas directos de la empresa) es el 1. Si no se especifica, se exige completar todos los niveles alcanzables según el threshold. |
maintain_threshold_on_add | boolean | Si es true, el threshold del nivel padre se hereda tal cual en cada nivel hijo, en lugar de recalcularse en función del porcentaje de participación del accionista intermedio. Útil cuando se requiere reportar UBOs reales en niveles profundos sin que el umbral se “diluya”. Por defecto: false. |
is_optional | boolean | Si es true, el prospecto puede omitir esta sección. |
¿Cuándo usar
reported_levels_required y maintain_threshold_on_add?- Si tu negocio acepta que el prospecto complete solo los primeros N niveles del árbol societario (por ejemplo, accionistas directos y el siguiente nivel), usa
reported_levels_required: N. Si el prospecto presiona “continuar sin completar” en niveles más profundos, el ítem se marca para revisión manual en lugar de cerrarse automáticamente. - Si tu negocio requiere reportar todos los niveles con un threshold constante (por ejemplo, 5% en cada nivel, sin diluirse con la participación del padre), combina
ubos_thresholdconmaintain_threshold_on_add: truey omitereported_levels_requiredpara forzar todo el árbol. - Si no envías ninguno de estos dos flags, el comportamiento es el histórico: el threshold se recalcula al descender y se exige que todos los niveles alcanzados por ese threshold queden completos.
Esquemas de formulario
El formulario que completa el prospecto para cada UBO puede configurarse de dos formas:- Esquemas por defecto (
ubos_form_schema): usa"mx_form"o"co_form". Si no se especifica ningún esquema, se infiere automáticamente del país de la verificación. - Esquema personalizado (
ubos_schema_id): crea tu propio esquema con el endpoint de esquemas de formularios y referéncialo por suid_schema.
La estructura del
ui_schema_definition para UBOs es la misma que usas para el item forms. Consulta la sección de tipos de campo disponibles para ver todos los campos soportados.Restricción: los formularios de UBOs no soportan el tipo table. Si tu esquema incluye campos tipo table, serán ignorados.Campos estructurales obligatorios
Todo esquema de UBOs — ya sea personalizado o por defecto — debe incluir los siguientes tres campos. Son necesarios para que el árbol de beneficiarios funcione correctamente (nombre visible, tipo de accionista, y porcentaje de participación):Campos obligatorios en todo esquema de UBOs
Esquemas por defecto
Si no necesitas un formulario personalizado, puedes usar los esquemas que Trébol ofrece por defecto.- mx_form
- co_form
Formulario para México. Campos según el tipo de accionista:
- Personas: nombre, nacionalidad, porcentaje de participación, email, ocupación, teléfono y documento de identidad.
- Empresas: nombre, nacionalidad, porcentaje de participación, régimen de capital y documentos opcionales (acta constitutiva, documento de accionistas).
Los campos de nacionalidad y país usan el estándar ISO 3166-1 alpha-2 (249 países y territorios). Consulta la lista completa en Países y nacionalidades.
Crear un esquema personalizado
Si los esquemas por defecto no cubren tus necesidades, puedes crear uno propio:- Diseña tu
ui_schema_definitionincluyendo siempre los campos estructurales obligatorios (name,type,share_percentage). - Crea el esquema con el endpoint de esquemas de formularios.
- Usa el
id_schemaresultante como valor deubos_schema_iden las opciones del itemubos.
Ejemplo: crear un esquema personalizado para UBOs
Ejemplos de configuración
Usar el esquema por defecto de México:ubos_form_schema — se infiere del país de la verificación si el país es "co"):
Prioridad de resolución del esquema:
- Si se especifica
ubos_schema_id, se usa ese esquema personalizado (debe existir en tu cuenta). - Si se especifica
ubos_form_schema("mx_form"o"co_form"), se usa el esquema por defecto correspondiente. - Si no se especifica ninguno, se infiere del país de la verificación (
"co"→co_form, cualquier otro →mx_form).
forms — formularios personalizados
Cuestionarios de onboarding que tú configuras con preguntas abiertas, opciones múltiples u otros campos. Útil para capturar información específica de tu producto que no corresponde a un documento. Solo se puede agregar un forms por flujo.
Cuándo usarlo: capturar datos de contexto propios de tu onboarding (tipo de cuenta deseada, origen de fondos declarado, etc.) directamente desde el widget.
Configuración
Antes de referenciar el formulario en el flujo, crea su esquema con el endpoint de esquemas de formularios y usa elschema_id resultante en options.
Cómo se renderiza el formulario al prospecto
El widget usa el esquema JSON del formulario para decidir cómo mostrarlo:- Secciones (menú lateral): cada propiedad de nivel raíz con
ui_type: "section"ypropertiesanidadas se muestra como una sección. El título visible es elui_labeldel objeto. - Campos sueltos en la raíz: si hay campos de nivel raíz que no son secciones (texto, número, fecha, etc.), el widget los agrupa automáticamente bajo una sección llamada «Información general». Si ya existe una propiedad raíz
generalcomo objeto, no se duplica. - Orden: sigue el
ui_orderconfigurado en el esquema, tanto en el menú lateral como en la pantalla del formulario.
Tipos de campo disponibles (ui_type)
| Tipo | Descripción |
|---|---|
text | Campo de texto simple. |
number | Campo numérico. |
email | Campo de email con validación de formato. |
password | Campo de contraseña (texto oculto). |
date | Selector de fecha. |
file | Selector de archivo para carga de documentos. |
select | Lista desplegable de selección única. Requiere ui_items con strings u objetos { label, value }. |
multiselect | Selección múltiple. Requiere ui_items con strings u objetos { label, value }. |
section | Contenedor para agrupar campos anidados. |
table | Tabla para capturar múltiples filas de datos. Requiere ui_columns. |
paragraph | Texto informativo sin input asociado. Solo requiere ui_label. |
heading | Encabezado informativo sin input asociado. Solo requiere ui_label. |
checkbox | Campo booleano (true/false) renderizado como checkbox con label al lado. Útil para preguntas de sí/no (ej. PEP, cotiza en bolsa). |
country | Selector de país con búsqueda (typeahead). Muestra los 249 países y territorios del estándar ISO 3166-1. Almacena el nombre del país en la llave del campo y genera automáticamente una llave adicional con sufijo _code que contiene el código alpha-2 (ej. si la llave es nationality, se almacena nationality: "México" y nationality_code: "MX"). Sirve tanto para campos de país como de nacionalidad. |
Ejemplo de respuesta almacenada para country
Si defines un campo con llave nationality y otro con llave residence, ambos de tipo country, la respuesta del formulario contendrá:
_code se genera automáticamente — no necesitas declararlo en el esquema.
Opciones de selección (ui_items)
Los campos select y multiselect requieren la propiedad ui_items para definir las opciones disponibles. Existen dos formatos:
Formato simple (strings): el valor almacenado es igual al texto que ve el prospecto.
label) mientras se almacena un valor técnico diferente (value). Útil cuando necesitas guardar identificadores internos, códigos o valores en otro idioma.
"person" o "business" respectivamente.
Puedes mezclar ambos formatos en un mismo
ui_items si lo necesitas, aunque se recomienda mantener la consistencia dentro de un campo. Si usas el formato de objetos, todos los objetos deben tener ambas propiedades (label y value).Campos condicionales (depends_on / depends_on_value)
Cualquier campo del esquema puede declararse como condicional: solo se mostrará (y, si es requerido, solo se exigirá) cuando el valor de otro campo del mismo nivel cumpla una condición. Esto te permite construir formularios dinámicos sin ramificar el esquema.
| Propiedad | Tipo | Descripción |
|---|---|---|
depends_on | string | Clave del campo del cual depende. Debe existir en el ui_order del mismo nivel (raíz si el campo está en raíz, o dentro de la misma sección si está anidado). No se permiten dependencias entre niveles. |
depends_on_value | string[] | Lista de valores que activan la visibilidad del campo. Las entradas se evalúan con lógica OR (literal): basta con que una se cumpla, y AND (comparación numérica): todas tienen que cumplirse. |
depends_on_value puede ser de dos tipos:
- Literal: se compara por igualdad. Si el campo padre es de selección múltiple (array), el match ocurre si el array del padre incluye ese valor.
- Comparación numérica: la cadena debe iniciar con uno de estos operadores seguido de un número, sin espacios:
>,<,>=,<=,!=. El valor del campo padre se intenta convertir a número; si no es numérico, esa entrada simplemente no matchea (las demás se siguen evaluando).
No existe un operador
= porque la igualdad ya está cubierta por el caso literal.- Si declaras
depends_on, es obligatorio declarar tambiéndepends_on_valuecomo un array no vacío. - No puedes declarar
depends_on_valuesindepends_on. - Cada entrada de
depends_on_valuedebe ser un literal o un operador válido seguido de un número parseable (">abc"o">="se rechazan al crear el esquema). - Mientras la condición no se cumpla, el campo está oculto y no se valida como requerido, aunque tenga
ui_required: true. - Cuando todas las entradas de
depends_on_valueson de comparación numérica, se evalúa que el valor cumpla con todas las condiciones (AND). De lo contrario, basta con que pase una sola (OR).
Ejemplo: literal + comparación numérica
nit solo aparece si el prospecto eligió "Juridica", y tutor_legal solo aparece si la edad ingresada es menor a 18.
Ejemplo: múltiples condiciones por rangos (AND)
Ejemplo de configuración
Consultas a fuentes externas
A diferencia deubos y forms, las consultas a fuentes externas no tienen UI para el prospecto. Trébol las ejecuta automáticamente al crear cada verificación con este flujo, consumiendo información de registros públicos. No necesitas añadirlas al payload de cada verificación.
Disponibles por país
Cada consulta tiene sus opciones y estructura de respuesta documentadas en la guía del país:- Colombia:
rues,public_rut_co,public_address_cc_co. Referencia completa: Items de consultas públicas — Colombia. - México:
siger,public_sat_signatures. Referencia completa: Items de consultas públicas — México.
Opciones para public_sat_signatures (México)
Requiere una llave type en options con valor "business", "representatives" o ambos, según la información que necesites extraer del SAT. Puedes declarar dos items public_sat_signatures en el mismo flujo si necesitas ambos.