Herramienta libredte-enterprise-export.py para descargar desde la API de LibreDTE Enterprise los DTE emitidos y recibidos de un contribuyente, por rango de períodos mensuales (YYYYMM). Genera XML en disco, conserva el listado por período en JSON y vuelca metadatos por documento en YAML.
- Python 3.11 o superior.
- Cuenta en LibreDTE con hash de API del usuario.
- RUT del contribuyente a respaldar.
En el directorio del repositorio:
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txtCopia la plantilla de variables y edítala:
cp .env-dist .envCompleta al menos hash y RUT (sin dígito verificador).
Si ya exportaste variables con el mismo nombre en el shell, tienen prioridad sobre el archivo .env (python-dotenv no las sobrescribe). Para forzar lo del .env, por ejemplo: unset LIBREDTE_ENTERPRISE_RUT.
Desde la raíz del proyecto (o indicando la ruta al script):
python libredte-enterprise-export.py \
--hash <hash_api> \
--rut <rut_sin_dv> \
--desde 202301 \
--hasta 202312Argumentos (todos opcionales salvo que no estén en .env; ver tabla de variables):
| Opción | Descripción |
|---|---|
--hash |
Hash de autenticación de la API (Basic: usuario X, contraseña el hash). |
--rut |
RUT del contribuyente sin DV. Acepta formatos con puntos o con DV en el valor. |
--desde |
Primer período YYYYMM (por defecto: mes en curso). |
--hasta |
Último período YYYYMM (por defecto: mes en curso). |
--url |
URL base de la API (por defecto https://libredte.cl). |
--meses-sin-cache-listado |
Meses calendario recientes cuyo listado.json no se lee de caché; 0 = caché en todos los períodos (por defecto 3). |
Prioridad: línea de comandos → variables de entorno → valores por defecto.
Para ver todas las opciones:
python libredte-enterprise-export.py --helpEjemplo de distribución en .env-dist:
| Variable | Uso |
|---|---|
LIBREDTE_ENTERPRISE_HASH |
Hash de API (equivalente a --hash). |
LIBREDTE_ENTERPRISE_RUT |
RUT sin DV (equivalente a --rut). |
LIBREDTE_ENTERPRISE_DESDE |
Período inicial YYYYMM. |
LIBREDTE_ENTERPRISE_HASTA |
Período final YYYYMM. |
LIBREDTE_ENTERPRISE_URL |
URL base de la API. |
LIBREDTE_ENTERPRISE_MESES_SIN_CACHE_LISTADO |
Entero: meses sin caché de listado; 0 desactiva la regla. |
Raíz por contribuyente: var/export/<rut>/.
- XML emitidos:
dte_emitidos/<YYYYmm>/<tipo:03d>/LibreDTE_<rut>-<dv>_T<tipo>F<folio>.xml - XML recibidos:
dte_recibidos/<YYYYmm>/<tipo:03d>/LibreDTE_<emisor>-<dv>_T<tipo>F<folio>.xml - Listado del período:
dte_emitidos/<YYYYmm>/listado.jsonydte_recibidos/<YYYYmm>/listado.json - Metadatos por documento: mismo path y nombre base que el XML, extensión
.yaml(contenido del objeto del listado para ese DTE).
Si el XML ya existe, no se vuelve a descargar. Los listados en JSON se reutilizan salvo la regla de “meses sin caché” y la respuesta 404 con lista vacía de la API (se trata como período sin documentos sin abortar).
- Listado: los últimos N meses calendario (configurable, por defecto 3) siempre se piden de nuevo a la API y se actualiza
listado.json. ConN=0se puede usar caché de listado en cualquier período si el archivo existe. - YAML: si el listado vino de caché y el
.yamlya existe, no se reescribe; si el listado es nuevo (API en esa corrida), se escriben o pisan todos los.yamlde ese listado.
El script libredte-enterprise-export.py se distribuye bajo GNU AGPL v3 (ver cabecera del archivo).