Cómo funciona la facturación electrónica
en WooCommerce: perspectiva técnica

Si estás evaluando integrar facturación electrónica en tu tienda WooCommerce y querés entender exactamente qué pasa por detrás — no solo "instalar el plugin y listo" — este artículo es para vos. Explicamos el flujo técnico completo desde WooCommerce hasta AFIP/ARCA, sin simplificar de más.

El webservice de facturación electrónica de AFIP/ARCA

AFIP (actualmente denominada ARCA) expone una serie de webservices SOAP a través de los cuales cualquier sistema puede emitir comprobantes electrónicos de forma programática. El webservice principal para facturación es el WSFE (Webservice de Facturación Electrónica), al que se accede vía HTTPS.

Para consumir el WSFE se necesitan dos componentes:

  • WSAA (Webservice de Autenticación y Autorización): es el servicio de autenticación de AFIP. Antes de poder emitir facturas, el sistema debe obtener un token de acceso (TA) presentando un certificado digital válido.
  • WSFE: una vez autenticado con el token, el sistema puede llamar a los métodos de facturación: consultar tipos de comprobante, obtener el último número emitido, solicitar CAE, etc.

El certificado digital: qué es y para qué sirve

El certificado digital es el mecanismo que usa AFIP para verificar que quien se conecta al webservice es realmente el titular del CUIT. Técnicamente es un par de claves criptográficas (pública/privada) en formato X.509.

El proceso para obtenerlo:

  1. Desde el portal de AFIP con clave fiscal, se accede a "Administrador de Relaciones de Clave Fiscal".
  2. Se genera un CSR (Certificate Signing Request) — básicamente una solicitud de certificado que contiene la clave pública.
  3. AFIP firma ese CSR y devuelve el certificado (.crt). La clave privada queda en tu servidor.
  4. Ese par certificado + clave privada se carga en el plugin para que pueda firmar las peticiones al WSAA.
💡 Vigencia del certificado: los certificados de AFIP tienen una vigencia de 2 años. Al vencerse, hay que renovarlos repitiendo el proceso. El plugin puede configurarse para alertar con anticipación cuando el certificado esté por vencer.

El flujo de autenticación con WSAA

Cada vez que el plugin necesita comunicarse con AFIP, primero verifica si tiene un token de acceso (TA) válido en caché. Si el token expiró o no existe, ejecuta el flujo de autenticación:

1 El plugin genera un TRA (Ticket de Requerimiento de Acceso): un XML firmado con la clave privada que indica el servicio al que quiere acceder (WSFE) y el período de validez.
2 El TRA se envía al WSAA junto con el certificado digital. AFIP verifica la firma y la vigencia del certificado.
3 AFIP devuelve un TA (Token de Acceso) con vigencia de 12 horas: un token firmado por AFIP que incluye el token en sí y un sign.
4 El plugin almacena el TA en caché. Durante las próximas 12 horas puede emitir todas las facturas que necesite sin volver a autenticarse.

El flujo de emisión de una factura

Con el token válido, la emisión de un comprobante sigue este flujo:

1 El plugin consulta el último número de comprobante emitido en el punto de venta configurado (método FECompUltimoAutorizado). Esto evita duplicados aunque el servidor se haya reiniciado.
2 Se construye el request de autorización con los datos del comprobante: tipo (factura A/B/C), número, punto de venta, CUIT del receptor, concepto, importe neto, IVA, total.
3 Se envía la solicitud al WSFE con el token de acceso (método FECAESolicitar). AFIP procesa el comprobante y devuelve el CAE (Código de Autorización Electrónico) y su fecha de vencimiento.
4 El plugin almacena el CAE en el pedido de WooCommerce, genera el PDF con el código de barras bidimensional requerido por AFIP y lo envía al cliente por email.

Cómo se determina el tipo de factura

El tipo de comprobante a emitir depende de dos variables: la condición frente al IVA del emisor (vos) y la del receptor (el cliente).

  • Emisor Responsable Inscripto + Receptor Responsable Inscripto: Factura A (con desglose de IVA).
  • Emisor Responsable Inscripto + Receptor Consumidor Final o Exento: Factura B (IVA incluido en el precio).
  • Emisor Monotributista: Factura C en todos los casos (sin IVA discriminado).

El plugin determina la condición del receptor a partir del perfil del cliente en WooCommerce. Si el cliente ingresó su CUIT y condición IVA en el checkout (o en su perfil), el plugin lo usa. Si no hay datos, asume consumidor final.

Qué pasa cuando AFIP no responde

El webservice de AFIP tiene mantenimientos programados (generalmente de madrugada) y ocasionalmente caídas no planificadas. Un plugin bien implementado maneja estos escenarios:

  • Timeout: si AFIP no responde en el tiempo esperado, el plugin reintenta automáticamente N veces antes de marcar el comprobante como pendiente.
  • Comprobante pendiente: los pedidos cuya factura no pudo emitirse quedan marcados como "pendiente de facturación" y pueden reintentarse manualmente o en el próximo ciclo automático.
  • Modo de contingencia: AFIP permite emitir comprobantes en modo de contingencia cuando el WSFE no está disponible. El CAE se obtiene de forma diferida cuando el servicio se restablece.

La diferencia entre conexión directa e intermediarios

Con un servicio intermediario, el flujo es:

WooCommerce → API del intermediario → Webservice AFIP → CAE → Intermediario → WooCommerce

Con conexión directa:

WooCommerce → Webservice AFIP → CAE → WooCommerce

El intermediario agrega latencia, un punto de falla adicional y un costo recurrente. En términos técnicos, no aporta nada que no pueda hacer la conexión directa — su valor es simplificar la implementación para quien no quiere lidiar con certificados y SOAP. Pero ese valor tiene un precio mensual.

Plugin Factura Electrónica AFIP/ARCA para WooCommerce

Conexión directa al webservice. Sin intermediarios, sin cupos. $89 USD pago único con instalación incluida.

Ver plugin →

Preguntas frecuentes

¿El plugin usa SOAP o REST para conectarse a AFIP?

AFIP expone sus webservices en SOAP (XML sobre HTTPS). No hay una API REST oficial de AFIP para facturación electrónica — los servicios que dicen usar REST de AFIP son en realidad intermediarios que exponen una API REST propia y traducen internamente a SOAP.

¿Cuánto tarda AFIP en responder con el CAE?

En condiciones normales, la respuesta del webservice WSFE llega en menos de 2 segundos. En momentos de alta demanda (cierre de mes, por ejemplo) puede subir a 5-10 segundos. El plugin maneja estos tiempos de forma asíncrona para no bloquear la carga de tu tienda.

¿El plugin guarda las claves privadas de forma segura?

Sí. Las claves se almacenan en la base de datos de WordPress con las mismas medidas de seguridad que el resto de las opciones del sitio. Se recomienda que el servidor tenga correctamente configurados los permisos de archivos y acceso a la base de datos, como en cualquier instalación de WordPress segura.

¿Puedo ver los logs de las llamadas al webservice de AFIP?

Sí. El plugin mantiene un registro de cada llamada al webservice con el request, la respuesta y el código de resultado de AFIP. Es útil para diagnosticar problemas o verificar el funcionamiento de la integración.

También puede interesarte:

¡Hablemos por WhatsApp!