Skip to main content





KYC
La política de advertencias KYC de la organización puede forzar en revisión o rechazado por código

Política por código de advertencia KYC

En Ajustes de organización, cada código de verificación de documento puede no intervenir, forzar en revisión o forzar rechazado. El estado más pesado gana; un código sin regla mantiene el resultado del control de documento. El ajuste queda auditado en metadata.kycWarningEscalation.Ver Códigos de riesgo en advertencias KYC.
APIKYCBiometría
Las sesiones KYC y biométricas pueden usar un idioma explícito o predeterminado por organización

Idioma configurable de validación

POST /api/kyc/validations ahora acepta el campo opcional language, igual que la creación de sesiones biométricas. El idioma del request tiene prioridad sobre el default de la organización; si ninguno está configurado, la interfaz alojada detecta el idioma del dispositivo.Ver Crear validación KYC y Sesión biométrica embebida.
APIOnboarding
Nuevo ciclo configurable de recordatorios, cierre y reactivación del onboarding

Reactivación segura de onboarding

Los pedidos de documentación pueden usar reintentos automáticos y un cierre final aprobado por un operador. El enlace Quiero continuar registra la intención y vuelve a ejecutar el análisis sin reactivar directamente la entidad.Ver endpoint de reactivación.
APIMatrices de riesgoData listsWebhooks
Las organizaciones padre pueden compartir matrices, listas y webhooks en vivo con canales hijos directos

Compartir matrices, listas y webhooks con canales

El holding puede seleccionar explícitamente con qué hijas directas del mismo entorno comparte cada matriz, data list tenant o webhook. El canal seleccionado ve el mismo UUID (y los mismos ítems de lista o el mismo secreto del webhook). Campos de catálogo: origin (local | parent), readOnly, sharedEnabled. Asignar o ejecutar una matriz del padre, y disparar un webhook del padre, requieren el opt-in del canal (POST /risk-matrices/{id}/child-share, POST /data-lists/{id}/child-share y POST /webhook-config/{id}/child-share). Escribir una fila del padre responde 403 SHARED_RESOURCE_READ_ONLY. El payload del webhook lleva organizationId del canal. Ver Listar matrices de riesgo, Listar data lists y Configuración de webhooks.
APITransaccionesInvestigaciones
Las transacciones ahora pueden reportarse manualmente bajo una categoría de investigación

Reportes manuales de riesgo transaccional

Los analistas pueden usar Reportar riesgo en una transacción para clasificarla bajo una categoría activa, como Fraude o AML. Gu1 crea una alerta sin regla; el analista elige crear una investigación o consolidarla en una compatible del sujeto seleccionado. La decisión queda auditada, el motivo es opcional, el estado financiero no cambia y no se fabrica un risk analysis audit. La transacción conserva los IDs de alerta e investigación, bloquea reportes duplicados y permite volver al caso.
APIServiciosArgentina
Accounts-count de holder intelligence incluye estimaciones demográficas del CUIT

Demografía CUIT en accounts-count

Totales CBU/CVU ahora incluye el objeto aditivo cuitDemographics (cohorte etaria, extranjero probable, género / tipo de contribuyente inferidos). Se calcula al vuelo desde los dígitos del CUIT — baja confianza; no prueba edad ni nacionalidad. Los totales de cuentas y los paths de reglas bajo services.holder_intelligence.* no cambian.El Rule Builder también suma el operador tax_id_demographics_matches sobre campos CUIT: un único configurador permite combinar rango etario (solapamiento o contenido completo) y extranjero probable (confianza media o alta). El cálculo es local, no consulta ni cobra Holder Intelligence, y no altera los operadores tax_id_age_* existentes. Las plantillas de Holder Intelligence ofrecen esta preconfiguración como filtro opcional; si queda vacía, sus condiciones originales no cambian.
APIEntidadesBrasil
La creación automática de empresas de Brasil ahora devuelve el CNAE principal

CNAE principal en fichas de empresas brasileñas

La creación automática de entidades ahora copia la actividad económica principal normalizada en entityData.company.cnae, cnaeDescription y la descripción compatible industry. Los integradores ya no necesitan otra lectura de enrichment para obtener el CNAE principal después de crear la empresa.
APIEntidadesEnrichment
Lectura de enrichment persistido: dossier normalizado y mapped/raw actual

GET de enrichment normalizado y datos actuales

Quedan documentados dos endpoints de lectura (ya existían; esto es documentación, no un contrato nuevo):
  • Obtener enrichment normalizadoGET /entities/{id}/normalized-enrichment. Dossier Gu1 NormalizeType (RootData + consolidadores + summaries). 404 NOT_FOUND si la entidad aún no tiene fila normalizada.
  • Obtener datos actuales de enrichmentGET /entities/{id}/enrichment-data. Últimos payloads mapped / raw por código de integración. Si la entidad existe pero no hay snapshot, HTTP 200 con hasEnrichmentData: false.
Ninguno re-ejecuta integraciones ni consume créditos de enrichment. Obtener entidad no sustituye estas respuestas. Permiso: entities:read.
APIServiciosReglas
Estados de operación en los in-list de CPF

statusIds en los in-list de CPF

Los chequeos de membresía de CPF ahora devuelven los estados de las operaciones, además de count y los importes:Son los estados únicos, no vacíos y ordenados de todas las operaciones coincidentes: 1 (caso cargado), 2 (caso confirmado por estafa), 3 (transacción genuina). Se calculan en la misma pasada que el COUNT, así que no cambian el costo ni la latencia esperada. Con availableCount=false llegan en null, igual que count.Los campos son aditivos: un integrador que manda el mismo request de ayer recibe la misma respuesta más estas claves.En reglas, services.cpf.status_ids (y sus variantes por rol y por cuenta) dejó de requerir el lookup completo: resuelve con el mismo in-list que count.Además, las condiciones de pertenencia (services.cpf.in_list, services.cpf.hit, services.cpf.cbu.in_list, services.cpf.cvu.in_list, services.cpf.account.in_list, services.cpf.account.hit) aceptan el modificador opcional serviceCpfStatusIds en el cuerpo de la condición:
La condición matchea solo si la aparición en CPF tiene al menos una operación en alguno de esos estados, con una sola consulta al servicio y sin una segunda condición. Vacío o ausente = cualquier estado; un chequeo negativo (value: false) no se ve afectado. Es aditivo: una regla existente sin el campo se comporta igual.
APIEntidades
Errores de creación automática de entidades en inglés

Mensajes error para integradores

En creación automática de entidades (síncrona, proxy/webhook y creationFailed[]), el campo error va siempre en inglés. Para ramificar usá code (p. ej. UPSTREAM_CREDITS_ERROR, DOCUMENT_RESTRICTED, INVALID_TAX_ID). El dashboard sigue traduciendo esos códigos para el operador.Si fallan los datos básicos y la entidad no se crea, enrichmentFailed queda [] (ese array es solo para enrichments extra sobre una entidad persistida). El campo aditivo enrichmentFailedDetails lista cada intento (primario + fallbacks) con providerCode, code y errorMessage. La misma lista va anidada en la fila de creationFailed[].Gu1 ahora puede habilitar expresamente la creación de menores con el nombre provisorio Person <taxId>. Cuando la fuente primaria identifica al menor, la entidad se crea inmediatamente con attributes.isMinor: true, sin reintentos, fallbacks ni enrichments adicionales. El análisis de riesgo se ejecuta normalmente. La configuración está apagada por defecto.
APIEntidades
CRUD de cuentas de entidad por externalId y taxId

Rutas de cuentas por external ID y tax ID

GET/POST /entities/{id}/accounts y PATCH/DELETE /entities/{id}/accounts/{accountId} siguen usando el UUID de Gu1. Las mismas operaciones están en:
  • /entities/by-external-id/{externalId}/accounts
  • /entities/by-tax-id/{taxId}/accounts
(más /{accountId} en PATCH/DELETE). {accountId} sigue siendo el UUID de la cuenta en Gu1. La búsqueda por tax ID ignora puntuación y mayúsculas (misma clave alfanumérica que la unicidad a nivel organización). Ver Cuentas de una entidad.
APIEntidades
taxId de empresa en España acepta NIF y NIE además de CIF

Identificación fiscal KYB en España (autónomos)

Con countryCode: ES y type: company, taxId ahora acepta NIF (8 dígitos + letra, ej. 74387028Z) y NIE (X/Y/Z + 7 dígitos + letra) además del CIF. Antes los autónomos fallaban con INVALID_TAX_ID / “Invalid CIF format”.Consultá Requisitos por país y Formatos de Tax ID.
APIEntidadesDashboard
Registro de cuentas multimoneda en entidades persona y empresa

Cuentas de entidades

Las entidades persona y empresa ahora pueden tener varias cuentas financieras en monedas como USD, ARS y BRL. Los nuevos endpoints CRUD admiten ID de cuenta del cliente, estado, CBU/CVU, IBAN, número de cuenta genérico, alias y una cuenta principal por moneda. El dashboard incorpora la pestaña Cuentas, selectores de país y tipo, y eventos de cuenta traducidos en el timeline.accountType ahora es un enum canónico para cuentas bancarias, de ahorro, corrientes, billeteras, pagos, inversión, crédito y operaciones institucionales. POST y PATCH devuelven 400 VALIDATION_ERROR ante valores desconocidos. Los valores históricos fuera del enum se conservan en metadata.legacyAccountType y se normalizan a other.Consultá Cuentas de una entidad.
APIAuth
El 429 de rate limit indica minutos hasta el reset

Espera de rate limit en el body del 429

Si una API key supera el cupo, message incluye cuántos minutos faltan (p. ej. Try again in 17 minutes.). El JSON agrega retryAfterMinutes (techo de retryAfter en segundos). retryAfter y Retry-After siguen en segundos. La ventana sigue arrancando en el primer request del ciclo, no en horas de reloj.Ver Autenticación.
Importaciones masivasEntidadesAPI
Bulk de entidades: fallo de datos básicos vs enrichments extra

Filas automáticas vs manuales

Importar entidades documenta que automatic es el mismo pipeline que Crear entidad automática: si falla el paso de datos básicos, esa fila no se crea y el job sigue (salvo stopOnFirstError). Enrichments extra que fallan después de datos básicos OK no deshacen la entidad. En manual se crea primero con suggested_name; si fallan enrichments opcionales, la ficha queda.Ver también Importaciones masivas.
Importaciones masivasEntidadesTransaccionesAPI
Tope de 20k entidades, un job vivo por org y cupos globales

Concurrencia de importaciones masivas y tope de filas de entidades

Las importaciones CSV de entidades tienen un tope de 20.000 filas por request (siguen aplicando los límites de plan por debajo; BULK_AUTOMATIC_ENTITY_MAX_ITEMS solo puede bajar el tope). Los archivos de transacciones siguen en hasta 5 × 100.000.Cada organización puede tener un job vivo (queued o running) por tipo de importación. Un segundo POST del mismo tipo devuelve 409 JOB_IN_PROGRESS con jobId. Como máximo un job puede esperar (queued) por organización: si ya hay uno en cola de cualquiera de los dos tipos, un POST del otro tipo devuelve 409 JOB_ALREADY_WAITING. Transacciones y entidades no corren a la vez en la misma organización: un POST del otro tipo devuelve 202 queued con code: "QUEUED_WAITING_PREVIOUS_JOB" y queue.waitingForOrgJob: true solo si el otro tipo está running y no hay nadie esperando. Arranca cuando termina el job actual. Como máximo dos organizaciones procesan el mismo tipo a la vez; las demás reciben 202 con code: "QUEUED_WAITING_SLOT" y queue: { globalSlots, running, waitingAhead, waitingForOrgJob } — nunca 409 por el cupo global.El message del 202 explica por qué espera, con code (QUEUED_WAITING_PREVIOUS_JOB o QUEUED_WAITING_SLOT). El mismo motivo se guarda en la fila del job como metadata.queueWaitReason (previous_job o global_slot) para que el historial de importaciones lo muestre mientras el estado sigue en queued. No va en el JSON del 202.Los jobs de transacciones siguen running hasta que termina la evaluación de reglas encolada si executeRules es true. Las importaciones de eventos de usuario no cambian.Ver Importaciones masivas e Importar entidades.
ExportacionesEntidadesTransaccionesAPI
Los archivos de exportación de entidades y transacciones ya no caducan

Retención por archivo en el historial

Las respuestas de jobs de exportación ahora incluyen fileExpiresAt, que acepta null. Ese valor significa que el archivo guardado no caduca; linkExpiresAt sigue describiendo únicamente el enlace firmado enviado por correo.Las exportaciones nuevas de entidades y transacciones quedan disponibles en el historial sin caducidad. Los demás tipos mantienen su período de retención y los archivos existentes conservan su vencimiento anterior. Ver Exportación masiva de entidades y Jobs de exportación de reportes.
Importaciones masivasMatriz de riesgoAPI
Matriz posterior sobre una carga de entidades anterior

Cierre de cargas relacionadas

postImportActions.run_risk_matrix_filtered ahora acepta sourceImportJobId. Al completar el archivo actual, Gu1 puede ejecutar la matriz sobre las entidades created de una importación anterior seleccionada, incluidas las que no tengan una relación en el archivo actual. El lote anterior se valida dentro de la misma organización y debe tener su reporte completo disponible.El nuevo alcance onlyWithoutRiskMatrixExecution=true permite ejecutar la matriz sobre todas las entidades del tipo seleccionado que todavía no tengan una ejecución registrada. Una vez procesadas, no vuelven a entrar en cargas posteriores.Es un campo opcional y aditivo; no puede combinarse con relatedEntitiesOfCreatedEntitiesOnly=true. Ver Importar entidades.
DispositivosInvestigacionesAPI
Contexto de dispositivos para investigaciones

Dispositivos de una entidad y sus relaciones directas

El nuevo endpoint GET /devices/entity/{entityId}/investigation-context devuelve dispositivos agrupados por entidad para vistas de investigación. Usá includeRelatedEntities=true para incluir relaciones directas activas en ambas direcciones; por defecto solo devuelve la entidad investigada.Es un endpoint aditivo. Las consultas existentes del listado de dispositivos no cambian. Ver Listar dispositivos de una entidad.
Importaciones masivasAPI
Nuevos códigos de falla de job en importaciones masivas

jobFailure.code: ARTIFACT_UPLOAD_FAILED y QUEUE_ERROR

Cuando un lote quedaba registrado pero moría antes de arrancar — porque no se pudo guardar su payload/archivo, o porque la cola rechazó el encolado — el job terminaba en failed con jobFailure.code: "WORKER_ERROR" y el motivo real solo vivía en el texto libre del mensaje. Ahora esos dos casos tienen código propio:
  • ARTIFACT_UPLOAD_FAILED — no se pudo almacenar el payload o el archivo fuente; el worker no tenía nada que retomar.
  • QUEUE_ERROR — la cola rechazó el encolado y el job nunca arrancó.
En ambos casos no se importó ninguna fila y corresponde reintentar la carga. Los códigos aparecen en jobFailure.code del estado del job y de failures (JSON), y son los mismos que ya devolvía el POST de importación en error.code.Cambio aditivo: si tenés un switch sobre jobFailure.code, estos valores antes llegaban como WORKER_ERROR. Los jobs viejos no se reescriben.Ver Códigos de falla de importación.
Importaciones masivasAPI
Avisos por fila en validate-csv para transacciones

validate-csv: avisos por fila en mapeos de transacción

El preflight de mapeos transaction ahora recorre todo el archivo (hasta 50.000 filas de datos) en lugar de las primeras 50, y revisa los conjuntos cerrados de type, status, paymentMethod y reason — antes un enum sin mapear aparecía recién con el job de importación ya corriendo.Cambios aditivos en la respuesta 200, sin ruptura de contrato:
  • Nuevo totalRows a nivel raíz, junto al sampledRows que ya existía.
  • Cada entrada de warnings puede traer field, value, allowedValues y occurrences. Los code, message, row y column existentes no cambian.
  • Nuevo código de aviso INVALID_ENUM_VALUE. Ante un código desconocido, usá message como respaldo.
  • Los avisos se agrupan por problema en vez de emitirse por fila: una entrada informa la primera fila afectada más occurrences. Si contabas warnings.length como “filas con problemas”, leé occurrences.
ok sigue siendo true en mapeos de transacción y la importación se sigue permitiendo. No cambia nada de lo que se importa.Ver Validar CSV.
EntidadesAPI
Nuevo estado de entidad awaiting_information

Nuevo estado de entidad: awaiting_information

Las entidades persona/empresa aceptan el valor de ciclo de vida awaiting_information (espera de datos del cliente — típicamente documentos pedidos en onboarding). No es pending_verification (KYC/KYB de identidad pendiente).
  • Podés enviar status: "awaiting_information" en create o PATCH como cualquier otro valor de ciclo de vida.
  • El analista de onboarding setea este estado cuando envía el correo de pedido de documentos y guarda el estado anterior en el pedido. Cuando el merchant carga los documentos (o el operador acepta/descarta el intake), Gu1 restaura ese estado — salvo que un operador lo haya cambiado o bloqueado mientras esperaba.
  • awaiting_information no bloquea operaciones como blocked / suspended / rejected.
Ver Descripción general — Estados.
ServicesAPI
Servicio marketplace: Central de Prevención de Fraude (CPF)

Servicio marketplace: Central de Prevención de Fraude (CPF)

Nuevo código ar_gueno_cpf_service. Gu1 expone lookups CPF (CUIT + CBU/CVU receptor) con checks in-list, lookups completos, batches y detalle de operación.
  • Base: /api/integration-services/ar_gueno_cpf_service
  • Reglas: services.cpf.*
  • In-list (availableCount=true): también devuelve importes acumulados (totalAmount, importes por rol)
  • Distinto de BCRA Central de Deudores
Ver Central de Prevención de Fraude (CPF).
EntitiesAPI
Reporte de entidad: riesgo manual auditable y screening AML normalizado

Reporte de entidad: riesgo vigente y screening AML explícitos

GET /entities/{id}/export-data agrega dos objetos y cambia la semántica de checks[]. El PDF (descarga del panel, POST /entities/{id}/export y el envío por correo) refleja lo mismo.
  • riskSummary (nuevo): riesgo vigente del reporte. mode es manual, automatic o not_evaluated. Con override manual activo, effective trae el score manual, manual incluye justificación, usuario, fecha y score anterior, y automatic.supersededByManual marca el score de matriz como histórico. Antes el reporte mostraba el score de matriz aunque el operador hubiera fijado el riesgo a mano.
  • amlScreening (nuevo): una fila por proveedor de listas con matchStatus, totalHits / relevantHits, listNames, reportedRiskLevel (valor crudo del proveedor, incluido unknown cuando así lo envían) y effectiveRiskLevel + riskLevelSource (nivel derivado de las coincidencias cuando hace falta internamente). El PDF muestra el reportedRiskLevel cuando existe.
  • checks[]: se suman screeningType, executionStatus (completed / failed), matchStatus y effectiveRiskLevel opcional. matchStatus puede ser undetermined: un check sin screening normalizado ya no se presenta como “No Match”.
  • Impacto para integradores: los campos son aditivos y no cambian los ya existentes. Si tu integración inferías “sin coincidencias” desde checks[], leé amlScreening o checks[].matchStatus y tratá undetermined como “no concluyente”.
Ver Informe PDF de entidad por correo.
TransactionsAPI
destinationDetails.mcc acepta 3 o 4 dígitos

Transacciones: largo de MCC más flexible

destinationDetails.mcc en la creación de transacciones ahora acepta 3 o 4 caracteres (antes exactamente 4). Los integradores pueden enviar valores como "742" o "0742". La forma preferida sigue siendo el string ISO 18245 de 4 dígitos cuando esté disponible.Ver Crear transacción.
AML CryptoAPI
Paridad AML Crypto (checkId + historial)

AML Crypto: paridad del flujo cliente

Gu1 AML Crypto (/api/aml-crypto) ahora alinea el flujo de producto para screening de wallets/transacciones:
  • Los endpoints de ejecución responden { success, data } con checkId opcional cuando se guarda un snapshot.
  • GET /aml-crypto/checks soporta filtros + paginación (total, limit, offset).
  • GET /aml-crypto/checks/:id devuelve un check por org.
  • Permisos: aml_crypto:read (historial) y aml_crypto:execute (consultas).
Ver AML Crypto overview.
WorkflowsAPI
Las plantillas siempre crean automations deshabilitadas

POST /automations/from-template crea siempre deshabilitada

Las automatizaciones creadas desde una plantilla ahora se persisten siempre con enabled: false, sin importar el valor de enabled en la definición de la plantilla. Antes la mayoría de las plantillas del catálogo se creaban activas y podían dispararse ante el siguiente evento antes de revisar destinatarios, matriz de riesgo o filtros.
  • Impacto para integradores: después de from-template, activar explícitamente con POST /automations/:id/toggle.
  • No cambian campos de request ni de response.
Ver Listar plantillas.
WorkflowsAPI
Plantilla Monitoreo de entidades

Plantilla de automation: monitoreo de entidades (programada)

  • Nueva plantilla entity_monitoring_scheduled: cron → fetch_entities (filtros preconfigurables) → run_risk_matrix (matriz elegida). Se crea deshabilitada.
  • Knobs de preconfig: frecuencia/hora/zona, builder de filtros, límite de listado, riskMatrixId.
Ver Listar plantillas.
WorkflowsAPI
Preconfig de plantillas de automation + alerta→email

Plantillas de automation: preconfig + alerta → email

  • GET /automations/templates puede incluir parameterDefinitions (path + mirrorPaths opcionales).
  • POST /automations/from-template acepta paramValues opcional. Params requeridos faltantes → 400.
  • Nueva plantilla alert_created_email_notify: ante alert_created, envía email con send_push_notification (reglas, severidades, destinatarios, plantilla). Se crea deshabilitada.
Ver Listar plantillas.
ReportesAPI
Presets editables, preview y CSV/PDF

Presets editables + preview + CSV/PDF

Los presets de reportes ahora se pueden actualizar con PATCH /report-presets/:id (name, description, params; templateCode fijo). Hay POST /report-templates/:code/preview (CSV/PDF con datos de ejemplo) y el catálogo admite CSV/PDF en plantillas bulk y alerts_by_rules. Ver Presets y Plantillas.
ReportesWorkflowsAPI
Generar reporte es async (S3 + Descargables)

Generar reporte → async S3 + Descargables

Generar (corrida de plantilla o preset) siempre encola una exportación en segundo plano a object storage y responde 202 con jobId. Descargá desde Reportería Descargables vía Jobs de exportación de reportes (GET /report-export-jobs).
  • alerts_by_rules ya no devuelve un XLSX sincrónico ni contentBase64 en la respuesta del run.
  • La automation send_report / Generar reporte prioriza reportPresetId; con sendEmail opcional (+ recipientEmails) también envía el archivo por correo.
  • Investigaciones, ficha de entidad (PDF) y Metrics Hub con delivery: "download" ya no responden skipped por falta de destinatarios: encolan el job y el archivo queda en Descargables. Los reportes de ficha y métricas se listan con kind: "documents".
Ver Plantillas de reportes, Presets de reportes y Jobs de exportación de reportes.
ReportesAPI
Presets de reportes inmutables por organización

API de presets de reportes

Las organizaciones pueden guardar configuraciones congeladas de plantillas Gu1 vía GET/POST /report-presets, GET/DELETE /report-presets/:id y POST /report-presets/:id/run. Los presets son inmutables tras crearlos (solo eliminar), con tope de 50 por org, y habilitan descarga en un clic y automatizaciones send_report. Ver Presets de reportes.
ReportesWorkflowsAPI
Plantillas de reportes operativos y reporte de alertas por reglas

API de plantillas de reportes

Gu1 ahora expone GET /report-templates, GET /report-templates/:code y POST /report-templates/:code/run. Los reportes de alertas, entidades, transacciones e investigaciones exponen condiciones campo → operador → valor, incluido Tax ID en listas personalizadas, edad, PEP, sanciones, medios adversos, MEI y procesos legales criminales. Estas condiciones pueden congelarse en presets de la organización. Las plantillas ambiguas de cartera/variaciones de titulares no forman parte del catálogo. Ver Plantillas de reportes.
WorkflowsInvestigaciones
El trigger investigation_status_changed cubre todas las transiciones y expone el estado anterior

Automatizaciones por cambio de estado de investigación

El disparador investigation_status_changed ahora se emite en toda transición de estado del caso, no solo cuando se cambia el estado por API.
  • Nuevos orígenes que disparan automatizaciones: avanzar o retroceder de etapa (En progreso ↔ Pendiente de revisión y cierre por etapa), reapertura de un caso cerrado, acciones de agente, la acción change_status / start_investigation de otra automatización y el pipeline automático de resolución. Antes ninguno de estos emitía el evento, por lo que las automatizaciones sobre PENDING_REVIEW nunca corrían.
  • Ya no se emite cuando el estado no cambia: reenviar el estado actual (por ejemplo CLOSED sobre un caso cerrado) deja de generar notificaciones duplicadas.
  • Estado anterior en el contexto: nueva condición investigation.previousStatus y nueva variable de plantilla {{investigation.previousStatus}}, más investigation.transitionSource para saber de dónde vino el cambio.
  • Nuevas plantillas de email de sistema por estado: investigation_in_progress_email_*, investigation_pending_review_email_*, investigation_closed_email_* e investigation_reopened_email_* (es / en / pt).
  • El selector de estado en las condiciones ahora ofrece los cuatro estados reales del flujo, incluido Pendiente de revisión.
Detalle: Disparadores.
Si tenías automatizaciones con este disparador, ahora pueden ejecutarse en transiciones que antes pasaban en silencio. Revisá las condiciones por estado antes de activar avisos a clientes.
EntidadesAPI
Estado de entidad not_started + docs de status más claras

Nuevo estado de entidad: not_started

Las entidades persona/empresa aceptan el valor de ciclo de vida not_started (equivalente al NOT_STARTED de V2).
  • El default al crear sigue siendo under_review para no romper integraciones existentes.
  • Enviá status: "not_started" en create (manual, automática o bulk) para usarlo.
  • Las etiquetas de matriz y las reglas updateEntityStatus pueden pasar de not_started a under_review, active, rejected, blocked, etc. — no hay paso intermedio obligatorio.
  • Tabla completa y flujos de ejemplo: Descripción general — Estados.
ServiciosAPIReglas
Métricas holder intelligence: delta y % totales

Delta y % de cambio totales (CBU+CVU) en metrics

GET /integration-services/ar_gueno_holder_intelligence_service/cuits/:cuit/metrics ahora expone totales derivados en data.metrics:
  • totalDeltacbuDelta + cvuDelta
  • totalPctChange — % sobre el stock total al inicio (null si start = 0)
  • totalAccountsStart / totalAccountsEnd — stock CBU+CVU en los extremos de la ventana
Paths de reglas: services.holder_intelligence.metrics.total_delta, total_pct_change. Los campos por canal no cambian.
EntidadesAPI
Enriquecimientos fuera del país de la entidad se omiten

autoExecuteIntegrations.enrichments se filtra por país y tipo de entidad

Al crear una entidad (manual o automática), los códigos de enriquecimiento cuya ficha de catálogo no cubre el countryCode de la entidad (o GLOBAL) y su type ahora se ignoran en lugar de ejecutarse. Un enriquecimiento del padrón fiscal argentino nunca puede resolver un CNPJ brasileño: la llamada solo generaba un fallo garantizado en la auditoría de la entidad.
  • Aplica a enrichments, enrichmentGroupRefs y executeAllActiveEnrichments, tanto en la entidad principal como en las relacionadas (autoExecuteIntegrationsShareholders).
  • No cambia la habilitación por organización, los bloqueos de integración ni las cadenas de fallback: acá solo se valida cobertura de país / tipo de entidad.
  • Impacto: los requests que mezclaban códigos de otro país dejan de devolver esos proveedores en los errores de enrichment. Todo proveedor válido para el país de la entidad se comporta igual que antes.
EntidadesAPIDashboard
Notas manuales en la ficha de entidad (API + UI)

Crear notas en el dossier de entidad

Los operadores pueden agregar varias notas en una entidad persona/empresa desde el diálogo de notas del Entity Builder (no solo vía HITL del agente contextual).
  • POST /entities/{id}/notes — body: content (obligatorio, máx. 8000), noteType opcional (general | analysis | finding | recommendation), isImportant opcional (boolean). Requiere entities:edit (legacy entities:write).
  • Cada nota guarda source: manual (UI) o agent (HITL / agente contextual).
  • Evento de auditoría note_added con source, noteType, noteId y contenido.
  • GET /entities/{id}/notes sin cambios (listado, más recientes primero).
Impacto: se pueden documentar decisiones sin abrir un flujo de agente; las notas creadas por HITL quedan con source=agent (filas legacy agent_contextual se renombran por migración).
TransaccionesBatchAPI
El batch de transacciones rechaza ids redondeados por planilla

Nuevo código de fallo por fila: SCIENTIFIC_NOTATION_ID

Las filas de batch de transacciones ahora se rechazan cuando un campo de id llega en notación científica (ej. 5,04E+13), lo que ocurre al abrir y volver a guardar en Excel o Google Sheets un CSV con ids numéricos largos (CPF, CNPJ, números de cuenta). Del redondeo sobreviven solo tres cifras significativas, así que el id no se puede recuperar y rompe en silencio cualquier regla que agrupe por él.
  • Campos verificados: externalId, originExternalId, destinationExternalId, originTaxId, destinationTaxId.
  • La fila falla con el código SCIENTIFIC_NOTATION_ID en failures.csv / JSON failures[]; identifier_type lista los campos afectados.
  • El comportamiento sigue batchErrorHandling como cualquier otro fallo de fila (rollback_all aborta el archivo, continue_collect_errors crea las válidas).
  • Impacto: archivos que antes importaban con ids corruptos ahora reportan esas filas como fallidas. Volvé a exportar el CSV manteniendo las columnas de id como texto.
Ver Códigos de fallo de batch.
TransaccionesBatchAPI
Batch de transacciones: omitir refs inválidas + failures.csv en S3

Política de errores y artefactos S3 en batch de transacciones

  • batchErrorHandling=rollback_all es el default (UI + upload multipart si se omite): aborta el archivo ante refs/amounts inválidos o fallos de insert; el detalle va a failures.csv (S3), sin arrays gigantes en jsonb.
  • El cliente puede elegir continue_collect_errors (omitir filas inválidas y crear las válidas) o stop_keep_success.
  • El selector de política también está en imports sin mapper (TX y entidades).
  • CSV de fallos: columnas external_id,code,error,role,identifier_type,value.
  • Nuevo GET /batch-import/jobs/{jobId}/payload: descarga el payload.json procesado cuando está guardado (adjunto autenticado).
  • Alineación: jobs de user-events y entidades siguen el mismo modelo S3-first que transacciones. El kind en respuestas es entity_batch; entity_automatic sigue como alias de entrada.
Ver Códigos de fallo de batch, Fallos de job de transacciones y Descargar payload del job.
TransaccionesReglas
Filtrar transacciones por la fecha de su última evaluación de reglas

Filtro por última evaluación de reglas

GET /transactions ahora acepta los filtros ISO inclusivos opcionales lastRiskEvaluationFrom y lastRiskEvaluationTo. Pueden combinarse para seleccionar transacciones cuya última evaluación exitosa de reglas esté dentro de un rango. Las transacciones evaluadas antes de que existiera este campo se resuelven desde su historial de análisis de riesgo, y el listado ahora devuelve lastRiskEvaluationAt.Ver Listar transacciones.
WebhooksEntidades
Los webhooks legacy de entidades ahora incluyen score y documento

Campos adicionales en webhooks legacy planos de entidades

Los payloads legacy planos de webhooks de entidades ahora incluyen los campos aditivos riskScore y documentNumber. Los valores y mapeos de estados existentes no cambian.Ver Eventos de webhook de entidades.
TransaccionesBatch
Descargar qué transacciones se omitieron por duplicado

Reporte de filas omitidas en batch de transacciones

Nuevo endpoint GET /batch-import/transaction-jobs/{jobId}/skips.csv: lista las transacciones que el batch no insertó porque el externalId ya existía (columnas external_id,reason). Hasta ahora skipped era solo un contador, y una recarga de duplicados parecía un fallo silencioso.
  • Disponible para jobs corridos con el default skipDuplicates=true; con skipDuplicates=false los duplicados los resuelve la base de datos y solo se cuentan, así que el endpoint devuelve SKIPS_NOT_AVAILABLE.
  • Los jobs terminados antes de este release no tienen reporte guardado (SKIPS_NOT_AVAILABLE).
  • También disponible como botón de descarga en el historial de importaciones.
Ver Fallos batch de transacciones.
EntidadesBatch
Bulk: relaciones declarativas aunque la entidad ya exista

Relaciones declarativas con tax_id duplicado (bulk)

En importación masiva manual, si el tax_id de la fila ya existe y se omite la creación, Gu1 igual aplica las relationships / columnas CSV related_* de esa fila (igual que en create automático). Si el vínculo (mismo source → target + tipo) ya existe, se omite de forma idempotente.Ver Importar entidades (bulk).
EntidadesAPIBatch
Relaciones declarativas en create + bulk de entidades

Vínculos a entidades existentes en create e importación masiva

Podés declarar relaciones a entidades ya existentes (por relatedEntityId / relatedTaxId / relatedExternalId + relationshipType + role) sin depender del depth de enrichment:
  • POST /entities y POST /entities/automatic: body opcional relationships[] (máx. 10).
  • Bulk CSV plataforma: columnas related_tax_id / related_external_id / related_entity_id, relationship_type, relationship_role, relationship_as_source (una relación por fila).
  • Si la contraparte no existe → RELATED_ENTITY_NOT_FOUND y la entidad no se crea.
Ver Crear entidad, Crear automáticamente e Importar entidades (bulk).
WebhooksSeguridadIAM
Webhook de seguridad: cambio de acceso a entorno

security.member.environment_changed

Cuando un admin actualiza el acceso prod/sandbox de un miembro desde Equipos (roster) en una asignación, Gu1 emite un solo webhook en lugar de varios grant/revoke:
  • Evento: security.member.environment_changed
  • context.fromAccess / context.toAccess: "both" | "production" | "sandbox" | "none"
  • changes.environmentAccess: { previous, current } con los mismos valores
Los eventos security.member.environment_granted / .environment_revoked siguen existiendo para flujos de grant/revoke de un solo ambiente.Ver Eventos de webhook de seguridad.
TransaccionesAPIBatch
linkEntityStrict + soft-link sin romper defaults de batch
Crear TX / lote siempre intenta auto-vincular si hay match (entityId → externalId → taxId).
  • Default batch (BC): omitir flags sigue estrictovalidateExistingEntity default true. Refs sin resolver → 400 (igual que antes).
  • linkEntityStrict=true: fuerza hard-fail (body o query).
  • linkEntityStrict=false: fuerza soft-link (no falla si falta), aunque validateExistingEntity diga otra cosa.
  • validateExistingEntity=false: soft-link (y ahora sí vincula si encuentra — antes el soft de batch salteaba el link).
POST /transactions (una TX) mantiene validateExistingEntity default false.Ver Crear lote.
APIBilling
Rename del código de cuota contractual de creación

Código de error: CREATION_CONTRACT_QUOTA_EXCEEDED

Cuando se agota la cuota contractual de creación de la organización (entidades, transacciones, eventos de usuario), las APIs de Gu1 responden 429 con código CREATION_CONTRACT_QUOTA_EXCEEDED (antes CREATION_QUOTA_EXCEEDED).
  • Mismo status HTTP y shape del payload (module, remainingTotal, periodKey, requested).
  • Los fallos de fila en bulk import emiten CREATION_CONTRACT_QUOTA_EXCEEDED; el código viejo queda como alias deprecado para failures.csv históricos.
Ver Códigos de fallo de bulk import.
APIEntities
Unicidad de taxId entre person y company

Unicidad de tax ID (por organización)

Un taxId activo (normalizado alfanumérico) puede pertenecer a una sola entidad por organización, sea person o company.
  • Mismo tipo ya existe → la creación automática reutiliza esa entidad (alreadyExisted).
  • Otro tipo ya tiene el tax ID → 409 con código DUPLICATE_TAX_ID (sin fila nueva).
  • Aplica a create manual, create automatic, PATCH de tax ID y restore de soft-delete.
  • Los duplicados históricos no se borran; los writes conflictivos nuevos se bloquean en app y con un trigger en base de datos.
Ver Crear entidad automáticamente y Crear entidad.
APIRules
Acción addFieldToCustomList en reglas

Nueva acción de regla: addFieldToCustomList

Las reglas de transacción, persona y empresa pueden incluir la acción addFieldToCustomList. Al hacer match, el motor extrae uno o más campos del contexto evaluado y los agrega a listas custom del tenant (type: custom, activas, no globales).
Valores vacíos se omiten; duplicados por primaryValue se ignoran. Disponible en POST/PUT de reglas universales y en el Rule Builder.
APIEntities
Bloqueo en creación por listas

Bloqueo en creación (configuración de análisis de riesgo)

Las organizaciones pueden configurar reglas de bloqueo en creación en Configuración de la organización → Análisis de riesgo: un campo de entidad (p. ej. taxId) contra una lista custom. Si el valor está en la lista, se bloquea la creación: la solicitud falla con 422 y código ENTITY_CREATION_LIST_BLOCK (details: ruleId, listId, fieldPath, scope, matchedValue). El intento bloqueado queda registrado en el log de auditoría como evidencia.Aplica a POST /entities, POST /entities/automatic, importación masiva, upsert (solo alta) y creación automática desde eventos SDK. Accionistas/UBO en creación automática si el alcance de la regla lo incluye; si se bloquea un accionista, se revierten las entidades creadas en esa corrida automática.
APIEntities
PATCH /entities/{id}/attributes

Endpoint dedicado para atributos

PATCH /entities/{id}/attributes — actualiza solo atributos personalizados sin tocar otros campos.
  • mode: merge (default) — las claves enviadas pisan o crean; las omitidas se conservan
  • mode: replaceattributes del body reemplaza el mapa completo ({} borra todo)
  • Buckets anidados por categoría en escritura
  • Dispara webhook entity.updated y matrices con trigger entity_updated cuando aplica
Ver Actualizar atributos.
APIEntities
Atributos de entidad: almacenamiento tal cual + categorías

Atributos personalizados almacenados tal cual (API)

Aditivo. Los attributes se almacenan exactamente como se envían en create/update/upsert/importación automática — el input anidado ya no se aplana.
  • Sin categoría: valores escalares/array en la raíz (p. ej. { "phone": "..." }) — sin cambios.
  • Categorizado: un objeto de primer nivel agrupa sus claves internas bajo esa categoría (p. ej. { "contact": { "phone": "..." } }). La clave del objeto es la categoría; en el dashboard se muestra como card de categoría.
  • Lectura: GET devuelve la misma forma que se escribió (sin aplanar).
  • Reglas / webhooks: leen la forma almacenada — attributes.phone para plano, attributes.contact.phone para anidado. Usá claves de categoría identificador-seguras.
Ver Obtener entidad y Actualizar entidad.
APIWebhooksEntities
API activación de país por entidad + webhook

Activación operativa por país (merchant)

Aditivo. Activar o desactivar países soportados por entidad sin modificar el perfil de la entidad:
  • GET /entities/{id}/country-activations — lista AR, BR, CL, CO, MX, US; filas ausentes = deactivated (opt-in).
  • PATCH /entities/{id}/country-activations/{countryCode} — body { "status": "deactivated" | "activation_requested" | "activation_in_progress" | "activated" }; requiere entities:edit. Transiciones libres. Idempotente si el estado no cambia (sin webhook).
  • Webhook entity.country_activation_changed — se emite en cada cambio real; incluye activeCountryCodes, snapshot countries y timeline por país; suscribirse en la config de webhooks existente.
Ver Listar activaciones, Actualizar activación y Eventos webhook de entidad.
APIBulk imports
Bulk import: paridad política de errores en eventos

Import batch de eventos de usuario — política de errores por fila

Aditivo. Los imports CSV de eventos alinean con entidades y transacciones:
  • POST /batch-import/import/user-events acepta batchErrorHandling: continue_collect_errors (default), rollback_all o stop_keep_success.
  • Respuestas 202 incluyen preflightFailures cuando filas inválidas se omiten con política continue.
  • POST /batch-import/validate-csv valida cada fila si el target es user_event (rowErrors, validRowCount, invalidRowCount).
Ver Importar eventos y Validar CSV.
RulesAPI
Create reglas: revisión IA obligatoria + provenance

POST /rules — revisión IA síncrona en toda alta

  • Las reglas nuevas quedan siempre en in_progress con enabled: false; status / enabled del body se ignoran en create.
  • La respuesta incluye aiReview y puede tardar varios segundos.
  • Body opcional creationProvenance: origen (user, agent, import_json, template, bundle, api) e ids de chat del agente.
  • La revisión se audita pero no debita tokens de IA.
Ver Crear regla.
WebhooksSecurityIAM
Webhooks de seguridad: campos de contexto de invitación

security.member.invited / security.member.createdpayload.context ampliado

Aditivo. Los webhooks del ciclo de invitación incluyen metadata de correlación y acceso en payload.context:
  • invitationId — correlacionar invitedcreated
  • granularRoleIds, granularRoleIdsSandbox
  • includeProduction, includeSandbox
  • teamId, teamIdSandbox
  • hasEnvironmentAccess — flag de acceso para la org del sobre
  • environment"production" o "sandbox" según la org del sobre
  • invitedByUserId, acceptedVia (en created)
  • syncPartialFailure, syncErrorMessage (en created cuando la configuración secundaria no se completó)
Los campos existentes no cambian. Ver Eventos de webhooks de seguridad.
APIBulk imports
Batch import: polling de job por jobId

Polling de jobs batch import

Aditivo. Nuevo endpoint canónico para consultar un job de importación batch sin recorrer el histórico paginado.

Endpoints HTTP

  • GET /batch-import/jobs/{jobId} — lookup directo por job id (entidades, transacciones y user events). Devuelve status, contadores (totalItems, succeeded, failed, skipped), timestamps y jobFailure opcional si abortó el job completo. Query opcional include=failures devuelve el mismo JSON que los endpoints de failures por tipo.
  • GET /batch-import/unified-history — nuevo query param jobId (coincidencia exacta; 0 o 1 fila). El histórico unificado sigue siendo para listados; usar GET /batch-import/jobs/{jobId} para polling post-upload.

Flujo recomendado para integradores

Upload (202 + jobId) → poll GET /batch-import/jobs/{jobId} cada 2–5 s hasta status terminal → descargar fallos si hace falta.Ver Consultar estado de job batch y Historial unificado.
MarketplaceAPIRules
Inteligencia de titulares: exists + accounts-count + metrics

Inteligencia de Titulares CBU/CVU (ar_gueno_holder_intelligence_service)

Aditivo. Endpoint de totales renombrado a accounts-count (antes cbu-count en desarrollo). Devuelve snapshotDate, isNew, cbuCount, cvuCount y totalAccounts.

Endpoints HTTP

  • GET /api/integration-services/ar_gueno_holder_intelligence_service/health — disponibilidad y frescura del corpus (status, corpusFreshnessDate). Sin cobro.
  • GET /api/integration-services/ar_gueno_holder_intelligence_service/cuits/:cuit/exists — pertenencia al corpus. Devuelve found y snapshotDate (null si no existe). Siempre HTTP 200 en éxito (incluso found: false). Sin cobro.
  • GET /api/integration-services/ar_gueno_holder_intelligence_service/cuits/:cuit/accounts-count — totales CBU/CVU + isNew y snapshotDate. Cobro por request cuando el producto tiene precio.
  • GET /api/integration-services/ar_gueno_holder_intelligence_service/cuits/:cuit/metrics — lookback densificado (lookback 1–180 o preset window w_1dw_180d). Query opcional date (YYYY-MM-DD, fin inclusive). Devuelve aliases de stock, deltas, %, varianza y aceleración. Cobro por request cuando el producto tiene precio. Errores: 400 LOOKBACK_REQUIRED / INVALID_LOOKBACK / INVALID_WINDOW / INVALID_DATE, 404 CUIT_NOT_FOUND, 422 INCOMPLETE_WINDOW / NO_INCREMENTAL_STATE.

Motor de reglas

Nuevos campos bajo services.holder_intelligence.*: found, snapshot_date, cbu_quantity, cvu_quantity, total_accounts y metrics.* con holderIntelligenceLookbackDays (1–180) por condición. En reglas de transacción la ventana termina en transactedAt por defecto. Las métricas disparan un fetch upstream cobrable separado.Ver Códigos de proveedor y la sección Servicios marketplace.
DocsMarketplaceAPI
Documentación sección Servicios marketplace

Documentación Servicios (en / es / pt)

Nueva sección Servicios en Mintlify: overview, guía por servicio y una página por endpoint HTTP para ar_gueno_holder_intelligence_service. Overview.
KYCBiometricAPIEntities
KYC y biométrico: entityTaxId / entityExternalId

Identificadores de entidad además de entityId

Aditivo — compatible hacia atrás. Clientes que envían solo entityId no cambian.

Creación (POST)

  • POST /api/kyc/validations — body acepta entityId, entityExternalId o entityTaxId (exactamente uno).
  • POST /api/kyc/biometric/sessions — mismas opciones.
Gu1 resuelve a UUID interno. 404 NOT_FOUND si no hay entidad persistida.

Lectura (GET)

  • GET /api/kyc/validations?entityTaxId=... o ?entityExternalId=...
  • GET /api/kyc/biometric/sessions?entityTaxId=... o ?entityExternalId=...
  • KYC: GET /api/kyc/entities/by-tax-id/:taxId/current|validations|status y rutas by-external-id
  • Biométrico: GET /api/kyc/biometric/entities/by-tax-id/:taxId/current y by-external-id

Vista previa sandbox (solo GET)

  • GET /api/entities/by-tax-id/{taxId} y GET /api/entities?taxId=... pueden devolver datos sintéticos sandboxMock: true (id: null) para números del catálogo sin fila real. No habilita POST sin crear entidad real.
Ver Crear validación KYC, Sesión biométrica embebida y Datos mock sandbox.
KYCBiometricAPI
KYC y biométrico: IDs bloqueantes en 409

Respuestas 409 aditivas para sesiones / validaciones abiertas

Sin breaking change para clientes que solo leen error y message. Campos opcionales nuevos en códigos 409 existentes:

Biometría embebida — POST /api/kyc/biometric/sessions

  • Con la última sesión en pending o in_progress, el create siempre devuelve 409 ACTIVE_SESSION_EXISTS (nunca 201 con la misma sesión pending).
  • El body incluye activeSessionId para cancelar: POST .../sessions/{activeSessionId}/cancel.

Validación KYC — POST /api/kyc/validations

  • Con una validación abierta (pending, in_progress, in_review), el create devuelve 409 VALIDATION_IN_PROGRESS.
  • El body ahora también incluye activeValidationId para cancelar: DELETE .../validations/{activeValidationId}/cancel.
Ver Crear validación KYC y Sesión biométrica embebida.
APITransactionsRules
GET transacción: rulesExecutionSummary opcional en persisted

includeRulesSummary en GET de una transacción

GET /transactions/{id} y GET /transactions/external/{externalId} aceptan un query param opcional:
  • includeRulesSummary=full — Agrega persisted.rulesExecutionSummary desde la fila más reciente de risk_analysis_audits de esa transacción. No se re-ejecutan reglas en la lectura.
Default (sin param): respuesta igual que antes — sin rulesExecutionSummary al leer. Usá full solo en vistas de detalle o debugging, no en polling masivo de listados.Ver Obtener transacción y Resumen de ejecución de reglas.
APIRulesTransactions
Resumen de reglas: status entidad origen/destino

Campos opcionales en rulesExecutionSummary

Cuando reglas transaccionales usan updateEntityStatus con estado de entidad origen o destino, la API puede incluir estos campos opcionales (aditivos; clientes existentes sin cambios):
  • rulesHit[].actions.originEntityStatus / destinationEntityStatus — configurados en la regla que hizo match.
  • actionsExecuted.originEntityStatus / destinationEntityStatus — estados finales de entidad aplicados en esa corrida (junto con actionsExecuted.status para la transacción).
Los snapshots de reglas en auditoría conservan la lista completa de acciones configuradas (incluye cambio de estado diferido) para UI e integradores.Ver Resumen de ejecución de reglas.
WebhooksSecurityIAM
Webhooks security: miembro unificado + entornos

Eventos security.member.* (nomenclatura unificada)

Todos los eventos de IAM sobre personas usan el prefijo security.member.* (ya no security.user.*, security.team.* ni security.channel.*):
  • Perfil / contraseña: security.member.profile_updated, .password_reset, .password_generated
  • Equipos: security.member.team_added, .team_removed, .team_role_changed
  • Canales (org hija): security.member.channel_granted, .channel_revoked
  • Acceso a entornos (production / sandbox): security.member.environment_granted, .environment_revoked — distinguidos por context.environment ("production" | "sandbox")
Los cambios de membresía en equipos ya no emiten security.role.assigned / security.role.updated ambiguos.Breaking: si tenías suscripciones a security.user.password_* u otros keys anteriores, actualizá a los equivalentes security.member.*.Ver Eventos webhook de seguridad.
KYCBiometricAPI
Endpoint sesión biométrica actual

GET /api/kyc/biometric/entities/:entityId/current

Alineado con KYC GET /api/kyc/entities/:entityId/current:
  • Devuelve la última sesión biométrica de la entidad (por createdAt), cualquier estado (pending, in_progress, approved, rejected, …).
  • 200 con null si la entidad no tiene sesiones biométricas (ya no 404).
  • En el listado, currentSessionId sigue siendo solo la última sesión approved.
El 409 ACTIVE_SESSION_EXISTS al crear incluye activeSessionId para cancelar la sesión bloqueante sin consulta extra.Ver Sesión biométrica actual.
WebhooksSecurityIAM
Eventos webhook de Seguridad e IAM

Eventos webhook de seguridad (security.*)

Nueva categoría outbound para monitoreo Seguridad / IAM (integraciones SIEM). Suscríbase en Webhooks → Configuración a eventos como:
  • Auth: security.auth.login_succeeded, security.auth.logout, security.auth.login_failed
  • Miembros: security.member.invited, .created, .removed, .activated, .deactivated
  • Roles: security.role.created, .updated, .deleted, .assigned, .revoked
  • RBAC: security.rbac.granular_toggled
  • Contraseña (admin): security.member.password_reset, security.member.password_generated (antes security.user.password_*)
  • Settings: security.settings.updated (sandbox, parámetros de seguridad auditados)
El payload incluye actionAt, actor, affectedUser, description, changes (anterior/actual) y context (IP, user agent, scope).No cubierto: cambio de contraseña self-service en Clerk, MFA/SSO en Clerk, auth por API key.Ver Eventos webhook de seguridad.
Risk matricesEntitiesTransactionsAPI
watchFields en matrices + entity_updated en runtime

Triggers granulares de matriz (watchFields)

Los triggers entity_updated (entidades y transacción actualizada en KYT) admiten watchFields opcional: paths del motor de reglas (p. ej. email, phone, attributes.clientTypes, metadata.email). Vacío o ausente = cualquier cambio dispara la matriz (retrocompatible). Con valores, la matriz corre solo si cambió al menos un path listado.Configurable en el editor de matrices (pestaña Triggers) o en risk_matrices.triggers[] vía API.

Actualización de entidad — entity_updated cableado

PATCH /entities/{id} (y por external ID / tax ID) ejecuta matrices asignadas con trigger entity_updated, salvo skipRulesExecution: true. El webhook entity.updated incluye rulesExecutionSummary. Ver Actualizar entidad.PATCH de transacción con executeRules=true pasa los paths cambiados al mismo filtro.
EntitiesBulk importAPI
Import bulk entidades — política de enrichments en hijos

Import bulk automático — enrichments en hijos y alcance de monitoreo

POST /batch-import/import/entities e import bulk JSON aceptan (modo automático, depth > 0):
  • childEnrichmentPolicy: all_active (default), by_root_type o basic_only.
    • by_root_type: filas empresa → accionistas con todos los enrichments activos excepto global_gueno_sanctions_enrichment; filas persona → relacionadas solo con datos básicos del proveedor de la raíz.
  • monitoringApplyToRelationships: con false, monitoring solo en entidades principales. Default true con depth > 0 si se omite.
La UI de importación masiva expone los mismos controles. Ver Importar entidades (bulk).
EventsSDKAPI
Eventos pre-login del SDK y remote config

Eventos — campos de sesión del SDK y pre-login

POST /events/user ahora acepta dos campos opcionales: sessionId (id de sesión del SDK, sess_...) y sdkSignals (señales estructuradas del SDK — flags de integridad y comportamiento, separadas del metadata). Ambos se persisten en el evento. Omitirlos mantiene el comportamiento anterior byte a byte.Para organizaciones con el SDK habilitado, un evento que trae solo un sessionId (sin entityId/entityExternalId/taxId) ahora se acepta y se guarda como evento anónimo pre-login en lugar de devolver error; se vincula a la entidad más tarde, en el primer evento que traiga sessionId y un identificador de entidad juntos. Sin el SDK habilitado, sigue siendo obligatorio un identificador de entidad (misma respuesta que antes).

Eventos — nuevos tipos

Se agregaron tres tipos de evento del SDK: SESSION_STARTED, SESSION_IDENTIFIED, SCREEN_VIEW. Los clientes existentes no se ven afectados.

Nuevo endpoint — GET /sdk/config

Devuelve el remote config del SDK (toggles de señales + defaults de transporte) más el flag sdkEnabled de la organización.Ver Crear Evento de Usuario.
EnrichmentEntitiesAPI
Errores de enrichment y validación de tax ID

Enrichment marketplace — errores estructurados

POST /integration-execution/marketplace/enrichment devuelve objetos error más ricos: category, retryable y statusCode opcionales.

Creación automática / bulk — tax ID estricto

taxId debe ser solo el identificador fiscal; valores fusionados con columnas extra se rechazan con INVALID_TAX_ID.

Transacciones — exchangeRate opcional (fallback)

POST /transactions y batch aceptan exchangeRate opcional por transacción. Sin este campo, el comportamiento es el mismo de siempre (conversión automática).Solo se usa si falla la conversión automática. Semántica: unidades de moneda base por 1 unidad de currency; monto normalizado en base = amount × exchangeRate. rateSource: client-provided.No convertibles hoy (sin tasa automática): WLD (Worldcoin), ETH (Ethereum). Enviá exchangeRate para monto normalizado en moneda base y reglas que dependen de conversión.Ver Crear transacción — Conversión de moneda.
EntitiesEnrichmentAPIDocs
Entidades — refresh scope y preserve

POST /entities/{entityId}/refresh — scope unificado y sync seguro

Campos opcionales nuevos (retrocompatibles si se omiten):
  • refreshScope: basic_data | all_active | selected (+ providerCodes si selected).
  • preserveName: true conserva el nombre; omitido = sync legacy desde fullName normalizado.
  • preserveEntityData: solo con refreshScope: "basic_data"true completa vacíos en entityData, false reemplaza; omitido = no tocar ficha.
basic_data siempre es solo entidad raíz (sin socios), sin importar depth.Ver Actualizar entidad. Payloads existentes sin estos campos no cambian de comportamiento.
KYCAPIDocs
KYC — warning duplicado cross-entity

Warning GUENO_CROSS_ENTITY_DUPLICATED

Cuando Gu1 resuelve referencias duplicadas del proveedor en otra entidad de la misma organización (metadata.kycCrossEntityDuplicates.matches):
  • Añade GUENO_CROSS_ENTITY_DUPLICATED a warnings de la validación por sesión.
  • Si el proveedor mapeó approved, Gu1 deja el estado en in_review (metadata.guenoCrossEntityDuplicateEscalation).
  • No omitible: no puede ir en omitWarnings (400) y bloquea auto-aprobación por omit.
Ver Códigos de advertencia KYC y omitWarnings.
KYCAPIWebhooksDocs
KYC — Gu1 Biometría

Gu1 Biometría (POST /api/kyc/biometric y /api/kyc/biometric/sessions)

Re-autenticación tras KYC aprobado: verificación por imagen (POST /api/kyc/biometric) o sesión con UI hospedada (sessionUrl, iframeAllow, hostedSessionId, webhookUrl opcional, webhooks biometric.session_*, veredicto Gu1 con rejectionCode). Producto marketplace global_gueno_biometric_kyc. Ver Verificación biométrica y Sesión biométrica.
KYCAPIWebhooksDocs
KYC — decision con forma dual array/objeto

decision siempre incluye pares array + objeto por feature

Al persistir (sync, webhook, ingest manual), Gu1 normaliza decision para que integradores lean indistintamente claves singulares legacy o arrays:
  • id_verificationid_verifications[0]
  • livenessliveness_checks[0]
  • face_matchface_matches[0]
  • aml_screeningaml_screenings[0]
  • ip_analysisip_analyses[0]
Si venían ambas formas, array[0] gana y el objeto singular se sincroniza. Aplica a GET de validación y webhooks KYC (payload.decision).Ejemplos Mintlify actualizados con decision completo (sin branding de vendor; media como claves kyc/...). Ver Eventos webhook KYC.
EntitiesRisk MatrixAPIDocs
Matriz de riesgo — rulesEngineConfig en analyze

Config del motor en POST /entities/{entityId}/analyze

Nuevo objeto opcional rulesEngineConfig: partialCoverage (cobertura por matriz) y omitCoverage (omitir gates de cobertura). Defaults false — sin cambio vs comportamiento histórico.Ver Analizar entidad.
KYCAPIDocs
KYC — extractedData.ejemplar (DNI argentino)

ejemplar en extractedData

Las verificaciones de DNI argentino pueden incluir extractedData.ejemplar (AD) en validaciones KYC y registros de ID Verification (GET, sync, webhooks).Con doubleCheckRenaper: true, comparisonResults.ejemplar compara OCR vs RENAPER; un mismatch agrega RENAPER_EJEMPLAR_NOT_MATCH a warnings.Ver campos de extractedData y doble chequeo RENAPER.
KYCAPIDocs
KYC — flujo RENAPER y revisión manual

Doble chequeo RENAPER en validaciones KYC

Con doubleCheckRenaper: true, metadata.responseDoubleChecks.renaper incluye comparisonResults, renaperBiometric (cuando aplica) y códigos RENAPER en warnings (p. ej. RENAPER_TRAMITE_ID_NOT_MATCH, RENAPER_EXPIRY_NOT_MATCH) sin reemplazar advertencias de la verificación OCR KYC.Enforce (rechazo automático): solo si la verificación OCR KYC devuelve el estado approved. En in_review y rejected el chequeo es informativo y deja datos en metadata. POST /api/kyc/validations/{id}/approve desde in_review no re-ejecuta RENAPER.Ver Crear validación KYC y Aprobar validación.
EntitiesEnrichmentAPIDocs
Marketplace — checks eliminados, solo enrichments

Producto marketplace *_check eliminado

  • Eliminado: códigos *_check, POST /integration-execution/marketplace/check, triggers/acciones de reglas check_completed / execute_check, y permisos RBAC checks:read / checks:execute.
  • Usar en su lugar: el *_enrichment equivalente con Ejecutar enrichment.
  • Compat legacy: payloads de create/import con checks, executeAllActiveChecks o *_check en autoExecuteIntegrations.enrichments se ignoran al parsear.
Ver Códigos de proveedores, Crear entidad y Crear automáticamente.
Bulk importsAPIDocs
Bulk imports — códigos de fallo + JSON

Códigos estables y endpoints JSON de fallos batch

  • Fallos por fila con code + messageCatálogo. CSV incluye columna code.
  • JSON: GET /batch-import/transaction-jobs/{jobId}/failures, GET /batch-import/user-event-jobs/{jobId}/failures, GET /batch-import/entity-jobs/{jobId}/failures — incluyen failures[], jobFailure opcional, skips[] en entidades, truncated / failuresTotal (máx. 500).
  • CSV: mismas rutas con sufijo .csv para descarga directa.
EntitiesAPIDocs
Entidades — PATCH riskMatrixIds

Asignar matrices de riesgo al actualizar entidad

  • PATCH /entities/{id} (y PATCH /entities/by-external-id/{externalId}, PATCH /entities/by-tax-id/{taxId}): documentados riskMatrixIds (string[]) y riskMatrixId (string | string[] | null) — misma normalización que en create. Solo asigna matrices; no ejecuta el motor de reglas (usar Analizar entidad o triggers del ciclo de vida).
  • Mintlify actualizado en /en/, /es/, /pt/ en Actualizar entidad y Actualizar por ID externo.
TransactionsRulesAPIDocs
Transacciones — configRulesExecution.notifications

configRulesExecution en alta de transacción

  • POST /transactions: objeto opcional en el body configRulesExecution con notifications (boolean). Con false, gu1 omite notificaciones in-app de la evaluación de reglas (matriz / estado). Acciones createAlert e investigaciones no cambian.
  • Default: si se omite el objeto, el resto de organizaciones mantiene el comportamiento anterior (notifications efectivamente true). Paytime prod (3bc1f621-27d4-423e-9d64-86680bec2388) usa notifications: false por defecto.
  • Legacy KYT POST /legacy/kyt/verifyTransaction: mismo campo en el body Gu2; Paytime prod notifications: false por defecto si se omite.
  • Aplica en reglas sync y async (asyncRules).
Ver Crear transacción. Paridad en /en/ y /pt/.
TransactionsAPIDocs
Transacciones — denormalización canónica al vincular entidad

POST /transactions y lote — campos de contraparte vinculados

Cuando origen o destino queda vinculado a persona/empresa (originEntityId / auto-link por external o tax id), gu1 siempre pisa las columnas denormalizadas desde la entidad antes del insert:
  • originTaxId / destinationTaxIdentities.tax_id
  • originExternalId / destinationExternalIdentities.external_id
Los valores que mande el cliente en esos campos no se conservan si difieren de la entidad vinculada. Alinea reglas transaccionales con eventos de usuario bajo los mismos identificadores.Documentado en Crear transacción y Crear lote.
EventsAPIDocs
Eventos de usuario — prioridad isNewDevice del cliente

POST /events/userisNewDevice respeta el valor del integrador

  • Si envías isNewDevice: true o false, gu1 persiste exactamente ese valor (sin sobrescritura en servidor).
  • Si omitís el campo, gu1 lo infiere cuando hay deviceId + deviceDetails (registro de dispositivos; true si el device es nuevo o firstSeenAt está dentro de los últimos 5 minutos); si no, false.
Documentado en Crear evento de usuario y Overview de eventos.
EntitiesBulk importAPI
Import entidades — dot notation attributes / entityData

CSV plataforma: attributes.* y entityData.*

  • Cabeceras con punto (misma idea que transacciones nativas): attributes.segment_tag, attributes.tags.tier, entityData.income, entityData.tradeName.
  • entityData.<campo> sin person/company → bucket según type de la fila.
  • Columnas sin prefijo (segment_tag) siguen yendo a attributes (retrocompat).
  • Plantillas hub actualizadas; ver Importar entidades (CSV).
Bulk importAPIDocs
Importaciones masivas — límites y manual vs automático

Límites documentados (en / es / pt)

  • Importaciones masivas — overview: matriz de archivos por request, filas por plan e manual vs automático en entidades.
  • Páginas por endpoint con límites: Importar entidades (CSV), transacciones, eventos de usuario.
  • Consulta límites en runtime: GET /individual-organization/batch-upload-enabled.
EntitiesBulk importAPI
Import entidades — países por modo

Países en import bulk (manual vs automático)

  • Manual (manual): cualquier ISO2 válido de plataforma (lote o country_code / country por fila). Sin pipeline Nosis/CPF.
  • Automático (automatic): AR, BR y CL (datos básicos por tax ID, incl. enrichments Chile: ruts.info / BaseAPI).
  • Aplica a POST /batch-import/import/entities (CSV plataforma y CSV custom con mappingId).
Ver Importar entidades (CSV).
EntitiesBulk importAPI
Import entidades — manual multipart alineado

POST /batch-import/import/entities — enrichments en manual

  • El modo manual multipart coincide con el hub Manual: autoExecuteIntegrations, monitoring y matrices opcionales — sin pipeline Nosis/CPF.
  • Solo CSV (sin enrichments explícitos) → entidad mínima, sin enrichments.
  • Columnas CSV de enrichment por fila aplican en manual; depth solo en automático.
Ver Importar entidades (CSV).
EntitiesBulk importAPI
Import entidades — default manual en API

POST /batch-import/import/entities — default manual

  • Sin entityImportMode, el modo efectivo es manual (entidad mínima; enrichments solo si los pedís).
  • Automático con entityImportMode=automatic (+ autoExecuteIntegrations, depth, etc.).
  • Modo manual exige suggested_name en cada fila (400 si falta).
  • Respuesta 202 incluye importMode aplicado.
Ver Importar entidades (CSV).
EntitiesBulk importAPI
Import entidades — CSV plataforma sin mappingId

POST /batch-import/import/entities — formato plataforma

  • mappingId opcional con CSV formato plataforma (tax_id, type, …). Default de import: manual (ver entrada siguiente en este changelog).
Ver Importar entidades (CSV).
TransactionsRulesAPI
Evaluación asíncrona de reglas en create

asyncRules al crear transacción

  • POST /transactions: flag opcional asyncRules en query o body (default false). Con true y executeRules distinto de false, la transacción se crea en la misma request pero las reglas corren en background vía cola de jobs. La respuesta HTTP vuelve al instante con rulesHit / rulesNoHit vacíos, más asyncRules: true y rulesEvaluationStatus: "queued".
  • Sin cambio por defecto: omitir asyncRules mantiene ejecución síncrona y un rulesExecutionSummary completo — clientes existentes siguen igual.
  • Legacy KYT POST /legacy/kyt/verifyTransaction: mismo flag por query o campo en body Gu2. Paytime prod (3bc1f621-27d4-423e-9d64-86680bec2388) usa async por defecto si no envían el flag; asyncRules=false fuerza sync en una request.
  • No aplica a batch. Si Redis/cola no está disponible, puede responder 503 ASYNC_RULES_QUEUE_UNAVAILABLE (la transacción puede existir — revisar el body antes de reintentar).
Ver Crear transacción.
KYCAPI
Face Match e ID Verification — doble chequeo RENAPER

Doble chequeo RENAPER en endpoints KYC standalone

  • POST /api/kyc/face-match: doubleCheckRenaper opcional (body o query). Tras aprobar face match: RENAPER biométrico + datos. Requiere documentNumber, gender, personalNumber (fallback de entidad para DNI/género). Respuesta con responseDoubleChecks.
  • POST /api/kyc/id-verification: mismo flag; tras OCR approved solo chequeo datos RENAPER. Fallo → declined + códigos en warnings.
  • Credenciales RENAPER de org (igual que KYC por sesión). Timeout HTTP ≥ 60 s en face-match con double-check.
Ver Face Match e ID Verification.
TransactionsRulesAPI
Trigger status-change en reglas KYT

KYT — triggers separados: cambio de estado vs actualización de campos

  • PATCH …/changeStatus ejecuta reglas/matrices con trigger status_changed (trigger_transaction_status_changed), no updated.
  • PATCH /transactions/{id} con executeRules=true sigue usando updated (trigger_transaction_updated) para cambios de metadata, deviceDetails, channel o reason.
  • Migración: reconfigurar reglas que debían correr al cambiar estado al nuevo trigger (Rule Builder: Al cambiar estado; matrices: transaction_status_changed).
Ver Cambiar estado y Actualizar transacción.
TransactionsAPI
PATCH transacción — metadata, deviceDetails, channel, reason

Actualización parcial de transacción

  • PATCH /transactions/{id} y PATCH /transactions/external/{externalId}: actualizar metadata (merge superficial), deviceDetails (merge superficial en device_details), channel (nullable) y/o reason (enum). Requiere transactions:edit.
  • Query executeRules=true re-ejecuta reglas KYT con trigger updated — no reglas de cambio de estado.
  • Auditoría transaction_updated y webhook transaction.updated con mapa changes (incluye deviceDetails si aplica).
Ver Actualizar transacción.
EventsAPI
¿Tiene eventos? — identificadores por query

Eventos de usuario — has-events por external ID o tax ID

  • GET /events/user/entity/has-events (nuevo): comprobación sí/no sin UUID interno. Query params: entity_id, entity_external_id o tax_id (al menos uno obligatorio). Prioridad: entity_identity_external_idtax_id; comparación de tax ID con normalización (sin caracteres no alfanuméricos).
  • La respuesta incluye entityId resuelto para poder llamar a Listar por entidad cuando hasEvents es true.
  • GET /events/user/entity/{entityId}/has-events sigue soportado (contrato sin cambios).
Ver ¿Tiene eventos? (por entidad).
KYCAPI
Códigos de advertencia IP analysis KYC

KYC por sesión — advertencias de análisis de dispositivo e IP

  • GET /api/kyc/validations/:id (y rutas de sync/webhook): el array warnings ahora fusiona códigos risk de decision.ip_analyses[].warnings[] (y legacy decision.ip_analysis.warnings), además de verificación de documento, liveness, face match y AML.
  • Ocho códigos del proveedor (p. ej. PRIVATE_NETWORK_DETECTED, DUPLICATED_DEVICE_FINGERPRINT, IP_ADDRESS_IN_BLOCKLIST). Ver Códigos de advertencia KYC — Análisis de dispositivo e IP.
  • Los mismos códigos son válidos en omitWarnings de POST /api/kyc/validations al auto-aprobar sesiones en in_review.
Nota para integradores: las validaciones existentes conservan su warnings hasta el próximo sync; volvé a consultar o sincronizá para backfillear códigos de IP analysis en filas antiguas.
KYCAPI
ID Verification — extractedData ampliado

ID Verification — extractedData más completo

  • POST /api/kyc/id-verification y auditoría list/get persisten y devuelven un extractedData más amplio: identidad (personalNumber, taxNumber, placeOfBirth, …), providerStatus, warningMeta (p. ej. sesión duplicada), scores de calidad, extraFields, mrz, parsedAddress, barcodes cuando los devuelve el servicio ID Verification de Gu1.
  • warnings sigue siendo un array de códigos de riesgo para i18n; la metadata estructurada de duplicados va en warningMeta dentro de extractedData.
  • No se devuelven URLs externas de imagen ni base64; las imágenes subidas están en imágenes ID Verification.
  • debugProviderResponse solo en entornos no productivos de la API Gu1 (payload de verificación sanitizado, sin imágenes).
Ver ID Verification.
EntidadesTransaccionesReglasAPI
operationalHours en entidades + reglas KYT

Horario operativo por entidad (global)

  • Entidades: campo opcional en raíz operationalHours (timezone enum + weekly). Aplica a person y company, manual y POST /entities/automatic. Columna entities.operational_hours. Ver Crear entidad, person/create y create-automatic.
  • Transacciones: enum transaction_time_zone ampliado (zonas Brasil). timeZone independiente de operationalHours. transactedAt: UTC en DB; ISO con Z sin cambios para clientes actuales; datetime local + timeZone opcional convierte a UTC.
  • Reglas: operadores outside_entity_operational_hours e inside_entity_operational_hours sobre transactedAt (value: origin | destination).
Ver Crear transacción.
TransaccionesAPIBase de datos
timeZone opcional en transacciones

timeZone en transacciones

  • Base de datos: Nueva columna nullable time_zone en transactions con enum transaction_time_zone (valores IANA como America/Argentina/Buenos_Aires, UTC, etc.). Las filas existentes siguen en null.
  • API: timeZone opcional en POST /transactions y creación en lote; se devuelve en GET /transactions/{id} y GET /transactions/external/{externalId} como string | null.
Ver Enum zona horaria y Crear transacción.
TransaccionesAPILegacy
validateExistingEntity en transacciones

validateExistingEntity (creación de transacciones)

  • POST /transactions: nuevo campo opcional validateExistingEntity (default false). Con true, cada identificador de origen/destino que envíes debe existir en la org; si no, 400 INVALID_ENTITY_REFERENCES y no se crea la fila.
  • Batch (POST /transactions/batch, upload, JSON): el default sigue siendo true (validación estricta si enviás identificadores). Para import histórico permisivo: validateExistingEntity: false.
  • Legacy KYT POST /legacy/kyt/verifyTransaction: acepta el mismo campo en el body Gu2 (validateExistingEntity).
Ver Crear transacción y Crear transacciones en lote.
EntidadesAPIEnriquecimiento
Auto-ejecución en creación de entidades

excludeEnrichments en creación de entidades

autoExecuteIntegrations y autoExecuteIntegrationsShareholders aceptan excludeEnrichments: códigos de proveedor que se excluyen del conjunto final de enriquecimientos (también con executeAllActiveEnrichments: true).executeAllActiveChecks y checks ya no forman parte del contrato público de estos objetos; los payloads legacy que los envíen se ignoran al parsear.Ver Crear entidad (automática).
KYCPágina AlojadaDocumentación
v1.3.0 - Documentación Página de Onboarding Alojada

Nuevo: Documentación de Página de Onboarding Alojada

Documentación completa para la Página de Onboarding Alojada - la forma más rápida de implementar verificación KYC sin código.

Novedades

Documentación de Página Alojada:
  • ✅ Guía completa de parámetros de personalización (branding, colores, diseño)
  • ✅ Configuración de reglas de validación (verificación de edad, métodos de captura, detección de duplicados)
  • ✅ Reglas de validación de documentos (QR/código de barras, MRZ, fechas de vencimiento, vivacidad)
  • ✅ Guía de integración paso a paso con ejemplos de código
  • ✅ Diagrama de flujo visual mostrando el proceso completo
  • ✅ Mejores prácticas de seguridad para gestión de sesiones
  • ✅ Confirmación de diseño mobile-responsive
Características Clave:
  • 📱 Diseño mobile-responsive para todos los dispositivos
  • 🎨 Personalización completa de colores, branding y diseño
  • 🔒 Directrices de seguridad completas
  • 📊 Diagramas de secuencia visuales para mayor claridad
  • 🌐 Información de canal de soporte para cambios de configuración

Idiomas

Toda la documentación disponible en:
  • 🇺🇸 English
  • 🇪🇸 Español
  • 🇧🇷 Português

Impacto

  • Implementación más rápida para soluciones sin código
  • Guía clara sobre opciones de personalización
  • Mayor conciencia de seguridad
  • Mejor comprensión del flujo de la página alojada
Ver Documentación de Página Alojada
KYCDocumentaciónMulti-idioma
v1.2.0 - Mejora Documentación KYC

Refinamiento de Páginas KYC Basado en Feedback del Cliente

Mejora importante en la documentación de KYC basada en 14 preguntas del feedback de clientes.

Novedades

Documentación de Flujo Completo:
  • ✅ Tabla comparativa completa: Creación Automática vs Manual
  • ✅ Guía completa de configuración de Matriz de Riesgo con instrucciones del dashboard
  • ✅ Aclaración sobre función de accionistas (solo KYB, no KYC)
  • ✅ Referencia de códigos de proveedores con ejemplos de uso
  • ✅ Sección detallada de gestión de créditos con costos y flujos de trabajo
Página Overview:
  • ✅ Explicación Webhooks vs polling manual
  • ✅ Tabla comparativa KYC Completo vs Verificaciones Individuales
  • ✅ Advertencia completa sobre seguridad de face matching para bancos/fintech
  • ✅ Tabla mejorada de endpoints API con casos de uso
Página Crear Validación:
  • ✅ Diagrama de secuencia completo mostrando el flujo completo
  • ✅ Aclaración Sandbox vs Producción
  • ✅ Manejo de entidades duplicadas con ejemplos de código
  • ✅ Documentación expandida de integrationCode
API de Entidades:
  • ✅ Campos opcionales marcados con ejemplos (attributes, entityData)
  • ✅ Ejemplos de creación de entidad mínima vs completa

Idiomas

Todas las mejoras disponibles en:
  • 🇺🇸 English
  • 🇪🇸 Español
  • 🇧🇷 Português

Impacto

  • 14 preguntas de cliente respondidas inline
  • 12 archivos de documentación actualizados
  • 0 enlaces rotos
  • Experiencia de onboarding de desarrolladores mejorada
Ver Documentación KYC
Infraestructurai18n
v1.1.0 - Soporte Multi-idioma

Documentación Multi-idioma Mejorada

Estructura de documentación mejorada con traducciones completas en español y portugués.

Cambios

  • Cobertura completa de traducción para KYC, KYB y Monitoreo de Transacciones
  • Terminología consistente en todos los idiomas
  • Ejemplos específicos del idioma (DNI para España, CPF para Brasil, etc.)

Idiomas Disponibles

  • Inglés (EN) - Principal
  • Español (ES) - Completo
  • Portugués (PT) - Completo
Lanzamiento
v1.0.0 - Lanzamiento Inicial

Lanzamiento de Documentación gu1

Lanzamiento inicial de documentación API completa.

Funcionalidades Principales

  • Referencia API completa para todos los endpoints
  • Guías de casos de uso (KYC, KYB, Monitoreo de Transacciones)
  • Guías de integración de webhooks
  • Tutoriales interactivos
  • Soporte multi-idioma

Componentes

  • API de entidades persona
  • API de entidades empresa
  • Flujos de validación KYC
  • Monitoreo de transacciones
  • Motor de reglas
  • Matrices de riesgo
  • Alertas e investigaciones
Comenzar