Instalación
dte-sdk es un paquete único y sin dependencias en runtime. Se distribuye con builds ESM y CommonJS con los tipos incluidos, y es totalmente tree-shakeable (sideEffects: false), así que solo pagas el costo de las funciones que importas. El bundle completo pesa unos 8,4 KB min+gzip.
Si lo instalas hoy obtienes la 0.0.2, una versión placeholder que
solo exporta hello(). Las funciones de estas páginas son la API
planificada para la 1.0 y pueden cambiar antes del lanzamiento.
Requisitos#
- Node.js 20 o superior (
engines: node >=20), Deno, Bun o cualquier navegador moderno - Un gestor de paquetes: npm, pnpm, bun o yarn
- TypeScript es opcional: los tipos vienen incluidos (no hay paquete
@typesque instalar) y la librería también funciona en JavaScript plano
Agregar el paquete#
npm install dte-sdkVerificar la instalación#
Importa una función
Las importaciones son nombradas y tree-shakeables. calculateTotals() es
una función pura (no usa CAF, certificado ni red), así que sirve como
prueba rápida.
import { calculateTotals } from 'dte-sdk'Ejecútala
Una línea de 120.000 CLP netos, con 19% de IVA encima.
const totals = calculateTotals([
{ name: 'Licencia anual', quantity: 1, unitPrice: 120000 },
])
console.log(totals.vat) // 22800
console.log(totals.total) // 142800Listo
Si ambas líneas muestran lo anterior, el paquete está bien configurado. Continúa con el Inicio rápido.
Formatos de módulo#
dte-sdk funciona con ambos sistemas de módulos sin configuración:
// ESM / TypeScript
import { createDte, signDte } from 'dte-sdk'// CommonJS
const { createDte, signDte } = require('dte-sdk')Soporte de runtimes#
El mismo código corre en Node, Deno, Bun y el navegador. La firma usa
la Web Crypto API (crypto.subtle), que todos los runtimes soportados
incluyen: sin módulos nativos, sin bindings criptográficos, sin polyfills.
| Entorno | Soportado | Notas |
|---|---|---|
| Node.js (>=20) | ✅ | ESM y CommonJS |
| Bun | ✅ | ESM nativo |
| Deno | ✅ | Importa con el especificador npm:dte-sdk |
| Navegadores | ✅ | Empaqueta con cualquier herramienta; tree-shakeable |
El navegador está soportado, pero firmar ahí implica que la llave privada del certificado también está en el navegador. En la mayoría de las apps, conviene crear y previsualizar documentos en el cliente, y timbrar, firmar y enviar en el servidor. Revisa Seguridad.
Qué necesitas además del paquete#
dte-sdk se encarga del formato del documento, la criptografía y la comunicación con el SII. Para emitir documentos que el SII acepte también necesitas tres cosas que el paquete no te puede dar:
| Necesitas | Qué es | De dónde sale |
|---|---|---|
| Un CAF por tipo de documento | Un XML que autoriza un rango de folios, con la llave privada para timbrarlos | Se solicita al SII, uno por tipo de documento |
| Un certificado digital | Un archivo .pfx o .p12 y su contraseña, emitido a una persona autorizada para firmar por la empresa | Un proveedor de certificación acreditado |
| Una resolución del SII | El número y la fecha de la resolución que autoriza a la empresa como emisor electrónico | La otorga el SII tras la certificación (usa el número 0 en el ambiente de certificación) |
No necesitas ninguno para probar createDte(), calculateTotals() o toXml(): son funciones puras. Conceptos clave explica cómo encajan las piezas.