FrancodesystemsFran<code>systems
21 de mayo de 2026 · 9 min de lectura · Por Juan Cantón Rodríguez

n8n + Holded: 5 workflows que automatizan facturación en pymes

5 workflows n8n reales con nuestro nodo open source n8n-nodes-holded: Shopify→Holded factura, Stripe→contacto+factura, Calendly→CRM, HubSpot deal won→proforma, Asana entrega→facturación. Diagramas y consideraciones de producción incluidos.

Resumen ejecutivo
Nodo usadon8n-nodes-holded · 42 recursos · 323 operaciones · MIT
Plataformas conectadasShopify · Stripe · Calendly · HubSpot · Asana · Holded
Cuándo usar n8nWorkflows <10 nodos · sin dev backend · prototipado rápido
Cuándo NO usar n8nAlto volumen · lógica fiscal compleja · testing serio

Por qué n8n + Holded encaja bien para pymes

n8n es el motor de workflow open source más adoptado para conectar SaaS sin escribir código completo. Holded es el ERP español más extendido en pymes. La intersección obvia: cuando una pyme tiene 4-5 SaaS conectados y necesita que se hablen entre sí, n8n te da el pegamento sin contratar a un dev backend.

Lo que faltaba era un nodo n8n que cubriera de verdad la API v2 de Holded — no las 10 operaciones más comunes, sino las 323. Por eso publicamos n8n-nodes-holded en npm bajo licencia MIT con cobertura completa y provenance attestation.

Estos son 5 workflows que vemos repetirse en clientes — todos resueltos con n8n + el nodo, sin código backend a medida. Si tu caso encaja, en una tarde lo tienes en producción.

Workflow #1 — Shopify pedido → Holded factura

El clásico. Cada pedido confirmado en Shopify genera la factura correspondiente en Holded con su cliente, serie e IVA correcto.

Shopify Trigger
└─ event: order/created
If (customer email exists)
├─ Holded · Contact / Get by email
└─ Holded · Contact / Create (if not found)
Holded · Invoice / Create
├─ contactId from previous step
├─ items: mapped from order.line_items
└─ series: B2C / B2B intracomunitario (logic)

Consideraciones de producción: activa el modo "Continue on fail" en el nodo Holded para que un error no bloquee el siguiente pedido. Idempotencia: usa el order_id de Shopify como external reference en Holded para que retries no dupliquen. Para Verifactu, ver el post de Verifactu en ecommerce.

Workflow #2 — Stripe charge.succeeded → Holded contacto + factura

Para servicios cobrados con Stripe (suscripciones, pagos únicos). El webhook charge.succeeded entra a n8n y genera factura formal en Holded.

Stripe Trigger
└─ event: charge.succeeded
Stripe · Customer / Get
└─ retrieve metadata (NIF, billing_address)
Holded · Contact / Upsert by email
Holded · Invoice / Create
├─ amount: charge.amount / 100
└─ description: charge.description

Consideraciones: si usas Stripe Tax como sistema fiscal principal, NO crees factura en Holded — duplicarías. La decisión es "quién emite la factura formal": Stripe (con Stripe Tax activado) o Holded (recomendado para España por Verifactu nativo).

Workflow #3 — Calendly cita confirmada → Holded contacto CRM

Para servicios profesionales (consultoría, coaching, diseño). Cada cita Calendly confirmada crea/actualiza el contacto en el CRM de Holded con la información del cliente potencial.

Calendly Trigger
└─ event: invitee.created
Holded · Contact / Upsert by email
├─ name, email from Calendly
├─ tag: "lead-calendly"
└─ customFields: scheduled_for, event_type
Holded · Opportunity / Create
└─ stage: "Diagnóstico agendado"
└─ value: estimated from event_type

Consideraciones: Calendly te da pocos campos obligatorios (nombre + email). Si quieres enriquecer (puesto, empresa, NIF) añade un paso de scraping/enrichment con Clearbit o similar antes del upsert.

Workflow #4 — HubSpot deal.stage = closed-won → Holded proforma

Para equipos de venta que cierran deals en HubSpot. Cuando un deal pasa a "closed won", se crea automáticamente la proforma en Holded para enviar al cliente.

HubSpot Trigger
└─ event: deal.stage changed
IF (newStage == "closed-won")
└─ HubSpot · Contact / Get (deal.contact_id)
Holded · Contact / Upsert
Holded · Proforma / Create
├─ contactId from previous
├─ items: from deal.line_items
└─ validUntil: now + 30 days

Consideraciones: HubSpot deals tienen line items pero pueden no llevar IVA aplicado. Asegura que el mapeo a Holded asigne IVA por defecto según país del cliente. Para B2B intracomunitario con NIF VIES válido → 0% IVA con código exención.

Workflow #5 — Asana tarea entregada → Holded factura por horas

Para agencias/consultoras que facturan por proyecto/hora. Cuando una tarea Asana se marca como completada con etiqueta "billable", se genera factura en Holded basada en las horas registradas.

Asana Trigger
└─ event: task.completed with tag "billable"
Asana · Task / Get details
└─ custom_fields.hours_logged
└─ project.client_id (custom field)
Holded · Contact / Get by reference
Holded · Invoice / Create
├─ hours × rate from contact metadata
└─ description: task.name

Consideraciones: agrupa facturas por cliente. En vez de generar una factura por cada tarea (puede ser docenas al mes), pon un cron mensual que junta todas las tareas "billable" del periodo y genera UNA factura consolidada con cada tarea como línea. Más limpio para el cliente y para tu cierre.

n8n self-hosted vs n8n Cloud vs servicio backend custom

Si tu caso encaja en los 5 workflows arriba o variantes simples, decide:

  • n8n Cloud: si estás empezando, el nodo es community así que Cloud lo permite instalar sin configuración previa. Operativo en horas. A considerar: data fiscal pasa por servidores de n8n Cloud, lo cual puede requerir evaluación RGPD para datos sensibles según tu sector.
  • n8n self-hosted en VPS: control total, data fiscal en tu propia infraestructura, sin limitaciones impuestas de ejecuciones/usuarios del plan. Requiere setup inicial y mantenimiento (Docker Compose, updates, backups).
  • Servicio backend custom (proyecto único fijo): cuando los workflows pasan a ser de alto volumen, lógica fiscal compleja, Verifactu con casos límite multimoneda, requisitos de testing serio. Aquí es cuando entran nuestros servicios de integración a medida.

Preguntas frecuentes

¿Necesito n8n self-hosted o n8n Cloud para usar el nodo n8n-nodes-holded?

Funciona en los dos. n8n Cloud te lo pone fácil (Settings → Community Nodes → instalar @francodesystems-npm/n8n-nodes-holded). Self-hosted requiere activar N8N_COMMUNITY_PACKAGES_ENABLED=true. Para pymes que empiezan, Cloud es lo más simple. Para volúmenes altos (>10.000 ejecuciones/mes) o requisitos de privacidad de datos fiscales (recomendable para Verifactu), self-hosted en VPS dedicado.

¿Cuándo usar n8n y cuándo escribir código a medida?

n8n encaja perfecto para: workflows con menos de 10 nodos, lógica que cabe en if/else simples, equipos sin dev backend, prototipado rápido para validar un caso de uso. Código a medida encaja cuando: volumen alto con latencia crítica, lógica fiscal compleja (Verifactu con casos límite multimoneda), integraciones con servicios sin nodo disponible, requisitos de testing serio. El criterio honesto: si tu workflow n8n empieza a tener más de 20 nodos o necesitas funciones JS complicadas en cada paso, ya es momento de moverlo a código.

¿Los workflows n8n cumplen Verifactu?

Sí, si están bien diseñados. Lo que el nodo n8n-nodes-holded hace es llamar a la API v2 de Holded, que tiene Verifactu nativo (Holded es Colaborador Social AEAT). El workflow tiene que respetar: deduplicación por external key (order_id, charge_id, etc.) para no crear facturas duplicadas en retries, orden estricto de creación para facturas (concurrencia 1 en el worker de facturación), validación de campos obligatorios antes de invocar el nodo. Si esto no está, el problema NO es Verifactu — es el workflow.

¿El nodo n8n-nodes-holded es oficial de Holded?

No, es un nodo community open source mantenido por Francodesystems bajo licencia MIT. 'Holded' y su logo son marcas de Holded Technologies S.L. usadas bajo nominative fair use. El nodo no está afiliado ni patrocinado por Holded. Aún así, cubre 100% de la API v2 oficial (42 recursos · 323 operaciones), está publicado en npm con provenance attestation firmada por GitHub Actions OIDC, y se regenera cuando Holded amplía v2.

¿Puedo combinar n8n + servicio custom para casos híbridos?

Sí, es el patrón más realista para pymes que crecen. n8n para el 80% de workflows simples (recordatorios, sincronizaciones puntuales, notificaciones) y un servicio backend dedicado para el 20% crítico (facturación con Verifactu, conciliación bancaria, integraciones de alto volumen). El servicio backend expone webhooks que n8n puede llamar, y n8n notifica al servicio cuando aparecen eventos que requieren lógica fiscal/compleja.

Autor

Juan Cantón Rodríguez

Founder & lead developer de Francodesystems. Mantiene n8n-nodes-holded con cobertura 100% de la API v2 de Holded. Los workflows de este post están ejecutándose en pymes reales.

¿Tu workflow encaja en uno de estos 5?

30 minutos. Te decimos si n8n te basta o si tu caso necesita servicio backend.