Emisión de DTE
El proceso de emisión
Emitir un DTE no es una sola llamada: es una secuencia de pasos, y cada paso usa el resultado del anterior. Tu sistema dirige el proceso: en cada paso llama a una operación de API Gateway, recibe el resultado y lo guarda antes de seguir con el siguiente. Este es el mapa completo que seguiremos en el módulo Emisión paso a paso. Si prefieres ver todos los pasos juntos en código, revisa Factura de principio a fin y Boleta de principio a fin.
Las etapas y sus recursos
Todas las URL parten en https://app.apigateway.cl. Todos los DTE siguen los mismos pasos, incluidas las boletas; solo cambian las operaciones del envío y de la consulta del estado, porque el SII recibe las boletas por un servicio propio.
| Paso | ¿Es obligatorio? | Qué ocurre | Recurso |
|---|---|---|---|
| 1. Construir | Obligatorio | Tu sistema arma un JSON con el emisor, el receptor, los productos y el folio. La API completa los datos que faltan, calcula los totales, timbra con el CAF y firma con el certificado. Entrega el XML del DTE. | POST /api/v2/libredte/billing/document/builder/build |
| 2. Validar | Opcional | Revisa que el XML cumpla el esquema del SII y que sus datos sean coherentes, antes de enviarlo. Recomendado mientras desarrollas. | POST /api/v2/libredte/billing/document/validator/validateSchema |
| 3. Sobre | Obligatorio | Envuelve uno o más documentos en un sobre firmado, con la resolución del emisor: un EnvioBOLETA para las boletas o un EnvioDTE para los demás documentos. |
POST /api/v2/libredte/billing/document/dispatcher/create |
| 4. Enviar | Obligatorio | Sube el sobre al SII. El SII responde con un Track ID. | Facturas, notas y guías: POST /api/v2/libredte/billing/integration/sii_dte/sendXmlDocumentBoletas: POST /api/v2/libredte/billing/integration/sii_boleta/sendXmlDocument |
| 5. Estado | Obligatorio | Con el Track ID, consulta si el SII aceptó o rechazó cada documento. | Facturas, notas y guías: POST /api/v2/libredte/billing/integration/sii_dte/checkXmlDocumentSentStatusBoletas: POST /api/v2/libredte/billing/integration/sii_boleta/checkXmlDocumentSentStatus |
| 6. PDF | Opcional | Genera la representación impresa (con el timbre como código de barras). Es el documento que normalmente se entrega al cliente. | POST /api/v2/libredte/billing/document/renderer/render |
Y para obtener los folios, antes de todo:
| Qué | Recurso |
|---|---|
| Solicitar folios (CAF) al SII | POST /api/v2/sii/dte/caf/solicitar/{emisor}/{dte}/{cantidad} |
| Revisar un CAF | POST /api/v2/libredte/billing/identifier/caf_loader/load |
Lo que hace cada parte
| Responsabilidad | Quién la tiene |
|---|---|
| Decidir qué documento emitir y con qué datos | Tu sistema |
| Asignar el folio y no repetirlo nunca | Tu sistema |
| Calcular IVA y totales | API Gateway |
| Timbrar y firmar | API Gateway |
| Enviar al SII y consultar el estado | API Gateway, cuando tu sistema lo llama |
| Guardar el XML, el Track ID y el estado | Tu sistema |
| Generar el PDF | API Gateway |
| Entregar el documento al receptor: el PDF y, si es una empresa que emite documentos electrónicos, el XML a su correo de intercambio | Tu sistema |
| Reintentar si algo falla | Tu sistema |
Porque en la práctica cada paso puede fallar por razones distintas, y tu sistema necesita saber en cuál quedó cada documento. Si el SII está caído, por ejemplo, el documento ya está construido y firmado: solo falta reintentar el envío. Si lo tuvieras todo en una sola llamada, no sabrías qué repetir.
Los estados de un documento en tu sistema
Te recomendamos guardar un estado por documento, así sabes siempre qué falta:
Un documento rechazado no tiene validez: el SII lo considera no emitido. Hay que corregir los datos y emitirlo de nuevo, con el mismo folio. Lo vemos en detalle en Consultar el estado.