Casi todos los listados de ejemplos de n8n que circulan van de lo mismo: publicar en redes, resumir correos con IA, mover leads de un sitio a otro. Están bien, pero ninguno toca la parte que de verdad quema horas en un negocio español: la administrativa. Emitir la factura, perseguir el cobro, comprobar un NIF, cuadrar lo que hay que mandar a la gestoría.
El hueco se ve en la propia galería de plantillas de n8n. De las más de 11.000 plantillas publicadas hay unas 250 que hablan de invoice, y todas van en la misma dirección: leer una factura que recibes —del correo, de un PDF— y volcarla a un Google Sheet con OCR o con un LLM. Ni una emite una factura contra un sistema de facturación real. Buscar verifactu en esa galería devuelve cero resultados.
Esa parte se automatiza igual de bien, y además tiene una restricción que las demás no tienen: aquí no vale con generar un PDF. Desde el 1 de enero de 2027 para sociedades y el 1 de julio de 2027 para autónomos, cada factura tiene que salir de un sistema conforme a Verifactu, con numeración correlativa, encadenado, código QR y registro en la Agencia Tributaria. Un nodo que dibuje un PDF no cumple nada.
Estos ocho ejemplos son de esa parte. Cada uno lleva los nodos concretos que hacen falta, no una descripción vaga. Los que emiten factura usan el nodo de BeeL. para n8n (n8n-nodes-beel), que está verificado por n8n; la validez fiscal la pone BeeL., n8n solo decide cuándo se emite.
Para instalarlo no hace falta tocar npm ni servidores: al ser un nodo verificado aparece dentro del propio editor. Abre el panel de nodos del lienzo (el + o la tecla n), escribe BeeL, y saldrá bajo la sección More from the community con un botón Install. Funciona igual en n8n Cloud que en una instalación propia, y solo lo puede instalar alguien con rol Owner o Admin; a partir de ahí lo usa todo el equipo. Los nodos instalados se gestionan y se desinstalan desde Settings → Community nodes.
Antes de empezar
Todo lo de abajo se puede montar con una clave de pruebas (beel_sk_test_...). Las facturas se generan con su numeración y su PDF, pero no se registran en Hacienda ni consumen cuota. Cuando el flujo haga lo que quieres, cambias la clave y empieza a emitir de verdad.
#Los 8 ejemplos de un vistazo
| # | Qué automatiza | Disparador | Nodos clave |
|---|---|---|---|
| 1 | Presupuesto aceptado → factura emitida y enviada | n8n Form / Webhook | BeeL: Invoice → Create, Issue, Send |
| 2 | Horas de un Google Sheet → factura mensual | Schedule Trigger | Google Sheets, Loop Over Items, BeeL |
| 3 | Alta de cliente con el NIF ya comprobado | Webhook | BeeL: NIF → Validate, Customer → Create |
| 4 | Cuotas fijas sin cron propio | Webhook | BeeL: Recurring Invoice → Create |
| 5 | Aviso e archivo cuando se emite una factura | BeeL Trigger | BeeL Trigger, Slack, Google Drive |
| 6 | Vigilar el estado en Hacienda | BeeL Trigger | BeeL Trigger, Switch, Gmail |
| 7 | Recordatorio semanal de impagos | Schedule Trigger | BeeL: Invoice → Get Many (OVERDUE), Gmail |
| 8 | Un agente de IA que factura por chat | AI Agent | AI Agent + nodo BeeL como herramienta |
#1. Presupuesto aceptado → factura emitida y enviada
El caso más rentable y el más fácil de montar. El cliente acepta un presupuesto —un n8n Form Trigger, un Typeform, un botón en tu web— y la factura sale sola.

El flujo:
n8n Form Trigger (el cliente acepta)
↓
BeeL · NIF → Validate (¿el NIF es correcto?)
↓
If (válido)
↓
BeeL · Invoice → Create (type: STANDARD, recipient, lines)
↓
BeeL · Invoice → Issue (numeración + QR + registro AEAT)
↓
BeeL · Invoice → Send (correo al cliente con el PDF)En el nodo de BeeL. eliges Resource: Invoice y Operation: Create. Los campos que verás no son un JSON en bruto: Type es un desplegable (STANDARD, SIMPLIFIED, CORRECTIVE, PROFORMA), Recipient te deja elegir un cliente ya registrado de una lista o escribir Legal Name y NIF a mano, y Lines es una lista de líneas con Description, Quantity, Unit Price, Discount Percentage y el tipo de impuesto. En cada línea el IVA, el IGIC, el recargo de equivalencia y la retención de IRPF son desplegables con los valores que Hacienda admite, así que no puedes teclear un 19 % de IVA por error.
El orden importa: crear no es emitir. Create deja un borrador que todavía puedes corregir o borrar; Issue es el paso irreversible que le asigna número correlativo, la encadena con la anterior y la registra. Deja siempre un nodo entre medias si quieres revisar algo antes.
El error que se paga caro
Si un workflow se reintenta después de Issue, una factura duplicada con número legal ya no se borra: hay que emitir una rectificativa. El nodo trae un campo Idempotency Key justo para eso: rellénalo con algo estable del disparador —el ID del formulario, el del pedido— y la segunda ejecución devuelve la factura que ya existía en vez de emitir otra.
#2. Horas de un Google Sheet → factura mensual
El clásico del freelance y de la agencia pequeña: una hoja con las horas o los servicios del mes, y el día 1 salen todas las facturas.
El flujo:
Schedule Trigger (día 1, 09:00)
↓
Google Sheets → Get Row(s)
↓
Loop Over Items (una fila cada vez)
↓
BeeL · Invoice → Create + Issue + Send
↓
Google Sheets → Update Row (marcar "facturada" + nº de factura)Dos detalles que separan el flujo que funciona del que da problemas al tercer mes:
- Procesa fila a fila con Loop Over Items. Si mandas las 40 filas de golpe y falla la 12, no sabes cuáles se emitieron. Con el bucle, cada vuelta escribe su resultado en la hoja y el estado siempre es reconstruible.
- Marca la fila en la hoja, no en tu cabeza. El paso de vuelta a Google Sheets con el número de factura es lo que hace que relanzar el workflow sea seguro: las filas ya marcadas se saltan.
Si lo que facturas es siempre lo mismo cada mes, para en el ejemplo 4: no necesitas la hoja.
#3. Alta de cliente con el NIF ya comprobado
Un NIF mal escrito no da la cara al darlo de alta, sino tres semanas después, al emitir. Y entonces ya has parado el flujo en el peor momento.
El flujo:
Webhook / n8n Form Trigger (alta de cliente)
↓
BeeL · NIF → Validate
↓
If ─── no válido ──→ Slack: "revisa este alta"
│
└── válido ──→ BeeL · Customer → CreateLa operación NIF → Validate comprueba el formato y el dígito de control de NIF, NIE y CIF españoles. Es una llamada barata que colocas al principio y te ahorra el 422 de más adelante. Para clientes de fuera de España, la factura admite identificadores alternativos (NIF_IVA, PASSPORT, COUNTRY_ID…) en lugar del NIF; el tratamiento del IVA lo explicamos en facturar a clientes extranjeros.
#4. Cuotas fijas sin montar tu propio cron
Mucha gente resuelve las suscripciones con un Schedule Trigger que se ejecuta cada mes y emite. Funciona hasta que el servidor de n8n está caído el día 1, o hasta que alguien duplica el workflow.
Para importes fijos hay algo mejor: dejar la periodicidad dentro de BeeL. y que n8n solo la dé de alta cuando el cliente contrata.
El flujo:
Webhook (nuevo contrato)
↓
BeeL · Recurring Invoice → CreateLos campos son los que esperas: Name, Day Of Month, Start Date, Series, Invoice Type y las líneas. En los campos adicionales están Customer, End Date, Payment Term Days, Send Automatically y Preview Days. A partir de ahí la factura sale sola cada mes aunque n8n esté apagado, y desde n8n puedes seguir operando sobre ella con Set Status (pausar/reanudar), Skip Next (saltarse un mes) o Generate Now.
Es la diferencia entre automatizar el calendario y automatizar la emisión. El calendario que no depende de tu infraestructura es más fiable.
#5. Aviso e archivo cuando se emite una factura
n8n también funciona al revés: escuchando lo que pasa en BeeL. El nodo BeeL Trigger te suscribe a eventos y arranca el workflow cuando ocurren. Los disponibles hoy son invoice.issued, invoice.voided, invoice.email.sent, verifactu.status.updated, recurring_invoice.paused, account.claimed, company.created y representation.signed.
El flujo:
BeeL Trigger (invoice.issued)
↓
Slack → #administracion ("Factura F-2026-0142 emitida, 1.210 €")
↓
Google Drive → Upload (el PDF, en la carpeta del mes)El trigger verifica la firma de cada aviso antes de dejarlo entrar, así que nadie puede colarte un evento falso llamando a la URL del webhook. Si activas Include Delivery Headers, el nodo añade a la salida el identificador de evento y el de entrega: úsalos para deduplicar si tu flujo tiene efectos que no quieres repetir, porque un reintento de entrega es normal, no una anomalía.
Ojo con una cosa si facturas con varios NIF: la suscripción es de cuenta, no de empresa. El workflow recibe los eventos de todas tus empresas y filtras por el contenido del aviso. Lo tratamos a fondo en facturar con varios NIF desde una sola integración.
#6. Vigilar qué dice Hacienda de cada factura
Emitir y registrar no son el mismo instante. La AEAT puede aceptar o rechazar el registro, y si rechaza y nadie lo mira, te enteras al cerrar el trimestre.

El flujo:
BeeL Trigger (verifactu.status.updated)
↓
Switch ── ACCEPTED ──→ (nada, o apuntarlo)
── REJECTED ──→ Gmail + Slack: aviso inmediato
── PENDING ──→ esperarLos estados que verás son PENDING, ACCEPTED, REJECTED y VOIDED. Un REJECTED no es un fallo de n8n: es Hacienda diciendo que algo del registro no cuadra, y quieres saberlo el mismo día. Los motivos habituales están en errores comunes de Verifactu.
Este workflow cuesta cinco minutos y es probablemente el de mayor retorno de la lista, porque convierte un problema silencioso en una notificación.
#7. Recordatorio semanal de impagos
No hay evento de “factura vencida” que te avise: el vencimiento es el paso del tiempo, no un suceso. Así que aquí el patrón correcto es preguntar, no escuchar.
El flujo:
Schedule Trigger (lunes, 09:00)
↓
BeeL · Invoice → Get Many
Filters: Status = OVERDUE, Return All = true
↓
Loop Over Items
↓
Gmail → recordatorio al cliente
↓
Slack → resumen para el equipoInvoice → Get Many trae los filtros del contrato en un desplegable: Status (DRAFT, ISSUED, SENT, PAID, OVERDUE, RECTIFIED, VOIDED…), Date From / Date To, Customer, Series Code, Total Min / Total Max, Recipient NIF, External Ref y Verifactu Status. Con eso montas también el resto de informes recurrentes: lo emitido del mes, lo pendiente por cliente, lo que aún está en PENDING en Hacienda.
Un aviso automático semanal cobra más facturas que un recordatorio manual que nunca encuentras el momento de mandar.
#8. Un agente de IA que factura por chat
Este es el que no aparece en ningún listado de ejemplos, y es el más interesante de 2026. Los agentes son, con diferencia, lo que más se monta hoy en n8n: la plantilla oficial AI agent chat pasa de las 780.000 visitas, mientras que ninguna plantilla de facturación llega a 40.000.
El nodo de BeeL. está declarado como usable por agentes, así que aparece en la lista de herramientas de un nodo AI Agent y se engancha como sub-nodo, igual que cualquier otra tool. Los campos que quieras que rellene el modelo los marcas con el botón de estrellas del campo o con la expresión {{ $fromAI('...') }}.
El flujo:
Chat Trigger / Telegram / WhatsApp
↓
AI Agent
├── Tool: BeeL (Customer → Get Many)
├── Tool: BeeL (Invoice → Create)
└── Tool: BeeL (Invoice → Get Many)Un aviso de precisión: el BeeL Trigger no se puede usar como herramienta. n8n prohíbe declarar como tool cualquier nodo de tipo trigger, y su verificador lo rechaza. Solo el nodo de acción sirve para esto.
Tú escribes «factura 12 horas de consultoría a Acme a 90 €» y el agente rellena los campos del nodo y crea el borrador.
Dicho lo cual, la recomendación seria: no le des Issue al agente. Emitir es irreversible y registra ante Hacienda. Deja que el modelo prepare el borrador y que la emisión la dispare una persona —un botón, una respuesta en el chat, un nodo de aprobación—. Un agente que se equivoca en un borrador te hace perder un minuto; un agente que se equivoca emitiendo te obliga a una rectificativa con su propio registro fiscal.
Lo mismo vale para Void y Create Corrective: son herramientas de humano.
#Un workflow importable para empezar
Este es el ejemplo 7 completo, listo para pegar en n8n. Copia el JSON, abre un workflow nuevo y pulsa Ctrl+V sobre el lienzo (o menú ⋯ → Import from Clipboard). Solo tendrás que elegir tu credencial de BeeL. y la de correo.
{
"name": "BeeL — Recordatorio semanal de impagos",
"nodes": [
{
"parameters": {
"rule": {
"interval": [
{ "field": "weeks", "triggerAtDay": [1], "triggerAtHour": 9 }
]
}
},
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [0, 0],
"name": "Cada lunes a las 9:00"
},
{
"parameters": {
"resource": "invoice",
"operation": "getAll",
"returnAll": true,
"filters": { "status": ["OVERDUE"] }
},
"type": "n8n-nodes-beel.beel",
"typeVersion": 1,
"position": [220, 0],
"name": "Facturas vencidas"
},
{
"parameters": { "options": {} },
"type": "n8n-nodes-base.splitInBatches",
"typeVersion": 3,
"position": [440, 0],
"name": "Una factura cada vez"
}
],
"connections": {
"Cada lunes a las 9:00": {
"main": [[{ "node": "Facturas vencidas", "type": "main", "index": 0 }]]
},
"Facturas vencidas": {
"main": [[{ "node": "Una factura cada vez", "type": "main", "index": 0 }]]
}
},
"settings": {}
}A la salida del bucle engancha tu nodo de correo y tu nodo de Slack: los dejo fuera a propósito porque cada uno usa el suyo, y así el JSON importa sin pedirte credenciales que no tienes.
#Lo que casi nadie monta y debería
Cuatro cosas que separan un workflow de demo de uno que aguanta un año en producción. Las tres primeras son trampas reales de n8n, documentadas en su propio foro, y las tres muerden justo donde más duele: en el flujo que emite facturas.
- Cuidado con
Continue On Fail. Si en un nodo pones On Error → Continue, la ejecución se marca como exitosa aunque la llamada devolviera un 500 o un 401. Tu log se pone verde y la factura no se ha emitido. Si la operación importa, deja Stop Workflow y gestiona el fallo tú. - Y con la combinación de
ContinueyRetry On Fail. Esta es la menos conocida: ponerOn Error → Continuedesactiva los reintentos. La gente activa “Retry On Fail” pensando que cubre los picos y las caídas, y no se aplica nunca porque el nodo está en modo continuar. Elige una cosa o la otra. - Un Error Workflow, y comprobado. En Settings → Error Workflow eliges otro flujo que se ejecuta cuando este falla; que mande un Slack y ya has cubierto casi todo. El matiz: si en vez de fallar enrutas los errores por la salida de error (Continue using error output), el Error Workflow no se dispara, porque para n8n la ejecución no ha fallado. Esa rama la tienes que notificar tú.
- Idempotencia en todo lo que emite. Ya lo dije en el ejemplo 1, pero es el consejo que más dinero ahorra: rellena Idempotency Key en cualquier operación que cree o emita algo. Y ten presente que un webhook que llega dos veces no es raro: si el servicio de origen no recibe respuesta rápido, reintenta.
Y una quinta, obvia y que nadie hace: monta el flujo entero con la clave beel_sk_test_ y rómpelo a propósito. Mira qué pasa cuando falta un NIF, cuando el importe es cero, cuando el cliente no existe. Los automatismos se prueban rompiéndolos, y más vale romper facturas de mentira.
#Preguntas frecuentes
#¿Necesito saber programar para montar estos ejemplos?
No. Los ocho se montan eligiendo opciones en desplegables y rellenando campos. Las expresiones de n8n ({{ $json.campo }}) hacen falta solo para mapear datos del disparador a los campos de la factura, y son las mismas que ya usas con cualquier otro nodo.
#¿Se puede instalar el nodo de BeeL. en n8n Cloud?
Sí. Al ser un nodo verificado por n8n aparece dentro del editor: abres el panel de nodos, buscas BeeL y lo instalas desde la sección More from the community. Eso funciona igual en n8n Cloud que en una instalación propia — lo que está limitado a self-hosted es instalar paquetes no verificados por npm. El nodo lo construye y lo mantiene BeeL. como partner de n8n, no n8n.
#¿Puedo hacer esto con nodos HTTP Request en vez del nodo de BeeL.?
Sí, y a veces tiene sentido: si prefieres construir las peticiones a mano, la guía automatizar la facturación con n8n y la API lo cubre paso a paso. La diferencia práctica es que el nodo trae las operaciones en desplegables, carga tus clientes y series en listas, y valida los datos antes de emitir en vez de devolverte un 422.
#¿Y si cobro con Stripe?
Entonces probablemente no necesites n8n para facturar. BeeL. tiene integración nativa con Stripe que emite la factura de cada cobro sin montar nada. n8n te sirve cuando la factura no nace de un cobro de Stripe, o cuando además de facturar quieres que pasen otras cosas.
#¿Estas facturas valen ante Hacienda?
Sí, y eso lo aporta BeeL., no n8n. Cada factura emitida lleva numeración correlativa, encadenado, código QR y registro en la AEAT según el Real Decreto 1007/2023. n8n solo decide cuándo se emite y con qué datos.
#¿Funciona si facturo con varios NIF?
Sí. El nodo tiene un campo de empresa activa que puedes fijar en la credencial o resolver por expresión en cada ejecución, así que un mismo workflow puede facturar por empresas distintas según el dato que llegue. El detalle está en facturar con varios NIF.
#Por dónde empezar
Si tienes que elegir uno, monta el 6: vigilar el estado en Hacienda cuesta cinco minutos y te evita descubrir un rechazo al cerrar el trimestre. Si lo que quieres es quitarte trabajo, el 1 y el 7 son los que más horas devuelven.
Crea una cuenta, coge tu clave beel_sk_test_ y móntalos sin emitir nada real. Cuando el flujo haga exactamente lo que quieres, cambias la clave. Toda la información del nodo está en la página de facturación Verifactu desde n8n, y si prefieres integrarlo desde tu propio código, la API de facturación hace lo mismo desde tu backend.