Emitir un DTE
El proceso tiene dos pasos: emitir (genera el XML firmado) y enviar (lo manda al SII).El servidor calcula los montos.
montoTotal y montoItem son opcionales: si los
mandás, se usan como confirmación y la API devuelve 400 si no coinciden con lo
calculado — sin consumir folio. Un folio gastado no se recupera, y reenviar con el
mismo folio es rechazo por folio duplicado.Paso 1: Emitir
Paso 2: Enviar al SII
Puedes enviar uno o varios DTEs en un mismo sobre:Receptor
Detalle
Cada ítem del detalle:Referencias (notas de crédito/débito)
Para notas de crédito o débito, incluye el camporeferencias:
Estados del DTE
Descargar XML
Boletas: los precios incluyen IVA
En una boleta el precio que ve el cliente ya trae el IVA adentro. Para eso estápreciosConIva:
29.800, lo que el cliente pagó, y el servidor
desagrega MontoNeto: 25042 e IVA: 4758.
Una boleta puede no tener receptor
Las boletas (39, 41) van a consumidor final, que no se identifica:receptor es opcional
para ellas. Para cualquier otro tipo es obligatorio, y la base lo garantiza con un CHECK.
Descuentos
Por línea y globales, en pesos o en porcentaje. Los dos niveles existen por separado en el XML porque el SII exige que aparezcan en la representación impresa.Notas de crédito y débito
Se emiten con su propio endpoint, que deriva los datos del documento original:
Para corregir el receptor sin tocar montos, se manda
receptor con solo los campos a
cambiar: el resto se copia del original.
Fechas
fechaEmision es opcional y por default es hoy en hora de Chile (America/Santiago),
no UTC. Entre las 21:00 y la medianoche locales las dos fechas difieren, y un DTE con fecha
futura es un reparo del SII.
Un error de montos no se rechaza: se acepta con reparos
Esto es lo más importante de esta guía. El SII no rechaza un documento cuyos montos están mal calculados: lo acepta con reparos, y el documento queda con validez legal y tributaria completa. Corregirlo después exige emitir una nota de crédito o débito concodigoRef: 3, y reenviar
el documento corregido consume un folio nuevo (el mismo folio es rechazo por duplicado).
Por eso esta API valida los montos antes de consumir el folio y devuelve 400 en vez de
corregir en silencio: es la única forma de que el error salga barato.
