Changelog
Historial de actualizaciones de e-Boleta Chile. La app recibe mantenimiento y mejoras continuas.
3
Emisores
10
Versiones
Jul 2026
Última actualización
Facturas 33 y Notas de Crédito 61 en flujo managed (SII Direct)
Emisión desde administración y autoservicio, con reserva atómica de folios, idempotencia, persistencia transaccional y PDF local. Anulación total mediante Nota de Crédito 61 (parciales pendientes).
Modo demo en el onboarding managed
Alternativa que no solicita certificado, contraseña, API key ni cuenta SII. Documentos demo con tags DEMO-BO-*, DEMO-NC-* y DEMO-FA-*, sin contacto con el SII, sin consumir plan ni enviar correos. Permite completar la revisión de Shopify de principio a fin.
Buscador por número visible de orden
Busca por 33654, #33654 o n33654. Para documentos antiguos consulta Shopify. Pantalla "No se encontraron documentos" separada de tienda sin documentos, debounce de escritura y botón X siempre funcional.
Avisos de consumo desde formularios públicos
Las boletas generadas por enlace o formulario público recuperan la sesión permanente de la tienda y participan en los avisos de consumo aunque el administrador no esté conectado. Si no se recupera la sesión, la emisión no se bloquea.
Asistente paso a paso para acciones manuales en el SII
Muestra nombre y RUT de la empresa, RUT del certificado, los cinco permisos requeridos, enlace a guía oficial y qué enviar al representante. Solo se reanuda tras acciones válidas, sin botón genérico de reintento.
Compatibilidad con certificados PFX
Lectura ampliada para reconocer ambas formas de almacenar el RUT (estructura estándar y alternativa). Un certificado válido ya no se rechaza por formato del proveedor.
Plataforma de certificación SII automatizada (v4)
Preflight de solo lectura (certificado, cinco permisos, receptores), execution intents, operation locks por ruta/tamaño/SHA-256, ledgers durables, claims atómicos y máximo un POST irreversible por operación.
QR en ticket POS desplegado
El ticket POS imprime un código QR (PNG 260×260 en contenedor 360px) para flujo managed y legacy: el cliente lo escanea y accede a su boleta electrónica sin pedir el correo. Desplegado en producción y validado en impresión física (ago 2026).
Catálogo de planes rediseñado desplegado
Nuevo catálogo (Gratis 100 docs / Básico USD 12,99 / Pro USD 24,99 / Retail USD 39,99 / Pro ECP privado) con capacidades reforzadas en servidor. Desplegado en producción (ago 2026).
Mantención de Usuarios SII accionable
Los errores técnicos del portal SII se convierten en instrucciones claras (requires_action) en lugar de mensajes poco accionables.
ACTECO obligatorio y consulta STC robusta
ACTECO es obligatorio al guardar configuración managed. Fallback nativo con TLS 1.2 cuando la consulta STC falla por errores TLS/OpenSSL desde Node.
Desafiliación del sistema gratuito SII detectada
Detección del caso (código 890 / texto SII) con banners accionables en inicio, configuración y generación manual. Solo exige desafiliación si no existe fecha de desautorización.
Reparación de CAF con razón social corrupta
Folios rechazados por CAF con razón social mal codificada se repararon localmente y se reemitieron aceptados, sin descargar CAF nuevo.
Cierre de sesiones SII explícito
Scripts y runtime cierran sesión explícitamente (autTermino.cgi) al terminar, reduciendo el bloqueo por máximo de sesiones autenticadas. Nuevo mensaje claro para ese caso.
Error 404 en "Guía" corregido
Nueva ruta /app/guia con resumen del contenido y botón que abre la documentación completa en pestaña externa.
Billing de Shopify con errores claros
Diferenciación de errores HTTP, GraphQL, red y respuestas vacías. Mensaje seguro al cliente con identificador de seguimiento; detalle técnico solo en logs.
Reconciliación de suscripciones con Shopify
Corrección de suscripciones marcadas vencidas en DB con suscripción ACTIVE vigente en Shopify (caso JJ GLOBAL con 103.951 boletas históricas). Rechazo de webhooks antiguos y sincronización automática.
Botón WhatsApp en Shopify Mobile
Usa el área segura de Shopify (calc(2.5rem + var(--shopify-safe-area-inset-bottom))) y ya no queda tapado por la barra inferior en mobile.
Devoluciones duplicadas de Shopify identificadas
Detección de devoluciones que Shopify reporta dos veces (productos + movimiento de dinero) para no emitir notas de crédito duplicadas.
Auditoría de emisión y suscripciones
168 fallas confirmadas y 103 sin confirmación; 95 órdenes sin DTE en ECP/La Pausa por límite de plan. Auditoría de 215 intentos de notas de crédito Yeppo: 201 correctos, 14 fallidos, sin duplicados.
Diagnóstico Falabella–AnyMarket (22 casos)
Las 18 boletas sí fueron emitidas; el fallo ocurrió al adjuntar el PDF en AnyMarket (limitación de API para órdenes concluidas). Expediente de evidencia preparado para soporte.
Boleta manual con SII Direct
Generación manual de boletas usando el flujo SII Direct.
Selección automática de tipo de boleta
El sistema elige automáticamente boleta afecta (39) vs exenta (41) según corresponda.
Teléfonos de tienda a Slack
Helper nuevo app/utils/shop-contact.server.ts que integra el teléfono de contacto de la tienda a Slack para soporte.
Trigger ORDERS_CREATE con estado real de orden
El flujo ahora consulta el estado actualizado de la orden en Shopify antes de decidir si emite boleta, en lugar de depender solo del payload inicial del webhook. Elimina falsos negativos causados por notas incompletas o datos aún no disponibles al momento del evento.
Candidatos de búsqueda más robustos
Se construyen candidatos desde la nota completa, sus líneas individuales y valores de customAttributes. El payload original actúa como fallback cuando no es posible refrescar la orden en vivo.
Modo simple y modo regex para trigger por nota
Dos modos de operación: búsqueda simple (texto fijo) y búsqueda avanzada por regex para casos complejos. Simplifica la configuración para usuarios no técnicos.
Nuevos campos de configuración: triggerNotePattern / triggerNoteSearchMode
Se extendió la configuración de tienda con los nuevos campos. El campo legacy triggerNoteRegex se mantiene temporalmente para compatibilidad.
UI de configuración actualizada con diagnóstico mejorado
La pantalla incorpora selector de modo, validaciones específicas y mensajes de ayuda. Los logs registran origen de datos evaluados, cantidad de candidatos y contexto del match.
API Fase 3: POST /v1/documents/factura y /v1/documents/nota-credito
Nuevos endpoints públicos para emitir facturas y notas de crédito. Compatibles con los tres proveedores (Haulmer, Simple API, BSale) sin ruptura de compatibilidad con endpoints previos.
Nota de crédito referenciada por document_id interno
La nota de crédito debe referenciarse por el document_id del API. El proveedor se deriva del documento origen, que debe estar en estado "emitido" y pertenecer al mismo tenant.
Trazabilidad de anulación entre documentos
Al emitir una nota de crédito, el documento origen pasa a estado "anulado" y la respuesta incluye documento_referencia. Mejora auditoría y consistencia del flujo.
Separación request_id / document id público
Se separaron el request_id (trazabilidad de respuesta) del document id público persistido (identificador estable del recurso). Elimina colisión de identificadores entre reinicios.
app/utils/simpleapi.server.ts
Lógica de emisión Simple API actualizada.
app/utils/dte-simpleapi.server.ts
Flujo DTE Simple API refactorizado.
app/routes/app.dtes.tsx
Listado de documentos con nuevo estado SII.
prisma/schema.prisma
Nuevos campos de trazabilidad y configuración.
Lookup automático de resolución SII por RUT
El wizard consulta automáticamente el endpoint del SII y parsea la respuesta para obtener N° Resolución y Fecha Resolución. Los datos se persisten si la consulta fue exitosa.
Fallback controlado a configuración gestionada
Si el lookup automático falla, se habilita acceso a configuración manual como alternativa. Al guardar correctamente, el flag de fallback se limpia.
Clasificación de errores del SII
Se diferencia entre: not_found (contribuyente no autorizado), network (fallo de red o timeout) y parse (cambio en el formato de respuesta del SII). El wizard muestra un banner con CTA según el tipo de fallo.
Normalización automática de fecha
La fecha obtenida del SII en formato DD-MM-YYYY se normaliza automáticamente a YYYY-MM-DD antes de persistirse.
Dependencia del formato de respuesta del SII
El parser depende del formato actual de respuesta del SII. Si cambia, el parseo falla — se mitiga con clasificación de error y fallback manual.
Ambiente de certificación pendiente validación funcional
Se recomienda prueba adicional en ambiente de certificación del SII para confirmar comportamiento completo.
Ciclo completo de emisión Simple API
5 pasos implementados: (1) generación del DTE, (2) construcción del sobre, (3) envío al SII, (4) captura del TrackID, (5) consulta del estado del envío.
Trazabilidad tributaria por documento
Cada documento almacena: TrackID, estado SII, mensaje de respuesta, fecha de envío, fecha de última consulta y sobre XML asociado.
Validación antes de operaciones derivadas
Se bloquean conversiones, anulaciones, notas de crédito y refunds si el documento base aún no está aceptado por el SII.
Estado SII visible en interfaz
El estado tributario aparece en el listado de documentos, el detalle y el portal público. Se puede actualizar manualmente cuando existe TrackID.
Validación funcional con SII real
La base técnica está implementada. Falta validación en ambiente real o de certificación del SII con documentos reales.
MVP API Intermediaria Multi-Proveedor
Servicio backend independiente para emitir boletas con una sola API frente a múltiples proveedores (Haulmer, Simple API, BSale). Endpoint público POST /v1/documents/boleta con autenticación por API key, control de duplicados e idempotencia.
Seguridad base del API
Hash SHA-256 para API keys, cifrado AES-256-GCM para secretos de proveedores y scope dte:write.
Configuración AnyMarket Beta
La sección "Envío de boletas a terceros" aparece solo en tiendas con AnyMarket beta activo. Permite enviar boletas electrónicas a marketplaces como Walmart y Paris.
Fechas incorrectas en escenario Make
Se agregó un módulo de parseo de fechas y se reforzó la validación de formato para evitar el envío de fechas inconsistentes al SII.
Google Analytics GA4 (híbrido cliente + servidor)
El tracking server-side garantiza que conversiones críticas (boletas generadas, errores, anulaciones) lleguen a GA4 aun cuando bloqueadores de anuncios afecten el cliente.
Wizard: banner beta con requisitos previos
Al seleccionar Simple API o BSale se muestra advertencia con lista de requisitos. Botón de soporte integrado directamente en el wizard.
Wizard: cotejo y bloqueo de navegación
El botón "Continuar" permanece desactivado hasta confirmar disponibilidad de requisitos. El cotejo se resetea al cambiar de proveedor.
Integración BSale Beta
e-Boleta ahora soporta BSale como emisor. No requiere migración del sistema existente y abre el mercado de PyMEs que ya usan BSale como POS.
Bloqueo efectivo al superar límite de plan
El comportamiento anterior solo enviaba notificaciones. Ahora se bloquea la generación cuando el límite está agotado. Los pedidos bloqueados reciben el tag DTE-NO-GENERADO.
Respuesta 403 en APIs manuales
Las APIs de generación manual retornan HTTP 403 con upgradeRequired:true cuando el límite está agotado. Los webhooks retornan 200 para evitar reintentos de Shopify.
Emisión automática de boletas
Webhook orders/paid genera la boleta y envía email con enlace de descarga al cliente.
Notas de crédito automáticas
Generadas desde cancelaciones y reembolsos. Anula automáticamente la boleta original.
Portal de autoservicio Boleta → Factura
Formulario público con token único por pedido para que el cliente solicite factura con RUT, Razón Social, Giro y Dirección.
Etiquetado automático
Tags #BO-{folio} y #NC-{folio} en pedidos para trazabilidad directa boleta-pedido.
Compatibilidad Shopify POS
Genera boletas en ventas físicas y las envía por email al momento de la venta.
Dashboard de gestión
Estadísticas, filtros por fecha/estado/tipo y visualización de uso vs límite del plan.
Integración base Openfactura (Haulmer)
Soporte para documentos tipo 39 (boleta), 41 (boleta exenta), 33 (factura), 34 (factura exenta) y 61 (nota de crédito). Requiere cuenta Openfactura, certificación SII y API Key.
Comentarios y preguntas
¿Tienes preguntas sobre alguna versión? Déjalas aquí.