Emita muchos DTE de una sola vez subiendo un archivo Excel: crear el lote, seguir su estado y obtener los resultados por fila.
Un lote permite emitir muchos DTE de una sola vez: en vez de llamar POST /dte documento por documento, se sube un archivo Excel con una fila por documento (y sus ítems), y un proceso asíncrono de Fegora emite cada documento por su cuenta.
Si prefiere no armar el archivo por API, la aplicación web de Fegora ofrece una pantalla de carga guiada — vea Carga masiva (guía de usuario).
Al crear el lote, Fegora ya valida el archivo y calcula cantidadOperaciones contando las filas no vacías de la columna OPERACION (menos el encabezado). Si el archivo no puede leerse, no tiene hojas, no tiene filas o falta la columna OPERACION, la solicitud falla con 400 y uno de los códigos LOT-INVEXC-2..LOT-INVEXC-5.
Extensión: .xlsx únicamente. La validación al crear el lote usa una librería que no lee el formato antiguo .xls — un archivo .xls es rechazado con LOT-INVEXC-2 antes de procesarse.
La primera fila debe contener los encabezados de columna (nombres exactos, sin distinguir mayúsculas/minúsculas).
Cada documento ocupa una fila de encabezado (con la columna OPERACION en CREAR) seguida de una o más filas de detalle (una por ítem, sin valor en OPERACION), hasta la siguiente fila CREAR o hasta 5 filas vacías consecutivas.
El procesador de lotes actual sólo reconoce TIPO: factura, notaCredito o facturaEspecial (sin distinguir mayúsculas/minúsculas). Para emitir otros tipos de documento en volumen (notaDebito, recibo, tipos SV/DO, etc.), use POST /dte directamente en un ciclo desde su sistema, o confirme con Fegora si el procesador de lotes ya soporta más tipos.
El valor de estado no sigue un catálogo cerrado ni una capitalización consistente en el API actual: al crear el lote se observa "Creado", y el proceso de emisión de Fegora luego lo actualiza a "enProceso" y finalmente "procesado" (minúscula). No existe un estado "Error" propio del lote — un lote puede terminar en "procesado" con cantidadOperacionesError mayor a cero, indicando que algunas filas fallaron aunque el lote en sí ya terminó de procesarse. Compare estado sin distinguir mayúsculas/minúsculas y guíese por los contadores (cantidadOperacionesEjecutadas, cantidadOperacionesError, cantidadOperacionesPendientesEjecucion) para el progreso real, no sólo por el texto de estado.
Mientras cantidadOperacionesPendientesEjecucion sea mayor a cero, siga consultando este endpoint periódicamente hasta que llegue a cero.
Fegora usa esta misma ruta internamente para reportar el avance del procesamiento. Como integrador normalmente sólo necesita leer el lote (GET /lote/{id}), pero la ruta de actualización acepta los mismos campos:
Cuando el lote termina de procesarse, resultadoArchivoUri (si está disponible) apunta a un archivo con el detalle de cada fila, incluidas las que fallaron.