API · Facturación electrónica SIFEN

Emití SIFEN desde tu código

Integrá la facturación electrónica de la DNIT en tu sistema, ERP o e-commerce. Mandás un JSON; SEDIA arma el XML, lo firma, lo transmite y te devuelve el CDC.

emitir.sh
curl -X POST https://app.sedia.online/v1/comprobantes   -H "Authorization: Bearer set_xxxxxxxxxxxxxxxx"   -H "Idempotency-Key: fact-2026-000431"   -H "Content-Type: application/json"   -d '{
    "tipo_documento": "1",
    "moneda": "PYG",
    "datos_receptor": {
      "ruc": "80012345",
      "dv": "6",
      "razon_social": "Cliente S.A."
    },
    "datos_items": [{
      "descripcion": "Servicio mensual",
      "cantidad": 1,
      "precio_unitario": 1500000,
      "tasa_iva": 10
    }]
  }'

# 201
# { "id": "…", "cdc": "01800123456…", "estado": "APPROVED" }

Lo que trae la integración

REST + JSON

Rutas predecibles, respuestas con la misma forma y códigos HTTP estándar.

API key con scopes

Cada key pertenece a un emisor y lleva sus permisos: `comprobantes:write` para emitir y anular, y así con el resto.

Webhooks con reintentos

Te avisamos cuando cambia el estado. Lo que falla va a una cola de reintentos y a una DLQ.

Idempotencia por header

`Idempotency-Key` en el alta: un reintento devuelve el mismo documento en vez de quemar otro correlativo.

Homologación

Ambiente de prueba del SET para integrar antes de emitir con validez fiscal.

Cifrado y aislado

Tu certificado se guarda con AES-256-GCM. Cada RUC es una frontera de datos.

Qué pasa después del POST

01

Mandás el POST

Los datos comerciales en JSON. El emisor sale de tu API key.

02

SEDIA arma y firma el XML

Según el Manual Técnico, con tu certificado. Calcula el CDC y el QR.

03

Lo envía al SET y espera

Hasta 30 segundos. Si el SET no contesta a tiempo, queda ENQUEUED.

04

Te devuelve el CDC

Con el estado. Si quedó encolado, el webhook te avisa cuando resuelve.

Endpoints

El emisor NO viaja en la URL: sale de la API key, que pertenece a una empresa. Una key filtrada emite facturas a nombre de esa empresa: tratala como una credencial de producción.

POST/v1/comprobantesEmitir un DE: lo crea, lo firma y lo envía al SET de forma sincrónica
GET/v1/comprobantes/:cdcEstado y detalle de un documento por su CDC
GET/v1/comprobantes/:cdc/kudeDescargar el KuDE (PDF con QR)
POST/v1/comprobantes/:cdc/anularAnular un DE aprobado
GET/v1/ruc/:rucConsultar un RUC en el padrón del SET
GET/v1/catalogosListar los catálogos de referencia disponibles
GET/v1/catalogos/:nombreObtener un catálogo (departamentos, unidades de medida…)
GET/v1/webhooksListar los webhooks registrados
POST/v1/webhooksRegistrar un endpoint para los eventos de estado
DEL/v1/webhooks/:idEliminar un webhook

La emisión espera: el POST intenta enviar el documento al SET y contestarte, hasta 30 segundos. Si el emisor está en modo asincrónico o el SET no contesta a tiempo, el estado que recibís es ENQUEUED, y tu integración tiene que contemplar los dos casos. La referencia completa está en app.sedia.online/docs.

No consultes en bucle: te avisamos

Registrás una URL y SEDIA le manda un POST cuando el documento cambia de estado ante el SET. Lo que falla se reintenta y, si sigue fallando, queda en una cola de muertos que podés revisar.

POST a tu endpoint
// SEDIA avisa cuando cambia el estado ante el SET
{
  "evento": "sifen.documento.aprobado",
  "data": {
    "de_id": "…",
    "numero_documento": "001-001-0000431",
    "cdc": "01800123456…",
    "estado": "APPROVED",
    "fecha": "2026-09-01T10:24:00-04:00"
  }
}