API de factura electrónica de ARCA
Como usarla paso a paso
Requisitos previos
Para poder seguir esta guía, primero necesitarás:
Si es tu primera vez conectándote con la facturación electrónica de ARCA, te recomiendo leer esta guía básica sobre su funcionamiento general.
Conectar tu sistema con la facturación electrónica de ARCA
Guía paso a paso
El primer paso para crear una factura electrónica de ARCA es obtener el Código de Autorización Electrónico o CAE.
Esto lo vamos a hacer utilizando el API de factura electrónica de Afip SDK, que nos permite conectarnos a los web services de ARCA sin complicarnos con el uso de SOAP y la autenticación.
Obtener la autorización
Lo primero que tenemos que hacer es obtener el “Token Authorization”, que sería la autorización en ARCA.
Para usar los web services de ARCA, se requiere un certificado digital, con Afip SDK puedes integrarte en modo desarrollo usando el CUIT 20409378472 sin necesidad de obtener un certificado, para poder integrarte lo más rápido posible.
Te dejo este enlace por si luego quieres usar tu propio certificado para desarrollo.
Debemos ejecutar una solicitud POST al endpoint:
https://app.afipsdk.com/api/v1/afip/auth
Incluí el header con tu token:
Authorization: Bearer TU_ACCESS_TOKEN_AQUI
{
"environment": "dev",
"tax_id": "20409378472",
"wsid": "wsfe"
}
Como respuesta nos devolverá
{
"expiration": "2024-03-13T00:42:59.845Z",
"token": "PD94bWwgd...",
"sign": "kEaCwSs36hpe..."
}
Aquí tenemos el token y el sign que nos dio ARCA para usar el web service. No es necesario que lo guardemos, Afip SDK se encarga de esto por nosotros. Debemos solicitarlo antes de cada llamada a los métodos del web service.
Obtener el número del último comprobante
Antes de crear la factura, necesitamos saber cuál es el último número de comprobante autorizado. Esto evita el error (10016) El número o fecha del comprobante no se corresponde con el próximo a autorizar.
Debemos ejecutar una solicitud POST al endpoint:
https://app.afipsdk.com/api/v1/afip/requests
Incluí nuevamente el header con tu token:
Authorization: Bearer TU_ACCESS_TOKEN_AQUI
{
"environment": "dev",
"method": "FECompUltimoAutorizado",
"wsid": "wsfe",
"params": {
"Auth" : {
"Token": "{{token}}",
"Sign": "{{sign}}",
"Cuit": "20409378472"
},
"PtoVta" : 1,
"CbteTipo" : 6
}
}
En la respuesta vas a encontrar el campo CbteNro dentro de FECompUltimoAutorizadoResult. El próximo número a utilizar es CbteNro + 1.
Crear la factura
Vamos a crear una Factura B por un importe de $121 usando el número de comprobante obtenido en el paso anterior
Debemos ejecutar una solicitud POST al endpoint
https://app.afipsdk.com/api/v1/afip/requests
Incluí nuevamente el header con tu token:
Authorization: Bearer TU_ACCESS_TOKEN_AQUI
{
"environment": "dev",
"method": "FECAESolicitar",
"wsid": "wsfe",
"params": {
"Auth" : {
"Token": "{{token}}",
"Sign": "{{sign}}",
"Cuit": "20409378472"
},
"FeCAEReq" : {
"FeCabReq" : {
"CantReg" : 1,
"PtoVta" : 1,
"CbteTipo" : 6
},
"FeDetReq" : {
"FECAEDetRequest" : {
"Concepto" : 1,
"DocTipo" : 99,
"DocNro" : 0,
"CbteDesde" : "{{nextVoucherNumber}}",
"CbteHasta" : "{{nextVoucherNumber}}",
"CbteFch" : 20250516,
"ImpTotal" : 121,
"ImpTotConc" : 0,
"ImpNeto" : 100,
"ImpOpEx" : 0,
"ImpIVA" : 21,
"ImpTrib" : 0,
"MonId" : "PES",
"MonCotiz" : 1,
"CondicionIVAReceptorId": 5,
"Iva" : {
"AlicIva": [{
"Id" : 5,
"BaseImp" : 100,
"Importe" : 21
}]
}
}
}
}
}
}
Debemos reemplazar {{token}}, {{sign}} y {{nextVoucherNumber}} con los valores obtenidos en los pasos anteriores.
En la respuesta, nos devolverá el CAE y su vencimiento:
{
...
"CAE": "12345678987654",
"CAEFchVto": "20240327"
...
}
Ejemplos de otros tipos de comprobantes
Problemas comunes
Si estas teniendo el error (10016) El numero o fecha del comprobante no se corresponde con el proximo a autorizar te recomiendo leer este artículo.
Error (10016) El numero o fecha del comprobante no se corresponde con el proximo a autorizar
Pasos para resolver este error
Si estas teniendo el error (10242) El campo Condicion IVA receptor es obligatorio. Consular metodo FEParamGetCondicionIvaReceptor te recomiendo leer este artículo.
Error (10242) El campo Condicion IVA receptor no es un valor valido/es obligatorio
Pasos para resolver este error
Eso es todo, ya tenemos el CAE correspondiente a la factura que acabamos de crear a través del API de factura electrónica de Afip SDK.
Lo único que nos queda es pasar a modo producción. Para más información de cómo hacerlo, pueden dirigirse a la documentación de la librería: https://docs.afipsdk.com/
Ante cualquier duda o pregunta al respecto, pueden resolverla rápidamente dentro de la Comunidad Afip SDK. Además, puedes unirte para estar al tanto de las novedades y problemas técnicos al usar los servicios de ARCA.