---
title: "Emisión de DTE"
description: ""
type: "academy"
category: "module"
tags: []
authors: [Anonymous]
date: "2026-08-25"
last_update: "2026-08-25"
time_minutes: 21
draft: false
unlisted: false
url: "https://www.stage.libredte.cl/academy/integracion/emision-dte"
---

# Emisión de DTE




---

## Requisitos

Requisitos para emisión de DTE

# Requisitos para emisión de DTE

Para la integración y emisión de Documentos Tributarios Electrónicos (DTE) se deben de cumplir con los siguientes requisitos:

1. **Tener una cuenta de usuario y registrar una empresa en LibreDTE.**

   Puedes registrarte y solicitar acceso a la prueba del **Servicio Plus** en el siguiente enlace:

   👉 [https://www.libredte.cl/trial](https://www.libredte.cl/trial)

   El período de prueba tiene una duración de 10 días desde el registro y sólo podrás emitir documentos temporales/borradores.

2. **Subir la Firma Electrónica Simple del representante legal.**

   Esta firma es obligatoria para emitir documentos válidos (no requerido en periodo de prueba).

   👉 Puedes cargarla en: [https://libredte.cl/dte/admin/firma_electronicas](https://libredte.cl/dte/admin/firma_electronicas)

3. **Configurar los folios (CAF) en el sistema.**

   Debes crear los mantenedores de folios y subir los archivos CAF autorizados por el SII (no requerido en periodo de prueba).

   👉 Gestiona esto en: [https://libredte.cl/dte/admin/dte_folios](https://libredte.cl/dte/admin/dte_folios)

&gt; [!NOTE] Período de prueba
&gt;
&gt; Al registrar la cuenta tendrás un período de prueba de 10 días, donde sólo podrás realizar pruebas de emisión con documentos temporales/borradores.
&gt;
&gt; Por lo anterior, el punto 2 y 3 sólo son requeridos cuando ya no estés en periodo de pruebas y quieras emitir documentos reales.


    
---

## Flujo general

Flujo general de integración

# Flujo general de integración

Emitir un Documento Tributario Electrónico (DTE) en LibreDTE sigue un proceso estructurado y claro que puedes dividir en tres etapas:

1. Preparación de datos en JSON u otro de los formatos soportados.
2. Consumo de los servicios web enviando los datos preparados.
3. Ejecución del flujo mínimo de emisión.

---

## 1. Preparación de datos

Antes de consumir los servicios web, debes estructurar los datos del DTE que vas a emitir.

- Puedes apoyarte en ejemplos funcionales disponibles en este repositorio:

  [https://github.com/LibreDTE/libredte-lib-core/tree/master/tests/fixtures/yaml/documentos_ok](https://github.com/LibreDTE/libredte-lib-core/tree/master/tests/fixtures/yaml/documentos_ok)

- Otros casos más complejos pueden requerir revisar la documentación oficial del SII para el formato XML.

---

## 2. Consumir los servicios web de LibreDTE

Tienes distintas formas de interactuar con los servicios web de LibreDTE:

- Utilizar alguno de los clientes oficiales de la API disponibles en [nuestro repositorio](https://github.com/LibreDTE?q=api-client).

- Crear tu propio cliente de la API usando una librería HTTP del lenguaje de programación que prefieras. Por ejemplo, [Guzzle](https://github.com/guzzle/guzzle) en PHP o [Requests](https://github.com/psf/requests) en Python.

&gt; [!NOTE] Cliente oficial de PHP
&gt;
&gt; Para este curso, asumimos que vas a construir la integración con el cliente oficial de PHP.

---

## 3. Flujo básico de emisión

El flujo mínimo para emitir un DTE es:

1. Emitir un DTE **temporal**.
2. Generar un DTE **real** a partir del temporal.
3. Obtener el **PDF** del DTE real.
4. Verificar el estado ante el SII.

Estos pasos están explicados en detalle en la siguiente lección.

---

## Diagrama secuencial

A continuación puedes ver el flujo general de emisión representado como secuencia:

![Diagrama secuencial LibreDTE](https://www.libredte.cl/img/content/academy/integracion-con-la-api/guia-de-integracion-para-emision-de-dte/diagrama_secuencial_libredte.jpg)

También puedes revisar el siguiente video donde se explica el flujo con ejemplos reales:

[Ver video Requisitos facturación y características técnicas de LibreDTE](https://youtu.be/hFM7UbQQ9kw?t=32m43s)


    
---

## Normalización

Normalización de DTE

# Normalización de DTE

LibreDTE incluye un proceso de **normalización** de los DTE que permite reducir la cantidad de datos necesarios para emitir un documento, automatizando varios cálculos y estructuras.

## ¿Qué hace la normalización?

El sistema se encarga de:

- Agregar números a descuentos, recargos y referencias si faltan.
- Normalizar el detalle (ítems, descuentos por ítem).
- Aplicar descuentos y recargos globales (y calcular sus montos).
- Calcular IVA y totales si no vienen especificados.
- Aplicar impuestos adicionales y/o retenciones.

&gt; [!IMPORTANT] Importante
&gt;
&gt; Si estás usando la normalización, **no debes enviar los montos ya calculados**, ya que LibreDTE los genera automáticamente.

---

## Ejemplo práctico

Supongamos que envías solo el monto neto. LibreDTE calculará el IVA y total automáticamente si usas `normalizar=1` en la petición, que es la opción por defecto.

Esto simplifica la integración y reduce errores humanos en los cálculos.

---

## ¿Qué DTE se pueden normalizar?

La normalización está oficialmente soportada para los siguientes documentos:

- Factura electrónica
- Factura exenta electrónica
- Nota de débito electrónica
- Nota de crédito electrónica
- Guía de despacho electrónica
- Factura de compra electrónica
- Boleta electrónica
- Boleta exenta electrónica
- Factura de exportación electrónica
- Nota de débito de exportación electrónica
- Nota de crédito de exportación electrónica

&gt; [!BUG] Documentos no soportados
&gt;
&gt; La normalización no está soportada para los siguientes documentos:
&gt;
&gt; - Liquidación de factura electrónica

---

## ¿Y si necesito emitir un DTE no soportado?

Puedes desactivar la normalización con `normalizar=0` y enviar todos los datos completos. Por ejemplo, esto es útil si deseas emitir una **Liquidación de factura electrónica**.

---

## ¿Cómo se aplican los descuentos?

Se aplican siguiendo lo indicado por el SII (página 40 del documento del [formato DTE](https://www.sii.cl/factura_electronica/factura_mercado/formato_dte_202602.pdf)). Se considera el campo `IndExeDR`, que determina si el descuento afecta:


- Solo el neto (por defecto).
- Solo lo exento (`IndExeDR = 1`).
- Solo lo no facturable (`IndExeDR = 2`).

&gt; [!TIP] Descuentos a neto y exento
&gt;
&gt; Si necesitas aplicar descuentos a neto y exento, debes enviar dos descuentos por separado: uno sin `IndExeDR` y otro con `IndExeDR = 1`.

---

## Codificación obligatoria: UTF-8

Todos los datos deben estar codificados en **UTF-8**, tanto para los envíos como para la lectura de respuestas.

&gt; [!BUG] Codificación obligatoria
&gt;
&gt; Si usas ISO-8859-1 tendrás errores en el timbre electrónico del XML.

---

¿Listo para comenzar a emitir DTE? En la siguiente lección abordaremos paso a paso cómo hacerlo con la API.


    
---

## Emisión en 3 pasos

Emisión en 3 pasos

# Emisión en 3 pasos

En esta lección aprenderás cómo emitir un Documento Tributario Electrónico (DTE) paso a paso utilizando la API de LibreDTE. El flujo general consta de 3 pasos obligatorios para crear el DTE:

1. Emitir un DTE **temporal**.
2. Generar el DTE **real** desde el temporal.
3. Obtener el **PDF** del documento.
4. (Opcional) Enviar el DTE por **correo electrónico** o **verificar su estado**.

---

## Paso 1: Emitir un DTE temporal

Este paso permite crear un DTE en estado de borrador o cotización, sin enviarlo aún al SII.

### Endpoint

```http
POST https://libredte.cl/api/dte/documentos/emitir?normalizar=1&amp;formato=json&amp;links=0&amp;email=0
```

### Parámetros disponibles

| Parámetro    | Tipo   | Descripción                                                                |
|--------------|--------|----------------------------------------------------------------------------|
| `normalizar` | int    | `1` para activar la normalización automática de montos (recomendado).      |
| `formato`    | string | Formato de los datos: `json` (por defecto), `xml` o `yaml`.                |
| `links`      | int    | `1` si quieres que se retornen enlaces asociados al documento.             |
| `email`      | int    | `1` si quieres que se envíe el DTE automáticamente por correo electrónico. |

### Ejemplo de JSON para boleta electrónica

```json
{
  &quot;Encabezado&quot;: {
    &quot;IdDoc&quot;: {
      &quot;TipoDTE&quot;: 39
    },
    &quot;Emisor&quot;: {
      &quot;RUTEmisor&quot;: &quot;76123456-9&quot;
    },
    &quot;Receptor&quot;: {
      &quot;RUTRecep&quot;: &quot;11222333-4&quot;,
      &quot;RznSocRecep&quot;: &quot;Juan Pérez&quot;,
      &quot;GiroRecep&quot;: &quot;Informática&quot;,
      &quot;DirRecep&quot;: &quot;Domicilio de Juan 123&quot;,
      &quot;CmnaRecep&quot;: &quot;Santa Cruz&quot;
    }
  },
  &quot;Detalle&quot;: [
    {
      &quot;NmbItem&quot;: &quot;Conectores RJ45&quot;,
      &quot;QtyItem&quot;: 450,
      &quot;PrcItem&quot;: 70
    }
  ]
}
```

&gt; [!NOTE] Totales e IVA
&gt;
&gt; En este ejemplo no se incluyen totales ni IVA. Si tienes activada la opción `normalizar=1`, estos se calcularán automáticamente.

---

## Paso 2: Generar DTE real desde el temporal

Este paso toma el documento temporal creado en el paso anterior y lo convierte en un DTE **real y válido ante el SII**.

### Endpoint

```http
POST https://libredte.cl/api/dte/documentos/generar?getXML=0&amp;links=0&amp;email=0&amp;retry=10&amp;gzip=0
```

### Parámetros disponibles

| Parámetro    | Tipo   | Descripción |
|--------------|--------|-------------|
| `getXML`     | int    | `1` si deseas recibir el XML en la respuesta. |
| `links`      | int    | `1` para incluir enlaces al DTE. |
| `email`      | int    | `1` para enviar el documento por correo. |

### Body esperado

```json
{
  &quot;emisor&quot;: 76123456,
  &quot;receptor&quot;: 66666666,
  &quot;dte&quot;: 39,
  &quot;codigo&quot;: &quot;557ccc1706a77a212354d0f1734fd0adc&quot;
}
```

&gt; [!TIP] Body esperado
&gt;
&gt; Este body corresponde a la respuesta del endpoint de emisión temporal.

---

## Paso 3: Obtener el PDF del DTE

Una vez generado el documento real, puedes obtener su representación visual en PDF.

### Endpoint

```http
GET https://libredte.cl/api/dte/dte_emitidos/pdf/:dte/:folio/:emisor?formato=general&amp;papelContinuo=0
```

### Parámetros importantes

- `formato`: puede ser `estandar`, `general` o `servicios_basicos`.

- `papelContinuo`: define el tipo de hoja:

  - `0`: hoja carta
  - `80`: rollo 80mm
  - `57`: rollo 57mm

La respuesta será el **binario del PDF**.

---

## Agregar datos personalizados

LibreDTE te permite agregar información adicional al DTE que **no se envía al SII**, pero sí aparece en el PDF. Ejemplos:

- Condiciones de pago.
- Gráficos.
- Información interna o personalizada.

### Ejemplo de datos extra

```json
{
  &quot;LibreDTE&quot;: {
    &quot;extra&quot;: {
      &quot;dte&quot;: {
        &quot;Encabezado&quot;: {
          &quot;IdDoc&quot;: {
            &quot;TermPagoGlosa&quot;: &quot;OBSERVACIONES&quot;
          }
        }
      },
      &quot;historial&quot;: {
        &quot;titulo&quot;: &quot;Consumo de Agua Potable&quot;,
        &quot;datos&quot;: {
          &quot;Feb&quot;: 12,
          &quot;Mar&quot;: 11,
          &quot;Abr&quot;: 12,
          &quot;May&quot;: 10.5,
          &quot;Jun&quot;: 4,
          &quot;Jul&quot;: 5
        }
      },
      &quot;servicios_basicos&quot;: {
        &quot;consumos&quot;: {
          &quot;unidad&quot;: &quot;M3&quot;,
          &quot;lectura_actual&quot;: 9,
          &quot;lectura_anterior&quot;: 5.9,
          &quot;consumo_calculado&quot;: 3.1,
          &quot;consumo_facturado&quot;: 3,
          &quot;limite_sobreconsumo&quot;: 40
        }
      }
    }
  }
}
```


    
---

## Ejemplo en PHP

Ejemplo en PHP

# Ejemplo en PHP

En esta lección verás un ejemplo completo de cómo generar un Documento Tributario Electrónico (DTE) utilizando **PHP** y el **cliente oficial de la API de LibreDTE**.

Este ejemplo incluye:

1. Crear el cliente autenticado.
2. Emitir un DTE temporal.
3. Generar el DTE real.
4. Obtener el PDF.
5. Guardar el PDF en disco.

---

## Requisitos previos

Debes tener:

- El paquete `libredte/api-client` instalado (vía Composer).
- Tu `hash` de autenticación y `url` base de la API.
- Los datos del DTE que deseas emitir en un array.

Puedes instalar el cliente con:

```bash
composer require libredte/libredte-api-client
```

---

## Código completo del flujo

```php
&lt;?php

require &#039;vendor/autoload.php&#039;;

use libredte\api_client\ApiClient;

// 1. Crear cliente autenticado.
$hash = &#039;tu_hash_aqui&#039;;
$url = &#039;https://libredte.cl/api&#039;;
$client = new ApiClient($hash, $url);

// 2. Datos del DTE.
$datos_dte = [
    &quot;Encabezado&quot; =&gt; [
        &quot;IdDoc&quot; =&gt; [
            &quot;TipoDTE&quot; =&gt; 33,
        ],
        &quot;Emisor&quot; =&gt; [
            &quot;RUTEmisor&quot; =&gt; &quot;76123456-9&quot;,
        ],
        &quot;Receptor&quot; =&gt; [
            &quot;RUTRecep&quot; =&gt; &quot;11222333-4&quot;,
            &quot;RznSocRecep&quot; =&gt; &quot;Cliente de Prueba&quot;,
            &quot;GiroRecep&quot; =&gt; &quot;Servicios Informáticos&quot;,
            &quot;DirRecep&quot; =&gt; &quot;Calle Falsa 123&quot;,
            &quot;CmnaRecep&quot; =&gt; &quot;Santiago&quot;,
        ],
    ],
    &quot;Detalle&quot; =&gt; [
        [
            &quot;NmbItem&quot; =&gt; &quot;Servicio de desarrollo&quot;,
            &quot;QtyItem&quot; =&gt; 1,
            &quot;PrcItem&quot; =&gt; 100000,
        ],
    ],
];

// 3. Emitir DTE temporal.
$emitir = $client-&gt;post(&#039;/dte/documentos/emitir&#039;, $datos_dte);

// 4. Generar DTE real.
$generar = $client-&gt;post(&#039;/dte/documentos/generar&#039;, $emitir[&#039;body&#039;]);

// 5. Obtener el PDF del DTE real.
$generar_pdf = $client-&gt;get(sprintf(
    &#039;/dte/dte_emitidos/pdf/%d/%d/%d&#039;,
    $generar[&#039;body&#039;][&#039;dte&#039;],
    $generar[&#039;body&#039;][&#039;folio&#039;],
    $generar[&#039;body&#039;][&#039;emisor&#039;]
));

// 6. Guardar el PDF en disco.
file_put_contents(&#039;factura.pdf&#039;, $generar_pdf[&#039;body&#039;]);

echo &quot;Factura generada y guardada como factura.pdf\n&quot;;
```

---

## Consideraciones

- Este ejemplo usa `TipoDTE 33`, que corresponde a **Factura electrónica**.
- Si deseas emitir una **boleta**, cambia el tipo a `39` y recuerda que los montos van brutos en boletas.
- Puedes añadir más campos al DTE, como descuentos, referencias o datos extras (`LibreDTE.extra`).
- Todos los pasos están desacoplados, por lo que puedes manejar errores por separado.


    

---
Last updated on 25/08/2026

