---
title: "Integración"
description: "Integración con un software externo"
type: "docs"
category: "doc"
tags: []
authors: [Anonymous]
date: "2024-03-08"
last_update: "2026-08-25"
time_minutes: 1
draft: false
unlisted: false
url: "https://www.stage.libredte.cl/docs/integracion"
---

# Integración con un software externo



---

## API

Integración directa con la API

# Integración directa con la API




---

### ¿Los montos se envían netos o brutos por API?

Cómo enviar los montos al emitir por API

# ¿Cómo enviar los montos al emitir por API?

Esto dependerá del tipo de documento que emitas:

Para **boletas**, los montos son considerados como **brutos** por defecto.

Si deseas que se consideren como montos netos debes indicar el siguiente campo en el encabezado del documento:

```json
&quot;IndMntNeto&quot;: 2
```

Por ejemplo:

```json
{
    &quot;Encabezado&quot;: {
        &quot;IdDoc&quot;: {
            &quot;TipoDTE&quot;: 39,
            &quot;IndMntNeto&quot;: 2
        },
```


Documentación oficial del SII con el formato para boletas (pagina 8) https://www.sii.cl/factura_electronica/factura_mercado/formato_boletas_elec_202306.pdf

---

Para **facturas y otros DTEs**, los montos son considerados como **netos** por defecto.

Si deseas que se consideren como motos brutos debe indicar el campo en el encabezado del documento:

```json
&quot;MntBruto &quot;: 1
```

Por ejemplo:

```json
{
    &quot;Encabezado&quot;: {
        &quot;IdDoc&quot;: {
            &quot;TipoDTE&quot;: 33,
            &quot;MntBruto&quot;: 1
        },
```

Documentación oficial del SII con el formato para facturas y otros DTE (pagina 13) https://www.sii.cl/factura_electronica/factura_mercado/formato_dte_202602.pdf




---

### Integración con el cliente de LibreDTE

Integra tu sistema con LibreDTE usando XML y el cliente oficial.

# Integración con el cliente de LibreDTE

1. Bajar e instalar [el cliente de escritorio de LibreDTE](https://github.com/LibreDTE/libredte-cliente).
2. Agregar a la configuración del cliente, en el archivo  archivo `config.yml`, el `hash` de su usuario, que obtiene en [su perfil](https://libredte.cl/usuarios/perfil).
3. Poder crear un archivo XML con su programa con la estructura del documento, se adjunta un XML de ejemplo con los datos para una boleta.
4. Ejecutar desde su programa el cliente, esto puede hacerlo de la siguiente forma (es un ejemplo, en el enlace del punto a encontrará más ejemplos):

```shell
libredte-cliente.py dte_generar --xml=dte.xml --dir=resultado --encoding=ISO-8859-1
```

Esto enviará el XML a la aplicación de [libredte.cl](https://libredte.cl) y dejará en la carpeta `resultado` varios archivos:

* `temporal.json` respuesta del servicio web que crea el DTE temporal.
* `emitido.json` respuesta del servicio web que crea el DTE real (sin el XML) e incluye el track_id si el DTE fue enviado al SII.
* `emitido.csv` mismos datos que emitido.json, pero en un archivo plano separado por punto y coma.
* `emitido.xml` archivo XML del documento real (solo si se pasó la opción --getXML al comando).
* `emitido.pdf` archivo PDF del documento real, con copia cedible por defecto.

Estos archivos son la respuesta del servicio web de LibreDTE consumido a través del cliente de escritorio.

&gt; [!HINT] Configuración del cliente
&gt;
&gt; Revisa la configuración completa del cliente en el [README del repositorio](https://github.com/LibreDTE/libredte-cliente?tab=readme-ov-file#c%C3%B3mo-ejecuto-el-cliente).




---

### Generación de XML desde un JSON

Convertir datos JSON a XML para documentos SII.

# Generación de XML desde un JSON

La generación de los XML en LibreDTE se hace directamente a partir de los datos de un arreglo en PHP, este arreglo a su vez puede ser generado a partir de los datos en formato JSON. Esta es la razón por la cual los ejemplos de LibreDTE, en su mayoría, son entregados en formato JSON. Y es la razón por la cual el formato estándar y por defecto para las integraciones mediante servicios web son con datos en JSON.

La conversión es directa desde el JSON al XML, es decir, se toma cada atributo el objeto JSON y se convierte a un tag en el XML. Esto tiene dos ventajas:

1. Hace muy simple la creación de los XML, ya que solo se deben crear JSON, que son archivos con un formato mucho más simple de manejar (a nivel de índices, objetos, etc).
2. El formato que se usa en los JSON es exactamente el mismo que se utiliza en los formatos de XML del SII.

El punto 2 implica que si quiero saber cómo agregar un campo X en el JSON, solo se debe ir a la documentación de los XML del SII y buscar el nombre y ubicación de dicho campo. Esto es lo que hace que LibreDTE sea posible.

Haz clic [aquí](https://www.youtube.com/watch?v=hFM7UbQQ9kw&amp;t=2055s) para ver la explicación de las alternativas que se analizaron para crear los XML y una explicación más detallada de lo que se explica acá.

## Ejemplos

El siguiente ejemplo muestra el resultado de convertir un objeto JSON a un XML usando LibreDTE:

```json
{
    &quot;root&quot;: {
        &quot;nodo1&quot;: &quot;A&quot;,
        &quot;nodo2&quot;: &quot;B&quot;
    }
}
```

![Resultado de convertir un objeto JSON a un XML](https://www.libredte.cl/img/content/docs/integracion/api/generacion-de-xml-desde-un-json/generacion-de-xml-desde-un-json-1.png)

Las listas son tratadas de forma especial, en este caso se repite el tag del índice de la lista:

```json
{
    &quot;raiz&quot;: {
        &quot;telefono&quot;: [123, 456]
    }
}
```

![Tag](https://www.libredte.cl/img/content/docs/integracion/api/generacion-de-xml-desde-un-json/generacion-de-xml-desde-un-json-2.png)




---

### Integrar aplicación propia con LibreDTE

Cómo integrar tu app con LibreDTE vía servicios.

# Integrar aplicación propia con LibreDTE

Para poder realizar la integración con los servicios web de [www.libredte.cl](https://www.libredte.cl) es necesario una cuenta con acceso a los servicios web, por ejemplo con el Servicio Plus. Teniendo esta cuenta, se utiliza el hash del usuario o API key, que están disponibles en el [perfil del usuario](https://libredte.cl/usuarios/perfil).

Los servicios web utilizan una estructura basada en REST, con solicitudes y respuestas en JSON. Toda la documentación está en [este enlace](https://www.libredte.cl/docs/api).

Dentro de la documentación oficial encontrará:
* Documentación de endpoints.
* Parámetros a pasar.
* Ejemplos de cuerpos de solicitudes.
* SDKs en diferentes lenguajes con código ya listo.
* Y más detalles sobre la integración.

Si su lenguaje no permite consumir servicios web o bien resulta muy complicado hacerlo puede utilizar nuestro [cliente de escritorio](https://github.com/LibreDTE/libredte-cliente) que funciona como un intermediario entre su aplicación y [www.libredte.cl](https://www.libredte.cl).




---

### Emisión de DTE con envío asíncrono al SII

Emite DTE sin enviar al SII y envíalo luego de forma asíncrona.

# Emisión de DTE con envío asíncrono al SII

Si desea evitar el envío del XML de un documento al SII para mejorar el tiempo de respuesta de la creación o bien realizar el envío después en caso de que haya existido algún problema con el SII, puede emitir el DTE con envío asíncrono. Realizar esto implica lo siguiente:

* Generar el DTE real sin enviarlo al SII.

* Enviar DTE real al SII posterior a la generación.

Para poder realizar lo indicado anteriormente debe realizar los siguientes pasos:

## Generar el DTE real sin enviarlo al SII

Para emitir el DTE real sin enviar XML al SII debe utilizar el recurso de &quot;[Generar DTE real](https://www.libredte.cl/docs/api#/Emisi%C3%B3n%20de%20un%20DTE/generarDteReal)&quot;, desactivando el envío del XML usando el parametro `retry=0`.

![retry=0](https://www.libredte.cl/img/content/docs/integracion/api/emision-de-un-dte-con-envio-asincrono-al-sii/emision-de-un-dte-con-envio-asincrono-al-sii-1.png)

## Enviar DTE real al SII posterior a la generación

Luego una vez que desee enviar el XML al SII después de tener el DTE real creado en LibreDTE debe utilizar el recurso &quot;[Enviar un DTE emitido al SII](https://www.libredte.cl/docs/api#/Documentos%20Emitidos%20(aka%3A%20reales)/enviarUnDteEmitidoAlSii)&quot;.

Esto permitirá enviar al SII el DTE que ha sido generado, pero que por el paso realizado anteriormente no fue enviado al SII.

### Diagrama de secuencia para el envío asíncrono de un DTE:

![Diagrama de secuencia](https://www.libredte.cl/img/content/docs/integracion/api/emision-de-un-dte-con-envio-asincrono-al-sii/emision-de-un-dte-con-envio-asincrono-al-sii-2.png)




---

### Emití un documento exento pero se genera uno afecto, o viceversa

DTE cambia según IndExe.

# Emití un documento exento pero se genera uno afecto, o viceversa

LibreDTE intenta minimizar los errores que los usuarios o desarrolladores puedan cometer. Por esta razón, realiza ajustes en función de los datos que se le proporcionan para construir los Documentos Tributarios Electrónicos (DTE). En este caso, dichos ajustes están ocurriendo debido a una razón específica por la cual el tipo de documento se modifica y no se genera el solicitado, aunque el servicio web esté funcionando correctamente.

La versión breve es la siguiente para generar un documento:

* **Exento:** todos los ítems deben estar marcados con el indicador IndExe.
* **Afecto:** debe haber al menos un ítem sin el indicador IndExe.

Si se intenta generar un documento exento, LibreDTE espera que todos los ítems vengan con el indicador IndExe (normalmente con valor 1). Si al menos un ítem no tiene ese indicador, el ítem se considerará afecto y, por lo tanto, la factura se cambiará automáticamente de exenta a afecta. En resumen, cada ítem exento debe estar marcado como tal (como lo solicita el SII y se indica en su documentación). Si hay al menos un ítem no exento (afecto), LibreDTE corregirá esto cambiando el tipo de documento; por eso, a pesar de seleccionar el tipo 34, se generará un tipo 33. En cambio, si se solicita emitir una factura afecta donde todos los ítems tienen el indicador IndExe, LibreDTE cambiará automáticamente el tipo de documento a factura exenta.

La descripción del campo IndExe se encuentra en la documentación oficial del formato de DTE del SII y su ubicación es dentro del ítem:

![campo IndExe](https://www.libredte.cl/img/content/docs/integracion/api/emiti-un-documento-exento-pero-se-genera-uno-afecto-o-viceversa/emiti-un-documento-exento-pero-se-genera-uno-afecto-o-viceversa.png)

Para las boletas, la explicación es análoga. En el caso de generar boletas, es esencial seguir las especificaciones y requerimientos establecidos en la documentación oficial del formato de DTE del SII. Al igual que con las facturas, la gestión adecuada del campo IndExe dentro de cada ítem de la boleta es crucial para garantizar la correcta clasificación entre exento y afecto, según las normativas del Servicio de Impuestos Internos.




---

### Integración desde un lenguaje que no consume servicios web

Integra LibreDTE con lenguajes sin soporte web usando middleware.

# Integración desde un lenguaje que no consume servicios web

La integración con la aplicación web de LibreDTE se hace consumiendo los servicios web de [www.libredte.cl](https://www.libredte.cl). Estos servicios web tienen una documentación en [este enlace](https://www.libredte.cl/docs/api) y en general, cualquier lenguaje que permita la conexión a servicios web de manera “fácil” debería usar siempre este método.

Sin embargo, hay lenguajes, como Clipper, donde el consumo de servicios web es muy difícil, o imposible. Uno podría pensar que en estos casos no es posible consumir los servicios web, pero si es posible.

Para estos casos la alternativa es usar un programa intermediario, un [middleware](https://es.wikipedia.org/wiki/Middleware), entre su sistema y LibreDTE. Este programa lo puede generar cada integrador en un lenguaje que si permita conexión a servicios web o bien se puede usar nuestro cliente de escritorio, es una buena idea usar el cliente nuestro porque ya está listo. Sin embargo, tendrá limitaciones en cuánto a qué podrá consumir desde los servicios web de LibreDTE.

MIDDLEWARE: mayo 2015.

El middleware permite unir su sistema con LibreDTE.

El cliente de escritorio de LibreDTE es un programa escrito en Python que se ejecuta en el computador donde está el sistema que se desea conectar. De tal forma que cuando el sistema desea generar un DTE, o cualquier otra comunicación con LibreDTE, se comunica con el middleware y este a su vez se comunicará con los servicios web de LibreDTE.

1. Lo **primero** es instalar este cliente, para esto las instrucciones están detalladas en [este enlace.](https://github.com/LibreDTE/libredte-cliente) Es importante seguir la guía paso a paso, sin saltarlos, ya que todos son importantes.

2. Una vez se tiene el cliente de escritorio instalado, lo **segundo** es definir el formato de los datos que se enviarán. Para esto hay 2 alternativas:

    * **Formato oficial en JSON, XML o YAML:** son los formatos oficiales de LibreDTE que tienen como principal ventaja usar la misma estructura de los archivos del SII. Por esta razón es muy recomendado usarlos, ya que usan la misma documentación del SII para facturas y boletas. A estos formatos podemos dar soporte, ya que los conocemos y son los que usamos nosotros.

    * **Formatos no oficiales:** LibreDTE permite el uso de formatos de otros proveedores, por ejemplo, algunos clientes usan el formato de Acepta. Sin embargo, en este caso no podemos dar el soporte, solo entregar la documentación, ya que no es un formato oficial de LibreDTE.

![Puzzle representando Middleware](https://www.libredte.cl/img/content/docs/integracion/api/integracion-desde-un-lenguaje-que-no-consume-servicios-web/integracion-desde-un-lenguaje-que-no-consume-servicios-web-1.png)

Ejemplo de boleta en formato YAML

Una nota muy importante para el formato YAML, los espacios son muy importantes, ya que esos definen la anidación. Por lo cual, si se usa ese formato, se debe respetar la indentación. [Acá hay detalles sobre YAML](https://es.wikipedia.org/wiki/YAML).

3. **Tercero**, qué modo usará para procesar los archivos, hay 2 alternativas:

    * **Llamar al cliente** desde el sistema que se está conectando. Esto se puede hacer con una llamada a “system”, “exec”, “run” o similar, según el lenguaje usado. En este caso se usa el comando dte_generar del cliente de LibreDTE. Tiene como ventaja que es el sistema el que inicia la ejecución del comando y entrega más control.

    * **Usar el modo monitor**, con el comando monitor. Este modo escaneará una carpeta y cuando detecte un archivo lo tomará y lo procesará. Requiere menos intervención al sistema, pero requiere tener el cliente funcionando siempre “escuchando” nuevos archivos. En general, no se aconseja esta forma, solo si no es posible usar la anterior.

4. **Cuarto**, listo. Si, esto es todo. Una vez que se tienen esos 3 pasos, la integración está completa.




---

## Webhook

Integración mediante Webhook

# Integración mediante Webhook




---

### Notificaciones de Pago

Envío de notificación al recibir un pago

# Recibir notificaciones de pagos de tus clientes

Puedes configurar un **servicio web** propio para recibir notificaciones automáticas cuando tus clientes realicen pagos en la plataforma de LibreDTE.

## ¿Cómo funciona?

Cuando se registra un pago, LibreDTE realiza una solicitud **HTTP POST** a la URL que definas. El cuerpo de la solicitud contiene un **JSON** con los datos del pago.

Ejemplo de URL de tu servicio:

```
https://example.com/api/pagos/notificar
```


Ejemplo de payload recibido:

```json
{
  &quot;emisor&quot;: 76192083,
  &quot;codigo&quot;: &quot;aWRfcGFnbwo=&quot;,
  &quot;receptor&quot;: 11222333,
  &quot;fecha&quot;: &quot;2020-04-01&quot;,
  &quot;pagado&quot;: &quot;2020-04-21&quot;,
  &quot;medio&quot;: &quot;webpay&quot;,
  &quot;datos&quot;: null
}
```

## Campos incluidos

| Campo     | Descripción                                             |
|-----------|---------------------------------------------------------|
| `emisor`  | RUT del emisor del cobro (sin dígito verificador)       |
| `codigo`  | Código único del cobro (útil para validación posterior) |
| `receptor`| RUT del receptor del cobro (sin DV)                     |
| `fecha`   | Fecha de emisión del cobro                              |
| `pagado`  | Fecha en que se realizó el pago                         |
| `medio`   | Medio de pago utilizado (ej. `webpay`)                  |
| `datos`   | Información adicional del medio de pago (opcional)      |

## Validación del cobro

&gt; [!WARNING] No confíes solo en la notificación
&gt;
&gt; Siempre debes validar el pago consultando directamente a LibreDTE usando el **código del cobro**.
&gt; Esto garantiza que la notificación sea auténtica y evita errores o fraudes.

## Ejemplo práctico

El siguiente código incluye cómo recibir el JSON, procesarlo y consultar a LibreDTE para verificar el estado del cobro.

```php
/**
 * Ejemplo básico de servicio web para recibir una notificación de pago
 * desde LibreDTE.
 */

// Se utiliza el API Client de LibreDTE, instalar dependencia con:
//   composer require libredte/libredte-api-client
use libredte\api_client\ApiClient;
use libredte\api_client\ApiException;

// Configuración de autenticación.
$emisor = 76192083; // RUT sin puntos ni DV.
$hash = &#039;&#039;;         // Se obtiene en el perfil del usuario.
$user = &#039;&#039;;         // Lo defines al configurar el webhook en LibreDTE.
$pass = &#039;&#039;;         // Lo defines al configurar el webhook en LibreDTE.

// Verificar si la consulta tiene las credenciales válidas.
if (!auth_check($user, $pass)) {
    throw new ApiException(
        &#039;Usuario no autenticado o credenciales incorrectas.&#039;
    );
}

// Recibir datos del servicio web y extraer EnvioDTE o EnvioBOLETA.
$payload = json_decode(file_get_contents(&#039;php://input&#039;), true);
if (!$payload) {
    throw new ApiException(&#039;No se recibieron datos del cobro.&#039;);
}

// Verificar que el cobro efectivamente esté pagado.
$libredte = new ApiClient($hash);
$resource = sprintf(
    &#039;/pagos/cobros/info/%s/%d&#039;,
    $payload[&#039;codigo&#039;] ?? throw new ApiException(
        &#039;No se recibió el código del cobro que fue pagado.&#039;
    ),
    $emisor
);
$response = $libredte-&gt;get($resource);
if (($response[&#039;status&#039;][&#039;code&#039;] ?? null) !== 200) {
    throw new ApiException((sprintf(
        &#039;Error al realizar la consulta del cobro: %s&#039;,
        $response[&#039;body&#039;]
    ));
}
$cobro = (object) $response[&#039;body&#039;];

// Revisar si el cobro está pagado realmente. Esto asegura que está
// pagado, ya que se consultó a LibreDTE previamente por el estado.
if ($cobro-&gt;pagado) {
    cobro_pagado($cobro);
}

// Función que verifica las credenciales utilizando HTTP Auth Basic.
function auth_check(string $user, string $pass): bool
{
    // Error si no se definen las credenciales en la configuración.
    if (empty($user) || empty($pass)) {
        return false;
    }

    // Obtener cabecera de HTTP Auth Basic.
    $headers = apache_request_headers();
    if (empty($headers[&#039;Authorization&#039;])) {
        return false;
    }

    // Validar credenciales.
    [$basic, $Authorization] = explode(&#039; &#039;, $headers[&#039;Authorization&#039;]);
    [$u, $p] = explode(&#039;:&#039;, base64_decode($Authorization));
    $status = $u === $user &amp;&amp; $p === $pass;

    return $status;
}

// Función para hacer lo que se requiera con el cobro pagado.
function cobro_pagado(object $cobro): mixed
{
    print_r($cobro);
}
```

&gt; [!TIP]
&gt;
&gt; Puedes usar este sistema para automatizar acciones como activar servicios, enviar correos o generar documentos tras el pago.




---

### Obtener ítems desde tu aplicación

Productos y servicios desde API externa

# Obtener ítems desde tu aplicación

Puedes integrar tu sistema con LibreDTE para que la plataforma consulte automáticamente los datos de un ítem desde tu servicio web.

## Requisitos del endpoint

Debes exponer un recurso `GET` que permita obtener la información del ítem a partir de su código.

Ejemplos de URL válidas:

- `https://example.com/items/CODIGO`
- `https://example.com/items?codigo=CODIGO`

## Formato de respuesta

Tu servicio debe devolver un objeto JSON con los datos del ítem, utilizando la siguiente estructura:

```json
{
  &quot;TpoCodigo&quot;: &quot;INT1&quot;,
  &quot;VlrCodigo&quot;: &quot;dte-cert&quot;,
  &quot;NmbItem&quot;: &quot;Asesoría DTE&quot;,
  &quot;DscItem&quot;: &quot;Certificación DTE&quot;,
  &quot;IndExe&quot;: 1,
  &quot;UnmdItem&quot;: &quot;&quot;,
  &quot;PrcItem&quot;: 125000,
  &quot;ValorDR&quot;: 0,
  &quot;TpoValor&quot;: &quot;%&quot;,
  &quot;CodImpAdic&quot;: null
}
```

## Campos esperados

| Campo        | Descripción                                         |
|--------------|-----------------------------------------------------|
| `TpoCodigo`  | Tipo de código (ej: `INT1` para interno)            |
| `VlrCodigo`  | Valor del código (ej: SKU o identificador)          |
| `NmbItem`    | Nombre del ítem                                     |
| `DscItem`    | Descripción del ítem                                |
| `IndExe`     | Indicador de exención (`1` si está exento)          |
| `UnmdItem`   | Unidad de medida (puede estar vacío)                |
| `PrcItem`    | Precio unitario del ítem                            |
| `ValorDR`    | Valor de descuento o recargo (si aplica)            |
| `TpoValor`   | Tipo de valor (`%` o monto fijo)                    |
| `CodImpAdic` | Código de impuesto adicional (si corresponde)       |

&gt; [!CHECK] DRY: Don&#039;t Repeat Yourself
&gt;
&gt; Este mecanismo permite mantener la información de ítems sincronizada entre tu sistema y LibreDTE sin necesidad de cargas manuales.




---

### Respuesta a DTE recibidos

Generar una respuesta automática

# Responder automáticamente DTE recibidos

LibreDTE permite automatizar la recepción o reclamo de documentos electrónicos (DTE) que llegan por intercambio, mediante un **servicio web propio**.

Este sistema permite automatizar gran parte del flujo de intercambio, mejorando tiempos de respuesta y reduciendo errores manuales.

## ¿Cómo funciona?

Debes crear un endpoint HTTP que reciba solicitudes `POST`. LibreDTE enviará en el cuerpo un JSON que contiene el archivo `EnvioDTE` codificado en base64.

### Ejemplo de endpoint

```
https://example.com/api/intercambios/procesar
```


### Ejemplo de payload recibido

```json
{
  &quot;xml&quot;: &quot;aWRfcGFnbwo=&quot;
}
```

---

## Tipos de respuesta esperada

Tu servicio debe responder con JSON. Hay múltiples opciones dependiendo del comportamiento deseado:

### 1. Recibir todos los documentos (estado **ERM**)

```json
true
```

### 2. Reclamar todos los documentos (estado **RCD**)

```json
false
```

### 3. No procesar (deja el intercambio sin respuesta automática)

```json
null
```

### 4. Procesar por documento (recibir y reclamar según DTE)

```json
{
  &quot;recibir&quot;: [
    {
      &quot;TipoDTE&quot;: 33,
      &quot;Folio&quot;: 1
    }
  ],
  &quot;reclamar&quot;: [
    {
      &quot;TipoDTE&quot;: 33,
      &quot;Folio&quot;: 2
    }
  ]
}
```

### 5. Procesar con detalles adicionales por documento

```json
[
  {
    &quot;TipoDTE&quot;: 31,
    &quot;Folio&quot;: 1,
    &quot;EstadoRecepDTE&quot;: &quot;ERM&quot;,
    &quot;RecepDTEGlosa&quot;: &quot;Otorga recibo de mercaderías o servicios&quot;
  },
  {
    &quot;TipoDTE&quot;: 31,
    &quot;Folio&quot;: 2,
    &quot;EstadoRecepDTE&quot;: &quot;RCD&quot;,
    &quot;RecepDTEGlosa&quot;: &quot;Reclamo al contenido del documento&quot;
  }
]
```

&gt; [!INFO]
&gt;
&gt; Solo `TipoDTE` y `Folio` son obligatorios. Sin embargo, se recomienda incluir `RUTEmisor`, `EstadoRecepDTE` y `RecepDTEGlosa` si hay más de un DTE.

---

## Configuración general opcional

También puedes incluir un bloque `config` con información adicional:

```json
{
  &quot;accion&quot;: true,
  &quot;config&quot;: {
    &quot;NmbContacto&quot;: &quot;Esteban&quot;,
    &quot;MailContacto&quot;: &quot;usuario@empresa.cl&quot;,
    &quot;sucursal&quot;: 0,
    &quot;Recinto&quot;: &quot;Casa matriz&quot;,
    &quot;responder_a&quot;: &quot;dte@proveedor.cl&quot;,
    &quot;periodo&quot;: &quot;202405&quot;
  }
}
```

| Campo          | Descripción                                      |
|----------------|--------------------------------------------------|
| `NmbContacto`  | Nombre del contacto para consultas               |
| `MailContacto` | Email del contacto                               |
| `sucursal`     | Código de sucursal (0 = casa matriz)             |
| `Recinto`      | Nombre del lugar de recepción                    |
| `responder_a`  | Email del proveedor (recomendado: no asignar)    |
| `periodo`      | Período contable en formato `AAAAMM`             |

&gt; [!WARNING] Tus Documentos, Tu Responsabilidad
&gt;
&gt; Aunque puedas responder automáticamente, **es tu responsabilidad validar el contenido del EnvioDTE** y establecer políticas claras de aceptación o reclamo.




---

## BillMySales

Integración mediante BillMySales

# Integración mediante BillMySales

BillMySales automatiza el proceso de facturación tomando los pedidos desde tu tienda y enviándolos directamente a tu facturador favorito. Así ahorras tiempo, evitas errores manuales y puedes enfocarte en lo que realmente importa: **vender más y hacer crecer tu negocio**.

![Como funciona BillMySales](https://www.billmysales.com/img/apps/datasources/como-funciona-billmysales.png)

&lt;twig:block-steps
    class=&quot;mb-5 container&quot;
    :steps=&quot;[
        {
            icon: &#039;fa-solid fa-money-bill&#039;,
            title: &#039;El cliente paga&#039;,
            content: &#039;Se realiza el pago de una orden en tu tienda y se envían los datos a BillMySales.&#039;
        },
        {
            icon: &#039;fa-solid fa-file-lines&#039;,
            title: &#039;Se emite el documento&#039;,
            content: &#039;BillMySales procesa los datos de la orden, los envía a LibreDTE y este emite el documento tributario.&#039;
        },
        {
            icon: &#039;fa-solid fa-envelope&#039;,
            title: &#039;Se envía por mail&#039;,
            content: &#039;El documento tributario es enviado por correo electrónico a tu cliente.&#039;
        }
    ]&quot;
/&gt;

| Plataforma | Origen de datos | Descripción | Documentación |
|------------|----------------|--------------|---------------|
| ![](https://www.billmysales.com/img/home/origendatosgenericos.png) | Genérico       | Si tienes un software que puede enviar los datos de la orden a facturar a nuestra API (webhook) este origen es ideal para ti. | [Ver documentación](https://www.billmysales.com/apps/datasources/generic) |
| ![](https://www.billmysales.com/img/home/odoo.png) | Odoo        | ¡Odoo Edición Comunidad es gratis! Y cuenta con muchos módulos que puedes aprovechar en tu empresa. | [Ver documentación](https://www.billmysales.com/apps/datasources/odoo) |
| ![](https://www.billmysales.com/img/home/woocommerce.png) | WooCommerce   | WooCommerce convierte a WordPress, el sistema de gestión de contenido más usado en el mundo, en un comercio electrónico. | [Ver documentación](https://www.billmysales.com/apps/datasources/woocommerce) |
| ![](https://www.billmysales.com/img/home/shopify.png) | Shopify        | Shopify apoya a la próxima generación de emprendedores, las marcas más grandes del mundo y a todos los demás en el medio. | [Ver documentación](https://www.billmysales.com/apps/datasources/shopify) |
| ![](https://www.billmysales.com/img/home/jumpseller.png) | Jumpseller    | Imagina tu tienda online. Créala hoy. | [Ver documentación](https://www.billmysales.com/apps/datasources/jumpseller) |
| ![](https://www.billmysales.com/img/home/mercadolibre.png) | Mercado Libre |  | [Ver documentación](https://www.billmysales.com/apps/datasources/mercadolibre) |
| ![](https://www.billmysales.com/img/home/mercadopago.png) | Mercado Pago |  | [Ver documentación](https://www.billmysales.com/apps/datasources/mercadopago) |
| ![](https://www.billmysales.com/img/home/magento.png) | Magento |  | [Ver documentación](https://www.billmysales.com/apps/datasources/magento) |
| ![](https://www.billmysales.com/img/home/prestashop.png) | Prestashop |  | [Ver documentación](https://www.billmysales.com/apps/datasources/prestashop) |
| ![](https://www.billmysales.com/img/home/easydigitaldownloads.png) | Easy Digital Downloads |  | [Ver documentación](https://www.billmysales.com/apps/datasources/easydigitaldownloads) |
| ![](https://www.billmysales.com/img/home/spincommerce.png) | SpinCommerce |  | [Ver documentación](https://www.billmysales.com/apps/datasources/spincommerce) |
| ![](https://www.billmysales.com/img/home/multivende.png) | Multivende    |  | [Ver documentación](https://www.billmysales.com/apps/datasources/multivende) |
| ![](https://www.billmysales.com/img/home/centry.png) | Centry |  | [Ver documentación](https://www.billmysales.com/apps/datasources/centry) |
| ![](https://www.billmysales.com/img/home/sellercenter.png) | SellerCenter |  | [Ver documentación](https://www.billmysales.com/apps/datasources/sellercenter) |
| ![](https://www.billmysales.com/img/home/linio.png) | Linio |  | [Ver documentación](https://www.billmysales.com/apps/datasources/linio) |
| ![](https://www.billmysales.com/img/home/falabella.png) | Falabella |  | [Ver documentación](https://www.billmysales.com/apps/datasources/falabella) |
| ![](https://www.billmysales.com/img/home/reveniu.png) | Reveniu |  | [Ver documentación](https://www.billmysales.com/apps/datasources/reveniu) |
| ![](https://www.billmysales.com/img/home/agendapro.png) | AgendaPro |  | [Ver documentación](https://www.billmysales.com/apps/datasources/agendapro) |
| ![](https://www.billmysales.com/img/home/planyo.png) | Planyo |  | [Ver documentación](https://www.billmysales.com/apps/datasources/planyo) |
| ![](https://www.billmysales.com/img/home/zohobooks.png) | ZohoBooks |  | [Ver documentación](https://www.billmysales.com/apps/datasources/zohobooks) |
| ![](https://www.billmysales.com/img/home/dolibarr.png) | Dolibarr |  | [Ver documentación](https://www.billmysales.com/apps/datasources/dolibarr) |
[![Watch video](https://img.youtube.com/vi/v96l-cezK8I/hqdefault.jpg)](https://www.youtube.com/watch?v=v96l-cezK8I)





---
Last updated on 25/08/2026

