Guía de implementación
Probalo contra los webservices de ARCA
El mismo recorrido que describe el manual: autenticación, número de comprobante, CAE. Abajo tenés el XML mínimo y los PDF para profundizar.
<FECAESolicitar xmlns="http://ar.gov.afip.dif.FEV1/">
<Auth>
<Token>…</Token>
<Sign>…</Sign>
<Cuit>20123456789</Cuit>
</Auth>
<FeCAEReq> … </FeCAEReq>
</FECAESolicitar>
✓ Resultado A
CAE 71234567890123
vence en CAEFchVto (yyyyMMdd)
Introducción
ARCA (ex AFIP) expone facturación electrónica por SOAP/XML, no por REST JSON. Esta página ordena el flujo de los manuales oficiales para que puedas implementarlo en tu backend.
Primeros pasos
-
Homologá el CUIT Certificado + WSN
wsfe+ punto de venta. PDFs WSASS / WSAA en PDFs. -
Implementá WSAA TRA → CMS →
loginCms→ cacheá el TA. -
Implementá WSFEv1
FECompUltimoAutorizadoy luegoFECAESolicitar. -
Validá en HOMO Un comprobante con
Resultado=Ay CAE válido.
URLs
| Servicio | Homologación | Producción |
|---|---|---|
| WSAA | https://wsaahomo.afip.gov.ar/ws/services/LoginCms |
https://wsaa.afip.gov.ar/ws/services/LoginCms |
| WSFEv1 | https://wswhomo.afip.gov.ar/wsfev1/service.asmx |
https://servicios1.afip.gov.ar/wsfev1/service.asmx |
Namespace: http://ar.gov.afip.dif.FEV1/ · WSDL con ?WSDL.
SOAP
loginCms
PDF: WSAAmanualDev.pdf · Especificación 1.2.2
TRA
XML a firmarservice=wsfe
<loginTicketRequest version="1.0">
<header>
<uniqueId>…</uniqueId>
<generationTime>…</generationTime>
<expirationTime>…</expirationTime>
</header>
<service>wsfe</service>
</loginTicketRequest>
Firmar CMS (SHA1+RSA) → Base64 → loginCms → guardar token + sign (~12 h).
SOAP
FECompUltimoAutorizado
Bodyejemplo
<FECompUltimoAutorizado xmlns="http://ar.gov.afip.dif.FEV1/">
<Auth>…</Auth>
<PtoVta>1</PtoVta>
<CbteTipo>6</CbteTipo>
</FECompUltimoAutorizado>
Siguiente número = último + 1. CbteTipo habitual: 1=A · 6=B · 11=C.
SOAP
FECAESolicitar
PDF: wsfev1-RG-4291.pdf (V.4.8)
Detalle mínimoFactura B
<FECAEDetRequest>
<Concepto>1</Concepto>
<DocTipo>99</DocTipo>
<DocNro>0</DocNro>
<CbteDesde>43</CbteDesde>
<CbteHasta>43</CbteHasta>
<CbteFch>20260923</CbteFch>
<ImpTotal>121.00</ImpTotal>
<ImpNeto>100.00</ImpNeto>
<ImpIVA>21.00</ImpIVA>
<MonId>PES</MonId>
<MonCotiz>1</MonCotiz>
<CondicionIVAReceptorId>5</CondicionIVAReceptorId>
<Iva>…</Iva>
</FECAEDetRequest>
RG 5616: falta
CondicionIVAReceptorId → rechazo frecuente.
Catálogo: FEParamGetCondicionIvaReceptor.
Campos que más fallan
| Campo | Nota |
|---|---|
Auth | TA vigente + CUIT del cert |
CbteFch | yyyyMMdd |
AlicIva | No en tipo C; Ids vía FEParamGetTiposIva |
| Importes | Deben cuadrar |
Errores frecuentes
| Síntoma | Revisar |
|---|---|
| Cert / AC de confianza | Homo vs prod |
| No autorizado al servicio | Asociación WSN wsfe |
| TA ya válido | No pedir login de nuevo |
| 600 / 601 | Token, sign o CUIT |