Integración Técnica con ARCA: Factura Electrónica 2026
Cómo integrar técnicamente con ARCA (ex-AFIP) para factura electrónica: webservices, certificados, esquemas XML.

ARCA (ex-AFIP) es el componente compliance más crítico para empresas argentinas. Integración directa con webservices o vía partner. Opción técnica para developers.
Lecturas relacionadas: integración con ARCA en distribuidora y compliance digital empresas argentinas 2026.
Webservices ARCA
WSAA (Web Services de Autenticación y Autorización)
Genera Ticket de Acceso (TA) para autenticación. Válido 12 horas. Renovación automática.
Inputs: certificado digital + clave privada + servicio solicitado. Output: TA + sign + token expiration.
WSFEv1 (Factura Electrónica)
El servicio principal:
- FECAESolicitar: solicita CAE para comprobantes
- FECompUltimoAutorizado: último número emitido
- FECompConsultar: consulta comprobante existente
WSFEXv1 (exportación)
Para empresas que exportan servicios.
WSMTXCA (con detalle de items)
Versión más detallada que WSFEv1. Incluye items individuales.
Certificado digital
Generación
- Generar key pair RSA en server
- Generar CSR (Certificate Signing Request)
- Subir CSR a ARCA admin panel
- Descargar certificate firmado por ARCA
Validez
- 1 año normalmente
- Renovación 30 días antes del vencimiento
- Same key pair puede renovar (no regenerate)
Storage seguro
- Certificate + private key en backend (no client)
- Cifrado at rest
- Access control estricto
- Audit log de uso
Schema XML
Request típico (FECAESolicitar)
<FECAERequest>
<FeCabReq>
<CantReg>1</CantReg>
<PtoVta>5</PtoVta>
<CbteTipo>1</CbteTipo> <!-- Factura A -->
</FeCabReq>
<FeDetReq>
<FECAEDetRequest>
<Concepto>1</Concepto> <!-- Productos -->
<DocTipo>80</DocTipo> <!-- CUIT -->
<DocNro>20123456789</DocNro>
<CbteDesde>1</CbteDesde>
<CbteHasta>1</CbteHasta>
<CbteFch>20260919</CbteFch>
<ImpTotal>121.00</ImpTotal>
<ImpTotConc>0.00</ImpTotConc>
<ImpNeto>100.00</ImpNeto>
<ImpOpEx>0.00</ImpOpEx>
<ImpIVA>21.00</ImpIVA>
<ImpTrib>0.00</ImpTrib>
<MonId>PES</MonId>
<MonCotiz>1</MonCotiz>
<Iva>
<AlicIva>
<Id>5</Id> <!-- 21% -->
<BaseImp>100.00</BaseImp>
<Importe>21.00</Importe>
</AlicIva>
</Iva>
</FECAEDetRequest>
</FeDetReq>
</FECAERequest>
Response
<FECAEResponse>
<FeCabResp>
<Cuit>20123456789</Cuit>
<PtoVta>5</PtoVta>
<CbteTipo>1</CbteTipo>
<FchProceso>20260919</FchProceso>
<CantReg>1</CantReg>
<Resultado>A</Resultado> <!-- A=Aprobado -->
</FeCabResp>
<FeDetResp>
<FECAEDetResponse>
<CAE>71234567890123</CAE>
<CAEFchVto>20260929</CAEFchVto>
<Resultado>A</Resultado>
</FECAEDetResponse>
</FeDetResp>
</FECAEResponse>
Manejo de errores
Errores comunes
- 10005: vencimiento CAE
- 10010: número duplicado
- 10015: alícuota IVA inválida
- 10043: actividad incompatible
Estrategia
- Retry con backoff exponencial (3 intentos)
- Errores no recuperables: marcar comprobante "pendiente revisión"
- Logs detallados con request + response
- Alerta si tasa de error >2%
Tooling
Librerías cliente
- Python: pyafipws, afip-soap
- Node.js: afip.ts, afipsdk
- Ruby: afipws gem
- PHP: paquetes varios
Partners (alternativa)
- Afipy: API REST simple, USD 30-150/mes
- Tango: ERP con FE incluida
- Bejerman: similar
Para 95% de pymes: partner es más simple.
Costos
Integración directa
- Implementación: 4-8 semanas
- Mantenimiento: ongoing (cambios de schemas + alícuotas)
- Costo recurrente: USD 0
Vía partner
- Implementación: 1-3 semanas
- Mantenimiento: delegado al partner
- Costo recurrente: USD 30-150/mes
Workflow recomendado en producción
Cuando ARCA queda dentro de un proyecto más amplio, suele ir como parte del paquete de digitalización de procesos que automatiza facturación, cobranzas e impuestos en conjunto.
Cola asincrónica
Generar CAE no debería bloquear UI:
- Sistema crea comprobante con status
pending_cae - Job en background invoca WSFEv1
- Si OK: actualiza status
approved+ persistir CAE + vencimiento - Si error: status
failed+ retry según política - UI consulta status periódicamente o via WebSocket
Idempotencia
ARCA responde "10010 número duplicado" si reintentás con mismo número. Implementar:
- Lock en DB sobre el número antes de invocar API
- Si timeout sin respuesta: consultar
FECompConsultarantes de retry - Nunca incrementar número en cliente, siempre server-side
Numeración correlativa
Punto de venta + tipo de comprobante = serie correlativa obligatoria. Si saltás un número = error. Implementar:
- Tabla
comprobante_countercon (pto_vta, cbte_tipo) PK + último número - Transaccional: leer + incrementar + invocar ARCA en misma TX
- Audit cuando hay holes (señal de bug)
Casos especiales
Anulación / Nota de crédito
No se "anula" CAE, se emite Nota de Crédito. Type-mapping:
- Factura A (1) → NC A (3)
- Factura B (6) → NC B (8)
- Factura C (11) → NC C (13)
Bonificaciones
Campo ImpTrib para tributos adicionales. Bonificaciones se descuentan del ImpNeto antes de calcular IVA.
Múltiples alícuotas IVA
Factura puede tener líneas con diferente IVA (10.5%, 21%, 27%). Schema soporta múltiples <AlicIva> items, sumarizar en ImpIVA total.
Exportación de servicios
WSFEXv1 con CbteTipo 19 (factura E). Cliente sin CUIT requiere CUIT genérico (50000000016) o ID extranjero.
Monotributo
WSFEv1 igual pero limitado a categorías específicas. Validar topes anuales.
Sandbox vs producción
ARCA tiene 2 ambientes:
- Homologación: testing libre, sin valor fiscal. URL
wsaahomo.afip.gov.ar - Producción: valor fiscal real. URL
wsaa.afip.gov.ar
Dev workflow: certificado de homologación → integración + tests → solicitar certificado de producción → cutover.
Errores típicos en implementación
1. Certificado en repo Git
NUNCA. Usar secret manager (Vercel env vars, AWS SSM, Doppler).
2. Timezone bug
ARCA espera fecha en formato YYYYMMDD timezone AR. Usar America/Argentina/Buenos_Aires consistentemente. UTC desfasa 3 horas → comprobantes con fecha errada.
3. Caché TA mal implementado
TA dura 12hs. Si no cacheás = invocás WSAA cada request = ARCA banea por abuse. Cachear en Redis con TTL 11hs y refresh proactivo.
4. Decimales mal redondeados
ARCA es estricto: 2 decimales para pesos, alícuotas calculadas exactas. Off-by-1 cent → error. Usar Decimal (Python) o BigNumber (JS), nunca float.
5. Sin tests con sandbox
Deploy a producción sin testing en homologación = bugs en clientes reales.
Cuándo conviene partner vs integración directa
Partner (Afipy, Tango, Bejerman)
- Pyme con <200 facturas/mes
- Sin equipo técnico
- Time-to-market crítico
- Costo USD 30-150/mes asumible
Integración directa
- Empresa con volumen alto (>500 facturas/mes)
- Equipo técnico in-house
- Casos especiales (multi-empresa, integraciones complejas)
- Customización profunda del workflow
- Considerar 200+ horas iniciales + mantenimiento ongoing
Cierre
Para developers que necesitan integración directa con ARCA, este artículo da el roadmap técnico. Para mayoría de pymes, partner es más simple + barato a 12-24 meses.
Decisión clave: si el negocio es solo "facturar lo que venda", partner gana. Si la facturación es parte de un workflow más complejo (multi-empresa, multi-jurisdicción, IIBB en serio), integración directa habilita customización imposible vía partner.
Más profundo: integración con ARCA en distribuidora, compliance digital empresas argentinas, 10 casos de automatización empresarial. O cotizá tu caso.