Saltar al contenido
dte-sdk

Características

dte-sdk cubre la vida completa de un documento tributario electrónico chileno con nueve funciones tipadas: construirlo, totalizarlo, timbrarlo, firmarlo, enviarlo al SII, seguir su estado y serializarlo. Cada paso retorna un objeto nuevo e inmutable, así que puedes detenerte en cualquier etapa, inspeccionarla y seguir.

Estas páginas describen la API planificada para la 1.0. La versión publicada 0.0.2 es un placeholder, y los detalles pueden cambiar antes de la 1.0.

Las funciones#

Las otras tres funciones públicas viven en la página del paso al que apoyan: parseCaf() junto a stampDte(), loadCertificate() junto a signDte(), y getStatus() junto a sendToSii(). Todas las firmas, tipos y constantes también están en la Referencia de la API.

Cómo se componen#

Un documento pasa por cinco pasos. Cada uno recibe el resultado del anterior:

1

Crear

createDte() valida el emisor, el receptor y las líneas, y calcula los totales. Retorna un Dte.

2

Timbrar

stampDte() agrega el TED usando el CAF de ese tipo y folio. Retorna un StampedDte.

3

Firmar

signDte() firma el documento con tu certificado. Retorna un SignedDte.

4

Enviar

sendToSii() sube uno o más documentos firmados y retorna un track ID.

5

Consultar

getStatus() te dice si el SII los aceptó, los aceptó con reparos o los rechazó.

En código:

TypeScript
import { createDte, getStatus, sendToSii, signDte, stampDte } from 'dte-sdk'
 
const dte = createDte(input)                        // Dte
const stamped = stampDte(dte, caf)                  // StampedDte
const signed = await signDte(stamped, certificate)  // SignedDte
 
const { trackId } = await sendToSii(signed, {
  certificate,
  environment: 'certification',
  senderRut: '15.234.567-4',
  resolution: { number: 0, date: '2026-09-01' },
})
 
const status = await getStatus(trackId, {
  certificate,
  environment: 'certification',
  issuerRut: '76.123.456-0',
})

calculateTotals() y toXml() son helpers que puedes usar en cualquier momento: totales para un carro de compras antes de que exista el documento, XML para una vista previa o un archivo.

Comportamiento compartido#

Todas las funciones:

  • ✅ Están completamente tipadas - cada etapa tiene su propio tipo, así que enviar un documento sin firmar es un error de compilación
  • ✅ Son inmutables - cada paso retorna un objeto nuevo y nunca modifica su entrada
  • ✅ Lanzan una sola clase de error - DteError, con un code estable para decidir qué hacer
  • ✅ Emiten mensajes genéricos - los errores nunca incluyen RUTs, montos, llaves privadas del CAF ni contraseñas de certificados
  • ✅ Corren en todas partes - Node 20 o superior, el navegador, Deno y Bun, usando Web Crypto
  • ✅ No agregan dependencias - cero dependencias en runtime, ESM y CJS con tree-shaking

dte-sdk construye, timbra, firma y envía documentos. No genera la versión impresa en PDF: usa stamped.pdf417 con tu propio proceso de impresión.

Próximos pasos#