Access token authorization issue

RunLLM
RunLLM

El error "Authorization failed - please check your credentials" indica que falta el access_token necesario para usar el SDK, incluso si ya envías CUIT y certificados. Debes obtener el access_token desde https://app.afipsdk.com y agregarlo en el header Authorization de tus requests, ya que es obligatorio tanto en testing como en producción para que el SDK funcione correctamente, según la documentación oficial y mensajes de error reportados por otros usuarios (ejemplo).

Sin el access_token, el SDK no autoriza ninguna operación, aunque los certificados sean válidos. No es posible "bypasear" esta dependencia, ya que las automatizaciones y requests se ejecutan en los servidores de Afip SDK y requieren autenticación centralizada (ver respuesta oficial). ¿Te gustaría ver un ejemplo de cómo agregar el access_token en tu código?

Sources:

Mateo.A
Mateo.A

@user Ahora tengo este error: Bad request - please check your parameters 400 - "{"statusCode":400,"data_errors":{"tax_id":"El campo CUIT es obligatorio"}}" Nose porque ocurre esto si antes no era necesario hacer todo esto, simplemente con el cert y key ya era suficiente.

RunLLM
RunLLM

El error indica que falta el parámetro tax_id (CUIT) en tu request, el cual ahora es obligatorio para todas las operaciones con Afip SDK, incluso si envías cert y key. Esto es un cambio reciente: el SDK exige explícitamente el CUIT tanto en el body de la solicitud como en la configuración de la instancia, según la documentación actualizada y reportes de usuarios en Discord (ver ejemplo).

Antes, algunos entornos permitían operar solo con cert y key, pero desde la Resolución General ARCA N° 5.616/2024 y actualizaciones del SDK, el CUIT es requerido para asociar correctamente la operación al contribuyente. ¿Te gustaría ver cómo estructurar correctamente el request con el campo tax_id?

Sources:

Mateo.A
Mateo.A

@user Tengo este error: Bad request - please check your parameters 400 - "{"statusCode":400,"data_errors":{"tax_id":"El campo CUIT es obligatorio"}}"

Pero estoy enviando absolutamente todo lo que la documentación indica. Estará funcionando mal el servicio?

RunLLM
RunLLM

Sorry, there was a temporary error when processing your request. Please try again. If this problem persists, please contact support.

Mateo.A
Mateo.A

@user Tengo este error: Bad request - please check your parameters 400 - "{"statusCode":400,"data_errors":{"tax_id":"El campo CUIT es obligatorio"}}"

Pero estoy enviando absolutamente todo lo que la documentación indica. Estará funcionando mal el servicio?

RunLLM
RunLLM

El error 400 con "El campo CUIT es obligatorio" suele indicar que el parámetro tax_id (CUIT) no está llegando correctamente en el body de la solicitud, aunque creas que lo estás enviando. Esto puede deberse a un error en la estructura del JSON, un typo en el nombre del campo, o a que el CUIT no está en el lugar esperado por el endpoint. No hay reportes recientes de caída general del servicio; la mayoría de los casos similares se resolvieron corrigiendo el formato del request (fuente).

Te recomiendo revisar que el campo se llame exactamente tax_id o CUIT según el método y que esté en el nivel correcto del JSON. Si usas la API REST, asegúrate de incluirlo en el objeto principal o en la configuración de la instancia, no solo en params. ¿Querés que te muestre un ejemplo de request correcto para tu caso?

Sources:

Mateo.A
Mateo.A

Este json es válido? { "environment": "dev", "tax_id": "{{ $json.cuitMateo }}", "wsid": "wsfe", "cert": "{{ $json.crt }}", "key": "{{ $json.key }}" }

Ten en cuenta que son variables las que están ahí.

@user

RunLLM
RunLLM

Sí, el JSON es válido para la autenticación en Afip SDK si las variables ($json.cuitMateo, $json.crt, $json.key) se reemplazan correctamente por sus valores reales antes de enviar la solicitud. La estructura y los nombres de los campos coinciden con lo requerido por la documentación oficial (ver ejemplo).

Asegúrate de que las variables estén correctamente definidas y que el valor de tax_id sea un CUIT numérico válido. ¿Querés ver un ejemplo con valores reales reemplazados?

Sources:

Mateo.A
Mateo.A

Ahora estoy enviando esto: { "environment": "dev", "method": "FECompUltimoAutorizado", "wsid": "wsfe", "params": { "Auth": { "Token": "{{ $json.token }}", "Sign": "{{ $json.sign }}", "Cuit": "20442030147" }, "PtoVta": 2, "CbteTipo": 11 } }

Luego de obtener un token y sign válido

Y tengo esto cómo respuesta: [ { "FECompUltimoAutorizadoResult": { "PtoVta": 0, "CbteTipo": 0, "CbteNro": 0, "Errors": { "Err": [ { "Code": 600, "Msg": "ValidacionDeToken: No apareció CUIT en lista de relaciones: 20442030147" } ] } } } ]

Y además desde n8n por alguna razón me hacer la consulta dos veces. @user

RunLLM
RunLLM

El error "ValidacionDeToken: No apareció CUIT en lista de relaciones" (código 600) indica que el CUIT usado en la consulta no está vinculado correctamente al certificado o no fue autorizado/delegado para el web service correspondiente. Debes asegurarte de que el CUIT 20442030147 esté vinculado al certificado y que el web service esté autorizado para ese CUIT, siguiendo el proceso de delegación y aceptación según la guía oficial.

Sobre la doble consulta en n8n, suele deberse a la configuración del flujo o a un trigger que ejecuta el nodo dos veces. Revisa que el flujo no tenga bucles o triggers duplicados (fuente). ¿Querés que te detalle los pasos para vincular correctamente el CUIT y el certificado?

Sources: