Skip to main content
Esta página reúne flujos que se apartan de la emisión estándar de un DTE: cada sección describe qué resuelve el caso, cuándo usarlo y cómo lucen la petición y la respuesta.

Contingencia

Solo Guatemala. El concepto de contingencia, tal como se describe aquí, corresponde a la regla de la SAT. No se encontró en el código una restricción explícita que impida usar numeroAcceso para otro país, pero tampoco evidencia de que aplique.
Una contingencia es un corte de conectividad (o del certificador/SAT) que le impide emitir un DTE en línea en el momento de la venta. Fegora no ofrece una cola de emisión offline — la contingencia ocurre en su propio sistema; lo que el API soporta es la reconciliación posterior:
1

Durante la contingencia, emita en su propio sistema

Genere usted mismo un número aleatorio único de 9 dígitos e imprímalo en la representación gráfica junto con el texto “Emisión en contingencia, obtenga el DTE Certificado en el sitio www.sat.gob.gt/efactura”.
2

Al restablecerse la conexión, envíe el documento a POST /dte

Use la misma estructura que un DTE normal, agregando el campo numeroAcceso con el número que generó en el paso anterior.
{
  "numeroAcceso": 123456789,
  "receptor": { "id": "CF", "nombre": "CONSUMIDOR FINAL" },
  "items": [
    { "descripcion": "Audífonos inalámbricos", "precioUnitario": 500 }
  ]
}
numeroAcceso es distinto del número de autorización que asigna el certificador: es el número de contingencia que usted generó, se graba en el XML y se refleja de vuelta en la respuesta.
{
  "id": "8F3A1C2E-9B7D-4E51-8A0F-1234567890AB",
  "numeroAcceso": 123456789,
  "tipo": "factura",
  "estado": "Certificado"
}

Facturas de exportación

Un DTE de exportación se declara con esExportacion: true y el bloque datosExportacion. Fegora aplica automáticamente la exención de IVA correspondiente — no es necesario indicar motivoExencionIva ni calcular el IVA como exento manualmente.
{
  "receptor": { "id": "CF", "nombre": "Comprador Extranjero Ejemplo" },
  "items": [
    { "descripcion": "Telas típicas variadas", "precioUnitario": 500 }
  ],
  "esExportacion": true,
  "datosExportacion": {
    "nombreConsignatario": "Importadora Ejemplo Ltda.",
    "direccionConsignatario": "Av. Principal 123, Ciudad Ejemplo",
    "incoterm": "CIF"
  }
}
CampoObligatorioDescripción
nombreConsignatarioNombre de quien recibe la mercadería en destino.
direccionConsignatarioDirección del consignatario.
incotermNo (recomendado)Si se envía, debe ser uno de: EXW, FCA, CPT, CIP, DAP, DPU, DDP, FAS, FOB, CFR, CIF.
codigoConsignatarioNoCódigo de referencia del consignatario.
nombreComprador / direccionComprador / codigoCompradorNoDatos del comprador, cuando difiere del consignatario.
nombreExportador / codigoExportadorNoDatos del exportador, cuando aplica.
otraReferenciaNoReferencia adicional libre (p. ej. número de orden).
Si el documento se marca como exportación (o el tipo es de exportación) y no se envía datosExportacion, el API rechaza la solicitud con 400 FEG_VALIDATION_ERROR (mensaje: “El DTE de exportacion requiere el campo datosExportacion”).
Solo Guatemala. Una exportación con receptor Consumidor Final (receptor.id: "CF") no puede tener un monto mayor o igual a Q2,500 (Acuerdo gubernativo 12-2023) — el API la rechaza antes de enviarla al certificador.
Cada país tiene su propio tipo de documento de exportación (factura de exportación en GT, FEX en SV, CEXP en DO) — vea el catálogo completo en Tipos de documento.

Abonos pactados (pagos a plazos)

abonosPactados[] declara uno o más pagos asociados al documento. Fegora los ordena por fecha y les asigna un número consecutivo automáticamente.
CampoTipoDescripción
fechadateFecha pactada del abono.
montonumberMonto del abono.
metodoPagostringForma de pago (uso libre; valores vistos en pruebas: EFECTIVO, CHEQUE, TARJETA_CREDITO, TRANSFERENCIA, CREDITO, BONOS, PERMUTA, NOTA_CREDITO, OTROS).
duracionstringDuración en formato ISO-8601 (p. ej. P10D, P1M). Opcional.
Al incluir abonosPactados en una factura (tipo: "factura" o sin indicar tipo), Fegora detecta automáticamente que se trata de una factura cambiaria y agrega el complemento SAT correspondiente — no es necesario indicar un tipo distinto (aunque tipo: "facturaCambiaria" también se acepta explícitamente).
{
  "receptor": { "id": "CF", "nombre": "CONSUMIDOR FINAL" },
  "items": [{ "descripcion": "Audífonos inalámbricos", "precioUnitario": 500 }],
  "abonosPactados": [
    { "fecha": "2026-08-14", "monto": 250 },
    { "fecha": "2026-09-14", "monto": 250 }
  ]
}

Plantillas de DTE

GET /plantilla/dte lista las plantillas de documento configuradas para una cuenta — útil para reutilizar una configuración de PDF o de tipos de documento ya definida, en vez de repetirla en cada integración.
curl -X GET "https://api.fegora.com/plantilla/dte?idCuenta=12345678" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...ejemplo"
[
  {
    "id": "3c6f9e2a-1d4b-4a8e-9c0f-7a1b2c3d4e5f",
    "idCuenta": "12345678",
    "nombre": "Plantilla facturación mensual",
    "tiposDte": "factura,notaCredito",
    "archivoUri": "https://cdn.fegora.com/plantillas/3c6f9e2a.../plantilla.xlsx"
  }
]

Envío por correo

POST /dte/{id}/email reenvía el documento certificado por correo electrónico.
curl -X POST https://api.fegora.com/dte/8F3A1C2E-9B7D-4E51-8A0F-1234567890AB/email \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...ejemplo"
Una solicitud exitosa responde 204 No Content.
El cuerpo de la petición acepta campos como destinatarios/additionalRecipients y mensaje/customMessage por compatibilidad, pero no tienen efecto: los destinatarios se resuelven automáticamente a partir del documento (el correo del receptor) y no se admite un mensaje personalizado. No dependa de estos campos para enviar a destinatarios adicionales o personalizar el mensaje.

Resguardo de XML

POST /dte/xml permite ingresar en Fegora un XML de DTE ya certificado por otro medio (por ejemplo, un sistema de respaldo o un documento migrado), en vez de emitirlo a través de POST /dte.
curl -X POST https://api.fegora.com/dte/xml \
  -H "Content-Type: application/json" \
  -d '{
        "xmlContent": "PD94bWwgdmVyc2lvbj0iMS4wIj8+...ejemplo-base64",
        "isBase64Encoded": true
      }'
curl -X POST https://api.fegora.com/dte/xml \
  -H "Content-Type: text/plain" \
  -d 'PD94bWwgdmVyc2lvbj0iMS4wIj8+...ejemplo-base64'
{
  "id": "2a7e9c1d-4f3b-4e8a-9c1d-7a1b2c3d4e5f",
  "serie": "2A7E9C1D",
  "numero": 1023,
  "numeroAcceso": "",
  "estado": "Certificado"
}
  • Acepta el XML en base64 (por defecto) o como texto plano — controlado por isBase64Encoded.
  • No requiere token de autenticación (Authorization).
  • Es idempotente respecto al número de autorización contenido en el XML: reenviar el mismo XML no crea un duplicado. No hay validación de unicidad sobre numeroTransaccion en este endpoint.

Recursos adjuntos

POST /dte/{id}/recurso agrega un archivo, una URL o una referencia a otro DTE relacionado, sobre un documento ya emitido.
curl -X POST https://api.fegora.com/dte/8F3A1C2E-9B7D-4E51-8A0F-1234567890AB/recurso \
  -H "Content-Type: application/json" \
  -d '{
        "tipo": "archivo",
        "nombreArchivo": "orden-compra.pdf",
        "archivoStringBase64": "JVBERi0xLjQKJ...ejemplo-base64",
        "descripcion": "Orden de compra del cliente"
      }'
CampoAplica a tipoDescripción
tipoarchivo, url o dte.
archivoStringBase64 + nombreArchivoarchivoContenido del archivo en base64 y su nombre.
uri (o url)urlDirección del recurso externo.
idDteRelacionadodteID del DTE relacionado.
descripcioncualquieraDescripción libre del recurso.
{
  "tipo": "archivo",
  "archivoUri": "https://cdn.fegora.com/recursos/8F3A1C2E-.../orden-compra.pdf",
  "descripcion": "Orden de compra del cliente"
}
No requiere token de autenticación. Los recursos agregados aparecen luego en el arreglo recursos[] al consultar el DTE con GET /dte/{id}.

Páginas relacionadas

Anulación de un DTE

Cuándo y cómo anular un documento certificado.

Tipos de documento

Catálogo de tipos de documento por país, incluida la exportación.

Datos adicionales

Claves reservadas por país que viajan en datosAdicionales.

Carga masiva (lotes)

Emitir muchos documentos a la vez con un archivo Excel.