Guía técnica completa para certificar emisores de documentos tributarios electrónicos ante el SII de Chile, basada en experiencia real de proceso completo (Facturas T33, Notas Crédito T61, Notas Débito T56, Guías Despacho T52, Facturas Exentas T34, Facturas Compra T46, Boletas Electrónicas T39).
Objetivo: que nadie más pierda días buscando información dispersa, mal documentada o desactualizada.
- 📖
docs/- Manuales paso a paso por etapa del proceso de certificación. Lo más valioso del repo. - 📋
examples/- Ejemplos JSON anonimizados de cada tipo de documento. - 🔧
patches/- Parches a librerías open-source populares (ej. dansantifacturacion_electronica) que tienen bugs conocidos en certificación. - 📐
xsd/- Schemas XSD oficiales vigentes del SII (descargados de sii.cl), para validación local.
Certificarse ante el SII de Chile como emisor electrónico es un proceso documentado a medias, donde:
- La documentación oficial mezcla versiones de 2009, 2018, 2023 y posteriores sin marcar cuál aplica.
- Las librerías open-source disponibles tienen XSDs locales modificados que no coinciden con los XSDs oficiales del SII.
- El SII responde con mensajes de error engañosos (
SCH-00001,HED-3-211,El Documento no esta en el envio) que no apuntan al problema real. - Boletas electrónicas (T39) post-2023 tienen un flujo completamente distinto a facturas, y la documentación pública no lo separa claramente.
| # | Etapa | Doc |
|---|---|---|
| 1 | Setup inicial del emisor en cert SII | docs/01-setup-emisor.md |
| 2 | Set de Pruebas Facturas (T33, T34, T46, T52, T61, T56) | docs/02-set-pruebas-facturas.md |
| 3 | Simulación operativa | docs/03-simulacion.md |
| 4 | Intercambio de Información | docs/04-intercambio.md |
| 5 | Documentos Impresos (PDF + PDF417) | docs/05-documentos-impresos.md |
| 6 | Set de Pruebas Boletas (T39) ⭐ el más sub-documentado | docs/06-set-pruebas-boletas.md |
| 7 | Resolución y paso a producción | docs/07-resolucion-produccion.md |
| Tema | Doc |
|---|---|
| Mapa completo de endpoints SII (cert/prod, SOAP/REST) | docs/endpoints-sii.md |
| Diferencias XSD oficial vs XSDs de librerías open-source | docs/xsd-oficial-vs-dansanti.md |
| Bugs conocidos en dansanti y sus parches | docs/bugs-dansanti-patches.md |
| Lista de "gotchas" - errores comunes y sus causas reales | docs/gotchas.md |
- Boletas T39 en certificación se envían por
maullin.sii.cl/cgi_dte/UPL/DTEUpload(SOAP), NO por el endpoint REST de pangal. REST es solo para producción operativa post-2023. - La referencia al SET en boletas es minimal: solo
<NroLinRef> + <CodRef>SET</CodRef> + <RazonRef>CASO-N</RazonRef>. Sin<TpoDocRef>, sin<FolioRef>, sin<FchRef>(esos son del flujo de facturas). - dansanti
facturacion_electronicav0.21.x tiene 3 bugs que rompen certificación de boletas y un XSD local con campos no oficiales (TpoDocRef,FolioRef,FchRefen boletas). Patches enpatches/. - El XSD oficial del SII (
https://www.sii.cl/factura_electronica/) es la fuente de verdad, no los XSDs empaquetados en librerías. - Antes de cada envío al SII, leer el XML generado y verificar contra el XSD oficial. La validación
--validatede las librerías chequea matemáticas y XSD local, pero no garantiza que el SII vaya a aceptarlo. - Folios quemados no se recuperan — un envío rechazado consume folios igual. Verificar exhaustivamente antes de enviar.
- ✅ Documentación de las 7 etapas del proceso
- ✅ Ejemplos JSON anonimizados
- ✅ Patches dansanti documentados
- ✅ Paquete Python autosuficiente
siicl(no depende de dansanti) con tests - ✅ CLI scripts:
siicl-emit-factura,siicl-emit-boleta,siicl-upload,siicl-generar-pdf,siicl-validar-xsd
# Clonar
git clone https://github.com/dbenaventep/sii-chile-cert.git
cd sii-chile-cert
# Instalar
pip install -e .
# o solo las deps: pip install -r requirements.txt
# Ejecutar tests
pip install -e ".[dev]"
pytestfrom siicl.dte import DTE, Emisor, Receptor, Item, Referencia, dte_a_xml, envio_boleta, firmar_envio
from siicl.firma import Cert
from siicl.caf import CAF
from siicl.timbre import DatosTED, construir_ted
from siicl.cliente import enviar_soap
cert = Cert.from_pfx("mi.pfx", "mi_password")
caf = CAF.from_file("CAF_T39.xml")
dte = DTE(
tipo=39, folio=1, fecha_emision="2026-04-29",
emisor=Emisor(rut="76123456-0", razon_social="MI EMPRESA SPA", ...),
receptor=Receptor(rut="66666666-6", razon_social="Sin RUT", ...),
items=[Item("Producto", 1, 11900)],
referencias=[Referencia(razon="CASO-1", codigo_referencia="SET")],
)
# Generar DTE → TED → firmar → envío → upload SII
# (ver bin/ y siicl/cli.py para flujos completos)| Módulo | Función |
|---|---|
siicl.types |
RUT (validación módulo 11), TipoDTE enum |
siicl.firma |
Cargar PFX, firmar XML con XMLDSig (RSA-SHA1, c14n) |
siicl.caf |
Parser de archivos CAF del SII |
siicl.timbre |
TED + código de barras PDF417 (ISO-8859-1) |
siicl.dte |
Construir DTE/EnvioDTE/EnvioBOLETA/ConsumoFolios |
siicl.cliente |
HTTP SOAP (maullin/palena) + REST (pangal/rahue) |
siicl.pdf |
Renderizado DTE → PDF con timbre |
siicl.validacion |
Validación contra XSD oficial del SII |
Si certificaste un emisor y encontraste algo no documentado aquí, abre un PR. Si una sección está obsoleta porque el SII cambió algo, también.
MIT. Ver LICENSE.
Este repo es de uso comunitario. No tiene afiliación con el SII de Chile. La información acá puede quedar obsoleta si el SII cambia procesos. Antes de operar en producción real verifica contra la documentación oficial vigente de sii.cl.