Guías y Tutoriales

FactuTPV Agent: la única forma de usar cualquier impresora térmica con un TPV cloud — sin excepción

Equipo FactuTPV16 min de lectura
Compartir:
En este artículo

El problema de las impresoras térmicas en el TPV cloud español

Si vendes con TPV cloud en 2026, la impresión de tickets es uno de los pocos puntos donde casi todo el mercado falla. El navegador es muy potente para casi todo (vender, cobrar, facturar, emitir VeriFactu) pero el último kilómetro — los bytes ESC/POS saliendo por un puerto USB o un socket TCP 9100 — sigue siendo territorio de drivers nativos. Y el navegador tiene limitaciones duras por seguridad:

  • WebUSB no funciona en iPad/iOS ni en Safari. Y en Windows obliga a sustituir el driver del fabricante por WinUSB (con Zadig) — un paso técnico que espanta al 90% de los clientes no técnicos.
  • Web Bluetooth solo está en Chrome/Edge (Android y escritorio), no en iOS ni Safari, y el emparejamiento hay que hacerlo en cada dispositivo por separado.
  • Web Serial exige Chrome/Edge en Windows/Linux/ChromeOS y funciona mal con las impresoras cuyo driver de Windows bloquea el puerto COM virtual.
  • LAN directo con Chrome 142+ (Local Network Access API) funciona solo con Epson ePOS y Star WebPRNT — que son el 10% del mercado. El otro 90% (Xprinter, Unykach, HPRT, Rongta, HOIN, Bixolon, MUNBYN…) usa ESC/POS raw sobre TCP 9100, que Chrome bloquea por política de seguridad.
  • Y el backend del TPV en la nube no puede hablar con la IP 192.168.x.y del cliente porque está detrás del NAT del router.

El resultado: la mayoría de TPV cloud españoles (Holded, Alegra, Contabilizate, muchos otros) no imprimen tickets térmicos más allá del diálogo PDF del navegador. Otros (SumUp, iZettle) te obligan a comprar su hardware propietario. Los intentos serios de middleware universal son de pago por impresora: PrintNode cobra ~$9/mes por cada impresora, QZ Tray tiene licencia comercial. Ninguna de esas soluciones está integrada de serie con un TPV gratuito en España.

FactuTPV resuelve este problema de raíz con el Agente FactuTPV: un pequeño servicio gratuito que actúa como puente universal entre el navegador y cualquier impresora térmica, en cualquier sistema operativo, sin licencias ni comisiones.

Qué es el Agente FactuTPV técnicamente

El Agente FactuTPV es un binario nativo (~12 MB) escrito en Go, con arquitectura multi-plataforma y build cross-compile CGO-free por defecto:

  • Windows: MSI firmado con certificado EV Code Signing (Sectigo) para que SmartScreen lo considere editor de confianza desde el primer clic. Se registra como Servicio Windows (arranca con el sistema, corre como SYSTEM).
  • macOS: PKG firmado y notarizado por Apple (pasa por Gatekeeper sin warnings). Se registra como LaunchDaemon del sistema (arranque al login, corre como root).
  • Linux: paquete DEB/RPM con servicio systemd de usuario o sistema. Instalación estándar con dpkg -i o dnf install.

Al arrancar, el agente:

  1. Escucha en localhost:17777 con un panel de administración web (en HTTP para el propio equipo) y el endpoint de emparejamiento.
  2. Si está vinculado a una cuenta FactuTPV, abre un WebSocket inverso (reverse-WS) saliente hacia wss://api.factutpv.es/ws/agent con JWT de dispositivo. Por ahí le llegan los trabajos de impresión desde cualquier device del tenant.
  3. Lista impresoras disponibles al backend y actualiza su lista en tiempo real cuando se editan en la web.
  4. Al recibir un trabajo, dispara por el transporte correspondiente: TCP 9100 raw, USB gousb/libusb, Bluetooth RFCOMM, Serie, Windows Spooler o CUPS.

Capacidades avanzadas que cubren todos los casos reales:

  • Port fallback automático: si el puerto configurado falla, prueba 9100 → 4000 → 80 sin intervención.
  • MAC rescue: si la IP cambia por DHCP, busca la impresora por su MAC address en la LAN y actualiza el destino.
  • Auto-route L3: si el host tiene IP en una subred sin ruta directa, añade la ruta automáticamente al arrancar.
  • Cola persistente con retroceso exponencial: si la impresora está ocupada, guarda el trabajo en bbolt local y lo reintenta con backoff. Sobrevive reinicios.
  • Descubrimiento multi-transport: escanea 6 puertos ESC/POS × todas las IPs de la LAN + mDNS + USB + Bluetooth en paralelo. Encuentra cualquier impresora del local en 5-15 segundos.
Panel de impresoras FactuTPV con callout de agentes locales y una impresora tipo AGENT configurada sobre 192.168.0.42:9100
Panel de impresoras: la tarjeta azul superior invita a vincular el agente; debajo se ve la impresora ya operativa con transporte Agente · LAN_TCP
Lista de agentes vinculados en Ajustes → Impresoras → Agentes mostrando Mac STG (darwin arm64) conectado
Agentes vinculados: Mac STG v1.1.0-stg.17 conectado — debajo, la guía de 4 pasos para vincular un agente nuevo
Panel admin del Agente FactuTPV en localhost:17777 mostrando tenant, agent ID, impresoras asignadas desde el panel web y cola de impresión
Panel local del agente: tenant, ID, última conexión, impresoras asignadas desde el panel web (Tpv en red LAN_TCP 192.168.0.42:9100) y cola de impresión con reintentos

Multi-dispositivo: una impresora, cualquier número de iPads y PCs

Esta es la ventaja que convence a cualquier hostelero en cuanto la prueba:

Una sola instalación del Agente en UN ordenador del local (Mac mini, PC Windows de caja, Raspberry Pi Linux — lo que tengas encendido permanentemente) permite que cualquier número de dispositivos del tenant impriman en esa misma impresora: iPads de camareros, tablets Android en caja, móviles de sala, PCs de oficina. Todos comparten la impresora a través del agente.

No hace falta nada por dispositivo. El iPad abre FactuTPV en Safari o Chrome, vende un ticket, y sale impreso en la impresora térmica de la barra. Cero configuración en el iPad, cero hardware propietario, cero Apple AirPrint (que no soporta cajón portamonedas ni corte automático ESC/POS).

El flujo técnico:

  1. iPad hace una venta en FactuTPV.
  2. El backend renderiza el ESC/POS del ticket.
  3. El backend envía los bytes al agente del local por el reverse-WS abierto.
  4. El agente dispara el TCP 9100 (o USB, o lo que toque) a la impresora física.
  5. Ticket impreso en <2 segundos.

Este escenario — crítico para cualquier restaurante con varios camareros o cualquier retail con varios puntos de cobro — no está disponible en ningún otro TPV cloud español sin hardware propietario o middleware de pago.

Agente FactuTPV vs PrintNode y QZ Tray

Los dos middleware universales comparables en el mundo son PrintNode (comercial, $9/mes por impresora) y QZ Tray (licencia comercial de pago, Java). Ambos son productos sólidos pero ambos cobran por cada impresora.

CaracterísticaAgente FactuTPVPrintNodeQZ Tray
PrecioGratis, incluido en FactuTPV$9/mes por impresora$25 por seat (perpetuo) o suscripción
StackGo nativo, ~12 MB, sin runtimeNode.js, instala JRE en WindowsJava, requiere JRE
WindowsMSI firmado EV, sin ZadigSí (instalador)Sí (instalador + cert Java)
macOSPKG notarizado Apple
LinuxDEB/RPM
USB rawSí (gousb + libusb)
TCP 9100
BluetoothSí (RFCOMM Linux, Web Bluetooth navegador)Limitado
Port fallback automáticoSí (9100 → 4000 → 80)NoNo
MAC rescue al cambiar IP DHCPNoNo
Multi-device integradoSí (reverse-WS a backend FactuTPV)Con su APICon su API
Discovery automáticoSí (mDNS + 6 puertos + USB + BT)LimitadoLimitado
Cola persistenteSí (bbolt, sobrevive reinicios)Limitado
Panel admin localSí (localhost:17777/admin)
Open sourceBinarios firmados, releases auditablesNoCódigo fuente con licencia restrictiva

Traducido a números: un restaurante con 3 impresoras (caja, cocina, barra) pagaría con PrintNode 27 $/mes × 12 meses = 324 $/año, solo por el middleware. Con QZ Tray, ~75 $ de alta × 3 = 225 $ + mantenimiento. Con FactuTPV, 0 € extra — el agente va incluido en cualquier plan, incluido el gratuito.

Cambia PrintNode/QZ Tray por FactuTPV

Agente universal gratis, multi-dispositivo, integrado con facturación y VeriFactu.

Migrar a FactuTPV

Instalación en 3 pasos (Windows, Mac o Linux)

De instalador a impresora imprimiendo: < 5 minutos.

  1. Descarga e instala desde github.com/ulisesbaena/factutpv-agent-releases. El MSI/PKG/DEB se ejecuta automáticamente al arrancar el sistema como servicio.
  2. Tras instalar, el agente abre http://localhost:17777/admin en tu navegador con un código de 6 dígitos en pantalla grande.
  3. En FactuTPV → Ajustes → Impresoras → Ver agentes → Vincular nuevo agente. Pega el código, pon un nombre ("PC barra", "Mac oficina"). El agente queda vinculado a tu cuenta.

Desde este momento, en Ajustes → Impresoras → Añadir impresora → tipo Agente, puedes pulsar Descubrir impresoras y el agente escaneará el local. Selecciona la que quieras y guarda. Prueba a imprimir. Listo.

Si alguna vez cambias de red, enchufas la impresora a otro router, o el DHCP cambia la IP — el agente se adapta solo. Si borras el agente desde la web, el agente local detecta que su JWT ya no sirve y se auto-limpia en 15 minutos (o con un clic en su panel local).

Por qué creamos el Agente en lugar de apostar solo por WebUSB/LAN

La decisión de construir un agente nativo propio no la tomamos a la ligera. Evaluamos las alternativas durante meses:

  • Solo WebUSB/WebBluetooth/LNA: descartado porque iPad no funciona, Windows requiere Zadig, y el 90% de impresoras chinas (Xprinter, Unykach, HPRT…) solo soportan TCP 9100 raw que Chrome bloquea por seguridad.
  • PrintNode o QZ Tray licenciado: descartado porque tendríamos que trasladar el coste ($9/impresora/mes) al cliente. Para un restaurante con 3 impresoras son 324 $/año solo por imprimir — rompe el diferencial de precio de FactuTPV.
  • Tunnel desde backend al cliente (Cloudflare Tunnel, ngrok): descartado por coste operativo y complejidad — requeriría un túnel por tenant, gestión de credenciales, y limitaría la escalabilidad.
  • Requerir hardware propietario: descartado porque rompería el modelo de FactuTPV (cloud puro sin hardware). Queremos que cualquier cliente use la impresora que ya tiene comprada.

La conclusión: construir un agente propio, gratuito, open-source-releases, firmado digitalmente, con la misma arquitectura reverse-WS que usan los runners de GitHub Actions. Código en Go para aguantar años con mínimo mantenimiento. Patrón probado en la industria, adaptado al caso del TPV.

El resultado es un producto que ningún competidor español tiene: un TPV cloud con impresión térmica universal gratis, con cobertura multi-dispositivo y compatibilidad con cualquier marca/modelo del mercado. Sin letra pequeña.

Preguntas frecuentes

¿El Agente FactuTPV es de pago?

No. Es gratis y va incluido en cualquier plan de FactuTPV, incluido el plan gratuito permanente. No hay coste por impresora adicional.

¿Cuántas impresoras puede gestionar un único agente?

No hay límite técnico impuesto. Un agente puede gestionar todas las impresoras conectadas al ordenador donde está instalado — USB, LAN, Bluetooth, Serie — y servirlas a cualquier dispositivo del tenant. Hemos probado hasta 8 impresoras simultáneas en un mismo local.

¿Puedo tener varios agentes (varios ordenadores) en el mismo local?

Sí. Cada agente se vincula individualmente con su propio código de 6 dígitos. Útil si tienes impresoras físicamente repartidas: una barra, una cocina, una oficina — cada una en un ordenador distinto. Desde la web asignas qué impresora usa qué agente.

¿Funciona si el ordenador con el agente se apaga por la noche?

Si se apaga, no imprime. Al encender vuelve a conectar automáticamente y los trabajos en cola (si los hubiese) se procesan. Recomendación: deja el ordenador con el agente encendido durante el horario de apertura del local.

¿Qué pasa con los datos que pasan por el agente?

El agente solo maneja los bytes ESC/POS del ticket que vas a imprimir — los mismos datos que ya procesa el backend de FactuTPV al que te conectas. No hay telemetría adicional, no recoge datos de inventario ni de clientes. Código auditable en github.com/ulisesbaena/factutpv-agent-releases.

¿Y si Apple, Google o Microsoft cambian las APIs y rompe el agente?

El agente usa APIs nativas del sistema operativo (libusb, CGI, WinUSB, BlueZ) que existen desde hace 15+ años y no se deprecan. A diferencia de WebUSB/WebBluetooth que dependen de decisiones de navegador y pueden romperse con cambios de política.

¿Puedo usar el Agente FactuTPV sin FactuTPV (como middleware genérico)?

Técnicamente el agente expone un panel local y una API HTTP en puerto 17777, pero está diseñado para acoplarse al backend de FactuTPV. Si te interesa un middleware genérico, considera CUPS, PrintNode o QZ Tray. Si ya usas FactuTPV o vas a usarlo, el agente es la solución completa sin coste adicional.

¿Funciona con VeriFactu y facturación electrónica?

Sí. El agente imprime cualquier ticket que el backend de FactuTPV envíe, incluidos tickets VeriFactu con hash y QR, facturas simplificadas, comandas de cocina, reports de caja, albaranes. Todo con la misma configuración.

Logo FactuTPV

Equipo FactuTPV

Somos el equipo detrás de FactuTPV, el software TPV con VeriFactu integrado para autónomos, pymes y hostelería en España. Escribimos sobre facturación electrónica, gestión de negocio y las últimas novedades fiscales para ayudarte a estar siempre al día.

Contactar con nosotros →

Sigue leyendo

Artículos relacionados

Plan gratuito permanente

¿Listo para probarlo?

Empieza gratis con FactuTPV. VeriFactu incluido, sin tarjeta de crédito, sin compromiso.