Blog Arquitectura Neges

Guía definitiva para integrar un ERP multi-tenant con SII Chile y emitir DTE

Una guía simple y completa para pasar de una POC en Postman a una integración segura entre Neges, un adapter DTE y los servicios del SII: semilla, token, firma, envío, TRACKID, estados y operación por tenant.

19 min de lectura

Esta guía explica la arquitectura y el flujo usando como base el repositorio público Neges SII DTE Postman POC. La idea central: integrar facturación electrónica con el SII no es sólo llamar un endpoint; un ERP multi-tenant debe generar XML, firmar documentos, cuidar certificados, administrar CAF y folios, guardar respuestas, mostrar estados claros y separar estrictamente los datos de cada empresa.

Resumen ejecutivo

La forma sana de integrar Neges con el SII es separar responsabilidades: el usuario opera desde el ERP, el backend valida la venta y un adapter DTE se encarga de XML, firma, autenticación, envío y consulta de estados.

El repositorio público de esta guía trae una colección Postman, ambientes con variables placeholder, una guía técnica y diagramas para probar el flujo completo en forma controlada. Es el laboratorio del artículo, no sólo una referencia al final.

Postman sirve para esa POC. Ayuda a entender la secuencia real: pedir semilla, firmarla, pedir token, subir el EnvioDTE firmado, recibir TRACKID y consultar el estado. Pero Postman no debe ser el runtime productivo ni guardar certificados reales.

En producción, el flujo debe vivir en backend. El certificado digital, la contraseña, los CAF, los folios y los XML firmados son materiales sensibles. Si viajan al frontend o quedan como variables Postman, la integración queda frágil desde el primer día.

Repositorio base de la guía

El punto de partida práctico es el repositorio público Neges SII DTE Postman POC. Ahí están la colección Postman, los ambientes de certificación y producción con valores de ejemplo, la propuesta de adapter multi-tenant, la guía técnica y los diagramas Mermaid.

Úsalo para probar el recorrido técnico antes de automatizarlo dentro del ERP. La colección permite observar qué se envía, qué responde el SII y qué datos debe guardar Neges para transformar una prueba manual en una integración backend segura.

Arquitectura base

La arquitectura recomendada tiene cinco piezas: frontend ERP, backend ERP/API, adapter DTE, almacenamiento seguro por tenant y servicios del SII. La venta nace en Neges, pero la emisión tributaria se resuelve en una capa especializada.

Diagrama de arquitectura para integrar un ERP SaaS multi-tenant con SII Chile y emitir DTE
Arquitectura y flujo base: ERP multi-tenant, adapter DTE, storage seguro por empresa y servicios SII para semilla, token, upload y consulta de estado.

Quién hace qué

ActorResponsabilidad simpleQué no debería hacer
Usuario u operadorCrea la venta, revisa datos del cliente y solicita emitir el documento.No firma XML ni manipula certificados.
Frontend ERPMuestra acciones, estados y errores entendibles para el usuario.No guarda tokens SII, CAF, claves ni certificados.
Backend ERP/APIValida permisos, tenant, venta, totales, cliente y reglas internas.No mezcla datos tributarios entre empresas.
Adapter DTEGenera XML, firma, pide token, sube el envío, consulta estados y registra auditoría.No expone secretos ni deja operaciones sin trazabilidad.
Storage por tenantGuarda certificado cifrado, CAF, XML, PDF, TRACKID, estado y logs.No comparte archivos ni rangos de folio entre tenants.
SII ChileEntrega semilla, valida token, recibe el EnvioDTE y responde estados.No corrige datos de negocio del ERP.

Flujo de emisión paso a paso

  1. El usuario crea una venta

    Neges valida cliente, productos, impuestos, totales y tenant activo antes de intentar emitir.

  2. El backend arma la solicitud de emisión

    La venta se transforma en una orden interna para el adapter DTE. Aquí ya debe venir claro el tipo de documento, folio, receptor y montos.

  3. El adapter obtiene datos tributarios del tenant

    Busca razón social, RUT, giro, certificado digital, CAF, rango de folios y ambiente SII: certificación o producción.

  4. Se genera el XML DTE

    El adapter construye el XML con el formato que espera el SII y lo deja trazado como versión preliminar.

  5. Se firma el XML

    La firma ocurre en backend usando el certificado del tenant. Ese certificado no debe salir al navegador.

  6. Se solicita semilla al SII

    El adapter llama a CrSeed para obtener una semilla temporal.

    Tip: La semilla dura poco. El flujo debe firmarla y pedir token inmediatamente.
  7. Se firma la semilla

    El adapter firma la semilla con el certificado del tenant para demostrar identidad ante el SII.

  8. Se solicita token

    El adapter envía la semilla firmada a GetTokenFromSeed y recibe un token para las siguientes llamadas.

  9. Se sube el EnvioDTE firmado

    El XML firmado se envía al endpoint de upload del SII. Si el SII lo recibe, responde un TRACKID.

  10. Se guarda la respuesta

    Neges registra XML, respuesta, TRACKID, estado inicial y evento de auditoría.

  11. Se consulta el estado

    El adapter consulta QueryEstUp y, cuando corresponde, QueryEstDte o QueryEstDteAv para conocer el resultado tributario.

  12. Se entrega el documento al cliente

    Cuando el estado lo permite, Neges genera o vincula el PDF, actualiza la venta y deja el documento disponible para el cliente.

Autenticación SII explicada simple

El SII usa una autenticación en dos pasos: primero entrega una semilla y luego valida que esa semilla vuelva firmada con un certificado digital válido. Si la firma pasa, el SII devuelve un token.

En simple: la semilla es el desafío, la firma es la prueba de identidad y el token es el permiso temporal para enviar o consultar documentos.

Servicios SII que aparecen en la POC

La POC del repositorio público incluye requests Postman para estos puntos del flujo.
UsoServicio o endpointPara qué sirve
SemillaCrSeed.getSeedObtiene el desafío que luego debe firmarse.
TokenGetTokenFromSeed.getTokenEnvía la semilla firmada y obtiene un token temporal.
UploadDTEUploadSube el archivo EnvioDTE ya generado y firmado.
Estado de envíoQueryEstUpConsulta el resultado del envío usando el TRACKID.
Estado del DTEQueryEstDteConsulta un documento específico por emisor, receptor, tipo, folio, fecha y monto.
Estado avanzadoQueryEstDteAvConsulta avanzada cuando el flujo requiere más datos del timbre o TED.

Qué debe guardar Neges por empresa

DatoPor qué importaCuidado operativo
RUT, razón social, giro y direcciónIdentifican al emisor del DTE.Deben coincidir con la información tributaria habilitada.
Certificado digitalPermite firmar semilla y documentos.Debe cifrarse y tener control de vencimiento.
CAF y rangos de foliosAutorizan la numeración de documentos.Requieren locking para no duplicar folios.
Ambiente SIISepara certificación de producción.No mezclar pruebas con emisión real.
XML sin firmar y XML firmadoPermiten auditoría y diagnóstico.Guardar referencias seguras, no archivos sueltos sin control.
TRACKID y respuestas SIIConectan el documento interno con el estado tributario.Guardar respuesta cruda y estado normalizado.
PDF o representación impresaEs lo que ve el cliente final.Debe reflejar el documento emitido, no una venta preliminar.

API interna recomendada para el adapter DTE

Endpoint internoUsoQuién debería llamarlo
/api/dte/healthVerifica que el adapter esté activo.Monitoreo o backend.
/api/dte/tenants/:tenantSlug/configConfigura datos DTE del tenant.Admin autorizado.
/api/dte/sii/seedObtiene semilla desde SII.Backend o flujo técnico.
/api/dte/sii/sign-seedFirma semilla en backend.Sólo adapter.
/api/dte/sii/tokenObtiene token SII.Sólo adapter.
/api/dte/documents/previewGenera XML preliminar sin enviar.Backend ERP para validación.
/api/dte/documents/emitEjecuta emisión completa.Backend ERP después de validar la venta.
/api/dte/documents/:internalDteIdConsulta documento interno y estado.Backend ERP o UI privada.
/api/dte/documents/:internalDteId/refresh-statusConsulta SII y actualiza estado local.Job, cola o acción de soporte.

Estados internos sugeridos

estados-dte.mmdmermaid
El diagrama se renderiza al cargar la pagina.

Cómo mostrar estados sin confundir al usuario

El usuario no necesita ver todos los detalles SOAP. Necesita entender si el documento está listo, esperando respuesta, rechazado o requiere una acción.

  • Borrador: la venta existe, pero aún no se intentó emitir.
  • Firmado: el XML ya está preparado, pero todavía no se confirma recepción SII.
  • Enviado: el SII recibió el archivo y entregó TRACKID.
  • En revisión: falta consultar o recibir estado final.
  • Aceptado: el documento puede entregarse al cliente.
  • Rechazado: hay que corregir datos, folio, firma, formato o condición tributaria.
  • Anulado o referenciado: el documento quedó ligado a una nota de crédito, débito u otro flujo posterior.

Cómo usar el repositorio POC en Postman

  1. Abre o clona el repositorio

    Trabaja desde github.com/tannynogales/neges-sii-dte-postman-poc para tener la colección, ambientes, guía técnica y diagramas en el mismo lugar.

  2. Importa la colección

    Carga postman/Neges-SII-DTE-POC.postman_collection.json en Postman.

  3. Importa un ambiente

    Parte con postman/SII-Certificacion.postman_environment.json. Producción debe quedar para una etapa posterior.

  4. Completa variables demo

    Revisa RUT empresa, RUT firmante, receptor, tipo DTE, folio, fecha, monto y tenant_slug.

  5. Pide semilla

    Ejecuta CrSeed.getSeed y guarda seed_unsigned_xml.

  6. Firma fuera de Postman

    Usa un script controlado o el adapter local. Postman puede orquestar, pero no debe custodiar certificados reales.

  7. Pide token

    Ejecuta GetTokenFromSeed.getToken con la semilla firmada.

  8. Sube un EnvioDTE firmado

    Selecciona el XML final firmado y ejecuta DTEUpload.

  9. Consulta estados

    Usa QueryEstUp con el TRACKID y luego QueryEstDte si necesitas validar el documento específico.

Seguridad mínima antes de producción

La integración DTE tiene riesgo técnico y tributario. Un error puede exponer certificados, duplicar folios, emitir documentos inválidos o mostrar información de una empresa a otra.

  • Validar tenant y permisos en cada emisión, consulta y descarga.
  • Cifrar certificados en reposo y evitar logs con claves o XML sensibles.
  • Usar locks o transacciones al asignar folios.
  • Separar storage por tenant y por ambiente.
  • Guardar request, response y estado normalizado para auditoría.
  • Implementar colas y reintentos para caídas temporales del SII.
  • Alertar certificados vencidos, CAF agotados y rechazos repetidos.
  • Probar primero en certificación y completar el proceso formal antes de producción.

Roadmap recomendado

  1. Fase 0: entender el flujo

    Leer documentación SII, revisar WSDL, preparar datos de prueba y confirmar tipos DTE iniciales.

  2. Fase 1: POC Postman

    Probar semilla, firma, token, upload, TRACKID y consultas sin tocar ventas reales.

  3. Fase 2: adapter mínimo

    Implementar firma segura, generación XML, upload, persistencia de respuestas y estado interno.

  4. Fase 3: integración ERP

    Conectar ventas reales, folios, clientes, PDF, notificaciones y estado visible en la UI.

  5. Fase 4: certificación y producción

    Completar certificación SII, habilitar empresas, monitorear rechazos y preparar soporte operativo.

Checklist antes de decir que la integración está lista

  • Cada tenant tiene configuración tributaria propia.
  • El certificado nunca sale del backend seguro.
  • El CAF y los folios se asignan con control transaccional.
  • El XML se genera, firma y guarda con trazabilidad.
  • El token SII se obtiene desde semilla firmada, no desde valores pegados a mano.
  • El upload guarda TRACKID y respuesta original.
  • Los estados SII se traducen a estados simples para la UI.
  • Los errores quedan accionables para soporte y no sólo como XML crudo.
  • Postman queda como herramienta de diagnóstico, no como dependencia productiva.
  • El repositorio público no contiene certificados, claves, tokens ni XML reales.

Recursos relacionados

¿Te fue útil este contenido?

Tu feedback nos ayuda a mejorar la documentación de Neges.

Soporte humano

¿No encuentras lo que buscas?

Conversa con nuestro equipo de soporte en español. Respondemos por WhatsApp, correo o ticket en menos de 24 horas hábiles.

soporte@neges.clLun a Vie · 9 a 18 hrs
+56 9 0000 0000WhatsApp Business