Invoice Ninja auto-hospedado: facturas y control de tiempo
Qué cubre este artículo
- Qué es Invoice Ninja: software de facturación de código abierto para freelancers y pymes.
- Configuración e instalación con Docker.
- Facturas, presupuestos, control de tiempo, portal del cliente.
- REST API para automatización: generar facturas desde flujos de trabajo.
- Integración con IA: textos de presupuestos, gestión de recordatorios, reportes.
Introducción
Invoice Ninja es la solución de código abierto más conocida para facturación, presupuestos y control de tiempo. Se mantiene desde hace años, está en desarrollo activo y cuenta con portal de cliente donde los clientes ven sus facturas y pagan en línea. Para freelancers y pequeñas empresas que no quieren entregar sus datos a Lexoffice o sevDesk, es la opción estándar.
Su REST API la convierte en un componente de automatización: traslada deals desde Twenty a facturas en Invoice Ninja; convierte proyectos completados en registros de tiempo y después en facturas.
Casos de uso típicos
- Facturas de freelancer: presupuestos → facturas → seguimiento de pagos recibidos.
- Control de tiempo: registra horas por proyecto y conviértelas directamente en líneas de factura.
- Facturas recurrentes: genera automáticamente facturas periódicas (retainers, suscripciones).
- Portal del cliente: los clientes ven su historial, descargan PDFs y pagan en línea.
- Automatización: deal ganado en CRM → creación automática de factura.
Instalación: Docker
services:
invoiceninja:
image: invoiceninja/invoiceninja:5
ports:
- "127.0.0.1:8082:80"
environment:
- APP_URL=https://rechnungen.deine-domain.de
- APP_KEY=base64:generierter-key
- DB_HOST=db
- DB_DATABASE=invoiceninja
- DB_USERNAME=ninja
- DB_PASSWORD=geheim
- MAIL_MAILER=smtp
- MAIL_HOST=smtp.dein-server.de
- MAIL_PORT=587
- MAIL_USERNAME=...
- MAIL_PASSWORD=...
- MAIL_FROM_ADDRESS=rechnung@deine-domain.de
volumes:
- ninja_public:/var/www/app/public
- ninja_storage:/var/www/app/storage
depends_on: [db]
restart: always
db:
image: mysql:8
environment:
MYSQL_DATABASE: invoiceninja
MYSQL_USER: ninja
MYSQL_PASSWORD: geheim
MYSQL_ROOT_PASSWORD: root-geheim
volumes: [db_data:/var/lib/mysql]
restart: always
volumes:
ninja_public:
ninja_storage:
db_data:
Genera APP_KEY con: docker run --rm invoiceninja/invoiceninja:5 php artisan key:generate --show
Configuración básica
Después del inicio, ejecuta el asistente de configuración: crea la empresa, carga el logo, define tasas de impuesto (19% y 7% para Alemania), selecciona la plantilla de factura y configura métodos de pago como transferencia bancaria, Stripe y PayPal.
Notas para Alemania: Invoice Ninja puede generar facturas conformes a RGPD con campos obligatorios como número de IVA, número de impuesto y número de factura secuencial. Verifica la conformidad GoBD; el software lo facilita, pero la responsabilidad recae en ti.
REST API: facturas programáticamente
import requests
IN = "https://rechnungen.deine-domain.de"
HEADERS = {"X-API-TOKEN": "dein-api-token",
"X-Requested-With": "XMLHttpRequest",
"Content-Type": "application/json"}
# Crear cliente
requests.post(f"{IN}/api/v1/clients", headers=HEADERS, json={
"name": "Musterfirma GmbH",
"contacts": [{"email": "buchhaltung@muster.de"}]
})
# Crear factura
requests.post(f"{IN}/api/v1/invoices", headers=HEADERS, json={
"client_id": "CLIENT_ID",
"line_items": [{
"product_key": "Beratung",
"notes": "KI-Consulting März",
"quantity": 8,
"unit_cost": 120.00,
}]
})
Flujo n8n: CRM → Factura
Webhook Twenty: Deal ganado
│
▼
Mapear datos (Empresa → Cliente, Monto → Líneas)
│
▼
API Invoice Ninja: buscar/crear cliente → crear factura
│
▼
Opcional: Ollama genera texto personalizado de factura/notas
│
▼
Enviar factura por email al cliente (Invoice Ninja lo hace automáticamente)
Integración con IA
- Textos de presupuestos: Ollama genera textos personalizados basándose en el brief del proyecto.
- Gestión de recordatorios: la IA redacta recordatorios de pago educados, ajustando el tono según el nivel de escalada.
- Comentarios de control de tiempo: la IA resume logs de trabajo en líneas de factura limpias y claras.
- Categorización: clasificación automática de documentos entrantes mediante OCR con Stirling-PDF.
Seguridad y consideraciones legales
- GoBD: las facturas deben archivarse de forma inmutable. Invoice Ninja lo facilita con numeraciones secuenciales y archivo PDF, pero consulta con tu asesor fiscal.
- HTTPS + Autenticación: datos financieros requieren TLS obligatorio y contraseñas fuertes con 2FA.
- Backups: respalda la base de datos y el almacenamiento, consulta Backup.
- Acceso: solo desde la red interna o por VPN. No expongas el software de facturación directamente a internet.
Enlaces útiles
- IRC-Coding.de: tutoriales de programación sobre REST APIs y generación de PDFs.
- Twenty CRM: convierte deals en facturas.
- Stirling-PDF: procesamiento de PDFs.
- n8n: automatización de flujos.
- Docker: despliegue.
Puntos clave:
- Invoice Ninja es facturación de código abierto más control de tiempo más portal del cliente.
- La REST API la convierte en un componente de automatización (CRM → factura).
- Respeta GoBD y RGPD; usa TLS, realiza backups y restringe el acceso.
- Para freelancers y pymes, es la alternativa estándar a Lexoffice y sevDesk.
- Integración con IA: textos personalizados, recordatorios de pago, clasificación automática de documentos.
FAQ
¿Es Invoice Ninja conforme a GoBD?
¿Incluye control de tiempo?
¿Pagos en línea?
¿Invoice Ninja o Lexoffice?
¿Varios usuarios?
Fuentes y lecturas complementarias
- Invoice Ninja: GitHub.
- Invoice Ninja Docs: documentación.
- IRC-Coding.de: tutoriales de programación.


