Documentación de la API

Integra la facturación electrónica FEL de Guatemala en tu sistema. URL base: https://apifel.voltgo.net

Autenticación

Todas las llamadas a /v1/* requieren tu API key en el header X-Api-Key (o el parámetro ?k=).

X-Api-Key: fel_tu_api_key

La encontrás en tu panel → ⚙️ Configuración. También ahí conectás las credenciales de tu certificador (EcoFactura u otro) — sin eso la API no puede firmar documentos.

Integraciones server-to-server: las rutas /v1/ y /api/ aceptan llamadas sin User-Agent — no necesitás simular un navegador.

POST /v1/factura

Emite y certifica una factura FEL. Devuelve el UUID de autorización y los enlaces del documento.

Cuerpo (JSON)

CampoTipoDescripción
nitstringopcionalNIT del receptor. Default CF (consumidor final).
nombrestringopcionalNombre del receptor. Default "Consumidor Final".
direccionstringopcionalDirección del receptor.
montonumber*Total de la venta — crea un solo ítem genérico. *Requerido si no enviás items.
descripcionstringopcionalDetalle del ítem cuando usás monto.
itemsarray*Detalle línea por línea (ver abajo).

Items

CampoAliasDefaultDescripción
cod—GENCódigo del producto/servicio.
nomdescripcion"Item"Descripción (máx. 120 caracteres).
cancantidad1Cantidad.
preciomonto—Precio unitario (debe ser > 0).
um—UNIUnidad de medida.
bienSer—BB = bien, S = servicio.

Ejemplo

# Venta simple
curl -X POST https://apifel.voltgo.net/v1/factura \
  -H "X-Api-Key: fel_tu_api_key" \
  -H "Content-Type: application/json" \
  -d '{"nit":"CF","nombre":"José Martínez","monto":250.00,"descripcion":"Venta mostrador"}'

# Con detalle de ítems
curl -X POST https://apifel.voltgo.net/v1/factura \
  -H "X-Api-Key: fel_tu_api_key" \
  -H "Content-Type: application/json" \
  -d '{"nit":"1234567-8","nombre":"Distribuidora X","items":[
    {"nom":"Producto A","can":2,"precio":100},
    {"nom":"Servicio B","can":1,"precio":50,"bienSer":"S"}
  ]}'

Respuesta 200

{
  "ok": true,
  "uuid": "DFC48A87-F496-4008-9B1F-7574A382DBF0",   ← número de autorización SAT
  "serie": "DFC48A87",
  "numero": "4103487496",
  "pdf_url": "https://apifel.voltgo.net/v1/dte/DFC48A87-…-A382DBF0.pdf",
  "xml_url": "https://apifel.voltgo.net/v1/dte/DFC48A87-…-A382DBF0.xml"
}
Idempotencia: cada llamada crea un documento nuevo. Si tu sistema reintenta por timeout, verificá primero si la factura ya se creó (aparece en tu panel → Facturas) antes de reintentar, o usá la consulta de NIT para confirmar. Si por accidente se emite duplicada, podés anular una.

Descargar el documento

GET/v1/dte/{uuid}.pdf — abre el PDF directo en el navegador (sirve para mostrarla al cliente o descargarla desde tu sistema).

GET/v1/dte/{uuid}.xml — el XML firmado/certificado.

Los enlaces no requieren autenticación — el UUID actúa como llave (no es adivinable). Podés mandarle el pdf_url a tu cliente final por el canal que uses (tu sistema, correo, WhatsApp desde tu número, etc.).
La API no envía WhatsApp. El envío por WhatsApp lo hace FELisa cuando facturás desde el bot o el panel. Desde la API recibís los links y tu sistema decide cómo entregar el documento.

GET /v1/receptor/{nit}

Consulta el nombre y dirección registrados en SAT para un NIT o DPI (DPI<numero>), antes de facturar.

curl https://apifel.voltgo.net/v1/receptor/1234567-8 \
  -H "X-Api-Key: fel_tu_api_key"

# DPI
curl https://apifel.voltgo.net/v1/receptor/DPI12345678901 \
  -H "X-Api-Key: fel_tu_api_key"

Respuesta

{
  "ok": true,
  "nombre": "JOSÉ MARTÍNEZ",
  "direccion": "GUATEMALA, GUATEMALA"
}
Si responde ok:false con codigo:"1051", el NIT existe pero el certificador aún no lo tiene dado de alta — debe registrarse ante SAT (con EcoFactura lo gestiona el proveedor). Si hay urgencia podés emitir con "nit":"CF".

POST /v1/anular

Anula un documento certificado. La anulación también se certifica y queda inválida ante SAT.

curl -X POST https://apifel.voltgo.net/v1/anular \
  -H "X-Api-Key: fel_tu_api_key" \
  -H "Content-Type: application/json" \
  -d '{"uuid":"DFC48A87-…","motivo":"Emitida por error"}'

Respuesta

{ "ok": true, "uuid": "DFC48A87-…", "estado": "anulada" }

Solo se pueden anular documentos con estado certificada.

Errores

Los errores siempre responden { "ok": false, "error": "…" }:

HTTPCausaQué hacer
400items o monto requerido / precio inválido / certificador sin credencialesRevisá el cuerpo; si es el certificador, cargá las credenciales en el panel.
401INVALID_API_KEYVerificá el header X-Api-Key.
402PLAN_VENCIDOLa prueba o el plan venció — el cliente renueva en su panel.
403Firewall (sec-guard)No debería pasar en integraciones — si lo ves, escribinos por el ticket de soporte.
404uuid no encontradoEl UUID no existe o no pertenece a tu cuenta.
429Límite mensual del planSe alcanzó el tope de facturas del mes — subí de plan en el panel.
502El certificador rechazó o no respondióRevisá error; suele ser credenciales vencidas o NIT no registrado.

Notas

• Las facturas emitidas por API aparecen igual en tu panel → Facturas, cuentan para el límite del plan y salen en los reportes (marcadas como vía api).

• ¿Dudas o un certificador distinto? Abrí un ticket desde tu panel → Soporte — respondemos por ahí y te avisamos por WhatsApp.