ECAV SIFEN

API SIFEN: integración de facturación electrónica por REST

Enviá un JSON, recibí un identificador, y el gateway de ECAV firma, transmite a la DNIT y te devuelve el CDC, el XML y el KuDE. Es la misma API que usa el módulo de Odoo.

ECAV SIFEN API
Vista rápida
REST
API con JSON
50
documentos por solicitud en lote
HMAC
webhooks firmados
Qué es

¿Qué es la API SIFEN de ECAV y qué resuelve?

Es un gateway REST de facturación electrónica para Paraguay, pensado para sistemas que no son Odoo: un ERP propio o de terceros, un punto de venta, un e-commerce, una facturación recurrente. Vos armás el documento en JSON. El gateway construye el XML, lo valida, lo firma con tu certificado, lo envía a SIFEN, consulta el lote y guarda el XML y el KuDE.

El modelo es asíncrono: toda emisión responde 202 con un identificador, y el resultado se consulta o llega por webhook. No hay modo síncrono. La latencia promedio es de menos de 2 segundos, así que consultar el resultado cada segundo da una experiencia casi inmediata sin sostener una conexión abierta.

Si ya usás Odoo, probablemente no necesites la API: el módulo de Odoo usa este mismo gateway.

Autenticación

¿Cómo me autentico y qué URL uso?

  • La URL base de producción es https://sifen.ecav.com.py.
  • Cada solicitud lleva Authorization: Bearer sk_live_.... Para pruebas se usa una clave sk_test_....
  • La clave identifica a tu tenant. Una clave inválida o revocada devuelve 401.
  • El ambiente de SIFEN (prueba o producción) va en context.environment y tiene que ser coherente con el prefijo de la clave.

Para obtener una clave, escribinos. Antes de la primera llamada necesitás tener resueltos los requisitos de la DNIT: certificado .p12, habilitación como facturador electrónico, timbrado y CSC.

Emitir

¿Cómo emito una factura electrónica por API?

Se hace con un POST /v1/sifen/documents. El cuerpo tiene cuatro partes: document_kind (factura, autofactura, nota_credito, nota_debito o remision), invoice_data (el documento: receptor, ítems, condición de pago), params_data (el emisor y el timbrado) y context (certificado, CSC, ambiente y una referencia tuya).

Solicitud
curl -X POST https://sifen.ecav.com.py/v1/sifen/documents \
  -H "Authorization: Bearer sk_test_XXXXXXXXXXXXXXXX" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: FAC-2026-0001" \
  -d @factura.json
factura.json (datos ficticios)
{
  "document_kind": "factura",
  "invoice_data": {
    "establecimiento": "001",
    "punto": "001",
    "tipoTransaccion": 2,
    "tipoImpuesto": 1,
    "moneda": "PYG",
    "condicion": { "tipo": 1, "entregas": [{ "tipo": 1, "monto": 110000 }] },
    "cliente": { "ruc": "5012345-6", "razonSocial": "Cliente SA" },
    "items": [{ "descripcion": "Servicio mensual", "cantidad": 1, "precioUnitario": 110000 }]
  },
  "params_data": { "ruc": "80000000-7", "timbradoNumero": "12345678" },
  "context": {
    "certificate_b64": "<.p12 en base64>",
    "certificate_password": "<contraseña del .p12>",
    "csc": "<CSC>",
    "csc_id": "0001",
    "environment": "test",
    "document_ref": "FAC-2026-0001"
  }
}

El gateway responde de inmediato, sin esperar a la DNIT:

Respuesta
HTTP/1.1 202 Accepted

{
  "request_id": "req-8f3a1c2e9b7d4e60",
  "poll_url": "/v1/sifen/documents/req-8f3a1c2e9b7d4e60",
  "webhook_will_fire": true,
  "processing_delayed": false
}

Dos detalles que ahorran problemas:

  • Idempotency-Key. Si reintentás por un timeout con la misma clave, recibís el mismo request_id y el documento no se emite dos veces. La clave es única por tenant. Usá, por ejemplo, el identificador del documento en tu sistema.
  • Certificado. Va en context como certificate_b64 y certificate_password. Las demás formas de entregarlo están en el manual de integración.

La referencia completa de campos por tipo de documento, el código de verificación de webhooks y las opciones para el certificado no se publican acá: se entregan en el manual de integración cuando se activa tu cuenta. Pedí tu clave y te lo enviamos.

Consultar

¿Cómo consulto el resultado de un documento?

Con GET /v1/sifen/documents/{request_id o CDC}. Funciona con el identificador de la emisión o con el CDC del documento, y solo ves los de tu tenant.

Consulta
curl https://sifen.ecav.com.py/v1/sifen/documents/req-8f3a1c2e9b7d4e60 \
  -H "Authorization: Bearer sk_test_XXXXXXXXXXXXXXXX"
Respuesta (documento aprobado)
{
  "request_id": "req-8f3a1c2e9b7d4e60",
  "cdc": "01800000007001001000000122026110511234567892",
  "state": "accepted",
  "sifen_status_code": "0260",
  "sifen_status_message": "Autorización del DE satisfactoria",
  "xml_url": "<URL firmada del XML>",
  "kude_url": "<URL firmada del KuDE>",
  "extra": { "protocolo": "<número de autorización>" }
}

El campo state toma uno de estos valores: pending (encolado), signed (firmado, con CDC y XML, a la espera de la DNIT), accepted (aprobado), accepted_obs (aprobado con observación), rejected, cancelled, inutilized o error (error técnico, sin veredicto de SIFEN). sifen_status_code y sifen_status_message traen el código y el mensaje de la DNIT; extra.protocolo es el número de autorización que agrega la DNIT al documento.

Si necesitás la respuesta de la DNIT en ese momento y no la que ya tenemos registrada, POST /v1/sifen/documents/{id}/consult le pregunta a SIFEN con el certificado que enviás en context.

Webhooks

¿Cómo recibo el resultado por webhook, sin consultar?

Cada cambio de estado se puede entregar con un POST a tu URL. Las entregas van firmadas con HMAC-SHA256 con el secreto de tu webhook, y llevan cabeceras para verificar la firma, identificar el evento y descartar repetidas. La entrega es al menos una vez, así que una puede repetirse; si tu endpoint falla muchas veces seguidas, el gateway lo desactiva. Webhooks y consulta conviven: podés usar los dos. El código de verificación está en el manual de integración.

Endpoints

¿Qué otros endpoints tiene la API SIFEN?

EndpointPara qué sirve
POST /v1/sifen/documents Emitir un documento.
POST /v1/sifen/documents/batch Emitir hasta 50 documentos en una solicitud. Cada uno se valida por separado: uno inválido no tumba a los demás.
GET /v1/sifen/documents/{request_id o CDC} Consultar el estado y los enlaces al XML y al KuDE.
POST /v1/sifen/documents/{id}/consult Preguntarle a SIFEN en el momento.
POST /v1/sifen/documents/{cdc}/cancel Cancelar un documento aprobado, con su motivo.
POST /v1/sifen/range/inutilize Inutilizar un rango de numeración.
POST /v1/sifen/documents/{cdc}/nominacion y /transporte Eventos de nominación y de datos de transporte.
POST /v1/sifen/documents/{cdc}/kude Regenerar el KuDE.
POST /v1/sifen/receptor-events/... Eventos del receptor: conformidad, disconformidad, desconocimiento y notificación.
GET /v1/sifen/events/{request_id} Resultado de un evento (cancelación, inutilización, etc.).
GET /v1/sifen/ruc/{ruc} y /ruc-search Consultar el padrón de la DNIT por RUC o por nombre.

La consulta de RUC es la misma que ofrece la herramienta gratuita Consulta tu RUC. Para decodificar o validar un CDC sin código, usá el validador de CDC.

Errores

¿Qué códigos de respuesta devuelve?

CódigoCuándo
202 Documento encolado.
401 Falta la clave, o es inválida o está revocada.
402 Se agotó el límite de gasto del plan.
403 Suscripción suspendida o pausada.
404 El documento no existe o no es de tu tenant.
413 El cuerpo supera el tamaño máximo.
422 Falla la validación. La respuesta indica qué campo.
429 Cola saturada. Trae Retry-After: reintentá pasado ese tiempo.

Un documento que la DNIT rechaza no consume cuota: se descuenta solo cuando SIFEN lo acepta.

Pruebas

¿Cómo pruebo la integración sin emitir de verdad?

Con una clave sk_test_ y context.environment en test, el gateway usa el ambiente de pruebas de la DNIT. Según la guía de pruebas de la DNIT, allí el timbrado de prueba es el RUC sin dígito verificador, de 8 dígitos, y el documento lleva la leyenda de ambiente de prueba, que el gateway agrega. La DNIT ofrece además un prevalidador para revisar un XML antes de enviarlo. El primer mes de ECAV SIFEN es gratis y sin tarjeta.

Planes

¿Cuánto cuesta la API SIFEN?

Los planes son los de ECAV SIFEN, por volumen mensual de comprobantes, y valen para las tres vías (API, Odoo y portal). Hay más detalle en precios.

Emprendé
Gs. 100.000 /mes

Hasta 200 comprobantes por mes

Gs. 1.000.000 por año (2 meses gratis)

Empresa
Gs. 300.000 /mes

Comprobantes ilimitados (uso razonable) · IVA incluido

Gs. 3.000.000 por año (2 meses gratis)

Uso razonable en Empresa: a partir de 3.000 comprobantes por mes te contactamos para asegurarte el mejor plan.

Preguntas frecuentes

Preguntas frecuentes sobre la API SIFEN

¿La API es síncrona?

No. Toda emisión responde 202 con un request_id y el resultado se consulta con un GET o llega por webhook. La latencia promedio es de menos de 2 segundos.

¿Cómo evito emitir dos veces el mismo documento?

Enviá el encabezado Idempotency-Key con un valor único por operación, por ejemplo el identificador del documento en tu sistema. Si reintentás con la misma clave, recibís el mismo request_id sin una emisión nueva.

¿Puedo enviar varios documentos en una sola llamada?

Sí. POST /v1/sifen/documents/batch acepta hasta 50 documentos por solicitud; cada uno se valida y se encola por separado, y el gateway los agrupa en el mismo lote de SIFEN.

¿Qué pasa si la DNIT está caída?

El documento queda en proceso y no se pierde: el gateway reintenta el envío cuando la DNIT no responde, y tu sistema consulta el resultado por request_id hasta que haya veredicto, o lo recibe por webhook.

¿Cómo anulo un documento por API?

Con POST /v1/sifen/documents/{cdc}/cancel y un motivo. Si el plazo que fija la DNIT para ese tipo de documento ya venció, el gateway responde 422 con el detalle.

¿Dónde está la referencia completa de los campos?

En el manual de integración, que entregamos al activar tu cuenta: trae los campos de cada tipo de documento, el código para verificar webhooks y las opciones para el certificado. Escribinos para pedir tu clave y recibirlo.

¿Cuánto cuesta?

Desde Gs. 100.000 por mes según el volumen de comprobantes, con el primer mes gratis. Ver los planes más arriba y en precios.

Hablemos de tu empresa.

Agendá 30 minutos con un consultor. Sin guion, sin slides. Te mostramos el producto y te decimos si encaja.

WhatsApp