Skip to content

arrowsw/siiclcert

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SII Chile - Certificación DTE y Boletas Electrónicas

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.

¿Qué hay aquí?

  • 📖 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. dansanti facturacion_electronica) que tienen bugs conocidos en certificación.
  • 📐 xsd/ - Schemas XSD oficiales vigentes del SII (descargados de sii.cl), para validación local.

¿Por qué este repo existe?

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.

Mapa rápido por etapa del proceso

# 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

Referencias técnicas

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

Aprendizajes clave (TL;DR)

  1. 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.
  2. 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).
  3. dansanti facturacion_electronica v0.21.x tiene 3 bugs que rompen certificación de boletas y un XSD local con campos no oficiales (TpoDocRef, FolioRef, FchRef en boletas). Patches en patches/.
  4. El XSD oficial del SII (https://www.sii.cl/factura_electronica/) es la fuente de verdad, no los XSDs empaquetados en librerías.
  5. Antes de cada envío al SII, leer el XML generado y verificar contra el XSD oficial. La validación --validate de las librerías chequea matemáticas y XSD local, pero no garantiza que el SII vaya a aceptarlo.
  6. Folios quemados no se recuperan — un envío rechazado consume folios igual. Verificar exhaustivamente antes de enviar.

Estado del proyecto

  • ✅ 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

Instalación y uso del paquete siicl

# 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]"
pytest

Uso programático

from 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ódulos

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

Contribuciones

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.

Licencia

MIT. Ver LICENSE.

Disclaimer

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.

About

Technical Guide to Certify a DTE and Electronic Receipt (Boleta) Issuer with Chile's SII

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 92.3%
  • HTML 4.3%
  • CSS 2.8%
  • Shell 0.6%