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. La documentación oficial del webservice está publicada por el propio organismo.
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:
- Desde el portal de AFIP con clave fiscal, se accede a “Administrador de Relaciones de Clave Fiscal”.
- Se genera un CSR (Certificate Signing Request) — básicamente una solicitud de certificado que contiene la clave pública.
- AFIP firma ese CSR y devuelve el certificado (.crt). La clave privada queda en tu servidor.
- 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:
- 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.
- El TRA se envía al WSAA junto con el certificado digital. AFIP verifica la firma y la vigencia del certificado.
- 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.
- 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:
- 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. - Se construye el request de autorización con los datos del comprobante: tipo (factura A/B/C), número, punto de venta, documento y condición frente al IVA del receptor, concepto, importe neto, IVA, total.
- 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. - 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. Con el padrón de ARCA activado, consulta la condición, la razón social y el domicilio oficiales del CUIT. Si no hay datos, asume consumidor final.
La condición IVA del receptor ya no es opcional. Desde la RG 5616, FECAESolicitar lleva el campo CondicionIVAReceptorId y ARCA rechaza el comprobante que no lo informa (error 10246). Muchas integraciones viejas siguen sin mandarlo y empiezan a fallar sin un mensaje claro para el comerciante.
Lo que el comprobante tiene que mostrar además del CAE
El CAE no es lo único que hace válida una factura. En 2026 se sumaron varias exigencias que no pasan por el webservice sino por lo que se imprime:
- Identificación del consumidor final desde $10.000.000 con DNI, CUIL o CUIT (RG 5866).
- QR con la URL vigente de ARCA,
https://www.arca.gob.ar/fe/qr/. - Leyenda de Ingresos Brutos en las provincias adheridas al Régimen de Transparencia Fiscal al Consumidor. No se informa a ARCA: es texto impreso en el comprobante, y cada provincia define el suyo. Lo detallamos en transparencia fiscal de Ingresos Brutos en la factura.
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:
- Reintentos: si ARCA no responde, la facturación automática vuelve a intentar sola a los 2, 10 y 30 minutos. Mientras tanto, el pedido figura como “En curso” en la lista.
- Recuperación tras un corte: si la respuesta se perdió pero ARCA llegó a autorizar el comprobante, el plugin lo recupera en vez de emitir otro, y verifica que ese número sea de ese pedido y no de otro con el mismo importe.
- CAEA, solo contingencia: desde la RG 5782, el CAE anticipado (CAEA) quedó reservado para contingencias. El plugin trabaja con CAE y marca los puntos de venta CAEA como no utilizables.
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.
Fuentes: documentación de los webservices de factura electrónica de ARCA y manual del desarrollador WSFEv1, versión 4.7.