SIFENDE
Guías

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

CasoEndpointPará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 resumencualquiera de los dosresumen=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

On this page

Usamos cookies necesarias para que el sitio funcione. Con tu permiso, también usamos herramientas de analítica para entender cómo se usa el sitio y para medir nuestras campañas publicitarias. Política de privacidad