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.
Crear un lote: POST /lote
Respuesta
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.
Formato del archivo Excel
- Extensión:
.xlsxúnicamente. La validación al crear el lote usa una librería que no lee el formato antiguo.xls— un archivo.xlses rechazado conLOT-INVEXC-2antes 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
OPERACIONenCREAR) seguida de una o más filas de detalle (una por ítem, sin valor enOPERACION), hasta la siguiente filaCREARo hasta 5 filas vacías consecutivas.
TIPO acepta factura, notaCredito, notaDebito y facturaEspecial (sin distinguir mayúsculas/minúsculas), y también los demás tipos de Guatemala que acepta POST /dte — por ejemplo recibo o reciboDonacion (vea Recibos en un lote). Los valores por defecto de la dirección del receptor (CIUDAD, GUATEMALA, código postal 01001, país GT) asumen un emisor guatemalteco.Columnas de encabezado del documento
Columnas de detalle (una fila por ítem)
Recibos en un lote
La SAT exige que todo recibo (TIPO = recibo) incluya la frase de exención de IVA, y el motivo depende de quién emite — no hay un valor único que Fegora pueda asignar por usted. En un recibo la SAT sólo acepta estos tres:
Cualquier otro motivo en un recibo lo rechaza el certificador (
FEL_RCP328).
Si la celda queda vacía, Fegora usa el motivo por defecto configurado en la cuenta (motivoExencionIva de la información fiscal, aunque la cuenta no esté marcada como exenta). Si la cuenta tampoco tiene uno, esa fila falla con FEG_DTE_CREA_RECI_001 y cuenta como error del lote.
Use
LINEA_TIPO = servicio (si se omite, el ítem se emite como bien) y deje vacías las columnas LINEA_IMPUESTO_1_*: un recibo no lleva IVA. Para reciboDonacion el motivo se asigna solo, pero el documento necesita el dato adicional TIPO_PERSONERIA (vea Tipos de documento).
Descargar el archivo del lote: GET /lote/{id}/archivo
El archivo subido contiene datos de sus receptores, así que no es público: la archivoUri que devuelve el lote es una referencia interna y no se puede abrir directamente. Para descargar el archivo original use:
Seguir el estado: GET /lote/{id}
cantidadOperacionesPendientesEjecucion sea mayor a cero, siga consultando este endpoint periódicamente hasta que llegue a cero.
Actualizar un lote: PATCH /lote/{id}
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:
Obtener los resultados por fila
Cuando el lote termina de procesarse,resultadoArchivoUri (si está disponible) apunta a un archivo con el detalle de cada fila, incluidas las que fallaron.
Páginas relacionadas
Carga masiva (guía de usuario)
La misma funcionalidad desde la aplicación web, sin usar el API directamente.
Casos especiales
Plantillas reutilizables, resguardo de XML y otros flujos fuera de la emisión estándar.