Imprimir el ticket en una impresora térmica
Cómo entregar el KuDE en cinta de papel de 80 o 58 mm desde un punto de venta, por el driver de la impresora o directo por ESC/POS.
En un punto de venta el KuDE se entrega impreso en la térmica de la caja. SIFEN admite cualquier tamaño de papel estándar y trae la cinta de papel como modelo (Manual Técnico, secciones 13.5 a 13.7). Sifende genera el ticket para facturas, notas de crédito y notas de débito, en papel de 80 mm o 58 mm.
El KuDE A4 sigue siendo el que Sifende guarda y envía por email. El ticket se genera en cada pedido desde el XML firmado, con los mismos datos y el mismo QR.
Qué formato pedir
| Caso | Endpoint | Parámetros |
|---|---|---|
| La impresora tiene driver instalado (Windows, macOS, Linux) | /kude/ticket (PDF) | ancho=80 o ancho=58 |
| Imprimís directo por red, USB o Bluetooth sin driver | /kude/ticket/imagen (PNG) | puntos=576, 512 o 384 |
| El cliente pide el ticket resumen | cualquiera de los dos | resumen=true |
El resumen (sección 13.7 del Manual Técnico) muestra la cantidad de ítems, los totales y la liquidación del IVA, sin el detalle de cada ítem. Sólo se entrega cuando el cliente lo pide.
Los puntos por línea dependen de la impresora: la mayoría de las de 80 mm imprimen 576 puntos (72 mm a 203 dpi) y algunas 512; las de 58 mm imprimen 384. Si no lo sabés, usá 512 para 80 mm: el contenido entra en ambas.
Con el driver de la impresora
Pedí el PDF y mandalo a imprimir como cualquier documento. En el diálogo de impresión elegí el tamaño de papel de la térmica (80 o 58 mm) y escala al 100 %.
curl -sS -f -o ticket.pdf \
"https://api.sifende.com.py/api/v1/documento-electronico/$CDC/kude/ticket?ancho=80" \
-H "Authorization: Bearer $SIFENDE_API_KEY"Directo por ESC/POS
La imagen ya viene en blanco y negro de 1 bit y con el ancho exacto de la línea, así que sólo hay que pasarla al comando de imagen ráster GS v 0. Este ejemplo en Python imprime en una térmica de red por el puerto 9100, el habitual en impresoras con Ethernet o Wi-Fi:
import os
import socket
from io import BytesIO
import requests
from PIL import Image
CDC = "01800123451001001000000122026042710000000006"
IMPRESORA = ("192.168.1.50", 9100)
respuesta = requests.get(
f"https://api.sifende.com.py/api/v1/documento-electronico/{CDC}/kude/ticket/imagen",
params={"puntos": 576},
headers={"Authorization": f"Bearer {os.environ['SIFENDE_API_KEY']}"},
timeout=30,
)
respuesta.raise_for_status()
imagen = Image.open(BytesIO(respuesta.content)).convert("1")
ancho, alto = imagen.size
bytes_por_linea = ancho // 8
# En Pillow un bit en 1 es blanco; la impresora imprime los bits en 1.
datos = bytes(b ^ 0xFF for b in imagen.tobytes())
comandos = bytearray(b"\x1b\x40") # ESC @: reiniciar
for y in range(0, alto, 256): # en bandas, para no llenar el buffer de la impresora
filas = min(256, alto - y)
comandos += b"\x1d\x76\x30\x00" + bytes(
[bytes_por_linea % 256, bytes_por_linea // 256, filas % 256, filas // 256]
)
comandos += datos[y * bytes_por_linea : (y + filas) * bytes_por_linea]
comandos += b"\x1b\x64\x04" # ESC d 4: avanzar 4 líneas
comandos += b"\x1d\x56\x01" # GS V 1: corte parcial; sin cortador se ignora
with socket.create_connection(IMPRESORA, timeout=10) as conexion:
conexion.sendall(comandos)Los mismos bytes sirven para una impresora USB o Bluetooth: cambiá sólo cómo se envían. En impresoras Bluetooth portátiles conviene mandar los datos en bloques chicos (por ejemplo 512 bytes) con una pausa corta entre bloques.
Recomendaciones
- Papel. El Manual Técnico pide que el KuDE impreso sea legible por al menos seis meses. Usá papel térmico de buena calidad y guardado lejos del calor y la luz.
- QR. El ticket imprime el QR de al menos 28 mm de lado, por encima del mínimo de 25 mm que exige SIFEN. No reduzcas la escala al imprimir el PDF.
- Logo. Si tu plan incluye el logo en el KuDE, en el ticket se imprime en un solo color. Un logo con degradados o colores claros puede salir manchado; uno en negro sobre blanco se ve mejor.
- Ambiente. El ticket de SANDBOX lleva el rótulo SANDBOX — SIN VALIDEZ FISCAL, igual que el A4.
Próximos pasos
- Referencia de los endpoints → Descargar KuDE en ticket.
- KuDE A4 para email o archivo → Descargar KuDE.