---
title: "Servicios Web (API)"
description: ""
type: "docs"
category: "doc"
tags: []
authors: [Anonymous]
date: "2026-08-25"
last_update: "2026-08-25"
time_minutes: 1
draft: false
unlisted: false
attachments: [libredte-api-schema.yaml]
url: "https://www.libredte.cl/docs/api"
---




## Documentación de la API de LibreDTE

LibreDTE provee en [www.libredte.cl](https://www.libredte.cl) una API para interacturar con diferentes características del software LibreDTE. Estos servicios web tienen como objetivo final, permitir a los usuarios conectar su propio software con la plataforma web de LibreDTE para realizar ciertas tareas, como por ejemplo la emisión de boletas y facturas mediante API.

> En ningún caso los servicios web permiten realizar todas las funcionalidades de la plataforma web de LibreDTE, solo una parte de dichas funcionalidades. Están incluídas en la API las funcionalidades que, por experiencia, los usuarios más demandan. Estos recursos deben ser usados en conjunto con la plataforma web de LibreDTE para tener todas las tareas requeridas.

Si requiere soporte con el uso de los Servicios Web, por favor [abrir un ticket de soporte](https://www.libredte.cl/help?topic=technical).

**IMPORTANTE** los ejemplos con código de esta documentación son generados automáticamente por Postman y no representan ejemplos reales ni funcionales. Cada usuario deberá construir los códigos necesarios según su lenguaje y sistema con la documentación existente. Donde los códigos sugeridos por Postman podrían servir de guía, pero nada más.

# Autenticación en la API

Los servicios web soportan solo el método de autenticación mediante un _hash_ que puede ser obtenido en el [perfil del usuario](https://libredte.cl/usuarios/perfil#datos:hashField).

Este _hash_ debe ser proporcionado usando [HTTP Auth Basic](https://es.wikipedia.org/wiki/Autenticaci%C3%B3n_de_acceso_b%C3%A1sica), donde el usuario es una "X" (equis mayúscula) y la contraseña el _hash_ de tu usuario.

## Ejemplo de generación de la cabecera HTTP

Si el hash de tu usuario es "mihash123", aunque los reales tienen largo de 32 caracteres, entonces tus datos de autenticación en la API son:

- Usuario: X
- Contraseña: mihash123

Con esos datos debes armar el _string_ y codificarlo utilizando base64, con lo que se obtiene `WDptaWhhc2gxMjM=` y este valor es el utilizado en la cabecera HTTP de autenticación:

```
Authorization: Basic WDptaWhhc2gxMjM=

 ```
Un ejemplo en PHP para generar esto es:

``` php
$hash = 'mihash123';
$headers = ['Authorization' => base64_encode('X:' . $hash)];

 ```
Adicionalmente, en tu [perfil de LibreDTE](https://libredte.cl/usuarios/perfil#datos:api_keyField) encontrarás el _string_ ya listo (codificado en base64) con el nombre _API Key_ que podrás utilizar directamente así:

```
Authorization: Basic APIKEY

 ```
# Realizando peticiones

En los servicios web de LibreDTE en general se utilizan solo 2 verbos HTTP: `GET` y `POST`.

Los parámetros que se puedan pasar a los Servicios Web tienen 3 posibles ubicaciones:

- **Variable en el** _**PATH**_ **del recurso consumido** parámetros que identifican un elemento en el recurso que se está consumiendo. Pueden existir casos donde cierto parámetro sea opcional, en cuyo caso se indicará en cada recurso.
- **Variable agregada a la URL** parámetros que permiten modificar el comportamiento de la consulta. Por ejemplo para cambiar el formato de la respuesta o el delimitador usado en los CSV. Estos parámetros siempre serán opcionales.
- **Variable en el cuerpo de la solicitud** **`POST`** agregada como un diccionario de datos en JSON. Este tipo de variables se usará, en general, para crear o modificar recursos. Por ejemplo:

    - Crear un DTE.

    - Crear un asiento contable.

A menos que se especifique lo contrario, todos los cuerpos de las llamadas a los Servicios Web deben ser JSON con la cabecera:

```
Content-Type: application/json

 ```
Y de forma similar, la aplicación, a menos que se indique o soliciten los datos en un formato diferente, debe aceptar los datos en formato JSON con la cabecera:

```
Accept: application/json

 ```
Adicionalmente, los servicios web de LibreDTE tienen 2 variables agregadas a la URL especiales. Estas permiten modificar el comportamiento de cada llamada a los servicios web. Se explican a continuación.

**`_contribuyente_rut`**

Por defecto, solo el administrador principal tiene acceso a los servicios web. Esta opción, permite que un usuario autorizado en el mantenedor de usuarios pueda consumir estos recursos.

Esto emula el "seleccionar empresa" de la plataforma web. Permitiendo tomar prestados permisos del usuario principal durante la llamada que se realiza al recurso.

**`_contribuyente_certificacion`**

Permite especificar el ambiente de DTE en el que se debe trabajar.

- Si se omite la variable se usará el ambiente de DTE configurado en la plataforma web.
- Si es `0` será ambiente de producción.
- Si es `1` será ambiente de certificación (pruebas).

## Error `No está autorizado a operar con la empresa solicitada`

El mensaje:

``` json
"No está autorizado a operar con la empresa solicitada."

 ```
Puede ser a causa de los siguientes motivos:

- Su usuario no está autorizado a trabajar con la empresa solicitada. En cuyo caso debe pedir acceso al administrador de su empresa (no a soporte nuestro).
- Está usando el _hash_ de un usuario autorizado y no envió el parámetro `_contribuyente_rut` en la URL. En cuyo caso debe enviar el parámetro `_contribuyente_rut` en la URL con el RUT que desea trabajar.

Para el segundo caso, y evitar el uso del parámetro `_contribuyente_rut`, podría usar siempre el _hash_ del usuario administrador principal. Pero, por motivos de seguridad y permisos, esto no se recomienda.

# Errores

Todos los mensajes de error entregan un Código de Error en el Estado de la Respuesta HTTP y un mensaje legible por humanos con detalles del error codificado como JSON en el Cuerpo de la Respuesta HTTP.

| Código | Descripción HTTP | Descripción Global Servicios Web de LibreDTE |
| --- | --- | --- |
| 400 | Bad Request | Petición inválida |
| 401 | Unauthorized | _Hash_ incorrecto |
| 403 | Forbidden | No tiene autorización para acceder al recurso solicitado |
| 404 | Not Found | Recurso solicitado no pudo ser encontrado |
| 405 | Method Not Allowed | El método o acción solicitada no está permitida en el recurso |
| 406 | Not Acceptable | Solicitó la respuesta en un formato de datos incorrecto |
| 410 | Gone | El recurso solicitado ya no existe en los servicios web |
| 429 | Too Many Requests | Está solicitando muchos recursos en muy poco tiempo |
| 500 | Internal Server Error | Ocurrió un error no esperado en el servidor |
| 503 | Service Unavailable | Temporalmente el servicio no está disponible por mantención |

> Con el paso del tiempo podríamos ir agregando o eliminando tipos de errores. Se recomienda verificar que la aplicación se adapte a estos cambios o al menos maneje un caso por defecto cuando hay un error que no conoce.

# Rate limit

Los Servicios Web de LibreDTE tienen límites de consultas por rango de tiempo para evitar abusos que degradan nuestra capacidad de mantener un rendimiento consistente de los servicios web. Si sus peticiones están siendo limitadas, el código de respuesta HTTP será 429 e incluirá el mensaje _Too Many Attempts_.

Además se inclurán las siguientes cabeceras:

- `X-RateLimit-Limit` el número máximo de solicitudes a los Servicios Web que se pueden hacer en el período de tiempo.
- `X-RateLimit-Remaining` la cantidad de solicitudes que quedan disponibles en el período de tiempo vigente.
- `Retry-After` contiene el tiempo en segundos después de los que se puede volver a realizar una solicitud a los Servicios Web (enviada cuando se alcanza el límite de consultas).
- `X-RateLimit-Reset` contiene la fecha y hora, en formato timestamp unix, cuando se reiniciará el límite de solicitudes para la cuenta (enviada cuando se alcanza el límite de consultas).

La cantidad de consultas que se pueden realizar por período de tiempo dependen del tipo de cuenta que se esté usando para acceder a lo Servicios Web.

# Clientes de la API

Los clientes de la API de LibreDTE facilitan la integración con los servicios web de LibreDTE desde diferentes lenguajes. Hay 3 tipos de clientes:

- Oficial con soporte: creados por LibreDTE, a estos brindamos soporte a nuestros clientes a través de [tickets](https://www.libredte.cl/help?topic=technical).
- Oficial sin soporte: creados por LibreDTE, pero que no tienen soporte ni son mantenidos o actualizados. Pueden servir de base para crear el código propio pero no se pueden considerar actualizados o soportados.
- No oficiales: creados por usuarios de la comunidad, estos no tienen soporte de nuestra parte.

| Lenguaje | Autor | **Soporte** | Repositorio |
| --- | --- | --- | --- |
| PHP | LibreDTE | Si | [https://github.com/LibreDTE/libredte-api-client-php](https://github.com/LibreDTE/libredte-api-client-php) |
| Python | LibreDTE | Si | [https://github.com/LibreDTE/libredte-api-client-python](https://github.com/LibreDTE/libredte-api-client-python) |
| Java | LibreDTE | No | [https://github.com/LibreDTE/libredte-sdk-java](https://github.com/LibreDTE/libredte-sdk-java) |
| Perl | LibreDTE | No | [https://github.com/LibreDTE/libredte-sdk-perl](https://github.com/LibreDTE/libredte-sdk-perl) |
| C | LibreDTE | No | [https://github.com/LibreDTE/libredte-sdk-c](https://github.com/LibreDTE/libredte-sdk-c) |
| C++ | LibreDTE | No | [https://github.com/LibreDTE/libredte-sdk-cpp](https://github.com/LibreDTE/libredte-sdk-cpp) |
| curl | LibreDTE | No | [https://github.com/LibreDTE/libredte-sdk-curl](https://github.com/LibreDTE/libredte-sdk-curl) |
| Ruby | @crilam | No | [https://github.com/LibreDTE/libredte-sdk-ruby](https://github.com/LibreDTE/libredte-sdk-ruby) |
| C# | @petermajewski | No | [https://github.com/LibreDTE/libredte-sdk-c_sharp](https://github.com/LibreDTE/libredte-sdk-c_sharp) |

Que un cliente de API para cierto lenguaje de programación no exista no significa que no se pueda hacer la integración. Solo significa que LibreDTE oficialmente no ha creado dicho cliente de API o bien no es parte de los de la comunidad. Por ejemplo, un cliente de LibreDTE realizó la integración desde vb6 pero nosotros no lo tenemos como cliente oficial ni el usuario compartió el código con la comunidad.

**Importante**: no es obligatorio usar los clientes oficiales o de la comunidad de LibreDTE. Eres libre de construir los propios, desde 0 o basándote en los que tenemos publicados.

### Creación de un nuevo cliente de la API

Si estás interesado en hacerte cargo de uno de los cliente de la API ya existentes o bien crear uno nuevo [¡contáctanos!](https://www.libredte.cl/contact).

Puedes solicitar la creación de un repositorio para crear un cliente de API que no exista o bien para mantener o mejorar uno ya existente. Previo acuerdo con el usuario original si aun está vigente.

Los requisitos para aceptar un cliente de la API de la comunidad son:

- Que esté liberado bajo licencia de software libre [LGPL](https://www.gnu.org/licenses/lgpl-3.0.en.html).
- Que se cumpla con la interfaz del cliente actualmente vigente en los cliente de API oficiales.
- Que se creen al menos los [casos de prueba de facturación](https://github.com/LibreDTE/libredte-api-client-php/tree/master/tests/dte_facturacion).

#### Requerimientos cliente de API de la comunidad

A continuación se muestran las funcionalidades mínimas que debe implementar el cliente de los servicios web. Esto para cumplir con lo mínimo que se encuentra en los cliente de API oficiales y permitir consumir todos los servicios web disponibles.

##### Versión Orientada a Objetos

Se debe respetar como mínimo la siguiente estructura (ejemplo en PHP):

``` php
class LibreDTE
{
    /**
     * Constructor de la clase LibreDTE
     * @param hash Hash de autenticación del usuario
     * @param host Host con la dirección web base de LibreDTE
     */
    public function __construct($hash, $url = 'https://libredte.cl')
    {
        // ...
    }
    /**
     * Método que consume un servicio web de LibreDTE a través de POST
     * @param resource Recurso de los servicios web que se desea consumir por POST
     * @param data Datos que se enviarán por POST
     * @return Entrega resultado de la consulta por POST
     */
    public function post($resource, $data = null)
    {
        // ...
    }
    /**
     * Método que consume un servicio web de LibreDTE a través de GET
     * @param resource Recurso de los servicios web que se desea consumir por GET
     * @return Entrega resultado de la consulta por GET
     */
    public function get($resource)
    {
        // ...
    }
}

 ```
##### Versión con Funciones

Se debe respetar como mínimo la siguiente estructura (ejemplo en PHP):

``` php
/**
 * Inicializador de la conexión con LibreDTE
 * @param hash Hash de autenticación del usuario
 * @param host Host con la dirección web base de LibreDTE
 * @return Entrega estructura de datos que representa la conexión al servidor
 */
function libredte_init($hash, $url = 'https://libredte.cl')
{
    // ...
}
/**
 * Función que consume un servicio web de LibreDTE a través de POST
 * @param libredte Estructura de datos que representa la conexión creada con libredte_init()
 * @param resource Recurso de los servicios web que se desea consumir por POST
 * @param data Datos que se enviarán por POST
 * @return Entrega resultado de la consulta por POST
 */
function libredte_post($libredte, $resource, $data = null)
{
    // ...
}
/**
 * Función que consume un servicio web de LibreDTE a través de GET
 * @param libredte Estructura de datos que representa la conexión creada con libredte_init()
 * @param resource Recurso de los servicios web que se desea consumir por GET
 * @return Entrega resultado de la consulta por GET
 */
function libredte_get($libredte, $resource)
{
    // ...
}

 ```
# Cliente de Terminal

Existen casos donde no es posible consumir directamente los servicios web, por ejemplo:

1. Lenguaje sea muy antiguo y no pueda consumir servicios web.
2. La aplicación no puede ser modificada pero genera archivos con los datos.

Para estos casos, existe un cliente de terminal para realizar ciertas acciones con los servicios web de LibreDTE. Este cliente se puede utilizar como un _middleware_ entre un sofware que no puede consumir los servicios web directamente y la Plataforma Web de LibreDTE.

En el primer caso, si el lenguaje si permite realizar llamadas a comandos externos, se podrá usar el cliente como intermediario para generar el DTE. Ejemplos de estas llamadas son `system` o `exec` o `run`.

En el segundo caso, se puede dejar el cliente en modo monitor y escanear una carpeta buscando archivos para procesar.

¿Quieres usar este cliente de terminal? [¡contáctanos!](https://www.libredte.cl/help)

Servers: https://libredte.cl

Index:

- Facturación
  - Emisión de un DTE temporal

  - Generar DTE real

  - Datos de un Contribuyente

  - Configuración del Contribuyente

  - Listado de Documentos Temporales

  - Datos de un DTE temporal

  - PDF de un DTE temporal

  - PDF de un DTE temporal con datos extras

  - ESCPOS de un DTE temporal

  - XML de un DTE temporal

  - Enviar PDF de un DTE temporal por correo electrónico

  - Actualizar los datos de un DTE temporal

  - Eliminar un DTE temporal

  - Cobro asociado a un DTE temporal

  - Listado de Documentos Emitidos

  - Datos de un DTE Emitido

  - Validez de un DTE Emitido

  - Enviar el DTE emitido por correo electrónico

  - PDF de un DTE emitido

  - PDF de un DTE emitido con datos extras

  - ESCPOS de un DTE emitido

  - XML de un DTE emitido

  - Timbre Electrónico de un DTE emitido

  - Eliminar un DTE emitido

  - Eliminar XML de un DTE emitido

  - Enviar un DTE emitido al SII

  - Estado de Envío al SII de un DTE emitido

  - DTE enviados al SII que están rechazados

  - Validación de Datos de un DTE emitido enviado al SII

  - Cobro asociado a un DTE emitido

  - Anular una Guía de Despacho

  - Asignar Sucursal del SII al DTE emitido

  - Cargar el XML de un DTE emitido

  - Asignar Track ID al DTE emitido

  - Listado de Documentos Recibidos

  - Listado de Documentos Recibidos

  - Consultar Datos de un DTE recibido

  - PDF de un DTE recibido

  - ESCPOS de un DTE recibido

  - XML de un DTE recibido

  - Validación de Datos de un DTE recibido en el SII

  - Listado de Documentos de Intercambio

  - Listado de Documentos de Intercambio

  - Responder intercambio de DTE

  - XML de Intercambio de DTE

  - PDF de Intercambio de DTE

  - XMLs del Resultado del Proceso de Intercambio

  - Estado Actual del Mantenedor de Folios de un DTE

  - Modificar Mantenedor de Folios de un DTE

  - Solicitar archivo CAF al SII

  - Estado de un Folio en el SII

  - Anular un Folio en el SII

  - Enviar RCOF al SII

  - Actualizar estado del RCOF

  - Solicitar revisión del RCOF

  - Eliminar RCOF

  - Listado de Productos o Servicios

  - Datos de un Producto o Servicio

  - Editar un Producto o Servicio

  - Eliminar un Producto o Servicio

  - Listado de Clasificaciones

  - Listado de Documentos Recibidos Pendientes

  - Ingresar acción de un documento recibido

  - Resumen de Documentos de Ventas

  - Historial de Ventas

  - Resumen de Ventas

  - Resumen de Compras

  - Solicitar Código de Reemplazo de Libro

- Pagos y Cobros Masivos
  - Buscar Cobros

  - Datos de un Cobro, incluyendo su estado

  - Eliminar un cobro

  - Pagar Cobro

  - Receptores de Cobros Masivos Programados

  - Buscar Cobros Masivos Programados

  - Crear o modificar un Cobro Masivo Programado

  - Emitir Cobro Masivo de manera manual

- Contabilidad
  - Listado de asientos contables

  - Datos de un asiento contable

  - Crear asiento contable

  - Editar asiento contable

  - Eliminar asiento contable

- Recursos Humanos
  - Obtener datos del libro de remuneraciones

- Gestión de Clientes
  - Agregar correo en embudo de ventas

  - Agregar correo en embudo de ventas

- Inventario
  - Stock de un item

  - Actualizar stock de un item

  - Stock por ubicación

- Utilidades
  - Generar XML de DTE

  - Generar PDF a partir del XML

  - Verificar TED de un DTE

- Usuarios
  - Perfil de Usuario

  - Listado de Contribuyentes

  - Validar contraseña del usuario

  - Notificaciones

- Wizard
  - Validar contribuyente SII

- Back Office
  - Habilitar Servicio

  - Abonar Saldo a un Contribuyente

  - Información de un Teléfono

  - ¿Contribuyente tiene soporte?

- Modelos
  - Listado de recursos del modelo

  - Obtener un registro del modelo

  - Datos para crear un registro en el modelo

  - Crear un registro en el modelo

  - Datos para editar un registro del modelo

  - Actualizar un registro del modelo

  - Eliminar un registro del modelo

### Facturación

El Módulo de Facturación Electrónica es la base de LibreDTE, es la razón de ser de este proyecto y el módulo principal de la plataforma web. También es el módulo con más Servicios Web.


#### POST /api/dte/documentos/emitir

Emisión de un DTE temporal

Recurso que permite emitir un documento temporal.

El formato del objeto JSON del DTE corresponde a los mismos nombres que el XML del DTE que se desea emitir, con los mismos tipos de datos y restricciones. Puede encontrar más información sobre estos campos en la documentación del SII en:

- Documentos tributarios electrónicos (no boletas):

    - [Descripción del formato de DTE](https://www.sii.cl/factura_electronica/factura_mercado/formato_dte_202602.pdf)

    - [Diagrama del XML de DTE](https://www.sii.cl/factura_electronica/factura_mercado/diagrama_dte.zip)
- Boletas:

    - [Descripción del formato de boletas](https://www.sii.cl/factura_electronica/factura_mercado/boletas_elec_0720_3.pdf)

    - [Diagrama del XML de boletas](https://www.sii.cl/factura_electronica/factura_mercado/diag_boleta_0920.zip)

La documentación completa, y actualizada, está en la [web del SII](https://www.sii.cl/factura_electronica/factura_mercado/instructivo.htm).

Es necesario y **obligatorio** que quien desee consumir este servicio web **conozca los campos que debe enviar** y los posibles valores de dichos campos. Es responsabilidad de quien consume los servicios web que los datos sean los que el SII espera. Por ejemplo, se deben considerar formatos (K con mayúscula en RUT) o largos (dirección receptor máximo 70 caracteres).

Tenemos algunos [ejemplos de archivos YAML](https://github.com/LibreDTE/libredte-lib-core/tree/master/tests/fixtures/yaml/documentos_ok) con los casos más comunes de documentos tributarios electrónicos. Otros casos deben ser construídos utilizando la documentación oficial del SII previamente mencionada.

Adicionalmente al formato JSON, existen otros formatos que se pueden utilizar como entrada de datos para emitir el DTE. Los formatos XML y YAML siguen la misma regla que el formato JSON. Si necesitas ayuda con alguno de los otros formatos [abre un ticket de soporte](https://www.libredte.cl/help?topic=technical).

**Formatos diferentes a JSON**: si el formato es diferente a `json` se deben enviar codificados en base64 los datos del documento. Adicionalmente, el string base64 debe ser enviado como un string JSON.

Ejemplo de los datos a enviar para un DTE con formato JSONString:

```
ewogICAgIkVuY2FiZXphZG8iOiB7CiAgICAgICAgIklkRG9jIjogewogICAgICAgICAgICAiVGlwb0RURSI6IDM5CiAgICAgICAgfSwKICAgICAgICAiRW1pc29yIjogewogICAgICAgICAgICAiUlVURW1pc29yIjogIjc2MTkyMDgzLTkiCiAgICAgICAgfSwKICAgICAgICAiUmVjZXB0b3IiOiB7CiAgICAgICAgICAgICJSVVRSZWNlcCI6ICI2NjY2NjY2Ni02IgogICAgICAgIH0KICAgIH0sCiAgICAiRGV0YWxsZSI6IFsKICAgICAgICB7CiAgICAgICAgICAgICJObWJJdGVtIjogIkNvbmVjdG9yZXMgUko0NSIsCiAgICAgICAgICAgICJRdHlJdGVtIjogNDUwLAogICAgICAgICAgICAiUHJjSXRlbSI6IDcwCiAgICAgICAgfQogICAgXQp9Cg==

 ```
**Agregar datos Extras al DTE**

LibreDTE permite la incorporación de datos extras, que permiten, principalmente:

- Incluir tags de facturas en PDF de boletas. Ejemplo: TermPagoGlosa.
- Agregar datos adicionales para los PDF. Ejemplo: el gráfico en el formato de propósito general.

Para agregar estos datos extras se debe agregar a la estructura de los datos del DTE el índice `LibreDTE`, con datos similares a lo siguiente:

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

 ```
La estructura de `LibreDTE.extra.dte` es la misma que de un DTE del SII y permite pasar tags de facturas a XML de boletas para ser usados en el PDF.

El historial define los datos del gráfico, se pasa un título y los datos. En este caso de un APR.

Parameters:

- `normalizar` (query, string) — `1` Se usa normalización: se calcularán ciertos valores<br/>
`0` No se usa normalización: se deben enviar todos los valores según esquema XML
- `formato` (query, string) — Formato de los datos que se están enviando para crear el DTE:<br/>
`json` formato por defecto en JSON<br/>
`xml` igual que `json` pero en formato XML<br/>
`yaml` igual que `json` pero en formato YAML<br/>
`JSONString` String JSON que contiene el JSON completo<br/>
`Acepta.Normal` todos los DTE menos boletas ni exportación<br/>
`Acepta.Boleta` para generar boletas<br/>
`FacturacionCL.XML`

- `links` (query, string) — `0` No se entregan enlaces asociados al documento temporal<br/>
`1` Enlaces asociados al documento temporal
- `email` (query, string) — `0` No se envía el documento por correo<br/>
`1` Se envía el documento por correo al receptor (solo si existe correo asociado al receptor o indicado en los datos del DTE)
Request body example:

```
{
    "Detalle": [
        {
            "IndExe": 0,
            "NmbItem": "Producto Afecto",
            "PrcItem": 1000,
            "QtyItem": 1
        },
        {
            "IndExe": 1,
            "NmbItem": "Servicio Exento",
            "PrcItem": 500,
            "QtyItem": 1
        },
        {
            "IndExe": 2,
            "NmbItem": "Item no facturable",
            "PrcItem": 300,
            "QtyItem": 1
        }
    ],
    "Encabezado": {
        "Emisor": {
            "RUTEmisor": "76192083-9"
        },
        "IdDoc": {
            "TipoDTE": 39
        },
        "Receptor": {
            "CmnaRecep": "Santa Cruz",
            "DirRecep": "Santa Cruz",
            "GiroRecep": "Informática",
            "RUTRecep": "{{USUARIO_RUT}}",
            "RznSocRecep": "Esteban"
        }
    }
}
```

Responses:

- `200`
#### POST /api/dte/documentos/generar

Generar DTE real

Recurso que permite generar el DTE real a partir de un documento temporal.

Parameters:

- `getXML` (query, string) — `0` No se entrega el XML en la respuesta<br/>
`1` Se entrega el XML en la respuesta
- `links` (query, string) — `0` No se entregan enlaces asociados al documento real<br/>
`1` Enlaces asociados al documento real
- `email` (query, string) — `0` No se envía el documento por correo<br/>
`1` Se envía el documento por correo al receptor (solo si existe correo asociado al receptor o indicado en los datos del DTE)
- `retry` (query, string) — `0` Sin enviar al SII el XML (se enviará posteriormente con otro servicio web)<br/>
`>0` Cantidad de intentos que LibreDTE hará para enviar el XML al SII al generar el DTE real
- `gzip` (query, string) — `0` Se envía el XML al SII sin comprimir<br/>
`1` Se envía el XML al SII comprimido en GZIP
Request body example:

```
{
    "codigo": "7e53ac669beb3023e57daa1a9cab2b80",
    "dte": 33,
    "emisor": 76192083,
    "receptor": 76192083
}
```

Responses:

- `200`
#### GET /api/dte/contribuyentes/info/{rut}

Datos de un Contribuyente

Recurso que permite obtener los datos de un contribuyente registrado en LibreDTE, ya sea un proveedor o un cliente.

Entrega los datos de manera semi pública. Cualquier usuario con acceso a los Servicios Web puede consultar.

Responses:

- `200`
#### GET /api/dte/contribuyentes/config/{rut}

Configuración del Contribuyente

Recurso que permite conocer:

- El ambiente en el que está operando el contribuyente en LibreDTE.
- El listado de documentos disponibles para usar en LibreDTE.

Responses:

- `200`
#### POST /api/dte/dte_tmps/buscar/{emisor}

Listado de Documentos Temporales

Recurso que permite buscar entre los documentos borradores por cierto contribuyente.

Request body example:

```
{
    "codigo": null,
    "dte": null,
    "fecha": null,
    "fecha_desde": null,
    "fecha_hasta": null,
    "folio": null,
    "razon_social": null,
    "receptor": null,
    "sucursal_sii": null,
    "total": null,
    "total_desde": null,
    "total_hasta": null,
    "usuario": null
}
```

Responses:

- `200`
#### GET /api/dte/dte_tmps/info/{receptor}/{dte}/{codigo}/{emisor}

Datos de un DTE temporal

Datos de un DTE temporal

Parameters:

- `getDetalle` (query, string) — `0` No se incluye el detalle/items del DTE<br/>
`1` Se incluye el detalle/items del DTE
- `getDatosDte` (query, string) — `0` No se incluyen los datos del DTE<br/>
`1` Se incluyen todos los datos del DTE
- `getEmailEnviados` (query, string) — `0` No se incluye estadística de envío de email<br/>
`1` Se incluye estadística de envío de email
- `getLinks` (query, string) — `0` No se incluyen enlaces<br/>
`1` Se incluyen enlaces
- `getReceptor` (query, string) — `0` Solo se entrega RUT del receptor<br/>
`1` Se entregan datos del receptor
- `getSucursal` (query, string) — `0` Solo se entrega código de la sucursal<br/>
`1` Se entregan datos de la sucursal
- `getUsuario` (query, string) — `0` Solo se entrega ID del usuario<br/>
`1` Se entregan datos del usuario
Responses:

- `200`
#### GET /api/dte/dte_tmps/pdf/{receptor}/{dte}/{codigo}/{emisor}

PDF de un DTE temporal

PDF de un DTE temporal

Parameters:

- `cotizacion` (query, string) — `0` Genera PDF en formato previsualización (folio 0)<br/>
`1` Genera PDF en formato cotización
- `formato` (query, string) — `estandar`, `general` o `servicios_basicos` (u otro definido)
- `papelContinuo` (query, string) — `0` Formato Hoja Carta<br/>
`57` Formato 57mm<br/>
`75` Formato 75mm<br/>
`80` Formato 80mm<br/>
`110` Formato 110mm
- `compress` (query, string) — `0` Descarga PDF sin comprimir<br/>
`1` Descarga PDF comprimido en formato ZIP
Responses:

- `200`
#### POST /api/dte/dte_tmps/pdf/{receptor}/{dte}/{codigo}/{emisor}

PDF de un DTE temporal con datos extras

PDF de un DTE temporal con datos extras

Parameters:

- `cotizacion` (query, string) — `0` Genera PDF en formato previsualización (folio 0)<br/>
`1` Genera PDF en formato cotización
- `formato` (query, string) — `estandar`, `general` o `servicios_basicos` (u otro definido)
- `papelContinuo` (query, string) — `0` Formato Hoja Carta<br/>
`57` Formato 57mm<br/>
`75` Formato 75mm<br/>
`80` Formato 80mm<br/>
`110` Formato 110mm
- `compress` (query, string) — `0` Descarga PDF sin comprimir<br/>
`1` Descarga PDF comprimido en formato ZIP
Request body example:

```
{
    "extra": {
        "dte": {
            "Encabezado": {
                "IdDoc": {
                    "TermPagoGlosa": "Este es un PDF con datos extras, en este caso la glosa"
                }
            }
        }
    }
}
```

Responses:

- `200`
#### GET /api/dte/dte_tmps/escpos/{receptor}/{dte}/{codigo}/{emisor}

ESCPOS de un DTE temporal

Recurso que permite obtener el código ESCPOS de un documento temporal (borrador) emitido por un contribuyente.

Parameters:

- `cotizacion` (query, string) — `0` Genera ESCPOS en formato previsualización (folio 0)<br/>
`1` Genera ESCPOS en formato cotización
- `base64` (query, string) — `0` Entrega código binario<br/>
`1` Entrega codificado en base64 en string JSON
- `cedible` (query, string) — `0` Sin copia cedible<br/>
`1` Con copia cedible
- `compress` (query, string) — `0` Descarga PDF sin comprimir<br/>
`1` Descarga PDF comprimido en formato ZIP
- `copias_tributarias` (query, string) — `0` Sin copia tributaria<br/>
`>0` Cantidad de copias tributarias
- `copias_cedibles` (query, string) — `0` Sin copia cedible<br/>
`>0` Cantidad de copias cedibles
- `papelContinuo` (query, string) — Ancho del papel: `57` o `80` milímetros
- `profile` (query, string) — `default`: impresoras Epson TM (o compatibles)
- `pdf417` (query, string) — `pdf417` (por defecto si es 80mm) o `bitmap` (por defecto si es 57mm)
Responses:

- `200`
#### GET /api/dte/dte_tmps/xml/{receptor}/{dte}/{codigo}/{emisor}

XML de un DTE temporal

Recurso que permite obtener el XML de un documento temporal (borrador) emitido por un contribuyente.

Responses:

- `200`
#### POST /api/dte/dte_tmps/enviar_email/{receptor}/{dte}/{codigo}/{emisor}

Enviar PDF de un DTE temporal por correo electrónico

El recurso entrega como respuesta una lista con los correos electrónicos a los que se envió el documento.

Request body example:

```
{
    "asunto": null,
    "cotizacion": true,
    "emails": [],
    "mensaje": null
}
```

Responses:

- `200`
#### POST /api/dte/dte_tmps/actualizar/{receptor}/{dte}/{codigo}/{emisor}

Actualizar los datos de un DTE temporal

Recurso que permite actualizar los datos de un DTE temporal.

Usar con extremo cuidado, ya que se podría dañar el DTE temporal.

Se recomienda para actualizar:

- Fecha emisión.
- Observación.
- Medio de pago.
- Vendedor.
- Referencias.

Y en general, cualquier dato que no es un monto ni datos que afecten a los cálculos de los totales.

Request body example:

```
{
    "actualizar_precios": true,
    "dte": {
        "Encabezado": {
            "IdDoc": {
                "FchEmis": "2021-08-26"
            }
        }
    }
}
```

Responses:

- `200`
#### GET /api/dte/dte_tmps/eliminar/{receptor}/{dte}/{codigo}/{emisor}

Eliminar un DTE temporal

Eliminar un DTE temporal

Responses:

- `200`
#### GET /api/dte/dte_tmps/cobro/{receptor}/{dte}/{codigo}/{emisor}

Cobro asociado a un DTE temporal

Los documentos temporales pueden tener un cobro del módulo de Pagos asociado. Esto permite generar un enlace de pago y llevar el registro de la fecha y medio de pago usado con un documento.

Este recurso permite entregar el cobro que se creó para este documento temporal. Y se entregará la información de dicho cobro, donde lo más relevante es la URL de pago del cobro que llevará a la página con los botones de pago que la empresa emisora tenga configurados.

Parameters:

- `getDocumento` (query, string)
- `getDetalle` (query, string)
- `getLinks` (query, string)
Responses:

- `200` — Cobro asociado a un DTE temporal
#### POST /api/dte/dte_emitidos/buscar/{emisor}

Listado de Documentos Emitidos

Recurso que permite buscar entre los documentos tributarios electrónicos emitidos por cierto contribuyente.

Existen filtros para la búsqueda de los documentos emitidos, se envían en el cuerpo de la solicitud. Los campos se pueden enviar según se necesiten, los filtros que no se utilicen no se deben enviar.

Request body example:

```
{
    "cedido": null,
    "dte": null,
    "fecha": null,
    "fecha_desde": null,
    "fecha_hasta": null,
    "folio": null,
    "periodo": null,
    "razon_social": null,
    "receptor": null,
    "receptor_evento": null,
    "sucursal_sii": null,
    "total": null,
    "total_desde": null,
    "total_hasta": null,
    "usuario": null,
    "xml": {
        "Detalle/NmbItem": "abono"
    }
}
```

Responses:

- `200`
#### GET /api/dte/dte_emitidos/info/{dte}/{folio}/{emisor}

Datos de un DTE Emitido

Recurso que permite obtener los datos de un documento tributario electrónico emitido por un contribuyente.

Parameters:

- `getXML` (query, string) — `0` No se entrega el XML en la respuesta<br/>
`1` Se entrega el XML en la respuesta
- `getDetalle` (query, string) — `0` No se incluye el detalle/items del DTE<br/>
`1` Se incluye el detalle/items del DTE
- `getDatosDte` (query, string) — `0` No se incluyen los datos del XML del DTE<br/>
`1` Se incluyen todos los datos del XML del DTE
- `getTed` (query, string) — `0` No se incluye el TED del DTE<br/>
`1` Se incluye el TED del DTE en formato XML codificado en base64
- `getResolucion` (query, string) — `0` No se incluye la resolución que autoriza el DTE<br/>
`1` Se incluye el número y fecha de resolución que autoriza el DTE
- `getEmailEnviados` (query, string) — `0` No se incluye estadística de envío de email<br/>
`1` Se incluye estadística de envío de email
- `getLinks` (query, string) — `0` No se incluyen enlaces<br/>
`1` Se incluyen enlaces
- `getReceptor` (query, string) — `0` Solo se entrega RUT del receptor<br/>
`1` Se entregan datos del receptor
- `getSucursal` (query, string) — `0` Solo se entrega código de la sucursal<br/>
`1` Se entregan datos de la sucursal
- `getUsuario` (query, string) — `0` Solo se entrega ID del usuario<br/>
`1` Se entregan datos del usuario
Responses:

- `200`
#### POST /api/dte/dte_emitidos/consultar

Validez de un DTE Emitido

Recurso que permite consultar la existencia de un DTE emitido en LibreDTE y validar sus datos básicos.

Parameters:

- `getXML` (query, string) — `0` No se entrega el XML en la respuesta<br/>
`1` Se entrega el XML en la respuesta
Request body example:

```
{
    "dte": 33,
    "emisor": 76192083,
    "fecha": "2020-02-16",
    "folio": 726,
    "total": 37485
}
```

Responses:

- `200`
#### POST /api/dte/dte_emitidos/enviar_email/{dte}/{folio}/{emisor}

Enviar el DTE emitido por correo electrónico

Recurso que permite enviar el DTE por correo electrónico, se envía siempre el XML y opcionalmente se puede enviar el PDF.

El recurso entrega como respuesta una lista con los correos electrónicos a los que se envió el documento.

Request body example:

```
{
    "asunto": null,
    "cedible": false,
    "emails": "all",
    "mensaje": null,
    "papelContinuo": 0,
    "pdf": false
}
```

Responses:

- `200`
#### GET /api/dte/dte_emitidos/pdf/{dte}/{folio}/{emisor}

PDF de un DTE emitido

Recurso que permite generar el PDF de un documento tributario electrónico emitido en el sistema.

La respuesta del servicio tiene dos posibilidades, un archivo ZIP o un archivo PDF, dependiendo si se indica `compress=1` o `compress=0`.

Para poder verificar que tipo de archivo se está recibiendo se deberá consultar la cabecera de la respuesta HTTP. Adicionalmente en las cabeceras viene el nombre del archivo y su tamaño. Las cabeceras son:

- `Content-Disposition` nombre del archivo.
- `Content-Length` tamaño del archivo.
- `Content-Type` tipo de archivo.

Los datos del archivo, estarán en el cuerpo de la respuesta. Dichos datos pueden ser escritos directamente como un archivo ZIP o PDF según corresponda en el sistema de archivos o bien, usando la cabeceras recibidas, entregarlo en el navegador web al usuario.


Parameters:

- `formato` (query, string) — `estandar`, `general` o `servicios_basicos` (u otro definido)
- `papelContinuo` (query, string) — Solo si el formato es `estandar`:<br/>
`0` Formato Hoja Carta<br/>
`57` Formato 57mm<br/>
`75` Formato 75mm<br/>
`80` Formato 80mm<br/>
`110` Formato 110mm
- `copias_tributarias` (query, string) — `0` Sin copia tributaria<br/>
`>0` Cantidad de copias tributarias
- `copias_cedibles` (query, string) — `0` Sin copia cedible<br/>
`>0` Cantidad de copias cedibles
- `cedible` (query, string) — `0` Sin copia cedible<br/>
`1` Con copia cedible
- `compress` (query, string) — `0` Descarga PDF sin comprimir<br/>
`1` Descarga PDF comprimido en formato ZIP
- `base64` (query, string) — `0` Entrega código binario<br/>
`1` Entrega codificado en base64 en string JSON
Responses:

- `200`
#### POST /api/dte/dte_emitidos/pdf/{dte}/{folio}/{emisor}

PDF de un DTE emitido con datos extras

Recurso que permite generar el PDF de un documento tributario electrónico emitido en el sistema.

La respuesta del servicio tiene dos posibilidades, un archivo ZIP o un archivo PDF, dependiendo si se indica `compress=1` o `compress=0`.

Para poder verificar que tipo de archivo se está recibiendo se deberá consultar la cabecera de la respuesta HTTP. Adicionalmente en las cabeceras viene el nombre del archivo y su tamaño. Las cabeceras son:

- `Content-Disposition` nombre del archivo.
- `Content-Length` tamaño del archivo.
- `Content-Type` tipo de archivo.

Los datos del archivo, estarán en el cuerpo de la respuesta. Dichos datos pueden ser escritos directamente como un archivo ZIP o PDF según corresponda en el sistema de archivos o bien, usando la cabeceras recibidas, entregarlo en el navegador web al usuario.


Parameters:

- `formato` (query, string) — `estandar`, `general` o `servicios_basicos` (u otro definido)
- `papelContinuo` (query, string) — Solo si el formato es `estandar`:<br/>
`0` Formato Hoja Carta<br/>
`57` Formato 57mm<br/>
`75` Formato 75mm<br/>
`80` Formato 80mm<br/>
`110` Formato 110mm
- `copias_tributarias` (query, string) — `0` Sin copia tributaria<br/>
`>0` Cantidad de copias tributarias
- `copias_cedibles` (query, string) — `0` Sin copia cedible<br/>
`>0` Cantidad de copias cedibles
- `cedible` (query, string) — `0` Sin copia cedible<br/>
`1` Con copia cedible
- `compress` (query, string) — `0` Descarga PDF sin comprimir<br/>
`1` Descarga PDF comprimido en formato ZIP
- `base64` (query, string) — `0` Entrega código binario<br/>
`1` Entrega codificado en base64 en string JSON
Request body example:

```
{
    "extra": {
        "dte": {
            "Encabezado": {
                "IdDoc": {
                    "TermPagoGlosa": "Este es un PDF con datos extras, en este caso la glosa"
                }
            }
        }
    }
}
```

Responses:

- `200`
#### GET /api/dte/dte_emitidos/escpos/{dte}/{folio}/{emisor}

ESCPOS de un DTE emitido

Recurso que permite obtener el código ESCPOS de un documento tributario electrónico emitido en el sistema.

El código ESCPOS puede ser enviado directamente a una impresora térmica (papel contínuo).

Tiene como principal ventaja una mejor calidad de impresión versus imprimir en la impresora térmica el PDF del DTE.

Parameters:

- `base64` (query, string) — `0` Entrega código binario<br/>
`1` Entrega codificado en base64 en string JSON
- `cedible` (query, string) — `0` Sin copia cedible<br/>
`1` Con copia cedible
- `compress` (query, string) — `0` Descarga ESCPOS sin comprimir<br/>
`1` Descarga ESCPOS comprimido en formato ZIP
- `copias_tributarias` (query, string) — `0` Sin copia tributaria<br/>
`>0` Cantidad de copias tributarias
- `copias_cedibles` (query, string) — `0` Sin copia cedible<br/>
`>0` Cantidad de copias cedibles
- `papelContinuo` (query, string) — Ancho del papel: `57` o `80` milímetros
- `profile` (query, string) — `default`: impresoras Epson TM (o compatibles)
- `pdf417` (query, string) — `pdf417` (por defecto si es 80mm) o `bitmap` (por defecto si es 57mm)
Responses:

- `200`
#### GET /api/dte/dte_emitidos/xml/{dte}/{folio}/{emisor}

XML de un DTE emitido

Recurso que permite obtener el XML de un documento tributario electrónico emitido por un contribuyente.

El XML se entrega codificado en base64.


Responses:

- `200`
#### GET /api/dte/dte_emitidos/ted/{dte}/{folio}/{emisor}

Timbre Electrónico de un DTE emitido

Recurso que permite obtener el Timbre Electrónico del DTE (TED) de un documento tributario electrónico emitido por un contribuyente.

Este TED se podrá obtener como un XML o como una imagen PNG.

Si se obtiene como XML, se podrá usar posteriormente para la creación del código PDF417.

Si se obtiene como PNG, se obtendrá la imagen del código PDF417 lista para incluir en la muestra impresa.

Parameters:

- `formato` (query, string) — `png` `bmp` `xml`
- `ecl` (query, string) — Nivel de corrección de errores
- `size` (query, string) — Tamaño imagen PNG o BMP (1 = 100%)
Responses:

- `200`
#### GET /api/dte/dte_emitidos/eliminar/{dte}/{folio}/{emisor}

Eliminar un DTE emitido

Recurso que permite eliminar un DTE emitido y enviado al SII que se encuentra en estado rechazado, o bien un DTE que fue emitido pero no se pudo enviar al SII y no se desea enviar.

Responses:

- `200`
#### GET /api/dte/dte_emitidos/eliminar_xml/{dte}/{folio}/{emisor}

Eliminar XML de un DTE emitido

Recurso que permite eliminar el XML de un DTE emitido.

Esto es útil si creamos un proceso que respalde los XML de los DTE a un sistema fuera de LibreDTE y queremos mantener la cuenta de LibreDTE sin XML.

Solo se permite la eliminación de XML de boletas cuando la empresa tiene configurada la custodia de boletas limitada. Y solo cuando la boleta tiene más de 3 meses.

Responses:

- `200`
#### GET /api/dte/dte_emitidos/enviar_sii/{dte}/{folio}/{emisor}

Enviar un DTE emitido al SII

Recurso que permite enviar al SII un DTE que ha sigo generado por LibreDTE pero que por alguna razón no pudo ser enviado al SII.

También permite reenviar DTEs que han sido rechazados previamente. Esto básicamente porque el DTE se puede volver a colocar en el sobre de `EnvioDTE` y esto podría corregir algún caso de rechazo del timbre.

Responses:

- `200`
#### GET /api/dte/dte_emitidos/actualizar_estado/{dte}/{folio}/{emisor}

Estado de Envío al SII de un DTE emitido

Recurso que permite consultar al SII el estado de un documento tributario electrónico emitido por un contribuyente y actualizar dicho estado en la base de datos de LibreDTE.

El estado puede ser consultado a través del servicio web del SII o bien a través del correo que el SII envía a la casilla de contacto del contribuyente.

Consultar el estado mediante servicio web entregará un estado general, pero no el detalle del error.

Las boletas solo se consultan mediante servicio web, ya que SII no envía un correo con el estado de ellas. Si se solicita mediante correo el estado de una boleta LibreDTE lo forzará a servicio web al hacer la consulta.

**Importante**: si utilizas el correo de LibreDTE para recibir las respuestas de SII debes esperar que dicho correo llegue y no usar este servicio web. Para conocer el estado, deberás consultar los datos del DTE emitido y ver los campos de `revision_estado` y `revision_detalle`.

Parameters:

- `usarWebservice` (query, string) — `0` Se consulta usando el correo que envía el SII (con detalles, más lento)<br/>
`1` Se consulta usando el servicio web del SII (sin detalles, más rápido)
Responses:

- `200`
#### GET /api/dte/dte_emitidos/rechazados/{desde}/{hasta}/{emisor}

DTE enviados al SII que están rechazados

Recurso que permite obtener los documentos emitidos enviados al SII que este ha rechazado.

Responses:

- `200`
#### GET /api/dte/dte_emitidos/estado/{dte}/{folio}/{emisor}

Validación de Datos de un DTE emitido enviado al SII

Recurso que permite consultar el estado de un documento tributario electrónico emitido por un contribuyente en el SII.

Esta es la respuesta que se obtiene al verificar el estado del DTE vía www.sii.cl, no es el resultado del estado del envío con el Track ID.

Parameters:

- `avanzado` (query, string) — `0` No se verifica la firma del DTE enviado al SII<br/>
`1` Se verifica que la firma del DTE coincida con la enviada al SII
Responses:

- `200`
#### GET /api/dte/dte_emitidos/cobro/{dte}/{folio}/{emisor}

Cobro asociado a un DTE emitido

Cobro asociado a un DTE emitido

Parameters:

- `getDocumento` (query, string)
- `getDetalle` (query, string)
- `getLinks` (query, string)
Responses:

- `200`
#### POST /api/dte/dte_emitidos/avanzado_anular/52/{folio}/{emisor}

Anular una Guía de Despacho

Recurso que permite anular o desanular una guía de despacho.

Los valores para `anulado` son:
- `1`: anula la guía de despacho
- `0`: quita la anulación a la guía de despacho

El campo `anulado` se puede omitir y por defecto la guía de despacho se marcará como anulada.

Las guías no se anulan emitiendo notas de crédito. La forma correcta de anular una guía es usando este servicio web.

La guía aparecerá marcada como anulada en el Libro de Guías y no será considerada en la facturación masiva de guías de despacho.

Request body example:

```
{
    "anulado": 1
}
```

Responses:

- `200`
#### POST /api/dte/dte_emitidos/avanzado_sucursal/{dte}/{folio}/{emisor}

Asignar Sucursal del SII al DTE emitido

Recurso que permite cambiar la sucursal del DTE en LibreDTE.

Este recurso no cambia la sucursal del XML del DTE, si se requiere eso, se deberá anular el DTE y emitir uno nuevo.

Solo se cambia la sucursal en el registro de LibreDTE, lo que afectará a filtros y estadísticas, pero no a la información enviada al SII.

Por defecto, si no se indica el campo `sucursal` se asignará la casa matriz como sucursal del DTE.

Request body example:

```
{
    "sucursal": 1234
}
```

Responses:

- `200`
#### POST /api/dte/dte_emitidos/cargar_xml

Cargar el XML de un DTE emitido

Existen casos donde un contribuyente puede emitir documentos en un sistema diferente a LibreDTE y querer centralizar todos sus XML en LibreDTE.

Este recurso permite enviar el XML de un DTE emitido desde una aplicación externa a LibreDTE. El XML enviado será agregado a los documentos emitidos del contribuyente. Esto permitirá 2 posibles acciones:

1. Enviarlo al SII si no se le asignó Track ID. Esto es útil al usar generación offline. Se emite el XML fuera de LibreDTE y luego se sincroniza con LibreDTE para que este realice el envío al SII y resto de proceso asociado a la emisión.

2. Incluir boletas emitidas por fuera de LibreDTE en el envío de los RCV (ex RCOF) diarios.

El archivo XML debe ser enviado como un string JSON, el string es el base64 del XML de EnvioDTE o EnvioBOLETA según corresponda.

El XML del DTE debe venir con el timbre (nodo TED). Sin embargo, podrían o venir firmado, en cuyo caso al ser cargado LibreDTE lo tratará de firmar para luego enviar al SII. Esto permite hacer la emisión offline sin firma, solo con el CAF.

**Importante**: Este servicio no está diseñado para importar documentos desde otras plataformas de facturación. Fue creado para ser usado en procesos entre servidores de LibreDTE u otras aplicaciones asociadas a LibreDTE que requieren enviar un XML al servidor de la aplicación web.


Parameters:

- `track_id` (query, string) — `-1` documento queda con estado MANUAL y no se enviará al SII.<br/>
`0` documento queda sin Track ID y será enviado al SII en proceso automático.
- `enviar_sii` (query, string) — `0` no se enviará el XML al SII al ser cargado.<br/>
`1` se enviará el XML al SII (requiere además track_id = 0).
Request body example:

```
""
```

Responses:

- `200`
#### POST /api/dte/dte_emitidos/avanzado_track_id/{dte}/{folio}/{emisor}

Asignar Track ID al DTE emitido

Recurso que permite cambiar el Track ID de un DTE en LibreDTE.

El Track ID es el número de seguimiento asignado por el SII al enviar un DTE a este. Este número se usa para consultar el estado posteriormente. Sin embargo, por X motivos, se podría querer cambiar su valor. Por ejemplo, porque se subió a mano el XML del DTE con un Track ID inválido.

Al realizar el cambio del Track ID, LibreDTE tratará de actualizar el estado del DTE con el nuevo Track ID consultando al SII mediante servicio web (sin detalles en caso de rechazos).

**Importante**: esto normalmente NO se debe realizar. Hay casos especiales que pueden requerirlo pero no es una acción común hacerlo.


Request body example:

```
{
    "track_id": 9343093
}
```

Responses:

- `200`
#### GET /api/dte/dte_recibidos/buscar/{receptor}

Listado de Documentos Recibidos

Recurso que permite realizar una búsqueda sobre los documentos recibidos usando algunos filtros.

Es obligatorio buscar en ciertas fechas, no es posible obtener todos los documentos sin indicar rango de fechas.

**Nota**: este servicio tiene filtros diferentes a la consulta vía POST, y también entrega datos diferentes. Esto por razones históricas y aún no se ha normalizado.

Parameters:

- `emisor` (query, string) — RUT sin DV del emisor del DTE
- `dte` (query, string) — Código del tipo de DTE
- `fecha` (query, string) — Fecha de emisión
- `fecha_desde` (query, string) — Desde qué fecha buscar
- `fecha_hasta` (query, string) — Hasta qué fecha buscar
- `total` (query, string) — Monto total exacto del DTE
- `total_desde` (query, string) — Desde qué monto total buscar
- `total_hasta` (query, string) — Hasta qué monto total buscar
Responses:

- `200` — Listado de Documentos Recibidos
#### POST /api/dte/dte_recibidos/buscar/{receptor}

Listado de Documentos Recibidos

Recurso que permite realizar una búsqueda sobre los documentos recibidos usando algunos filtros.

**Nota**: este servicio tiene filtros diferentes a la consulta vía GET, y también entrega datos diferentes. Esto por razones históricas y aún no se ha normalizado.

Request body example:

```
{
    "dte": null,
    "emisor": null,
    "fecha": null,
    "fecha_desde": null,
    "fecha_hasta": null,
    "folio": null,
    "intercambio": null,
    "limit": null,
    "periodo": null,
    "razon_social": null,
    "total": null,
    "total_desde": null,
    "total_hasta": null,
    "usuario": null
}
```

Responses:

- `200` — Listado de Documentos Recibidos
#### GET /api/dte/dte_recibidos/info/{emisor}/{dte}/{folio}/{receptor}

Consultar Datos de un DTE recibido

Recurso que permite obtener los datos de un documento tributario electrónico recibido por un contribuyente.

Parameters:

- `getXML` (query, string) — `0` No se entrega el XML en la respuesta<br/>
`1` Se entrega el XML en la respuesta
- `getDetalle` (query, string) — `0` No se incluye el detalle/items del DTE<br/>
`1` Se incluye el detalle/items del DTE
- `getDatosDte` (query, string) — `0` No se incluyen los datos del XML del DTE<br/>
`1` Se incluyen todos los datos del XML del DTE
Responses:

- `200`
#### GET /api/dte/dte_recibidos/pdf/{emisor}/{dte}/{folio}/{receptor}

PDF de un DTE recibido

Recurso que permite generar el PDF de un documento tributario electrónico recibido en el sistema.

La respuesta del servicio tiene dos posibilidades, un archivo ZIP o un archivo PDF, dependiendo si se indica `compress=1` o `compress=0`.

Para poder verificar que tipo de archivo se está recibiendo se deberá consultar la cabecera de la respuesta HTTP. Adicionalmente en las cabeceras viene el nombre del archivo y su tamaño. Las cabeceras son:

- `Content-Disposition` nombre del archivo.
- `Content-Length` tamaño del archivo.
- `Content-Type` tipo de archivo.

Los datos del archivo, estarán en el cuerpo de la respuesta. Dichos datos pueden ser escritos directamente como un archivo ZIP o PDF según corresponda en el sistema de archivos o bien, usando la cabeceras recibidas, entregarlo en el navegador web al usuario.


Parameters:

- `papelContinuo` (query, string) — `0` Formato Hoja Carta<br/>
`57` Formato 57mm<br/>
`75` Formato 75mm<br/>
`80` Formato 80mm<br/>
`110` Formato 110mm
- `copias_tributarias` (query, string) — `0` Sin copia tributaria<br/>
`>0` Cantidad de copias tributarias
- `copias_cedibles` (query, string) — `0` Sin copia cedible<br/>
`>0` Cantidad de copias cedibles
- `cedible` (query, string) — `0` Sin copia cedible<br/>
`1` Con copia cedible
- `compress` (query, string) — `0` Descarga PDF sin comprimir<br/>
`1` Descarga PDF comprimido en formato ZIP
- `base64` (query, string) — `0` Entrega código binario<br/>
`1` Entrega codificado en base64 en string JSON
Responses:

- `200`
#### GET /api/dte/dte_recibidos/escpos/{emisor}/{dte}/{folio}/{receptor}

ESCPOS de un DTE recibido

Recurso que permite obtener el código ESCPOS de un documento tributario electrónico recibido en el sistema.

El código ESCPOS puede ser enviado directamente a una impresora térmica (papel contínuo).

Tiene como principal ventaja una mejor calidad de impresión versus imprimir en la impresora térmica el PDF del DTE.

Parameters:

- `copias_tributarias` (query, string) — `0` Sin copia tributaria<br/>
`>0` Cantidad de copias tributarias
- `copias_cedibles` (query, string) — `0` Sin copia cedible<br/>
`>0` Cantidad de copias cedibles
- `cedible` (query, string) — `0` Sin copia cedible<br/>
`1` Con copia cedible
- `compress` (query, string) — `0` Descarga ESCPOS sin comprimir<br/>
`1` Descarga ESCPOS comprimido en formato ZIP
- `base64` (query, string) — `0` Entrega código binario<br/>
`1` Entrega codificado en base64 en string JSON
Responses:

- `200`
#### GET /api/dte/dte_recibidos/xml/{emisor}/{dte}/{folio}/{receptor}

XML de un DTE recibido

Recurso que permite obtener el XML de un documento tributario electrónico recibido por un contribuyente.

El XML se entrega codificado en base64 en un string json. Por lo cual deberá ser decodificado.

Responses:

- `200`
#### GET /api/dte/dte_recibidos/estado/{emisor}/{dte}/{folio}/{receptor}

Validación de Datos de un DTE recibido en el SII

Recurso que permite consultar el estado de un documento tributario electrónico recibido por un contribuyente en el SII.

Esta es la respuesta que se obtiene al verificar el estado del DTE vía www.sii.cl, no es el resultado del estado del envío con el Track ID.

Parameters:

- `avanzado` (query, string) — `0` No se verifica la firma del DTE enviado al SII<br/>
`1` Se verifica que la firma del DTE coincida con la enviada al SII
Responses:

- `200`
#### GET /api/dte/dte_intercambios/buscar/{receptor}

Listado de Documentos de Intercambio

Recurso que permite buscar entre los documentos de intercambio.

Por defecto, sin filtros, se buscan todos los documentos pendientes de ser procesados recibidos en el período actual.

**Nota**: se recomienda usar el recurso vía POST. Tiene mayor cantidad de filtros.

Parameters:

- `soloPendientes` (query, string) — `0` Todos los documentos<br/>
`1` Solo los documentos pendientes
- `emisor` (query, string) — RUT sin DV del emisor del DTE
- `folio` (query, string) — Folio del DTE buscado
- `recibido_desde` (query, string) — Desde qué fecha de recepción se debe buscar
- `recibido_hasta` (query, string) — Hasta que fecha de recepción se debe buscar
- `usuario` (query, string) — Nombre del usuario que procesó el DTE
Responses:

- `200` — Listado de Documentos de Intercambio
#### POST /api/dte/dte_intercambios/buscar/{receptor}

Listado de Documentos de Intercambio

Recurso que permite buscar entre los documentos de intercambio.

Por defecto, sin filtros, se buscan todos los documentos pendientes de ser procesados.

El campo `estado` puede ser:
- `1`: solo pendientes
- `2`: solo procesados

El campo `p` permite paginar los resultados mostrando de a 20 por respuesta. El valor por defecto es `0` que significa sin paginación.

La búsqueda es muy similar a la mediante GET, de hecho entregan los mismos resultados. Sin embargo, la consulta usando POST tiene más filtros, por ejemplo permite consultar en el XML con el filtro `xml`.

Request body example:

```
{
    "asunto": null,
    "de": null,
    "dte": null,
    "emisor": null,
    "estado": 1,
    "fecha_emision_desde": null,
    "fecha_emision_hasta": null,
    "firma_desde": null,
    "firma_hasta": null,
    "folio": null,
    "item": null,
    "p": 0,
    "recibido_desde": null,
    "recibido_hasta": null,
    "total_desde": null,
    "total_hasta": null,
    "usuario": null,
    "xml": []
}
```

Responses:

- `200` — Listado de Documentos de Intercambio
#### POST /api/dte/dte_intercambios/responder/{codigo}/{receptor}

Responder intercambio de DTE

Los códigos de acciones (`rcv_accion_codigo`) y sus glosas (`rcv_accion_glosa`) por defecto son:

- ERM: Otorga recibo de mercaderías o servicios.
- ACD: Acepta contenido del documento.
- RCD: Reclamo al contenido del documento.
- RFP: Reclamo por falta parcial de mercaderías.
- RFT: Reclamo por falta total de mercaderías.

La glosa si se omite se enviará el valor por defecto.

Los siguientes campos son todos opcionales, se usará el valor por defecto si no se envía:

- `NmbContacto` valor por defecto el nombre del usuario que realiza la respuesta.
- `MailContacto` valor por defecto el correo del usuario que realiza la respuesta.
- `sucursal` valor por defecto es la casa matriz.
- `Recinto` valor por defecto es la dirección de la casa matriz.
- `responder_a` valor por defecto es el correo de intercambio del emisor del DTE si existe o bien el correo desde el que se envió el XML del intercambio de DTE.
- `periodo` valor por defecto es el período actual. Aunque este valor no tiene mucho sentido asignarlo y se recomienda usar la sincronización con el SII del registro de compras.

Request body example:

```
{
    "rcv_accion_codigo": "RCD",
    "rcv_accion_glosa": ""
}
```

Responses:

- `200`
#### GET /api/dte/dte_intercambios/xml/{codigo}/{receptor}

XML de Intercambio de DTE

Recurso que entrega el XML asociado al intercambio.

Responses:

- `200`
#### GET /api/dte/dte_intercambios/pdf/{codigo}/{receptor}/{cedible}/{emisor}/{dte}/{folio}

PDF de Intercambio de DTE

Recurso que entrega el PDF asociado al intercambio.

Los campos `emisor`, `dte` y `folio` solo son necesarios si el intercambio incluye más de un DTE y se quiere obtener el PDF de uno de esos documentos.

Parameters:

- `papelContinuo` (query, string) — Solo si el formato es `estandar`:<br/>
`0` Formato Hoja Carta<br/>
`57` Formato 57mm<br/>
`75` Formato 75mm<br/>
`80` Formato 80mm<br/>
`110` Formato 110mm
Responses:

- `200`
#### GET /api/dte/dte_intercambios/resultados_xml/{codigo}/{receptor}

XMLs del Resultado del Proceso de Intercambio

Recurso que entrega los archivos XML del resultado del proceso de intercambio de DTE.

Puede incluir los siguientes archivos:

- `EnvioRecibos.xml`
- `RecepcionDTE.xml`
- `ResultadoDTE.xml`

Responses:

- `200`
#### GET /api/dte/admin/dte_folios/info/{dte}/{emisor}

Estado Actual del Mantenedor de Folios de un DTE

Recurso que permite obtener el objeto con los datos del mantenedor de folios de un DTE que tenga registrado el contribuyente.

Responses:

- `200`
#### POST /api/dte/admin/dte_folios/modificar/{dte}/{emisor}

Modificar Mantenedor de Folios de un DTE

Recurso que permite modificar el mantenedor de folio.

Se pueden hacer los siguientes cambios:

- `siguiente` folio disponible siguiente.
- `alerta` cantidad de folios para ejecutar la alerta.

Request body example:

```
{
    "alerta": 1,
    "siguiente": 732
}
```

Responses:

- `200`
#### GET /api/dte/admin/dte_folios/solicitar_caf/{dte}/{cantidad}/{emisor}

Solicitar archivo CAF al SII

Recurso que permite obtener un archivo CAF desde el SII.

Este recurso no carga el CAF en LibreDTE. Está destinado para que el CAF sea usado en otros software, ejemplo un POS para emitir boletas *offline*.

La respuesta del servicio web entrega el CAF codificado en Base64. Para obtener el XML se debe decodificar.

Responses:

- `200`
#### GET /api/dte/admin/dte_folios/estado/{dte}/{folio}/{emisor}

Estado de un Folio en el SII

Recurso que permite obtener el estado de un folio en el SII.

Parameters:

- `formato` (query, string) — `json` `html`
Responses:

- `200`
#### GET /api/dte/admin/dte_folios/anular/{dte}/{folio}/{emisor}

Anular un Folio en el SII

Recurso que permite anular un folio en el SII.

Parameters:

- `formato` (query, string) — `json` `html`
Responses:

- `200`
#### GET /api/dte/dte_boleta_consumos/enviar_sii/{dia}/{contribuyente}

Enviar RCOF al SII

Enviar RCOF al SII

Responses:

- `200` — Enviar RCOF al SII
#### GET /api/dte/dte_boleta_consumos/actualizar_estado/{dia}/{contribuyente}

Actualizar estado del RCOF

Actualizar estado del RCOF

Parameters:

- `usarWebservice` (query, string)
Responses:

- `200` — Actualizar estado del RCOF
#### GET /api/dte/dte_boleta_consumos/solicitar_revision/{dia}/{contribuyente}

Solicitar revisión del RCOF

Solicitar revisión del RCOF

Responses:

- `200` — Solicitar revisión del RCOF
#### GET /api/dte/dte_boleta_consumos/eliminar/{dia}/{contribuyente}

Eliminar RCOF

Eliminar RCOF

Responses:

- `200` — Eliminar RCOF
#### GET /api/dte/admin/itemes/raw/{rut}

Listado de Productos o Servicios

Recurso que permite obtener los datos de un item (producto o servicio) de un determinado contribuyente a partir de su código

Pueden existir items con el mismo código para un mismo contribuyente, en cuyo caso se diferenciarán por su tipo de código, el cual debe ser indicado al hacer la búsqueda.

Responses:

- `200` — Listado de Productos o Servicios
#### GET /api/dte/admin/itemes/info/{rut}/{codigo}

Datos de un Producto o Servicio

Recurso que permite obtener los datos de un item (producto o servicio) de un determinado contribuyente a partir de su código

Pueden existir items con el mismo código para un mismo contribuyente, en cuyo caso se diferenciarán por su tipo de código, el cual debe ser indicado al hacer la búsqueda.

Parameters:

- `campo` (query, string) — Campo del código que se usará: `libredte` `sku` `upc` `ean`
- `tipo` (query, string) — Tipo de código del item registrado en LibreDTE
- `bruto` (query, string) — `0` Precio en valor Neto<br/>
`1` Precio en valor Bruto
- `moneda` (query, string) — `CLP` `CLF` `USD` `EUR`
- `fecha` (query, string) — Fecha que se debe usar para el tipo de cambio de la moneda, por defecto día actual
- `sucursal` (query, string) — Código de la sucursal para bloquear el item si no hay stock (requiere configuración de inventario)
- `cantidad` (query, string) — Cantidad del item para bloquear el item si no hay stock (requiere configuración de inventario)
- `decimales` (query, string) — Cantidad de decimales en el precio
- `receptor_rut` (query, string) — Uso futuro para precios por receptor
- `receptor_codigo` (query, string) — Uso futuro para precios por receptor
- `lista` (query, string) — Uso futuro para listas de precios
Responses:

- `200` — Datos de un Producto o Servicio
#### POST /api/dte/admin/itemes/editar/{tipo}/{codigo}/{contribuyente}

Editar un Producto o Servicio

Recurso que permite modificar un producto o servicio.

Se permite modificar a través de este servicio web los campos:

- item
- descripcion
- clasificacion
- unidad
- precio
- moneda
- bruto
- exento
- descuento
- descuento_tipo
- impuesto_adicional
- activo

Cada campo debe estar en el mismo formato que es entregado por la API. Puede consultar un item vía API para conocer dicho formato.

Request body example:

```
{
    "clasificacion": "comp"
}
```

Responses:

- `200`
#### GET /api/dte/admin/itemes/eliminar/{tipo}/{codigo}/{contribuyente}

Eliminar un Producto o Servicio

Recurso que permite eliminar un producto o servicio de los asociados al contribuyente en LibreDTE.

Responses:

- `200`
#### GET /api/dte/admin/item_clasificaciones/raw/{rut}

Listado de Clasificaciones

Recurso que permite obtener los datos de un item (producto o servicio) de un determinado contribuyente a partir de su código

Pueden existir items con el mismo código para un mismo contribuyente, en cuyo caso se diferenciarán por su tipo de código, el cual debe ser indicado al hacer la búsqueda.

Responses:

- `200`
#### POST /api/dte/registro_compras/buscar/{receptor}

Listado de Documentos Recibidos Pendientes

Recurso para buscar en los documentos del Registro de Compras.

Se debe especificar a lo menos un filtro de búsqueda.

La búsqueda se hace sobre los datos del registro de compras con estado `PENDIENTE` y que han sido previamente sincronizados con el SII.

Request body example:

```
{
    "dte": null,
    "emisor": null,
    "estado": null,
    "fecha_desde": null,
    "fecha_hasta": null,
    "fecha_recepcion_sii_desde": "2022-03-01",
    "fecha_recepcion_sii_hasta": "2022-03-31",
    "total_desde": null,
    "total_hasta": null
}
```

Responses:

- `200`
#### POST /api/dte/registro_compras/ingresar_accion/{emisor}/{dte}/{folio}/{receptor}

Ingresar acción de un documento recibido

En el cuerpo se debe pasar el campo `rcv_accion_codigo` que puede ser:

- ERM: Otorga recibo de mercaderías o servicios.
- ACD: Acepta contenido del documento.
- RCD: Reclamo al contenido del documento.
- RFP: Reclamo por falta parcial de mercaderías.
- RFT: Reclamo por falta total de mercaderías.

Request body example:

```
{
    "rcv_accion_codigo": "ERM"
}
```

Responses:

- `200` — Ingresar acción de un documento recibido
#### GET /api/dte/registro_ventas/resumen/{emisor}/{periodo}

Resumen de Documentos de Ventas

Recurso para obtener el resumen de documentos del Registro de Ventas.

Responses:

- `200`
#### GET /api/dte/dte_ventas/historial/{receptor}/{fecha}/{emisor}

Historial de Ventas

Recurso que entrega el valor bruto mensual vendido a un cliente durante una cantidad de períodos.

Se considera la resta de notas de crédito.

Si `periodo_glosa` es 1, solicitar máximo 12 periodos.

Parameters:

- `periodos` (query, string)
- `formato` (query, string) — `json` o `png`
- `periodo_glosa` (query, string)
Responses:

- `200` — Historial de Ventas
#### POST /api/dte/dte_ventas/resumen/{emisor}

Resumen de Ventas

Recurso que entrega el resumen de documentos del libro de ventas.

Request body example:

```
{
    "dte": null,
    "periodo": 201602,
    "usuario": null
}
```

Responses:

- `200` — Resumen de Ventas
#### POST /api/dte/dte_compras/resumen/{receptor}

Resumen de Compras

Recurso que entrega el resumen de documentos del libro de compras.

Request body example:

```
{
    "dte": null,
    "periodo": 201602,
    "usuario": null
}
```

Responses:

- `200` — Resumen de Compras
#### GET /api/dte/{libro}/codigo_reemplazo/{periodo}/{contribuyente}

Solicitar Código de Reemplazo de Libro

Recurso que entrega el código de reemplazo de libro de compras o ventas para poder rectificar un libro.

**Nota**: solo para períodos de 201707 hacia atrás.

Responses:

- `200`
### Pagos y Cobros Masivos

Servicios web asociados al módulo de pagos electrónicos y cobros, incluyendo cobros masivos.

## Código de un cobro

El código del cobro se genera el momento de realizar el cobro y depende de si se generó de una cotización o un DTE real. Básicamente es la codificación en base 64 de una concatenación de datos.

### Cotizaciones

    base64_encode('t;'.$emisor.';'.$receptor.';'.$dte.';'.$codigo);
Donde:

- `$emisor` RUT emisor sin DV
- `$receptor` RUT receptor sin DV
- `$dte` código del DTE (ej: 33 para factura electrónica)
- `$codigo` código del DTE temporal (cadena de 32 caracteres, la obtienes al generar un DTE temporal vía API)

Ejemplo:

    // ejemplo de código de cobro
    dDs3NjE5MjA4MzsxNjI2MTA2MzszMztlMWY5NjU3ZmQzMzU1NTVhNGE0YjIxZDNkMDM3OTVjYg==

    // código cobro decodificado base 64:
    t;76192083;16261063;33;e1f9657fd335555a4a4b21d3d03795cb
### Documento real

    base64_encode('e;'.$emisor.';'.$dte.';'.$folio);
Donde:

- `$emisor` RUT emisor sin DV
- `$dte` código del DTE (ej: 33 para factura electrónica)
- `$folio` folio del documento generado

Ejemplo:

    // ejemplo de código de cobro
    ZTs3NjE5MjA4MzszOTsxMTI=

    // código cobro decodificado base 64:
    e;76192083;39;112

#### POST /api/pagos/cobros/buscar/{emisor}

Buscar Cobros

Buscar Cobros

Request body example:

```
{
    "codigo": null,
    "dte": null,
    "dte_emitidos": null,
    "fecha_desde": null,
    "fecha_hasta": null,
    "folio": null,
    "medio": null,
    "pagado": null,
    "pagado_desde": null,
    "pagado_hasta": null,
    "receptor": null,
    "sin_vencimiento": null,
    "sucursal": null,
    "total": null,
    "total_desde": null,
    "total_hasta": null,
    "vencen_hoy": null,
    "vencidos": null,
    "vigentes": null
}
```

Responses:

- `200`
#### GET /api/pagos/cobros/info/{codigo}/{emisor}

Datos de un Cobro, incluyendo su estado

Recurso que permite obtener los datos de un cobro emitido por un contribuyente. Ya sea uno asociado a un documento temporal o a uno real.

Permite conocer el estado actual del cobro, entre otros datos se incluyen:

`pagado` indica la fecha en que fue pagado el cobro.
`medio` indica el medio de pago usado al pagar el cobro.


Parameters:

- `getDocumento` (query, string)
- `getDetalle` (query, string)
- `getLinks` (query, string)
Responses:

- `200`
#### GET /api/pagos/cobros/eliminar/{codigo}/{emisor}

Eliminar un cobro

Recurso que permite eliminar un cobro.

Normalmente este recurso no se debería usar, ya que al borrar la cotización el cobro será borrado. Pero pueden existir casos especiales de uso donde se requiera eliminar el cobro.

Si el cobro que se está eliminando está asociado a una cotización, esta también será eliminada.

En documentos reales, solo se borrará el cobro y el DTE temporal seguirá existiendo.

Responses:

- `200`
#### POST /api/pagos/cobros/pagar/{cobro}/{emisor}

Pagar Cobro

Los campos que se pueden enviar en el cuerpo son:

- `medio`: código del medio de pago.
- `fecha`: por defecto será el día actual. Formato: AAAA-MM-DD
- `datos`: diccionario con los códigos y valores de datos extras según el medio de pago. Por defecto es `null` (sin datos extras).
- `url`: una URL de notificación en caso que se quiera notificar a una distinta a la registrada en LibreDTE. Por defecto es `null` y se usa lo que esté configurado en LibreDTE.
- `asiento`: permite indicar si se debe (`true`) o no (`false`) crear el asiento contable asociado al pago. Por defecto es `true`.
- `enviar_email`: indica si se debe enviar (`true`) o no (`false`) un correo al receptor. Por defecto es `false.`

Request body example:

```
{
    "fecha": "2023-03-30",
    "medio": "efectivo"
}
```

Responses:

- `200`
#### GET /api/pagos/cobro_masivos/programados/{cobro}/{emisor}

Receptores de Cobros Masivos Programados

Recurso que permite obtener los receptores de un cobro masivo programado.

Parameters:

- `activo` (query, string) — `1` Permite buscar solo cobros activos
- `siguiente` (query, string) — Permite buscar los cobros masivos de un día en específico
Responses:

- `200`
#### POST /api/pagos/cobro_masivo_programados/buscar/{emisor}

Buscar Cobros Masivos Programados

Recurso que permite buscar entre los cobros masivos de un contribuyente y obtener el detalle del cobro y los receptores.

Request body example:

```
{
    "activo": null,
    "masivo_codigo": [
        "dte-api-pyme"
    ],
    "siguiente_desde": null,
    "siguiente_hasta": null
}
```

Responses:

- `200`
#### POST /api/pagos/cobro_masivo_programados/guardar

Crear o modificar un Cobro Masivo Programado

Las `referencias` son opcionales.

Request body example:

```
{
    "activo": true,
    "cobro_masivo_codigo": "dte-plus",
    "dte": 33,
    "dte_real": false,
    "emisor": 76192083,
    "items": [
        {
            "cantidad": 200,
            "descripcion": "Uso sobre la cuota",
            "item_codigo": "dte-plus-e"
        }
    ],
    "observacion": "Descuento hasta el 2021",
    "receptor": 66666666,
    "referencias": [
        {
            "descripcion": "Orden de compra",
            "documento": "801",
            "fecha": "2022-11-07",
            "folio": "ABC123"
        }
    ],
    "siguiente": "2020-08-08"
}
```

Responses:

- `200`
#### GET /api/pagos/cobro_masivo_programados/emitir/{codigo}/{receptor}/{emisor}

Emitir Cobro Masivo de manera manual

Emitir Cobro Masivo de manera manual

Parameters:

- `email` (query, string) — `0` No se envía correo electrónico<br/>
`1` Se envía correo electrónico
Request body example:

```
{
    "activo": true,
    "cobro_masivo_codigo": "dte-plus",
    "dte": 33,
    "dte_real": false,
    "emisor": 76192083,
    "items": [
        {
            "cantidad": 200,
            "descripcion": "Uso sobre la cuota",
            "item_codigo": "dte-plus-e"
        }
    ],
    "observacion": "Descuento hasta el 2021",
    "receptor": 66666666,
    "siguiente": "2020-08-08"
}
```

Responses:

- `200`
### Contabilidad

Servicios web del módulo de contabilidad de LibreDTE.

#### POST /api/lce/lce_asientos/buscar/{contribuyente}

Listado de asientos contables

Listado de asientos contables

Request body example:

```
{
    "cuenta": null,
    "debe": null,
    "debe_desde": null,
    "debe_hasta": null,
    "fecha_desde": null,
    "fecha_hasta": null,
    "glosa": null,
    "haber": null,
    "haber_desde": null,
    "haber_hasta": null,
    "operacion": null,
    "periodo": 2020
}
```

Responses:

- `200`
#### GET /api/lce/lce_asientos/info/{periodo}/{asiento}/{contribuyente}

Datos de un asiento contable

Datos de un asiento contable

Responses:

- `200` — Datos de un asiento contable
#### POST /api/lce/lce_asientos/crear/{contribuyente}

Crear asiento contable

El  campo `detalle` del asiento contable debe contener 2 partes:

1. `debe` códigos de cuentas contables y sus montos al debe del asiento.
2. `haber` códigos de cuentas contables y sus montos al haber del asiento.

`debe` y `haber` contienen un diccionario donde el índice del diccionario es el código de la cuenta contable (previamente creada en LibreDTE) y en el valor va el monto que se está asignando a dicha cuenta contable.

El campo `operacion` depende del tipo de operación a la que se refiera el asiento que se está creando:

- `I` Ingreso
- `E` Egreso
- `T` Traspaso
- `U` Único
- `O` Otro

Finalmente, el campo `documentos` es para asociar documentos tributarios electrónicos al asiento contable. Este campo es opcional, pero se recomienda. Puede contener 2 índices:

1. `emitidos` donde se especifica un arreglo de objetos con los campos `dte` y `folio`
2. `recibidos` donde se especifica un arreglo de objetos con los campos `emisor` (RUT sin puntos ni DV), `dte` y `folio`.

Request body example:

```
{
    "detalle": {
        "debe": {
            "1101001": 6550
        },
        "haber": {
            "2105101": 1050,
            "4101001": 5500
        }
    },
    "documentos": {
        "emitidos": [
            {
                "dte": "33",
                "folio": "997"
            }
        ]
    },
    "fecha": "2020-05-28",
    "glosa": "Glosa del Asiento",
    "operacion": "I"
}
```

Responses:

- `200`
#### POST /api/lce/lce_asientos/editar/{periodo}/{asiento}/{contribuyente}

Editar asiento contable

Revisar documentación de creación de asiento para la explicación de los campos.

Request body example:

```
{
    "anulado": 1,
    "detalle": {
        "debe": {
            "1101001": 6550
        },
        "haber": {
            "2105101": 1050,
            "4101001": 5500
        }
    },
    "documentos": {
        "emitidos": [
            {
                "dte": "33",
                "folio": "997"
            }
        ]
    },
    "fecha": "2020-05-28",
    "glosa": "Glosa del Asiento",
    "operacion": "I"
}
```

Responses:

- `200`
#### GET /api/lce/lce_asientos/eliminar/{periodo}/{asiento}/{contribuyente}

Eliminar asiento contable

Eliminar asiento contable

Responses:

- `200`
### Recursos Humanos

#### GET /api/rrhh/libro_remuneraciones/planilla/{periodo}/{contribuyente}

Obtener datos del libro de remuneraciones

Entrega los datos, por mes, de los cálculos realizados para las liquidaciones de sueldo de los trabajadores.

Son los mismos datos que se incluyen en la planilla de LibreDTE del libro de remuneraciones.

Responses:

- `200` — Obtener datos del libro de remuneraciones
### Gestión de Clientes

#### POST /api/crm/embudos/cliente_guardar/{embudo}

Agregar correo en embudo de ventas

Permite agregar un correo en el embudo.

Se pueden pasar configuraciones del embudo aparte de los datos, como por ejemplo la etapa en la que debe ser incluído el correo o la programación del envío (para desfasar respecto a la etapa asignada).

Request body example:

```
{
    "cierre": null,
    "datos": [],
    "email": "",
    "etapa_actual": 0,
    "salida": null,
    "ultimo_envio": null
}
```

Responses:

- `200`
#### GET /api/crm/embudos/cliente_guardar/{embudo}/{email}

Agregar correo en embudo de ventas

Permite agregar un correo al embudo mediante el método `GET`. Las variables pasadas en la URL se agregarán como datos extras.

Este método solo permite agregar datos, pero no permite sacar a un correo del embudo, ni marcarlo como cerrado. Tampoco permite cambiarlo de etapa o programar el envío. Para todos estos casos usar el método `POST`.

Responses:

- `200`
### Inventario

#### GET /api/inventario/inventario_itemes/stock/{codigo}/{contribuyente}

Stock de un item

Servicio que entrega el stock disponible para cierto item en todas las ubicaciones que tiene en la empresa.

Parameters:

- `tipo` (query, string) — Tipo del código del item, normalmente `INT1`
Responses:

- `200` — Stock de un item
#### POST /api/inventario/inventario_itemes/stock/{codigo}/{contribuyente}

Actualizar stock de un item

Servicio que permite modificar el stock disponible para cierto item.

Se debe enviar un arreglo con las ubicaciones a actualizar. Cada ubicación puede contener los siguientes campos:

- `ubicacion`: código de la ubicación a actualizar.
- `cantidad`: la cantidad actual del item en la ubicación, este es el stock.
- `cantidad_ideal`: la cantidad que nos gustaría tener de stock de este item.
- `cantidad_alerta`: cuando el stock alcance esta cantidad se mostrará una alerta en el dashboard de inventario en la plataforma web.
- `procesar_venta`: indica si se debe (`1`) o no (`0`) considerar esta ubicación al procesar el stock del item cuando se vende.
- `procesar_compra`:  indica si se debe (`1`) o no (`0`) considerar esta ubicación al procesar el stock del item cuando se compra.

De los campos anteriores, solo la `ubicacion` es obligatoria de indicar al actualizar. Los otros campos, si se omiten, no se modificarán.

Si se está creando un stock en una ubicación nueva, que antes no existía. Se debe indicar obligatoriamente `cantidad`, `procesar_venta` y `procesar_compra`.

La respuesta del servicio web será el stock completo (en todas las ubicaciones) para el item que se está actualizando.

Parameters:

- `tipo` (query, string) — Tipo del código del item, normalmente `INT1`
Request body example:

```
[
    {
        "cantidad": 20,
        "cantidad_alerta": 5,
        "cantidad_ideal": 10,
        "procesar_compra": 1,
        "procesar_venta": 1,
        "ubicacion": "casa_matriz"
    }
]
```

Responses:

- `200` — Actualizar stock de un item
#### GET /api/inventario/inventario_ubicaciones/stock/{codigo}/{contribuyente}

Stock por ubicación

Servicio que entrega el stock disponible en cierta ubicación de la empresa con todos los items que dicha ubicación tiene.

Responses:

- `200` — Stock por ubicación
### Utilidades

**OBSOLETOS**

#### POST /api/utilidades/documentos/generar_xml

Generar XML de DTE

Recurso que permite generar el XML de un DTE enviando todo lo necesario para hacerlo sin que el contribuyente esté registrado en LibreDTE.

Responses:

- `200`
#### POST /api/utilidades/documentos/generar_pdf

Generar PDF a partir del XML

Recurso que permite generar el PDF de un documento tributario electrónico a partir del XML de EnvioDTE o EnvioBOLETA.

La respuesta del servicio tiene dos posibilidades, un archivo ZIP o un archivo PDF. Si es un archivo ZIP, este podrá contener uno o más PDF dentro. Si se envía un XML con múltiples DTE el ZIP será obligatorio, en caso contrario (un solo DTE en el XML) el ZIP se genera solo si se indica `compress=1`.

Para poder verificar que tipo de archivo se está recibiendo se deberá consultar la cabecera de la respuesta HTTP. Adicionalmente en las cabeceras viene el nombre del archivo y su tamaño. Las cabeceras son:

- `Content-Disposition`: nombre del archivo.
- `Content-Length`: tamaño del archivo.
- `Content-Type`: tipo de archivo.

Los datos del archivo, estarán en el cuerpo de la respuesta. Dichos datos pueden ser escritos directamente como un archivo ZIP o PDF según corresponda en el sistema de archivos o bien, usando la cabeceras recibidas, entregarlo en el navegador web al usuario.


Request body example:

```
{
    "xml": "WE1MIGVuIEJhc2U2NAo="
}
```

Responses:

- `200`
#### POST /api/utilidades/documentos/verificar_ted

Verificar TED de un DTE

Recurso que permite verificar el TED de un documento tributario electrónico cualquiera.

Responses:

- `200`
### Usuarios

#### GET /api/usuarios/perfil

Perfil de Usuario

Perfil de Usuario

Parameters:

- `auth2_token` (query, string) — Token para Autenticación Secundaria
- `login` (query, string) — Indica si la consulta es de una acción de inicio se sesión
- `` (header, string)
Responses:

- `200`
#### GET /api/usuarios/contribuyentes

Listado de Contribuyentes

Listado de Contribuyentes

Responses:

- `200` — Listado de Contribuyentes
#### POST /api/usuarios/validar_contrasenia

Validar contraseña del usuario

Validar contraseña del usuario

Request body example:

```
{
    "contrasenia": "123"
}
```

Responses:

- `200`
#### GET /api/dashboard/notificaciones/{contribuyente}

Notificaciones

Recurso que permite obtener las notificaciones que se pueden ver en la interfaz de LibreDTE para ser usadas fuera de LibreDTE.

Las notificaciones usan un caché para los resultados, y se actualizan cada 10 minutos. Debido a lo anterior, consultar las notificaciones en un tiempo inferior a 10 minutos no tiene sentido y no se recomienda.

Parameters:

- `cache` (query, string)
- `periodo` (query, string)
Responses:

- `200`
### Wizard

#### POST /api/wizard/contribuyente_info

Validar contribuyente SII

Validar contribuyente SII

Request body example:

```
{
    "clave": "{{EMPRESA_CLAVE}}",
    "rut": "76192083-9"
}
```

Responses:

- `200`
### Back Office

#### POST /api/sistema/libredte/servicios/habilitar/{rut}/{servicio}

Habilitar Servicio

Habilitar Servicio

Responses:

- `200`
#### POST /api/sistema/libredte/contribuyentes/abonar

Abonar Saldo a un Contribuyente

Solo es posible abonar saldo al Servicio Plus.

Otros servicios no tienen la modalidad de abonos.

Request body example:

```
{
    "contribuyente": "76192083-9",
    "dte": 33,
    "folio": 788
}
```

Responses:

- `200`
#### GET /api/sistema/libredte/telefonos/info/{telefono}

Información de un Teléfono

Permite obtener datos de un contribuyente asociado a un número de teléfono.

Se entrega:
- RUT del conbtribuyente
- Razón social del contribuyente
- Nombre del contacto asociado al contribuyente
- Email asociado al contribuyente

Este servicio es útil para poder tener el RUT y nombre de un cliente que no digitó el RUT en el IVR al llamar.

Parameters:

- `formato` (query, string) — `json` `text`
Responses:

- `200`
#### GET /api/sistema/libredte/contribuyentes/soporte/{rut}

¿Contribuyente tiene soporte?

Permite saber si un RUT tiene soporte vigente con SASCO SpA.

Se entregan los servicios que el RUT tiene asociados en caso de tener soporte.

El RUT puede ser ingresado con o sin guión, pero debe ir siempre con DV. Si el RUT termina en `K` puede ser ingresado un `0`.

Este servicio es útil para poder validar el RUT que ingresa el cliente en el IVR al llamar.

Parameters:

- `formato` (query, string) — `json` `text`
Responses:

- `200`
### Modelos

#### GET /api/sistema/general/division_geopolitica/comunas/index

Listado de recursos del modelo

Listado de recursos del modelo

Parameters:

- `format` (query, string) — `standard`
`datatables`
Responses:

- `200`
#### GET /api/sistema/general/division_geopolitica/comunas/show/{id}

Obtener un registro del modelo

Obtener un registro del modelo

Responses:

- `200`
#### GET /api/sistema/general/division_geopolitica/comunas/create

Datos para crear un registro en el modelo

Datos para crear un registro en el modelo

Responses:

- `200`
#### POST /api/sistema/general/division_geopolitica/comunas/store

Crear un registro en el modelo

Crear un registro en el modelo

Request body example:

```
{
    "data": {
        "codigo": "00000",
        "comuna": "Florencia",
        "provincia": "133"
    }
}
```

Responses:

- `200`
#### GET /api/sistema/general/division_geopolitica/comunas/edit/{id}

Datos para editar un registro del modelo

Datos para editar un registro del modelo

Responses:

- `200`
#### PUT /api/sistema/general/division_geopolitica/comunas/update/{id}

Actualizar un registro del modelo

Actualizar un registro del modelo

Request body example:

```
{
    "data": {
        "codigo": "00000",
        "comuna": "     Florencia <a></a>  <br/> <p></p>. ",
        "provincia": "133"
    }
}
```

Responses:

- `200`
#### DELETE /api/sistema/general/division_geopolitica/comunas/destroy/00000

Eliminar un registro del modelo

Eliminar un registro del modelo

Responses:

- `200`


---
Last updated on 25/08/2026

