¿Qué hace este flujo y qué problema resuelve?
El problema: Los grupos empresariales que adquieren otras compañías suelen heredar diferentes sistemas: la matriz usa SAP, la filial A usa Navision, la filial B usa Holded. Consolidar las cuentas a final de mes es una pesadilla manual de exportaciones de Excel, mapeo de cuentas con VLOOKUP y cuadre de operaciones vinculadas que consume días del equipo de controlling.
La solución: n8n actúa como middleware (bus de integración). Extrae los balances de comprobación de las APIs o bases de datos de cada filial de forma paralela y automática, normaliza el plan contable mediante un nodo de código que aplica el mapa de equivalencias de la matriz, y vuelca los datos limpios en el sistema de consolidación o data warehouse central.
Cierre mensual
SAP / Navision / Holded
Normalización
Balance consolidado
Impacto esperado: El cierre contable mensual pasa de 3 días a 2 horas. El CFO tiene el balance consolidado disponible el mismo día del cierre sin intervención manual del equipo de controlling.
Directivo (Finanzas): Proporciona el mapa de equivalencias del plan general contable (ej. la cuenta 4300 de la filial equivale a la 4300000 de la matriz) y las reglas de eliminación de operaciones intercompany.
Equipo Técnico (IT/Data): Desarrolla las conexiones a múltiples bases de datos heterogéneas, programa la lógica de mapeo de cuentas en JavaScript y gestiona el manejo de errores con Error Triggers.
Cuándo usar este flujo
| Úsalo cuando… | No lo uses cuando… |
|---|---|
|
|
Prerrequisitos
Antes de empezar, asegúrate de tener acceso a las siguientes herramientas y credenciales:
| Herramienta | Requisito | Uso en el flujo |
|---|---|---|
| n8n | Instancia self-hosted (recomendado por volumen de datos) | Orquestador central del flujo ETL |
| APIs / BBDD de cada ERP | Credenciales de acceso de solo lectura a SAP, Navision, Holded u otros | Extracción de balances de comprobación de cada filial |
| Mapa de equivalencias contables | Tabla Excel o JSON con la equivalencia entre cuentas de filiales y plan de la matriz | Normalización del plan contable en el nodo ETL |
| Data Warehouse / BI | BigQuery, Snowflake, PostgreSQL o Power BI con API de escritura habilitada | Destino del balance consolidado normalizado |
| Slack / Email | Canal o dirección para alertas automáticas | Notificación al CFO cuando el proceso finaliza o hay errores |
Mapeo del plan contable
Antes de extraer ningún dato, el flujo carga el mapa de equivalencias contables que el equipo de finanzas ha preparado. Este mapa es la pieza clave que permite traducir las cuentas de cada filial al plan de la matriz.
- 1Prepara el mapa en Google Sheets: Crea una hoja con tres columnas:
filial_id,cuenta_filialycuenta_matriz. El equipo de finanzas es responsable de mantener este archivo actualizado. - 2Carga el mapa en n8n: Usa el nodo “Google Sheets” con la operación “Get All Rows” para cargar el mapa al inicio del flujo. Convierte el array en un objeto clave-valor con un nodo “Code” para facilitar el lookup posterior.
Extracción paralela de balances
n8n extrae los balances de comprobación de todas las filiales en paralelo usando el nodo “Split In Batches” combinado con múltiples nodos de conexión a ERP.
- 1Define la lista de filiales: Crea un nodo “Set” con un array JSON que contenga los datos de conexión de cada filial (ID, tipo de ERP, credenciales). Esto permite añadir nuevas filiales sin modificar la lógica del flujo.
- 2Extrae en paralelo: Usa el nodo “Split In Batches” con el parámetro
batchSize: 1y activa la opción “Execute in parallel” para que n8n consulte todas las filiales simultáneamente. - 3Conecta cada ERP: Para cada tipo de ERP, usa el nodo correspondiente: “Postgres” o “MySQL” para bases de datos directas, “HTTP Request” para APIs REST, o el nodo nativo de SAP si está disponible en tu instancia.
Normalización de datos (ETL)
Con los balances de todas las filiales extraídos, el nodo “Code” aplica el mapa de equivalencias para traducir cada cuenta al plan de la matriz y genera el balance consolidado normalizado.
Código JavaScript — Nodo Code: Normalización contableVolcado al data warehouse y alertas
Con el balance consolidado normalizado, n8n lo vuelca al data warehouse central y notifica al CFO que el proceso ha finalizado correctamente.
- 1Vuelca al data warehouse: Usa el nodo “Postgres”, “BigQuery” o “MySQL” con la operación “Insert” para escribir todos los registros normalizados. Usa la opción “Insert or Update” (upsert) para evitar duplicados en re-ejecuciones.
- 2Notifica al CFO: Añade un nodo “Slack” o “Gmail” con un resumen: número de registros procesados por filial, cuentas no mapeadas y tiempo total de ejecución.
- 3Configura el Error Trigger: Añade un nodo “Error Trigger” para que el equipo técnico reciba una alerta inmediata si alguna conexión a ERP falla durante el proceso.
Output esperado del flujo
Cuando el flujo se ejecuta correctamente en el cierre mensual, produce los siguientes datos y artefactos:
| Variable / Artefacto | Tipo | Descripción | Destino |
|---|---|---|---|
| balance_consolidado[] | Array JSON | Registros contables de todas las filiales normalizados al plan de la matriz | Data Warehouse |
| cuentas_no_mapeadas[] | Array JSON | Lista de cuentas sin equivalencia en el mapa (asignadas a 999999) | Alerta email/Slack a Finanzas |
| resumen_ejecucion | JSON | Registros procesados por filial, errores y tiempo de ejecución | Notificación CFO |
| tabla_consolidacion | Tabla DB | Tabla actualizada en el data warehouse lista para reporting en Power BI / Looker | Data Warehouse |
Problemas frecuentes y cómo resolverlos
Estos son los errores más habituales al configurar este flujo por primera vez, con su causa y solución:
- 1Los formatos de fecha son inconsistentes entre filiales: Cada ERP puede usar DD/MM/YYYY, MM/DD/YYYY o YYYY-MM-DD. Solución: en el nodo de normalización, detecta el formato de cada filial con una expresión regular y convíertelo a ISO 8601 antes de cualquier cálculo.
- 2Los tipos de cambio no se actualizan y las conversiones son incorrectas: Si usas tipos de cambio estáticos en el código, los informes acumulan errores. Solución: añade un nodo HTTP Request al inicio del flujo que consulte la API del BCE (api.exchangeratesapi.io) para obtener los tipos del día.
- 3El Data Warehouse rechaza filas con valores nulos: Algunas filiales no reportan todas las cuentas del plan contable. Añade una validación en el nodo Code que rellene los nulos con 0 y registre en un log qué cuentas faltaban para notificar al controller de la filial.
- 4El flujo tarda más de 30 minutos y n8n lo cancela por timeout: Si hay más de 10 filiales con grandes volúmenes de datos, divide el flujo en subflujos paralelos usando el nodo Execute Workflow. Cada subflujo procesa una filial y el flujo principal consolida los resultados.
Adaptaciones del flujo para otros contextos
Este flujo se puede adaptar fácilmente a otros casos de uso cambiando el trigger, la fuente de datos o el destino:
- AVariante con alerta de desviación presupuestaria: Añade un paso que compare el consolidado con el presupuesto anual. Si alguna línea de P&L supera el 10% de desviación, envía una alerta automática al CFO con el detalle de la desviación y la filial responsable.
- BVariante con informe ejecutivo en PDF: Añade un paso final que genere un PDF del consolidado usando la API de Google Docs o una plantilla de Canva. El PDF se envía automáticamente al Comité de Dirección cada lunes a las 08:00.
- CVariante con forecasting automático: Usa los datos históricos del Data Warehouse para generar una proyección del cierre del trimestre con un modelo de regresión lineal en el nodo Code. El CFO recibe el consolidado real más la proyección en el mismo informe.
¿Qué hacer ahora?
Ahora que has completado este tutorial, hay dos caminos naturales: