Saltar al contenido
dte-sdk

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 @types que instalar) y la librería también funciona en JavaScript plano

Agregar el paquete#

Shell
npm install dte-sdk

Verificar la instalación#

1

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.

TypeScript
import { calculateTotals } from 'dte-sdk'
2

Ejecútala

Una línea de 120.000 CLP netos, con 19% de IVA encima.

TypeScript
const totals = calculateTotals([
  { name: 'Licencia anual', quantity: 1, unitPrice: 120000 },
])
 
console.log(totals.vat)   // 22800
console.log(totals.total) // 142800
3

Listo

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:

TypeScript
// ESM / TypeScript
import { createDte, signDte } from 'dte-sdk'
JavaScript
// 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.

EntornoSoportadoNotas
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:

NecesitasQué esDe dónde sale
Un CAF por tipo de documentoUn XML que autoriza un rango de folios, con la llave privada para timbrarlosSe solicita al SII, uno por tipo de documento
Un certificado digitalUn archivo .pfx o .p12 y su contraseña, emitido a una persona autorizada para firmar por la empresaUn proveedor de certificación acreditado
Una resolución del SIIEl número y la fecha de la resolución que autoriza a la empresa como emisor electrónicoLa 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.

Próximos pasos#