En este artículo
Atajo: olvídate de Zadig con el Agente FactuTPV
Antes de entrar en la guía profunda de Zadig + WinUSB, un anuncio importante para los usuarios de FactuTPV:
Desde 2026, FactuTPV incluye el Agente FactuTPV — un pequeño servicio gratuito para Windows, Mac y Linux que elimina la necesidad de Zadig. El agente habla con la impresora USB directamente usando los drivers internos (WinUSB genérico + libusb en Linux/Mac), sin tener que sustituir usbprint.sys a mano. Una instalación de 10 segundos, un código de 6 dígitos para vincular, y ya está: impresión ESC/POS silenciosa con cajón portamonedas, corte automático y cobertura multi-dispositivo (una impresora sirviendo a iPad, Android, PC y Mac del mismo local).
Si tu caso de uso es "quiero imprimir tickets con mi impresora USB en Windows sin dramas", el Agente es la respuesta — y esta guía de Zadig te la puedes saltar. Descarga desde github.com/ulisesbaena/factutpv-agent-releases.
| Qué buscas | Solución recomendada |
|---|---|
| TPV con impresora USB en Windows (caja, barra, retail) | Agente FactuTPV — una instalación, multi-dispositivo, sin Zadig |
| TPV con impresora por red (Ethernet/WiFi) | Agente FactuTPV — auto-discovery + MAC rescue cuando cambia la IP |
| TPV con impresora Bluetooth (ticketeras portátiles) | Agente FactuTPV (Linux) o Web Bluetooth (Chrome Android) |
| Setup kiosko Windows sin instalar servicios (solo Edge) | Zadig + WinUSB + WebUSB directo — esta guía |
| TPV en Mac o Linux sin permisos de admin | Zadig no aplica; WebUSB funciona de serie en esos SO — esta guía |
El resto del artículo cubre WebUSB directo sin agente — un camino válido cuando tienes un único PC en kiosko con Edge y quieres máxima simplicidad de deployment. Sigue siendo la opción perfecta para ese escenario concreto. Para todo lo demás, usa el Agente.


Descarga el Agente FactuTPV
Windows (MSI firmado EV) · macOS (PKG notarizado) · Linux (DEB/RPM). 12 MB, gratis, plan gratuito incluido.
Descargar desde GitHub→¿Por qué montar un TPV virtual con WebUSB en vez de un TPV hardware tradicional?
Durante años, la única forma de imprimir tickets con calidad profesional era comprar un TPV cerrado (hardware propietario) con su software, sus drivers y su contrato de mantenimiento. Esa ecuación se rompió cuando los navegadores añadieron WebUSB — un estándar web que permite a Chrome y Edge comunicarse directamente con dispositivos USB como impresoras térmicas, lectores de códigos y cajones portamonedas.
Un TPV virtual es simplemente un PC (Windows, Mac o Linux) o una tablet Android ejecutando un software TPV cloud como FactuTPV en el navegador, y una impresora térmica conectada por USB. El navegador envía los bytes ESC/POS directamente a la impresora mediante WebUSB, sin diálogo de impresión, sin drivers propietarios y sin aplicaciones intermedias.
Las ventajas sobre el TPV hardware tradicional son contundentes:
- Coste: un PC barato o un Mac mini reutilizado + una impresora térmica de 60-90€ vs 1.200-2.500€ de un TPV cerrado.
- Mantenimiento: todo el software se actualiza en la nube; el hardware es estándar y reemplazable.
- Portabilidad: el TPV virtual funciona en Windows, Mac, Linux, Android y ChromeOS con el mismo navegador.
- Sin vendor lock-in: no dependes del soporte de un fabricante cerrado; si el proveedor de software cierra, puedes migrar tus datos.
Esta guía explica, paso a paso, cómo hacer que WebUSB funcione con tu impresora térmica en los tres sistemas operativos de escritorio: Windows (usando Zadig + WinUSB, el único paso no-trivial), macOS (funciona de serie) y Linux (una regla udev de 5 líneas). Al terminar tendrás un TPV con impresión directa, cajón portamonedas y corte automático, tal y como lo esperarías en un TPV profesional.
Monta tu TPV virtual en 5 minutos
Plan gratuito permanente, soporte nativo de WebUSB y ESC/POS. Sin tarjeta de crédito.
Empezar gratis con FactuTPV→¿Qué es WebUSB y por qué es la mejor opción para un TPV?
WebUSB es un estándar web del W3C que permite a páginas seguras (HTTPS) comunicarse con dispositivos USB conectados al equipo. Está disponible en Chrome, Edge, Opera y Brave desde hace varios años y funciona en Windows, macOS, Linux, ChromeOS y Android.
Cuando la aplicación TPV quiere imprimir un ticket, no genera un PDF ni llama al diálogo de impresión del sistema operativo. En su lugar:
- El backend (o el propio navegador) genera una secuencia de bytes ESC/POS — el lenguaje binario universal de las impresoras térmicas.
- El navegador, vía
navigator.usb.requestDevice(), envía esos bytes directamente a la impresora por el endpoint USB correspondiente. - La impresora usa sus fuentes ROM internas (9×17 o 12×24 puntos) para imprimir con nitidez nativa.
Comparado con imprimir vía el diálogo del navegador (que genera un PDF y lo rasteriza), WebUSB tiene tres diferencias fundamentales:
| Característica | WebUSB directo | Diálogo del navegador (PDF) |
|---|---|---|
| Diálogo de impresión | No aparece — impresión silenciosa | Requiere confirmar cada ticket |
| Calidad | Fuentes ROM nativas, nítidas | Rasterización doble, a menudo borroso |
| Velocidad | ~200ms del click al ticket impreso | ~3-5s (genera PDF + espera confirmación) |
| Cajón portamonedas | Se abre con byte ESC/POS (ESC p) | No se abre |
| Corte automático | Sí (GS V command) | No controlable desde PDF |
| Logotipo del comercio | Imprime como imagen raster | Sí, pero con reescalado |
| Drivers del fabricante | No necesarios | Necesarios (y a veces fuente del problema) |
Dicho de otro modo: WebUSB te da la experiencia de un TPV profesional — ese "click → ticket impreso al instante, cajón abierto, papel cortado" — usando solo un navegador. Es la mejor opción para cualquier TPV virtual hoy día, con una única condición: el navegador debe poder reclamar la interfaz USB de la impresora. Y ahí es donde Windows complica las cosas.
El problema de Windows: usbprint.sys y el error "acceso denegado"
Cuando enchufas una impresora térmica USB en Windows 10 u 11, el sistema identifica la clase del dispositivo (USB Printer Class, código 0x07) y carga automáticamente el driver del kernel usbprint.sys. Este driver reclama la interfaz USB con acceso exclusivo y la cede al spooler de impresión de Windows (el servicio "Cola de impresión"), que es quien acepta trabajos de Word, Excel, PDFs, etc.
Cuando Chrome o Edge intenta usar WebUSB sobre esa misma impresora, el kernel de Windows devuelve ERROR_ACCESS_DENIED. El navegador ve el dispositivo en la lista, pero al intentar claimInterface() recibe un "acceso denegado" porque usbprint.sys ya lo ha reclamado.
Este comportamiento es específico de Windows. macOS y Linux usan modelos de drivers distintos que permiten que una aplicación de usuario tome el control USB si el driver de clase lo libera. Por eso WebUSB "simplemente funciona" en Mac y Linux, mientras que en Windows necesitas un paso adicional.
Hay exactamente tres caminos para resolverlo en Windows:
- Desinstalar la cola de impresión y esperar que Windows no reclame el USB. Funciona con algunas impresoras antiguas; falla en la mayoría de las modernas, que siguen siendo reclamadas por
usbprint.sysaunque no haya cola de impresión. - Zadig + WinUSB — reemplazar el driver
usbprint.sysporWinUSB.sys, un driver genérico de Microsoft diseñado para que aplicaciones de usuario (como el navegador) puedan tomar el control USB. Funciona con el 100% de las impresoras y es la vía estándar para TPV en modo kiosko. Es lo que cubre esta guía. - Usar otra vía de conexión (Ethernet, Web Serial o Bluetooth). Cubierto al final de esta guía en el apartado de alternativas.
Qué es Zadig y por qué es seguro para el TPV
Zadig es una utilidad portable gratuita (open source, licencia GPL) mantenida por Pete Batard — el mismo autor de Rufus (el creador de USBs booteables). Su única función es sustituir el driver USB de un dispositivo concreto por otro. En nuestro caso, cambia usbprint.sys (printer class exclusivo) por WinUSB.sys (driver genérico de Microsoft accesible por aplicaciones de usuario).
Dudas habituales antes de usarlo:
- ¿Es seguro? Sí.
WinUSB.syses un driver firmado por Microsoft, incluido en Windows 10 y 11 de serie. Zadig solo cambia qué driver se asocia al dispositivo concreto. No instala código de terceros en el kernel. - ¿Se puede revertir? Sí. En Administrador de dispositivos → botón derecho sobre el dispositivo → Desinstalar dispositivo → marcar "Eliminar el controlador" → desenchufar y reenchufar la impresora. Windows reinstala el driver original de printer class.
- ¿Afecta a otras impresoras? No. Zadig actúa sobre un dispositivo USB específico identificado por Vendor ID + Product ID. El resto del sistema queda intacto.
- ¿Y si ese PC imprime también desde Word o Excel? Tras el cambio, la impresora deja de ser visible como "impresora de Windows". Solo funcionará desde el TPV (o cualquier aplicación que hable con ella por WebUSB/libusb). Para un kiosko dedicado al TPV es justo lo que quieres; para un PC multi-uso, no lo hagas — usa Ethernet en su lugar.
Zadig es la solución que recomienda la propia comunidad de WebUSB desde 2017 y la que usan proyectos como WebADB, Chromebook Android debugging, libusb-based tools, etc. Lleva años funcionando de forma estable en millones de instalaciones.
Cómo instalar Zadig + WinUSB en Windows paso a paso (TPV kiosko con Edge)
El proceso completo tarda unos 5 minutos. Asegúrate de tener permisos de administrador en el equipo y la impresora enchufada por USB y encendida.
Paso 1 — Limpia el estado anterior
- Abre Panel de Control → Dispositivos e impresoras.
- Si aparece tu impresora térmica (POS-80, Epson TM, Star TSP, UNYKAch, MUNBYN, etc.) → botón derecho → Quitar dispositivo. Acepta con Sí.
- Cualquier utilidad del fabricante que esté activa en la bandeja del sistema (EPSON Status Monitor, Star QuickSetup, POS Printer Tool): botón derecho → Salir.
- Abre services.msc, busca "Cola de impresión" → botón derecho → Detener. (Lo volveremos a arrancar más tarde si hace falta para otras impresoras, o déjalo detenido si es un kiosko dedicado.)
Paso 2 — Descarga Zadig
Ve a la web oficial: https://zadig.akeo.ie y descarga zadig-2.x.exe. Es un ejecutable portable (no se instala). Guárdalo en el Escritorio o en una carpeta de utilidades.
Paso 3 — Ejecuta Zadig como administrador
Botón derecho sobre zadig-2.x.exe → Ejecutar como administrador. Si Windows pregunta por UAC, acepta.
Paso 4 — Muestra todos los dispositivos
En el menú superior: Options → List All Devices (marca el check). Esto añade al desplegable los dispositivos que ya tienen driver asignado, no solo los que están "huérfanos".
Paso 5 — Selecciona tu impresora en el desplegable
En el combo grande de la parte superior verás todos los dispositivos USB. Busca por nombre: PrinterPOS-80, USB Printing Support, POS-58, TM-T20, Star TSP143, MUNBYN ITPP047, etc.
⚠️ IMPORTANTE: NO selecciones teclado, ratón, webcam, pendrive ni dispositivos de audio. Si tienes dudas sobre cuál es tu impresora, desenchúfala del USB y mira qué entrada desaparece del desplegable — esa era.
Paso 6 — Elige WinUSB como driver destino
A la izquierda verás Current Driver (normalmente usbprint). A la derecha el combo de destino: asegúrate que pone WinUSB (v6.x.x.x). Si aparece libusb-win32 o libusbK, cámbialo a WinUSB con las flechas.
Paso 7 — Pulsa Replace Driver
El botón grande del centro dirá Replace Driver (si había driver previo) o Install Driver (si no). Púlsalo. Windows pedirá confirmar la instalación del driver firmado — acepta. El proceso tarda entre 10 y 30 segundos. Al terminar verás un mensaje "Driver Installation: SUCCESS".
Paso 8 — Verifica en Administrador de dispositivos
Win+X → Administrador de dispositivos. La impresora ya no está en "Colas de impresión" ni en "Impresoras". Ahora aparece bajo:
- Universal Serial Bus devices (Windows 10) o
- Dispositivos Bus serie universal (USB) (Windows 11)
...con el nombre del modelo. Si la ves ahí, el cambio ha funcionado.
Paso 9 — Configura la impresora en FactuTPV
- Abre Edge (o Chrome) → accede a tu cuenta FactuTPV.
- Ve a Ajustes → Impresoras → Añadir impresora.
- Método de conexión: USB directo (WebUSB).
- Pulsa Emparejar impresora USB. Edge mostrará el diálogo nativo con los dispositivos USB disponibles.
- Selecciona tu impresora térmica → Conectar.
- Configura ancho de papel (80 mm), activa Corte automático y Cajón portamonedas si corresponde.
- Guarda y pulsa Probar. Debería imprimir el patrón de prueba instantáneamente, sin ningún diálogo.


Configurar Edge en modo kiosko para TPV dedicado en Windows
Una vez WebUSB funciona, el siguiente paso es convertir el PC en un kiosko dedicado que arranque directamente en FactuTPV sin mostrar el escritorio de Windows. Edge tiene un modo kiosko nativo desde la versión 89 que cubre este caso perfectamente.
Opción A — Modo Kiosko de Edge (sencillo)
- Crea un acceso directo en el escritorio con el siguiente destino:
"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" --kiosk "https://app.factutpv.es" --edge-kiosk-type=fullscreen --no-first-run - Prueba el acceso directo. Edge abrirá a pantalla completa sin barras, sin pestañas y sin menú.
- Para que arranque automáticamente al iniciar sesión: Win+R →
shell:startup→ arrastra el acceso directo a esa carpeta.
Opción B — Acceso Asignado (Assigned Access) de Windows
Para un kiosko más estricto (el usuario no puede salir ni con Alt+F4), usa Acceso Asignado de Windows 10/11 Pro:
- Configuración → Cuentas → Familia y otros usuarios → Configurar un quiosco.
- Crea un usuario dedicado (ej:
tpv-kiosko) y elige Microsoft Edge como aplicación. - Introduce la URL
https://app.factutpv.es. - Al iniciar sesión con ese usuario, Windows arranca Edge en modo kiosko completo. Solo se puede salir con Ctrl+Alt+Del.
⚠️ Importante: el usuario dedicado del kiosko necesita ser el mismo que ejecutaste Zadig para emparejar la impresora — los permisos WinUSB son por usuario. Si Zadig lo ejecutaste con el usuario administrador y el kiosko corre con tpv-kiosko, el kiosko no verá la impresora. Dos soluciones:
- Ejecutar Zadig estando logueado con el usuario
tpv-kiosko(necesita permisos de admin temporales). - O exportar/importar las asociaciones WinUSB vía
pnputildesde el usuario admin al usuario kiosko.
Pantalla y scanner de códigos
En un TPV kiosko real querrás también:
- Desactivar suspensión y apagado de pantalla: Configuración → Sistema → Energía → Pantalla "Nunca" / Suspensión "Nunca".
- Scanner de códigos USB: FactuTPV detecta secuencias rápidas de teclado como lecturas de código (el scanner actúa como teclado HID). Funciona out-of-the-box con 99% de los scanners del mercado.
- Impresora de cocina: si tienes hostelería, repite este proceso con la segunda impresora y configúrala como tipo Cocina. FactuTPV dirigirá comandas automáticamente ahí.

WebUSB en macOS: funciona sin drivers ni configuración
macOS es el sistema operativo más limpio para montar un TPV virtual con WebUSB. El modelo de drivers de macOS permite que una aplicación de usuario (el navegador) reclame la interfaz USB sin necesidad de reemplazar el driver de sistema. No hace falta Zadig, ni drivers del fabricante, ni utilidades adicionales.
Pasos para conectar una impresora térmica por WebUSB en Mac
- Enchufa la impresora por USB (o por un hub USB-C si es un MacBook moderno).
- Abre Chrome, Edge, Brave u Opera (Safari NO soporta WebUSB — es limitación de Apple).
- Entra en FactuTPV → Ajustes → Impresoras → Añadir → USB directo (WebUSB).
- Pulsa Emparejar impresora USB.
- Selecciona tu impresora en el diálogo de Chrome.
- Probar.
Eso es todo. El tiempo total desde sacar la impresora de la caja hasta imprimir un ticket de prueba es de menos de 3 minutos.
Posibles incidencias en Mac
Aunque suele ser directo, hay dos casos en los que puede haber fricción:
- Printer Setup Utility ya instaló la impresora en macOS como impresora del sistema. En la mayoría de casos esto no interfiere con WebUSB (macOS comparte el acceso USB), pero si ves comportamientos raros, ve a Ajustes del sistema → Impresoras y escáneres y elimina la entrada.
- CUPS claim: en macOS antiguos el subsistema CUPS puede tomar el puerto USB si la impresora está marcada como "predeterminada" para imprimir. Elimínala de "Impresoras y escáneres" para liberarlo.
Modo kiosko en macOS
Para un TPV dedicado en Mac mini (una opción excelente en calidad/precio y con consumo energético bajísimo):
- En Safari NO funciona — usa Chrome o Edge.
- Instala Chrome → crea un perfil dedicado (
chrome://settings/profiles). - Arranca Chrome con el flag de kiosko:
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --kiosk "https://app.factutpv.es" --profile-directory="TPV" - Para arranque automático al login: Ajustes del sistema → General → Elementos de inicio de sesión → añade un script Shortcut que invoque ese comando.
Ventajas del Mac mini como TPV: consume ~7W en idle, sin ventiladores audibles, arranque rápido desde SSD, y macOS es extremadamente estable para uso 24/7.
WebUSB en Linux: regla udev para que el navegador acceda al USB
Linux es el segundo sistema más limpio para WebUSB después de macOS. No tiene el problema de drivers exclusivos que tiene Windows, pero por defecto los dispositivos USB son accesibles solo por root. Para que Chrome (que corre como usuario normal) pueda usar la impresora, hay que añadir una regla udev que dé permisos al grupo plugdev (o al usuario concreto).
Paso 1 — Identifica el Vendor ID y Product ID de tu impresora
Con la impresora enchufada, ejecuta en el terminal:
lsusb
Busca la línea de tu impresora, por ejemplo:
Bus 001 Device 004: ID 0483:5720 STMicroelectronics USB Printing Support
En este caso, Vendor ID = 0483 y Product ID = 5720.
Paso 2 — Crea la regla udev
Crea el archivo /etc/udev/rules.d/99-webusb-printer.rules con el siguiente contenido (sustituye los IDs):
SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5720", MODE="0666", GROUP="plugdev", TAG+="uaccess"
Si quieres cubrir varias impresoras de diferentes fabricantes, añade una línea por cada una.
Paso 3 — Recarga udev y añade tu usuario al grupo
sudo udevadm control --reload-rules
sudo udevadm trigger
sudo usermod -aG plugdev $USER
Cierra sesión y vuelve a entrar (o reinicia) para que el cambio de grupo surta efecto.
Paso 4 — Si usas distribuciones con printer class lockdown
Algunas distribuciones (Ubuntu con cups instalado) cargan el módulo usblp que reclama impresoras USB con exclusividad parecida a Windows. Para desactivarlo solo para tu impresora, añade a la regla udev:
SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5720", MODE="0666", GROUP="plugdev", TAG+="uaccess", ATTR{authorized}="1", RUN+="/bin/sh -c 'echo -n %k > /sys/bus/usb/drivers/usblp/unbind 2>/dev/null; true'"
Esto desvincula usblp del dispositivo específico al enchufarlo, dejando el puerto libre para WebUSB. Otras impresoras con usblp siguen funcionando con CUPS normalmente.
Paso 5 — Empareja en FactuTPV
Abre Chrome/Chromium/Edge → FactuTPV → Ajustes → Impresoras → USB directo (WebUSB) → Emparejar. Selecciona la impresora en el diálogo. Probar.
Modo kiosko en Linux
Linux brilla como base para un kiosko de TPV. Distribuciones ligeras como Debian minimal + i3wm, Raspberry Pi OS o Ubuntu Core funcionan perfectamente:
- Arranque automático en Chromium kiosko con
chromium --kiosk --noerrdialogs --disable-infobars "https://app.factutpv.es". - En una Raspberry Pi 4/5 con pantalla táctil 10" tienes un TPV por ~150€ completo (Pi + pantalla + impresora térmica + cajón).
- Sin licencias, sin actualizaciones forzadas, reinicios limpios en 15 segundos.
Es la opción que usamos internamente para probar hardware en nuestras demos. FactuTPV funciona idéntico en Linux a como lo hace en Mac o Windows.
Cajón portamonedas, corte automático y logotipo: ESC/POS avanzado
Una vez tienes WebUSB emparejado, la gracia del protocolo ESC/POS es que soporta todo lo que esperas de un TPV profesional, porque los comandos son parte del mismo flujo de bytes que el ticket. No son "funciones extra"; son secuencias binarias que FactuTPV inserta automáticamente al generar el ticket.
Cajón portamonedas (cash drawer)
El cajón se conecta por un cable RJ-11/RJ-12 al puerto "DK" de la impresora. Cuando FactuTPV quiere abrirlo, envía los bytes ESC p m t1 t2 (5 bytes: 0x1B 0x70 0x00 0x19 0xFA típicamente). La impresora dispara un pulso eléctrico al solenoide del cajón y se abre.
En FactuTPV esto se activa desde tres sitios:
- Automáticamente al finalizar una venta (si el cajón está configurado en la impresora).
- Pulsando F8 en la pantalla del TPV.
- Desde el botón "Abrir cajón" de la cabecera.
El flujo de bytes es idéntico tanto en Windows (post-Zadig), Mac como Linux. La apertura del cajón tarda ~100ms desde el click.
Corte automático del papel
Tras imprimir el ticket, FactuTPV envía GS V 66 0 (4 bytes: 0x1D 0x56 0x42 0x00) para hacer un corte completo. Si tu impresora soporta corte parcial (deja una pestaña para arrancar más fácil), puedes cambiarlo a GS V 1. Se configura en el formulario de la impresora con el checkbox "Corte automático".
Logotipo del comercio impreso como imagen raster
ESC/POS soporta imprimir imágenes monocromas con los comandos GS v 0 (imagen raster vertical) o GS ( L (almacenar imagen en NVRAM de la impresora). FactuTPV convierte tu logo (JPG/PNG/SVG subido desde Ajustes) a un bitmap monocromo del ancho exacto del cabezal (203 DPI, 576px para 80mm) con dithering Floyd-Steinberg para que salga nítido. El logo queda embebido en el stream ESC/POS y se imprime sin paso intermedio de PDF.
Fuentes dobles, código de barras, QR
El protocolo también permite:
- Texto doble altura/doble ancho (
ESC ! n) — el total del ticket de FactuTPV lo usa. - Código de barras EAN-13 / Code128 (
GS k) — para fidelización y reclamaciones. - Códigos QR (
GS ( k) — usado para el QR de verificación VeriFactu, obligatorio desde 2026 en España.
Todo esto viaja por el mismo canal WebUSB. La impresora interpreta los comandos con su firmware interno y los renderiza con calidad nativa.
Alternativas si WebUSB no encaja en tu escenario
WebUSB es excelente pero no es la única vía. Dependiendo de tu hardware y entorno, otras opciones pueden ser más prácticas:
Red local directa (LAN) — recomendada para multi-terminal
Si tu impresora tiene puerto Ethernet (Epson TM, Star TSP, UNYKAch UK56009, MUNBYN ITPP047…) y habla los protocolos Epson ePOS-Print o Star WebPRNT, Chrome puede imprimir directamente sobre la IP privada de la impresora vía Local Network Access API — sin drivers, sin Zadig, sin nada instalado. Es la vía más escalable cuando tienes varios TPV compartiendo la misma impresora de cocina, por ejemplo.
Lee la guía: Cómo configurar una impresora térmica en tu TPV.
Web Serial (USB-CDC / COM virtual) — alternativa a Zadig en Windows
Algunas impresoras (Epson TM, Star TSP, Bixolon) exponen además de su interfaz USB-printer un puerto COM virtual (USB-CDC). En esos modelos, en Windows puedes usar Web Serial en lugar de WebUSB + Zadig: el navegador abre el puerto COM directamente y el spooler no interfiere porque COM y printer-class son interfaces distintas dentro del mismo dispositivo USB.
La impresora debe soportar explícitamente el modo Virtual COM (DIP switches o herramienta del fabricante). Las OEM chinas genéricas (POS-58, POS-80, UNYKAch, UK56009) no tienen este modo; en esos modelos la ruta sigue siendo Zadig + WebUSB.
Bluetooth (BLE) — ideal para impresoras portátiles
Chrome Android y Chrome/Edge de escritorio soportan Web Bluetooth. Para impresoras portátiles de 58mm tipo Rongta RP332 o HPRT MPT-II, es la vía natural. MTU pequeño, velocidad limitada, pero funciona sin cables.
iPad y iOS — solo red
Apple no permite que ningún navegador (ni Safari, ni Chrome, ni Firefox) acceda a USB/Bluetooth en iOS. Todos los navegadores están obligados a usar WebKit. Para TPV en iPad la única opción es impresión por red (Ethernet/WiFi). Funciona perfecto y es la configuración que muchos restaurantes ya usan.
Comparativa: ¿qué elegir según escenario?
| Escenario | Opción recomendada |
|---|---|
| TPV Windows kiosko con impresora USB | WebUSB + Zadig |
| TPV Mac mini con impresora USB | WebUSB directo (sin Zadig) |
| TPV Linux/Raspberry Pi | WebUSB + udev |
| Varios TPV compartiendo impresora | LAN (Ethernet) |
| Impresora Epson/Star en Windows sin Zadig | Web Serial (USB-CDC) |
| Impresora portátil 58mm | Bluetooth (BLE) |
| iPad | Red (Ethernet/WiFi) — única opción |
| Cocina en hostelería | LAN (Ethernet) dedicada |

Impresoras térmicas compatibles con WebUSB (modelos probados 2026)
WebUSB funciona con cualquier impresora que siga el estándar USB Printer Class (0x07), que es prácticamente toda impresora térmica moderna que hable ESC/POS. Estos son modelos concretos que el equipo de FactuTPV ha probado y que funcionan en los tres sistemas operativos con la guía anterior:
| Modelo | Ancho | Interfaces | Precio aprox. | Notas |
|---|---|---|---|---|
| Epson TM-T20III / TM-T20IIIE | 80mm | USB + Ethernet + Serie | 180-220€ | La referencia profesional. WebUSB perfecto + soporta Web Serial + ePOS-Print LAN. |
| Epson TM-m30II | 80mm | USB + Ethernet + BT + WiFi | 280€ | Top de gama, compacta. Ideal para TPV moderno. |
| Star TSP143IIIU / TSP143IV | 80mm | USB + Ethernet + BT (según modelo) | 150-250€ | Excelente calidad de corte. Soporta WebPRNT por LAN. |
| UNYKAch UK56009 | 80mm | USB + Ethernet | 85€ | Relación calidad-precio imbatible. Genérica china, requiere Zadig en Windows. |
| MUNBYN ITPP047 | 80mm | USB + Ethernet | 60€ | Genérica, requiere Zadig en Windows. Fiable en uso medio. |
| HPRT TP806 | 80mm | USB + WiFi + BT | 70€ | Tres interfaces, versátil. WiFi la hace ideal para cocina sin cableado. |
| Bixolon SRP-330II | 80mm | USB + Ethernet + Serie | 200€ | Muy fiable para volumen alto. Soporta Web Serial con driver Bixolon. |
| Rongta RP332 / RP58 | 58/80mm | USB + BT (según modelo) | 40-60€ | La más barata. Aceptable para volúmenes bajos. Zadig en Windows. |
Al comprar una impresora térmica nueva para montar tu TPV virtual, busca estos cuatro atributos:
- Soporte ESC/POS — aparece como "ESC/POS compatible" en la ficha técnica. Es lo que habla FactuTPV.
- Ancho 80mm — estándar para caja. 58mm solo para portátiles. Con 80mm entran los 576 puntos del ticket con todos los datos.
- Puerto Ethernet — aunque no lo uses hoy, te da la opción LAN en el futuro (multi-TPV, o iPad).
- Corte automático y cajón — "auto-cutter" y "cash drawer port" (RJ-11/RJ-12). Un TPV sin estos dos se nota mucho en el uso diario.
Por qué FactuTPV es el TPV virtual ideal para WebUSB (y por qué no todos los TPV cloud lo soportan)
La mayoría de TPV cloud del mercado español no soportan WebUSB porque su modelo de impresión depende del diálogo del navegador (generar un PDF y pulsar Imprimir). Esto es más fácil de implementar pero arrastra todos los problemas que hemos visto: diálogo en cada venta, calidad borrosa, cajón no se abre, corte no funciona.
FactuTPV se diseñó desde el principio con impresión térmica nativa. Todos los flujos (ventas, cocina, cajón, ticket regalo, reimpresión, informes de caja) usan ESC/POS end-to-end:
- Backend en Java genera los bytes ESC/POS con el renderer
EscPosTicketRenderer. - Frontend en Next.js elige el transporte (LAN → WebUSB → Web Serial → Bluetooth → PDF fallback) según la configuración.
- Navegador entrega los bytes a la impresora con una de las APIs del navegador.
- Impresora los renderiza con sus fuentes ROM.
Esta separación permite que los mismos bytes ESC/POS puedan viajar por cualquier transporte — incluido el fallback offline que FactuTPV genera localmente en el navegador con la caché de impresión cuando no hay red.
Comparativa con los TPV cloud más conocidos
| TPV | WebUSB | Web Serial | LAN directo | Bluetooth | Cajón | Corte auto | Offline |
|---|---|---|---|---|---|---|---|
| FactuTPV | Sí | Sí | Sí (ePOS+WebPRNT) | Sí | Sí | Sí | Sí |
| Holded | No | No | No | No | No | No | No |
| Alegra | No | No | No | No | No | No | No |
| SumUp | Solo HW propio | No | No | Solo HW propio | Solo HW propio | Solo HW propio | Parcial |
| Last.app | Consultar | No | Consultar | Consultar | Consultar | Consultar | Consultar |
| Revo | Consultar | No | Consultar | Consultar | Consultar | Consultar | Consultar |
Además, FactuTPV incluye soporte nativo de VeriFactu (AEAT), cadena fiscal inmutable, anulaciones legales, facturas rectificativas (R1-R5), y todo el compliance fiscal español, en todos los planes — también en el plan gratuito permanente. Por el mismo precio que configurar un TPV cerrado, tienes un TPV virtual completo, legal y sin vendor lock-in.
Prueba FactuTPV gratis — sin tarjeta
Configura tu impresora WebUSB en 5 minutos. Plan gratuito permanente, con VeriFactu incluido y soporte para Windows, Mac, Linux, Android e iPad.
Crear cuenta gratuita→Checklist final para tu TPV virtual con WebUSB
Para cerrar la guía, aquí tienes el checklist condensado de todo lo que debe estar listo antes de empezar a facturar con tu TPV virtual:
- ☐ Hardware: PC (Windows/Mac/Linux), impresora térmica ESC/POS 80mm, cajón portamonedas con cable RJ-11, scanner de códigos USB (opcional), pantalla táctil (opcional).
- ☐ Navegador: Chrome o Edge actualizado (nunca Safari). Edge 89+ para modo kiosko.
- ☐ Windows: Zadig instalado, driver WinUSB asignado a la impresora, cola de impresión desactivada si es kiosko dedicado.
- ☐ Mac: impresora NO añadida en "Impresoras y escáneres" del sistema (solo WebUSB).
- ☐ Linux: regla udev creada en
/etc/udev/rules.d/99-webusb-printer.rules, usuario en grupoplugdev,usblpdesvinculado si aplica. - ☐ FactuTPV: cuenta creada, negocio configurado (NIF, régimen fiscal), impresora emparejada y probada, logotipo subido, ancho de papel configurado (80mm), corte automático activado, cajón activado si corresponde.
- ☐ VeriFactu: certificado digital subido, modo VeriFactu activado, régimen fiscal confirmado.
- ☐ Kiosko (si aplica): Edge en modo kiosko con URL de FactuTPV, arranque automático al login, suspensión de pantalla desactivada, usuario dedicado con WinUSB.
- ☐ Backup: datos en la nube automáticamente (FactuTPV), pero ten a mano el cable USB de la impresora y el driver alternativo del fabricante por si algún día revertes Zadig.
Con todo esto tienes un TPV virtual que imprime ticket + abre cajón + corta papel en menos de 200ms desde el click, sin diálogos, sin drivers propietarios y sin depender de una app intermedia. Exactamente igual que un TPV cerrado de 2.000€, pero construido con hardware estándar y software web moderno.
Preguntas frecuentes
¿Es seguro usar Zadig en Windows para mi impresora térmica?
Sí. Zadig es una utilidad open source (GPL) mantenida desde 2010. No instala drivers de terceros — solo asocia tu impresora al driver WinUSB.sys, que es un driver firmado por Microsoft e incluido en Windows 10 y 11 de serie. Es la vía que usan desde 2017 todas las aplicaciones que necesitan WebUSB con dispositivos USB-printer-class en Windows. El cambio es reversible en 30 segundos desde Administrador de dispositivos.
Si uso Zadig, ¿podré seguir imprimiendo desde Word o Excel a esa impresora?
No. Tras Zadig la impresora deja de estar disponible como 'impresora de Windows' — solo funciona desde aplicaciones que la usen por WebUSB/libusb como FactuTPV. Para un TPV kiosko dedicado esto es justo lo que quieres. Si el PC es multi-uso (imprimes facturas desde Word o PDFs desde Edge a esa impresora), no uses Zadig — usa LAN (Ethernet) o Web Serial en su lugar.
¿Cómo reverto el cambio de Zadig?
Win+X → Administrador de dispositivos → busca la impresora bajo 'Universal Serial Bus devices' → botón derecho → Desinstalar dispositivo → marca 'Eliminar el controlador de este dispositivo' → Aceptar. Desenchufa la impresora, espera 10 segundos y vuelve a enchufarla. Windows reinstalará el driver de printer class original y la impresora aparecerá otra vez en Dispositivos e impresoras.
¿WebUSB funciona en Safari o en iPad?
No. Safari no implementa WebUSB (Apple no lo ha incluido en WebKit) y en iPad/iPhone todos los navegadores están obligados a usar WebKit, por lo que ni Chrome ni Firefox en iOS soportan WebUSB. Para iPad la única vía de impresión directa es por red (Ethernet/WiFi) con el backend hablando ESC/POS sobre TCP 9100 o la impresora hablando ePOS-Print / WebPRNT.
¿Qué diferencia hay entre WebUSB y Web Serial para impresoras?
WebUSB habla directamente con el dispositivo USB en la capa de endpoints (interfaz printer class 0x07 típicamente). Web Serial habla con el dispositivo como si fuera un puerto COM virtual (interfaz USB-CDC). Para impresoras térmicas que exponen ambas interfaces (Epson TM, Star TSP, Bixolon), Web Serial es más fácil en Windows porque no requiere Zadig — el puerto COM virtual no compite con el spooler. Para impresoras que solo exponen printer class (OEM chinas genéricas tipo POS-58, POS-80, UNYKAch UK56009), solo hay WebUSB — y en Windows eso implica Zadig.
¿Chrome o Edge para el TPV kiosko?
Ambos comparten el motor Chromium y soportan WebUSB idénticamente. La diferencia está en los extras: Edge tiene un modo kiosko nativo más pulido para Windows (--edge-kiosk-type=fullscreen) y mejor integración con Acceso Asignado de Windows. Chrome tiene más extensiones y está disponible también en Mac/Linux. Para un kiosko Windows puro, Edge. Para multi-plataforma o si ya tienes Chrome configurado, Chrome.
¿Puedo usar una Raspberry Pi como TPV con WebUSB?
Sí, y es una de las configuraciones más elegantes. Una Raspberry Pi 4 u 8 con Raspberry Pi OS + Chromium + una impresora térmica USB + una pantalla táctil HDMI de 10' te da un TPV completo por menos de 200€, fanless, silencioso y con consumo <10W. Sigue la guía de Linux de este artículo para crear la regla udev y arranca Chromium en modo kiosko con --kiosk. Es ideal como segundo TPV de apoyo o para comercios pequeños.
¿Qué impresora me recomiendas comprar si voy a montar un TPV virtual desde cero?
Depende del presupuesto. En gama económica (60-90€): UNYKAch UK56009 o MUNBYN ITPP047 — genéricas con USB + Ethernet, funcionan muy bien con ESC/POS aunque requieren Zadig en Windows. En gama profesional (180-280€): Epson TM-T20III o TM-m30II — soportan las tres vías (WebUSB + Web Serial + LAN ePOS-Print), corte automático robusto y fiabilidad top para alto volumen. Si vas a tener varios TPV o cocina dedicada, prioriza modelos con Ethernet.
¿Cómo verifico si Chrome/Edge ve correctamente mi impresora antes de emparejar en FactuTPV?
Abre DevTools (F12) en cualquier página HTTPS y en la consola escribe: navigator.usb.requestDevice({filters:[]}).then(d=>console.log(d.productName,d.vendorId.toString(16),d.productId.toString(16))) (requiere un click previo en la página). Si el diálogo nativo muestra tu impresora y al seleccionarla imprime por consola su nombre y sus IDs, WebUSB funciona y FactuTPV la emparejará sin problema. Si el diálogo está vacío tras Zadig, el driver WinUSB no está bien asignado — revisa en Administrador de dispositivos.
¿Qué pasa si cambio la impresora por un modelo nuevo en mi TPV virtual?
En Windows: desenchufa la impresora vieja, enchufa la nueva, ejecuta Zadig de nuevo y repite el proceso para el nuevo modelo (tiene distinto Vendor ID + Product ID). En FactuTPV, edita la impresora existente y pulsa 'Reemparejar impresora USB' para actualizar los IDs, o crea una nueva entrada. En Mac: solo reemparejar en FactuTPV. En Linux: añade otra línea a la regla udev con los nuevos IDs o usa un patrón que cubra el rango del fabricante.
¿Es legal imprimir tickets con un TPV virtual en España en 2026?
Sí, siempre que el software TPV cumpla el RD 1007/2023 (sistema VeriFactu o SIF). El hardware es irrelevante para la ley — lo que la AEAT exige es que el software emita registros fiscales inmutables con encadenamiento hash y los envíe a los servidores de la Agencia Tributaria. FactuTPV está preparado para VeriFactu en todos los planes, incluido el gratuito, e incorpora los mecanismos previstos por el RD 1007/2023 cuando está activado; la responsabilidad final del cumplimiento es del contribuyente. La impresora solo imprime — la validez fiscal del ticket está en el registro digital, no en el papel.
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 →