Caso · producto de Kip-Up

La boleta sale del sistema y SUNAT la acepta

En Perú una venta no termina cuando el cliente paga: termina cuando SUNAT acepta el comprobante, y cada uno tiene tres días calendario para llegar. Kuantera es la pieza que hace ese viaje —armar el documento, firmarlo y enviarlo— y está escrita desde cero, sin pasar por ningún intermediario.

Cómo se ve

Quince segundos, de la pantalla en blanco a la constancia guardada: se elige el cliente, se añade una línea, y al emitir el servidor firma y envía. El estado se actualiza solo.

Emisión real contra el entorno de pruebas de SUNAT: la boleta B001-16 sale por S/ 36.00, entra «en cola», y al final SUNAT contesta código 0, aceptada. Lo que se guarda no es un «enviado»: es la constancia, el XML firmado y el PDF.

Cómo funciona por dentro

Un comprobante electrónico peruano es un XML en formato UBL 2.1 con una firma digital dentro, envuelto en un ZIP y entregado por SOAP. Aquí no hay una librería que haga eso: está escrito en el proyecto, en packages/sunat, porque es justo la parte donde se decide si el comprobante vale o lo rechazan por una cifra mal puesta.

La firma es lo que no se negocia. Cada comprobante se firma con el certificado digital y la clave SOL del negocio que emite, nunca con los míos ni con los de la agencia: el emisor ante SUNAT es él. Usar credenciales propias para emitir por otros obligaría a inscribirse como proveedor de servicios electrónicos, que es otro negocio y otra responsabilidad.

El envío no bloquea la venta. La API acepta el comprobante, lo numera y lo devuelve al momento; un proceso aparte lo manda a SUNAT y reintenta si el servicio está caído, que pasa más de lo que uno esperaría. Por eso el panel enseña estados de verdad —en cola, enviado, aceptado, observado, rechazado— y no un «listo» que no significa nada.

Cada empresa ve solo lo suyo, y eso se sostiene en la base de datos, no en el código: las tablas van con seguridad a nivel de fila y el rol con el que se conecta la API no puede saltársela. Si mañana una consulta olvida filtrar por empresa, no devuelve datos ajenos: devuelve vacío.

Qué es y qué no es

Está probada contra el entorno de pruebas de SUNAT: factura, boleta, notas de crédito y débito, detracción y recargo al consumo. Lo que todavía no ha pasado es emitir con un RUC real en producción, y hasta que eso ocurra no diré que está terminada.

Y una cosa que aprendí preparando este caso: al emitir con bolsas plásticas, SUNAT rechaza el comprobante si el número de bolsas no coincide con la cantidad de la línea. Lo encontré emitiendo, no leyendo la norma, y está anotado como error con su XML para corregirlo. Esa es la diferencia entre decir que algo funciona y haberlo visto funcionar.

¿Emites comprobantes y te pelas con el facturador?

Sistemas que emiten ante SUNAT desde dentro, sin copiar datos a otra pantalla y sin depender de un tercero para la parte que decide si la venta existe.

Hablemos →