Thanks to visit codestin.com
Credit goes to github.com

Skip to content

HectorRiquelme/real-pagos-sii-dte

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Sistema de Facturacion Electronica SII Chile

Sistema completo para emitir Documentos Tributarios Electronicos (DTE) conectado al ambiente de certificacion del Servicio de Impuestos Internos de Chile. Incluye backend Node.js + Express y panel administrativo React + Vite + Tailwind.

Caracteristicas

  • Autenticacion con certificado digital .pfx (X.509)
  • Generacion de DTE tipo 33 (Factura Electronica) y 39 (Boleta Electronica) en XML segun esquema del SII
  • Firma digital XML con xml-crypto (xmldsig enveloped, rsa-sha1)
  • Cliente SOAP para el WSDL del SII (CrSeed, GetTokenFromSeed, DTEUpload, QueryEstUp)
  • Consulta de estado de envios mediante TRACKID
  • Generacion/descarga de PDF con timbre electronico (QR)
  • Persistencia en SQLite (better-sqlite3)
  • Panel admin con formulario de emision, listado y detalle

Requisitos previos

  • Node.js 18 o superior
  • npm 9 o superior
  • Un certificado digital tributario emitido por alguna Autoridad Certificadora aceptada por el SII (en formato .pfx o .p12)
  • Estar registrado como contribuyente electronico de pruebas en el SII

Como obtener un certificado digital de prueba

  1. Compra un certificado digital tributario en alguno de los proveedores autorizados por el SII:
  2. Algunos proveedores ofrecen certificados de prueba gratuitos validos por un corto periodo (por ejemplo, E-Certchile ofrece demos). Contacta al proveedor para solicitarlo.
  3. El certificado te llegara como archivo .pfx o .p12, protegido por una contrasena que tu defines al emitirlo.
  4. Copia el archivo a la carpeta backend/certs/ (creala si no existe) y apunta la variable CERT_PFX_PATH a esa ruta.

Como registrarse como contribuyente electronico de pruebas en el SII

  1. Accede a https://www.sii.cl con tu RUT y clave tributaria.
  2. Ingresa a Servicios online > Factura electronica > Sistema de facturacion gratuito del SII.
  3. Sigue el proceso de Postulacion a ser Facturador Electronico en el menu Certificacion y Autorizacion.
  4. El SII te entregara un set de pruebas con casos que debes emitir para certificarte. Cada set incluye los tipos de documento a emitir, montos, detalles y referencias.
  5. Descarga los Codigos de Autorizacion de Folios (CAF) de prueba desde el menu Folios del portal SII. Los CAF son archivos XML que autorizan rangos de folios para cada tipo de DTE.
  6. Coloca los CAF en backend/certs/caf/ (este repositorio contiene un placeholder en el campo TED del XML; debes integrar tus CAF reales para firmar el timbre y pasar la certificacion).
  7. Una vez superado el set de pruebas, el SII te certifica como emisor electronico.

Nota: este sistema genera el XML del DTE valido segun el esquema del SII, pero el timbre electronico TED se emite con un placeholder. Para pasar la certificacion SII debes reemplazar ese bloque cargando tus CAFs autorizados y firmando el bloque <DD> con la clave privada asociada al CAF (distinta a la del certificado tributario).

Instalacion

Backend

cd backend
npm install
cp .env.example .env
# Editar .env con tus datos reales

Frontend

cd frontend
npm install

Variables de entorno (backend/.env)

Variable Descripcion
RUT_EMPRESA RUT del emisor (formato 12345678-9)
CERT_PFX_PATH Ruta al archivo .pfx del certificado digital
CERT_PFX_PASSWORD Contrasena del certificado
RAZON_SOCIAL Razon social del emisor
GIRO Giro comercial
DIRECCION Direccion de casa matriz
COMUNA Comuna de casa matriz
CIUDAD Ciudad
PORT Puerto del backend (default 3000)
SII_AMBIENTE certificacion o produccion
SII_URL_BASE URL base del SII (https://maullin.sii.cl/DTEWS para certificacion)
FECHA_RESOLUCION Fecha de resolucion SII que autoriza DTE
NUMERO_RESOLUCION Numero de resolucion (usar 0 en certificacion)

Como levantar el sistema

Backend (puerto 3000)

cd backend
npm start
# o en desarrollo con recarga automatica
npm run dev

Frontend (puerto 5173)

cd frontend
npm run dev

Luego abre http://localhost:5173 en tu navegador.

Endpoints disponibles

Salud y autenticacion

  • GET /api/health - Estado del backend y configuracion
  • GET /api/auth/cert - Verifica que el .pfx se cargue correctamente
  • GET /api/auth/semilla - Solicita una semilla al SII
  • GET /api/auth/token - Obtiene un token de sesion del SII (semilla firmada)

DTE

  • GET /api/dte - Lista todos los DTEs
  • POST /api/dte/emitir - Emite y firma un nuevo DTE
    {
      "tipo": 33,
      "rutReceptor": "12345678-9",
      "razonSocialReceptor": "Cliente Demo SpA",
      "giroReceptor": "Comercio",
      "direccionReceptor": "Calle Falsa 123",
      "comunaReceptor": "Santiago",
      "items": [
        { "nombre": "Servicio consultoria", "cantidad": 1, "precio": 100000 }
      ]
    }
  • GET /api/dte/:id - Detalle completo del DTE
  • GET /api/dte/:id/xml - Descarga el XML firmado
  • GET /api/dte/:id/pdf - Descarga la representacion impresa PDF
  • POST /api/dte/:id/enviar - Envia el DTE al SII (retorna TRACKID)
  • GET /api/dte/:id/estado - Consulta el estado del envio en el SII

Estructura del proyecto

01_sii_facturacion_electronica/
├── backend/
│   ├── package.json
│   ├── .env.example
│   ├── data/                # Base SQLite (ignorada en git)
│   └── src/
│       ├── server.js        # Entrada Express
│       ├── db.js            # Capa SQLite
│       ├── routes/
│       │   ├── dte.js       # Rutas REST de DTEs
│       │   └── auth.js      # Rutas de autenticacion SII
│       ├── services/
│       │   ├── signer.js    # Carga .pfx y firma XML con xml-crypto
│       │   ├── dte.js       # Genera XML del DTE tipo 33/39
│       │   ├── sii.js       # Cliente SOAP/HTTP del SII
│       │   └── pdf.js       # Genera PDF con timbre QR
│       └── templates/
│           ├── dte_33.xml   # Plantilla referencia factura
│           └── dte_39.xml   # Plantilla referencia boleta
├── frontend/
│   ├── package.json
│   ├── vite.config.js
│   ├── tailwind.config.js
│   ├── postcss.config.js
│   ├── index.html
│   └── src/
│       ├── main.jsx
│       ├── App.jsx
│       ├── api.js           # Cliente del backend
│       ├── index.css
│       └── pages/
│           ├── Emitir.jsx
│           ├── Listado.jsx
│           └── Detalle.jsx
├── README.md
└── .gitignore

Limitaciones conocidas

  • El timbre electronico TED se emite con un placeholder. Para pasar la certificacion SII debes integrar tus CAFs reales firmando el bloque <DD> con la clave privada del CAF.
  • El cliente SOAP esta implementado con axios y XML manual en vez de una libreria WSDL. Esto es intencional: los servicios del SII usan namespaces idiosincraticos y es mas robusto armar el SOAP a mano.
  • La firma del DTE usa rsa-sha1 porque es el algoritmo exigido por el esquema del SII. No cambiar a sha256 salvo que el SII lo documente.
  • El PDF generado es una representacion simplificada; para produccion se recomienda ajustar el diseno al formato de cedible oficial.

Autor

Hector Riquelme

About

Sistema de facturación electrónica integrado con SII Chile

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages