Error 401 ("Unauthorized") in Afip SDK means you need an access_token to use the SDK in production. You must log in at https://app.afipsdk.com to obtain one and include it in your requests as described in the documentation. Without this token, production API calls will be rejected with a 401 error.
For more details on handling this error and obtaining the access token, see the Afip SDK Documentation and this Discord discussion. Would you like step-by-step instructions?
Sources:
@user ya obtuve el token de acceso, estoy instanciando afip así this.afipInstance = new Afip({ CUIT: AFIP_CONFIG.CUIT, cert: AFIP_CONFIG.CERTIFICATES.CERT, key: AFIP_CONFIG.CERTIFICATES.KEY, production: AFIP_CONFIG.PRODUCTION, accessToken: AFIP_CONFIG.ACCESS_TOKEN, })
El error está en el nombre del parámetro: debe ser access_token (con guion bajo), no accessToken (camelCase). Cámbialo a:
this.afipInstance = new Afip({
CUIT: AFIP_CONFIG.CUIT,
cert: AFIP_CONFIG.CERTIFICATES.CERT,
key: AFIP_CONFIG.CERTIFICATES.KEY,
production: AFIP_CONFIG.PRODUCTION,
access_token: AFIP_CONFIG.ACCESS_TOKEN,
})
Según la documentación oficial, el parámetro correcto es access_token. ¿Te gustaría más detalles sobre la configuración?
Sources:
@user y este error? [Nest] 20916 - 28/07/2025, 12:53:58 WARN [AfipService] 🟡 Estado general OK, pero servicio de facturación no disponible: [Nest] 20916 - 28/07/2025, 12:53:58 WARN [AfipService] (11002) El punto de venta no se encuentra habilitado a usar en el presente WS. Ver metodo FEParamGetPtosVenta
El error (11002) indica que el punto de venta no está habilitado para el web service de facturación electrónica. Debes dar de alta un punto de venta compatible desde el servicio "Administración de puntos de venta y domicilios" en AFIP, eligiendo la opción correspondiente según tu condición fiscal y asociándolo al web service adecuado.
Para más detalles sobre cómo crear y habilitar el punto de venta, consulta la guía oficial de Afip SDK. ¿Necesitás el paso a paso?
Sources:
Parece que los puntos de venta están correctamente dados de alta y habilitados, pero el error persiste. Es probable que el error (11002) se deba a que el número de punto de venta que usás en la solicitud no coincide con los configurados para el tipo de comprobante (por ejemplo, usar el punto 10 para Factura A, 11 para Factura B, etc.), o que estés usando un punto de venta dado de baja (verifica que FchBaja sea "NULL") o bloqueado.
Según la documentación y experiencias de la comunidad y Discord, asegúrate de que el punto de venta usado en tu request coincida exactamente con el tipo de comprobante y esté activo. ¿Querés que te ayude a revisar cómo armar el request correctamente?
Sources:
@user Sí ayudame
Debes asegurarte de que, al crear la factura, el campo PtoVta coincida con el punto de venta habilitado y correcto para el tipo de comprobante. Por ejemplo, para Factura A usa el punto 10, para Factura B el 11, y para ticket fiscal el 12, según tu configuración. Además, verifica que el punto de venta no esté dado de baja (FchBaja debe ser "NULL") ni bloqueado.
Ejemplo en JavaScript para Factura A:
const data = {
CantReg: 1,
PtoVta: 10, // Punto de venta para Factura A
CbteTipo: 1, // Tipo de comprobante: 1 = Factura A
// ...otros campos requeridos
};
const res = await afip.ElectronicBilling.createVoucher(data);
Si el error persiste, revisa que el CUIT usado sea el mismo con el que se dieron de alta los puntos de venta y que el certificado corresponda a ese CUIT. Más detalles en la documentación de errores frecuentes. ¿Te gustaría que te ayude a armar el request completo para tu caso?
Sources:
@user const voucherData = { CantReg: 1, PtoVta: 10, // Punto de venta para Factura A CbteTipo: 1, // Tipo de comprobante Factura A Concepto: 1, DocTipo: 80, // CUIT DocNro: 20284486049, // CUIT sin guiones CbteDesde: 123, // Número de comprobante CbteHasta: 123, // Mismo número CbteFch: "20241220", // Fecha formato YYYYMMDD ImpTotal: 3000.00, // Total del comprobante ImpTotConc: 0, // Importe no gravado ImpNeto: 2479.34, // Neto sin IVA ImpOpEx: 0, // Operaciones exentas ImpIVA: 520.66, // IVA calculado ImpTrib: 0, // Tributos MonId: "PES", // Moneda pesos MonCotiz: 1, // Cotización CondicionIVAReceptorId: 1, // Responsable Inscripto (para Factura A) Iva: [ // Detalle de IVA { Id: 5, // Alícuota 21% BaseImp: 2479.34, // Base imponible Importe: 520.66 // Importe IVA } ] }; esta es la estructura
La estructura de tu objeto voucherData es correcta para emitir una Factura A con el punto de venta 10, siempre que ese punto esté habilitado para Factura A y el CUIT/certificado coincidan. Asegúrate de que el número de comprobante (CbteDesde y CbteHasta) sea el siguiente al último autorizado para ese punto y tipo, y que la fecha (CbteFch) sea igual o posterior a la del último comprobante emitido, ya que de lo contrario recibirás errores como el 10016 o 11002.
Puedes consultar el último comprobante autorizado con getLastVoucher(puntoDeVenta, tipoDeComprobante) antes de emitir uno nuevo, como indica la documentación oficial. ¿Te muestro cómo hacerlo paso a paso?
Sources: