馃摛 Subiendo un DTE al SII desde Bash usando curl


Cuando trabajamos con facturaci贸n electr贸nica en Chile, uno de los pasos clave es la carga del documento tributario electr贸nico (DTE) al sistema del Servicio de Impuestos Internos (SII). Aunque muchos desarrolladores usan bibliotecas en Java, Python o Ruby, tambi茅n es posible realizar esta operaci贸n directamente desde un script Bash usando curl.


馃懘 Ideal para entornos legacy

Este enfoque es especialmente 煤til para desarrolladores que usan tecnolog铆as antiguas como:

  • Visual Basic 6.0

  • FoxPro

  • Delphi

  • Aplicaciones heredadas que no cuentan con librer铆as modernas para HTTP o multipart/form-data

Estas plataformas pueden delegar la carga del DTE a un script externo en Bash, o llamar al comando curl desde l铆nea de comandos, facilitando la integraci贸n sin tener que portar toda la l贸gica de comunicaci贸n.

A continuaci贸n, te muestro c贸mo hacerlo paso a paso:

馃洜️ Script Bash para subir un DTE


#!/bin/bash

TOKEN="F4SZQLTL09LUH"                  # Token entregado por el SII
ARCHIVO="DTE1331.xml"                  # Archivo XML firmado
RUTCOMPANY="76659268"                  # RUT de la empresa emisora (sin guion)
DVCOMPANY="6"                          # D铆gito verificador de la empresa
RUTSENDER="13968481"                   # RUT del usuario que env铆a (sin guion)
DVSENDER="8"                           # D铆gito verificador del usuario

curl -v -X POST "https://maullin.sii.cl/cgi_dte/UPL/DTEUpload" \
  -H "Accept: */*" \
  -H "Accept-Language: es-cl" \
  -H "Accept-Encoding: gzip, deflate" \
  -H "User-Agent: Mozilla/4.0 (compatible; PROG 1.0; Windows NT 5.0; YComp 5.0.2.4)" \
  -H "Connection: Keep-Alive" \
  -H "Cache-Control: no-cache" \
  -b "TOKEN=$TOKEN" \
  --form-string "rutCompany=$RUTCOMPANY" \
  --form-string "dvCompany=$DVCOMPANY" \
  --form-string "rutSender=$RUTSENDER" \
  --form-string "dvSender=$DVSENDER" \
  -F "archivo=@$ARCHIVO"

 

 Detalles importantes

  • El par谩metro -b "TOKEN=$TOKEN" indica la cookie de sesi贸n, que debe haberse obtenido previamente desde una autenticaci贸n previa.

  • Se utiliza --form-string para los campos de texto, y -F para subir el archivo como multipart/form-data.

  • El User-Agent est谩 configurado para simular un navegador antiguo, ya que es un requisito com煤n del SII en sus endpoints legacy.

  • El endpoint utilizado es https://maullin.sii.cl/cgi_dte/UPL/DTEUpload, dedicado al upload de documentos tributarios.

✅ Resultado

Si todo est谩 correcto, recibir谩s una respuesta XML desde el SII indicando si la carga fue exitosa o si hubo errores.


馃殌 Conclusi贸n

Este enfoque con curl es ideal para tareas automatizadas, scripts cron, pruebas o integraciones r谩pidas sin necesidad de implementar un cliente completo. Es una herramienta poderosa cuando sabes exactamente qu茅 est谩s haciendo y tienes bien configurado tu archivo DTE firmado.

¿Te gustar铆a que te muestre tambi茅n c贸mo obtener el token o validar la respuesta del SII desde Bash? D茅jalo en los comentarios. 馃憞

Comentarios

Entradas populares de este blog

Creaci贸n de un DTE de boleta electr贸nica usando AppDTE Api:

Gu铆a de Consulta de DTE

¡Nuevo Entorno de Pruebas Disponible para AppDTE API!