SDK para Node.js y TypeScript
El SDK de facturación electrónica del SII para Node.js y TypeScript
Una librería, no un servicio: la instalas como dependencia y corre dentro de tu backend. Emites boletas, facturas, notas y guías sin depender de una API de terceros en cada documento, y tus certificados y datos nunca salen de tu servidor. Tipos estrictos, resultados en vez de excepciones y el texto del SII siempre literal.
import { mensajeParaUsuario } from '@devlas-cl/comun'import { emitir } from '@devlas-cl/sii'
const r = await emitir(configToken, { documento, certificado, caratula, almacenCaf })
if (!r.ok) { // r.error.codigo: 'VALIDACION' | 'TRANSPORTE' | 'LIMITE_SESIONES' | ... // r.error.accion: 'reintentar' | 'esperar' | 'corregir' | 'tramitar' | 'escalar' // r.error.mensajeSii: el texto literal del SII (null si nace en la librería) const { titulo, queHacer } = mensajeParaUsuario(r.error) return avisar(titulo, queHacer)}guardar(r.valor.dte.xml, r.valor.trackId)Para desarrolladores
Diseñado para integrarse, no para encerrarte
Todo lo que varía entre instalaciones entra por cuatro puertos que implementas con tu infraestructura. Sin estado global: puedes correr varias instancias en un proceso y varias réplicas sin que se pisen.
Resultado tipado
Cada operación devuelve Resultado<T, ErrorSii>. Nada lanza por datos tuyos ni del SII; el error dice qué hacer con un código cerrado.
Cuatro puertos
Http, AlmacenSesion con Bloqueos, AlmacenCaf y Registro. Los implementas con Redis, Postgres o lo que uses.
Importa solo lo que usas
Piezas puras, llamadas al SII y recetas en paquetes separados, con dependencias en un solo sentido.
Partes que corren en el navegador
Validación, montos, errores e impresión sin APIs de Node, para tu POS en Electron o Capacitor.
Validado contra el XSD
Cada documento se valida contra el esquema oficial antes de enviarse, y los largos del XSD nunca se recortan en silencio.
Rápido
Medido en un equipo local (no es una promesa para tu infraestructura): una boleta se genera en alrededor de 1 ms y un lote de 1.000 en medio segundo.
Paquetes
Qué instalas según tu nivel
| Característica | Libre | Facturas | AutoCAF | Certificador |
|---|---|---|---|---|
| Paquetes @devlas-cl | ||||
| comunResultado, ErrorSii, los puertos (Http, AlmacenSesion, Bloqueos, AlmacenCaf, Registro) y mensajeParaUsuario. | Incluido | Incluido | Incluido | Incluido |
| dominioModelo canónico del documento, RUT, fecha tributaria en hora de Chile y cálculo de montos. | Incluido | Incluido | Incluido | Incluido |
| xmlArmar, timbrar, firmar y validar contra el XSD: prepararDte, prepararSobre, prevalidarEmision, leerCaf. | Incluido | Incluido | Incluido | Incluido |
| protocoloLectores puros de las respuestas del SII, catálogo de errores, veredictos y políticas de consulta y envío. | Incluido | Incluido | Incluido | Incluido |
| siiLas llamadas al SII: emitir, enviarBoletas, enviarDte, consultarEstadoEnvio, consultarEstadoDte, RCV y reclamos. | Incluido | Incluido | Incluido | Incluido |
| solucionesRecetas que juntan lo anterior: habilitar, diagnosticarEmisor, resumirFoliosCaf. | Incluido | Incluido | Incluido | Incluido |
| impresionTicket térmico, PDF en rollo u hoja y timbre PDF417. | Incluido | Incluido | Incluido | Incluido |
| foliosautoCaf, pedirCaf, reobtenerCaf, anularFolios, consultarTopeFolios y llamadasFoliosDeSii. | No incluido | No incluido | Incluido | Incluido |
| certificacionMotor de certificación (avanzarCorrida, crearPasosSii), sets, libros, muestras y habilitación. | No incluido | No incluido | No incluido | Incluido |
- Sin persistencia propia
- La librería no guarda XML, folios, sesiones ni estados. Tú decides dónde: así cumples la obligación de conservar los documentos 6 años en tu propia base.
- El reloj es un parámetro
- Las funciones puras reciben la hora y las llamadas un Reloj. Las pruebas son deterministas y la fecha tributaria sale en hora de Chile.
- Sin reintentos ocultos
- Las lecturas repiten con una política visible; los envíos nunca se repiten solos salvo que nada haya llegado al SII.
- Mensajes en español
- mensajeParaUsuario entrega título, qué hacer y el detalle literal del SII para cada código, listo para tu interfaz.
Cuánto cuesta
Con el nivel Facturas emites boletas, facturas afectas y exentas, notas de crédito y débito y guías de despacho por 16 UF al año más IVA. Las boletas solas son gratis en el nivel Libre.
Los niveles son acumulativos (Libre, Facturas, AutoCAF y Certificador): cada precio es el total, anual y más IVA, y no cambia según cuántos clientes finales atiendas. Ver qué trae cada nivel.
Facturas
16 UFal año, más IVA
Todo Libre, más el resto de los documentos tributarios.
- Factura afecta (33) y exenta (34).
- Notas de crédito (61) y de débito (56).
- Guía de despacho (52).
- Libros electrónicos de ventas y compras.
- Intercambio entre contribuyentes y Registro de Compras y Ventas (RCV).
Preguntas
Preguntas frecuentes
¿Qué versión de Node.js necesito?
Node.js 24 o superior. Los paquetes son solo ESM y se publican compilados a JavaScript con sus tipos de TypeScript.
¿Puedo usarlo desde un proyecto CommonJS?
Sí, con import dinámico dentro de una función async, por ejemplo await import('@devlas-cl/xml'). En TypeScript con CommonJS necesitas moduleResolution node16 o nodenext.
¿Qué relación tiene con @devlas/dte-sii?
@devlas/dte-sii fue la librería pública anterior de Devlas. SII SDK es un motor nuevo que reemplazó a esa librería como motor de emisión de Devlas POS y mantiene paridad de salida byte a byte con ella en los documentos de referencia.
¿Está en npmjs.com?
No. Es software de licencia comercial (con un nivel gratuito para boletas) que se distribuye por GitHub Packages bajo el scope @devlas-cl, con un token personal ligado a tu registro. Para emitir no depende de la licencia; AutoCAF y el Certificador traen una llave de licencia firmada que se verifica sin conexión.
En la documentación
SII SDK es un producto de Devlas SpA. No es un producto del Servicio de Impuestos Internos, no está afiliado a él ni cuenta con su aval. Las cifras y comportamientos del SII que se citan fueron medidos por Devlas en el ambiente de certificación salvo que se indique otra cosa.