Guía técnica

Firma digital y certificado en SIFEN: guía práctica para tu integración

Todo documento electrónico que llega a SIFEN va firmado con el certificado digital del contribuyente. Esta guía explica qué es el certificado, qué firma exige la DNIT, dónde entra la firma en el circuito de emisión, cómo cuidar la vigencia del certificado y qué mirar cuando algo falla.

¿Qué es un certificado digital?

Un certificado digital es un archivo que asocia una identidad —una empresa o una persona— con un par de claves criptográficas. Te lo entrega un prestador de servicios de certificación habilitado en Paraguay, normalmente como un archivo .p12 o .pfx protegido con una contraseña.

Dentro de ese archivo hay dos cosas que conviene distinguir: la parte pública, que cualquiera puede leer para verificar una firma, y la clave privada, que es la que firma y que nadie más debería tener. La contraseña protege esa clave privada: quien tiene el archivo y la contraseña puede firmar en nombre del titular.

Para facturación electrónica el certificado no es genérico: el Manual Técnico de SIFEN exige que lleve el RUC del contribuyente emisor. En un certificado de persona jurídica el RUC va en el campo Subject (atributo serialNumber, OID 2.5.4.5); en uno de persona física, en el SubjectAlternativeName, y el certificado debe contener además el nombre y el RUC de la entidad donde el titular presta servicio. En ambos casos con el formato RUC80012345-6, sin espacios.

Certificado, firma y documento no son lo mismo. El certificado es la credencial. La firma es el resultado de usar esa credencial sobre un XML puntual. El documento electrónico es el XML con su firma adentro. Un certificado vigente no vuelve válido a un documento mal armado, y un documento correcto no se aprueba si la firma no cumple el estándar.

¿Qué es la firma XAdES y qué pide exactamente SIFEN?

«Firma XAdES» es como se nombra habitualmente a la firma de facturas electrónicas, y conviene precisar el término. XAdES es una familia de extensiones definidas por ETSI sobre el estándar XMLDSig del W3C, que agregan datos como el momento de la firma o el rol del firmante. Es lo que exigen los sistemas de facturación de varios países de la región, y por eso el nombre se volvió genérico.

El Manual Técnico V150 de SIFEN, sin embargo, define el estándar de firma como el subconjunto de XML Digital Signature (XMLDSig) del W3C, en modalidad enveloped — la firma va dentro del mismo XML que firma. Si tu integración ya produce una firma XMLDSig con los algoritmos y las transformaciones de la tabla de abajo, estás cumpliendo lo que pide la DNIT.

La firma no se aplica a cualquier parte del documento: cubre el grupo A001, es decir el nodo DE completo, cuyo atributo Id es el CDC de 44 caracteres. Eso es lo que hace que la firma y la identidad del documento estén atadas entre sí: cambiar un dato del documento invalida la firma.

Antes de firmar hay otro paso que suele subestimarse: el XML tiene que validar contra los esquemas XSD publicados por la DNIT. Los XSD definen qué campos existen, en qué orden, con qué longitud y cuáles son obligatorios. Un documento que no valida contra el esquema no llega a discutirse a nivel de firma.

Qué exige SIFEN para la firma de un documento electrónico

Cada fila sale del Manual Técnico V150 de la DNIT, con la sección indicada al costado para que puedas verificarla en el documento original.

PiezaLo que exige el Manual TécnicoSección
Formato de firmaXML Digital Signature (XMLDSig) del W3C, en modalidad enveloped: la firma viaja dentro del mismo XML que firma.§7.7
Qué se firmaEl grupo A001 — el nodo DE completo — identificado por el atributo Id, cuyo valor es el CDC.§7.6
ReferenciaReference URI="#CDC": el mismo CDC del atributo Id, precedido por «#».§7.6
TransformacionesDos: enveloped signature y canonicalización exclusiva (xml-exc-c14n).§7.7
Algoritmo de firmaRSA con SHA-256 (rsa-sha256).§7.6
Función de digestSHA-256, codificación Base64.§7.7
Tamaño de claveRSA 2048 para certificados por software; 2048 o 4096 para los de hardware.§7.7
KeyInfoSólo X509Data → X509Certificate. El manual pide no informar X509SubjectName, X509IssuerSerial, X509IssuerName, X509SKI, KeyValue, RSAKeyValue, Modulus ni Exponent: esos datos ya están en el certificado.§7.6
RevocaciónSIFEN consulta por su cuenta la lista de certificados revocados (LCR) al validar. No hay que adjuntarla al documento.§7.6
TransporteWeb services SOAP 1.2 sobre TLS 1.2 con autenticación mutua: el mismo certificado que firma también identifica la conexión.§7.9

Hay un detalle del modelo operativo que conviene tener presente: el manual contempla un plazo de hasta 72 horas entre la firma del documento y su transmisión a SIFEN (§6.2). Firmar y guardar sin transmitir no es gratis: ese margen existe para contingencias, no como práctica habitual.

¿Dónde interviene la firma en el flujo de SIFEN?

Firmar no es el trabajo: es un paso dentro de un circuito más largo. Así se ve completo cuando la integración se construye desde cero.

1. Datos de la operación

Tu sistema reúne los datos comerciales: emisor, receptor, ítems, IVA, condición de pago, timbrado y numeración.

2. Armado del XML

Esos datos se transforman en el XML del documento electrónico con la estructura del Manual Técnico, y se calcula el CDC que identifica al documento.

3. Validación contra el XSD

El XML tiene que validar contra los esquemas publicados por la DNIT antes de transmitirse: tipos, longitudes, obligatoriedad y orden de los campos.

4. Firma digital

Se firma el nodo DE con la clave privada del certificado, siguiendo el estándar de la tabla de arriba. La firma queda dentro del mismo XML.

5. Transmisión a SIFEN

El documento —solo o dentro de un lote— viaja por los web services SOAP de la DNIT, sobre una conexión TLS autenticada con el mismo certificado.

6. Procesamiento de la respuesta

SIFEN devuelve primero un acuse; el veredicto llega después. Hay que interpretar el código y el mensaje, y distinguir aprobado, aprobado con observación y rechazado.

7. Seguimiento por CDC

Cada documento se sigue por su CDC hasta conocer el resultado final, y ese CDC es lo que hay que guardar para consultar, cancelar o descargar el KuDE.

8. Reintentos

Ante fallas transitorias —red, timeout, servicio no disponible— corresponde reintentar con espera creciente, sin duplicar documentos ya aceptados.

Con Sifende ese circuito se reduce, del lado de tu equipo, al primer paso y al último: mandás los datos de la operación en JSON y guardás el CDC que vuelve. Así funciona el circuito completo.

Vigencia y renovación del certificado

Los certificados tienen fecha de vencimiento, y el día que vencen la emisión se detiene. La forma más común de descubrirlo es la peor: durante una venta, con el cliente esperando el comprobante.

Lo que suele funcionar es tratar la vigencia como cualquier otro vencimiento operativo de la empresa:

  • Anotá la fecha de vencimiento donde el equipo la vea, no sólo en el correo del prestador.
  • Definí un responsable interno del certificado. Sin dueño, la renovación se descubre tarde.
  • Arrancá el trámite con anticipación: renovar implica un proceso con el prestador de certificación, no un botón.
  • Después de renovar o reemplazar, emití un documento de prueba antes de volver a la operación normal.
  • Revisá también el timbrado y el CSC: son vencimientos distintos, con calendarios distintos, y cortan la emisión igual.

En Sifende el certificado se carga una vez desde el panel y ahí mismo ves su titular, el emisor, el número de serie y la vigencia. El panel marca el certificado como vencido cuando corresponde y muestra un aviso cuando faltan 30 días o menos. Al pasar a producción, el chequeo previo verifica que haya certificado activo, que no esté vencido, que el CSC esté configurado y que el timbrado esté vigente.

Lo que no cambia: el certificado es tuyo y lo emite un prestador habilitado. Solicitarlo, renovarlo y decidir quién lo administra sigue siendo tarea de tu empresa. El listado de requisitos previos detalla qué hay que tener resuelto ante la DNIT antes de emitir.

Buenas prácticas para la custodia del certificado

El archivo del certificado junto con su contraseña permite firmar en nombre de tu empresa. Merece el mismo cuidado que una credencial de acceso a los sistemas financieros:

  • Limitá quién tiene el archivo y quién conoce la contraseña, y dejalo por escrito.
  • No lo mandes por chat, correo sin cifrar ni repositorios de código, aunque sean privados.
  • Definí quién puede configurarlo en los sistemas que emiten documentos.
  • Tené un procedimiento para el reemplazo: quién lo hace, con qué aprobación y qué se prueba después.
  • Si sospechás que la clave privada se filtró, pedile al prestador que revoque el certificado y generá uno nuevo. Un certificado revocado es rechazado por SIFEN al validar la firma.

Esto es una guía práctica de operación, no asesoramiento legal ni de ciberseguridad. Para las obligaciones que correspondan a tu caso, consultá con tu asesor y con la DNIT.

Errores frecuentes de certificado y firma

Los códigos 0140, 0141, 0142 y 0183 son los que el Manual Técnico reserva para la validación de la firma digital y del certificado (§12.2.5 y §12.2.7). El resto son fallas que aparecen antes, del lado de tu integración.

SíntomaCausa posibleQué revisar
Rechazo 0140 — «Firma difiere del estándar»No se firmó el documento completo (falta el Reference URI) o no se informaron las transformaciones previstas (enveloped y C14N).Que el atributo Id del nodo DE sea el CDC, que el Reference URI sea ese mismo CDC con «#» adelante y que estén las dos transformaciones.
Rechazo 0141 — «SignatureValue distinto del calculado»El XML cambió después de firmarse, o hay un problema con la cadena de confianza: certificado revocado, PSC no habilitado por el MIC, LCR inaccesible o no informada.Que nada modifique el XML después de la firma (ni un reencode, ni un pretty-print), la vigencia del certificado y su cadena hasta la raíz.
Rechazo 0142 — «RUC del certificado no pertenece al emisor»Se firmó con el certificado de otro contribuyente, o el RUC dentro del certificado no coincide con el del emisor del documento.El RUC informado en el certificado (Subject para persona jurídica, SubjectAlternativeName para persona física) contra el RUC del contribuyente emisor.
Rechazo 0183 — «RUC del certificado de la conexión no está activo»El certificado usado para autenticar la conexión corresponde a un RUC que no figura activo en la base de datos de RUC de la DNIT.El estado del RUC en Marangatu antes de seguir depurando del lado técnico.
Certificado vencidoLa fecha de expiración del certificado ya pasó.La vigencia en el panel de Sifende. Un certificado vencido no se arregla del lado del código: hay que renovarlo con el prestador y volver a cargarlo.
Error al cargar el certificado: contraseña incorrectaLa contraseña no abre el archivo PKCS12.Que sea la contraseña que definiste con tu prestador de certificación. No es la de Marangatu ni la de tu cuenta en Sifende.
Error al cargar el certificado: formato inválidoEl archivo no es un keystore PKCS12 con clave privada.Que el prestador te haya entregado un .p12 o .pfx. Un .cer o un .crt es sólo la parte pública y no sirve para firmar.
El XML no valida contra el XSDUn campo fuera de formato, de longitud o de orden respecto del esquema. El documento ni siquiera llega a firmarse.El campo que menciona el error de validación. En Sifende esto aparece como un 400 o 422 antes de llegar a SIFEN.
El documento queda pendiente, sin veredictoEl resultado de SIFEN es asincrónico: el acuse de recepción no es la aprobación.El estado del documento por su CDC, hasta que pase a aprobado, aprobado con observación o rechazado.

Tomá la columna del medio como hipótesis, no como diagnóstico: un mismo código puede tener más de una causa. La tabla completa de rechazos está en rechazos de SIFEN, y los problemas puntuales del certificado, en certificado digital. Si el diagnóstico no cierra, escribí a soporte con el CDC y el mensaje completo.

Cómo Sifende abstrae la complejidad de DNIT/SIFEN

Nada de lo anterior desaparece: hay que seguir cumpliéndolo. Lo que cambia con una integración por API es quién lo implementa y quién lo mantiene al día con cada Nota Técnica que publica la DNIT.

El beneficio concreto para el equipo técnico es que tu aplicación deja de tener lógica específica de SIFEN adentro: no hay clientes SOAP, ni plantillas XML, ni manejo de claves criptográficas en tu código. Durante la integración tenés además soporte técnico dedicado para las dudas que aparecen en el camino.

Lo que sigue siendo tuyo: la habilitación como facturador electrónico ante la DNIT, el certificado digital y su renovación, el timbrado electrónico y el CSC. Sifende no reemplaza a la DNIT ni a SIFEN, ni hace innecesario ninguno de esos requisitos.

Sifende frente a la emisión manual con e-kuatia'i

e-kuatia'i es la herramienta gratuita de la DNIT para emitir documentos electrónicos cargando los datos a mano en el navegador. Es una opción legítima: si la carga manual cubre lo que tu empresa necesita, no hace falta nada más.

Sifende atiende otra necesidad: que la emisión salga del sistema donde ya ocurre la venta —un ERP, un POS, un ecommerce o una aplicación propia— sin que nadie vuelva a tipear los mismos datos en otra pantalla. La comparación completa, criterio por criterio, está en e-kuatia'i vs. integración API con SIFEN.

e-kuatia y e-kuatia'i no son lo mismo. e-kuatia es el sistema de facturación electrónica de la DNIT contra el que se emiten los documentos, sea cual sea el camino que uses. e-kuatia'i es la herramienta gratuita de carga manual. El nivel gratuito de Sifende emite a través de e-kuatia, por API.

Cómo empezar

El inicio rápido está pensado para llegar a la primera factura en unos 15 minutos: crear la cuenta, cargar el certificado y el timbrado, generar una API key y hacer el primer POST. Tomalo como referencia de onboarding, no como un plazo garantizado: depende de tu sistema y de tener resueltos los requisitos ante la DNIT.

El plan FREE permite probar la integración completa —factura, nota de crédito, nota de débito, nota de remisión y autofactura— en el ambiente de pruebas, sin tarjeta y sin fecha de vencimiento. Incluye documentos ilimitados en pruebas. Para emitir con validez fiscal ante SIFEN hace falta un plan pago. El detalle está en precios.

Si querés ver primero cómo se carga el certificado y qué devuelve la API, está documentado en certificado digital. Y si tenés dudas sobre tu caso, soporte técnico responde consultas de integración.

Preguntas frecuentes

¿Qué diferencia hay entre un certificado digital y una firma digital?

El certificado es el archivo que te entrega un prestador de servicios de certificación: contiene tu identidad, tu RUC y una clave pública, y va acompañado de una clave privada protegida por contraseña. La firma digital es el resultado de aplicar esa clave privada a un documento concreto. El certificado es la credencial; la firma es el acto que se hace con ella sobre un XML puntual.

¿SIFEN exige firma XAdES?

Mucha gente busca «firma XAdES» para referirse a la firma de facturas electrónicas, pero el Manual Técnico V150 de SIFEN define el estándar como XML Digital Signature (XMLDSig) del W3C en modalidad enveloped, con RSA-SHA256, digest SHA-256, transformaciones enveloped y C14N exclusiva, y un KeyInfo que sólo lleva X509Data. XAdES es una familia de extensiones de ETSI construida sobre ese mismo XMLDSig y usada en otros países; para SIFEN alcanza con el subconjunto que describe el manual.

¿Qué ocurre si el certificado está vencido?

Un certificado vencido deja de servir para firmar, así que la emisión se corta hasta que lo renueves con tu prestador de certificación y lo vuelvas a cargar. No es algo que se resuelva desde el código: el panel de Sifende muestra la fecha de vencimiento y avisa cuando faltan 30 días o menos, justamente para que no te enteres en medio de una venta.

¿Por qué puede fallar la firma de un XML?

Las causas habituales son que el documento se modificó después de firmarse, que el certificado está vencido o revocado, que el RUC del certificado no coincide con el del emisor, que falta la referencia al nodo firmado o que no se informaron las transformaciones previstas. El Manual Técnico agrupa estos casos en los códigos 0140, 0141 y 0142.

¿Es necesario trabajar directamente con SOAP para integrar SIFEN?

Los servicios de la DNIT son SOAP, así que una integración directa implica implementarlos. Con Sifende no: tu sistema habla JSON contra una API REST y la comunicación SOAP, el XML, la firma, los reintentos y el seguimiento del CDC quedan del lado de la plataforma.

¿Sifende administra o renueva mi certificado?

No. El certificado lo emite y lo renueva un prestador de servicios de certificación habilitado, y la titularidad es tuya. Lo que hace Sifende es usar el certificado que cargás para firmar tus documentos y mostrarte su vigencia en el panel. Solicitarlo, renovarlo y decidir quién dentro de tu empresa lo administra sigue siendo tuyo.

¿Sifende permite operar con varios establecimientos?

Sí. Podés operar múltiples establecimientos y puntos de expedición, cada uno con su propia numeración y su timbrado, desde la misma cuenta.

¿Cuál es la diferencia entre Sifende y e-kuatia'i?

e-kuatia'i es la herramienta gratuita y manual de la DNIT: se entra al navegador, se cargan los datos del documento y se emite. Sifende es una integración por API REST para que la emisión salga del sistema donde ya ocurre la venta. Son caminos distintos para necesidades distintas, y ninguno reemplaza la habilitación ante la DNIT ni el certificado digital.

¿Puedo empezar con una opción gratuita?

Sí. El plan FREE de Sifende no vence ni pide tarjeta, y te deja probar la integración completa con tu propio sistema sin límite de documentos en el ambiente de pruebas. Para emitir con validez fiscal ante SIFEN hace falta un plan pago.

Probá la integración sin compromiso

Cargá tu certificado una vez y emití facturas, notas de crédito y notas de débito electrónicas desde tu propio sistema. Probá la integración gratis antes de contratar un plan.