Repo de Afip.js https://github.com/AfipSDK/afip.js
@user Hola Ivan como estas? Estaba probando en modo desarrollo crear una factura C y tengo este error:
Error: (10016) El numero o fecha del comprobante no se corresponde con el proximo a autorizar.
Hasta ayer no me daba error, que puede ser?
Buenas Tobias, puede suceder cuando el numero de comprobante que estas enviando no corresponde al siguiente, pero si estas obteniendo el numero de ultimo comprobantes primero entonces es probable que el problema sea que el ultimo comprobante enviado se envio con una fecha futura, proba obtener la informacion de el ultimo comprobante y usar la misma fecha que se uso en ese
Hola.
const ws = afip.WebService('wsfecred')
Esto me da error: /Users/leolob/Desarrollo/Clientes/CPT/cpt_api/node_modules/@afipsdk/afip.js/src/Afip.js:352 options['service'] = service; ^
TypeError: Cannot set properties of undefined (setting 'service') at Afip.WebService (/Users/leolob/Desarrollo/Clientes/CPT/cpt_api/node_modules/@afipsdk/afip.js/src/Afip.js:352:21) at /Users/leolob/Desarrollo/Clientes/CPT/cpt_api/dist/BO/clientes.manual.BO.js:84:27 at step (/Users/leolob/Desarrollo/Clientes/CPT/cpt_api/dist/BO/clientes.manual.BO.js:33:23) at Object.next (/Users/leolob/Desarrollo/Clientes/CPT/cpt_api/dist/BO/clientes.manual.BO.js:14:53) at fulfilled (/Users/leolob/Desarrollo/Clientes/CPT/cpt_api/dist/BO/clientes.manual.BO.js:5:58) at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
Ponga lo que ponga en el parámetro, no me deja instanciar el ws.
Gracias @user .
Que version del SDK estas usando? Fijate de actualizar a la ultima
Hola. Ahí me respondiste por email. Si, mi error: estaba usando una versión viejita. Actualicé a la nueva, cambié la forma de mandar certificado y key, y va como piña. Todo genial. Gracias totales.
Hola, buenas tardes. Dejo una consulta, estaba utilizando los servicios de wscpe en testing y cuando llamo al metodo autorizarCPEAutomotor me devuelve este error: data: { code: 'Internal', message: 'Error: soap:Client: Error en la autenticacion: La Cuit x no esta relacionada con el conjunto { cuit solicitante}' Alguien me podra indicar a que se debe?
Buenas Flavio, que datos estas enviando?
este es mi controller:
const Afip = require('@afipsdk/afip.js'); const fs = require("fs"); const CUIT = 30650560821; const afip = new Afip({ CUIT: CUIT, cert: '', key:'', production: false });
const generar_cpe_cliente = async function (req, res) { if (req.user) { const ws = afip.WebService('wscpe'); const ta = await ws.getTokenAuthorization(); const data = { 'auth': { 'token': ta.token, 'sign': ta.sign, 'cuitRepresentada': afip.CUIT }, 'solicitud':{ 'cabecera': { 'tipoCP': 74, 'cuitSolicitante': CUIT, 'sucursal':1, 'nroOrden': 1 }, 'origen':{ 'productor':{ 'codProvincia':12, 'codLocalidad':4434 } }, 'correspondeRetiroProductor':false, 'esSolicitanteCampo':true, 'datosCarga':{ 'codGrano':23, 'cosecha':2223, 'pesoBruto':45000, 'pesoTara':15000 }, 'destino':{ 'cuit':30532041690, 'esDestinoCampo': false, 'codProvincia':12, 'codLocalidad':4434 }, 'destinatario':{ 'cuit':30532041690 }, 'transporte':{ 'cuitTransportista':30650560821, 'dominio':'zzz999', 'fechaHoraPartida':'2024-09-04T20:00:00', 'kmRecorrer':60, 'cuitChofer':20331898768, 'tarifa': 200.00, 'cuitPagadorFlete':30650560821, 'mercaderiaFumigada':true } } }; const rta = await ws.executeRequest('autorizarCPEAutomotor', data); res.status(500).send(rta); } };
module.exports = { generar_cpe_cliente };
Necesitas pedir datos de prueba a la AFIP. Manda un correo a [email protected]
Hola,
Quisiera un set de datos de pruebas para realizar la carta de porte electrónica en homologación. Mi CUIT es xxx
Gracias
ah ok, muchas gracias Ivan 😄
Buenaas, una consulta, se puede consultar por cuils ajenos para obtener una condicion fiscal del mismo?
Podes usar el padron de constancia de inscripción para obtener los detalles fiscales de cualquier cuit https://docs.afipsdk.com/paso-a-paso/web-services/padron-de-constancia-de-inscripcion
Buenas estoy teniendo el siguiente error al intenter obtener el ultimo numero de comprobante:
Node.js v18.20.4 Error: (501) Error interno de base de datos: - Metodo FECompUltimoAutorizado at ElectronicBilling._checkErrors (C:\Users\marti\OneDrive\Escritorio\explicacion\node_modules@afipsdk\afip.js\src\Class\ElectronicBilling.js:404:10) at ElectronicBilling.executeRequest (C:\Users\marti\OneDrive\Escritorio\explicacion\node_modules@afipsdk\afip.js\src\Class\ElectronicBilling.js:349:14) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) Error: (501) Error interno de base de datos: - Metodo FECompUltimoAutorizado Error: (501) Error interno de base de datos: - Metodo FECompUltimoAutorizado at ElectronicBilling._checkErrors (C:\Users\marti\OneDrive\Escritorio\explicacion\node_modules@afipsdk\afip.js\src\Class\ElectronicBilling.js:404:10) at ElectronicBilling.executeRequest (C:\Users\marti\OneDrive\Escritorio\explicacion\node_modules@afipsdk\afip.js\src\Class\ElectronicBilling.js:349:14) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async ElectronicBilling.getLastVoucher (C:\Users\marti\OneDrive\Escritorio\explicacion\node_modules@afipsdk\afip.js\src\Class\ElectronicBilling.js:66:11) at async C:\Users\marti\OneDrive\Escritorio\explicacion\index.js:34:30
entiendo que es un error de Afip puede ser?
Asi es, suele tener esos errores internos la afip que hay que esperar que resuelvan
Hola! Tengo una pregunta, que diferencia hay entre
afip.ElectronicBilling.createPDF({}) y afip.ElectronicBilling.createVoucher()
Las dos al ejecutarse registran en el afip? Cual sería la diferencia?
afip.ElectronicBilling.createVoucher() Registra en afip y devuelve el CAE, afip.ElectronicBilling.createPDF({}) crea el PDF nomas. Te recomiendo leer este post para entender mejor https://afipsdk.com/blog/conectar-tu-sistema-con-la-facturacion-electronica-de-afip/
Tengo una consulta conceptual, al momento de realizar una factura A , por ejemplo a AFIP , no es necesario enviarle a AFIP el detalle ? , entiendo que puedo generar el pdf y colocar todo el detalle. Pero AFIP no recibe ese detalle?
Hola buenas , alguien me puede explicar como integrar el afip SDK en una app Strapi ?
Buenas Lauti, al final estuvimos hablando por email, pudiste avanzar con esto?
Hola buenas tardes a todos. Estoy teniendo un problema para obtener constancia de incripcion siendo que el cliente tiene realizada la relacion, siempre me da Error getting Token Autorization Error: ns1:coe.notAuthorized: Computador no autorizado a acceder al servicio. El servicio en AFIP es Consulta de constancia de inscripción, esta bien?
basicamente estoy realizando esto
afip.RegisterInscriptionProof.getTaxpayerDetails(cuit);
Alguna idea de porque puede suceder?
Autorizo el web service del padron https://docs.afipsdk.com/paso-a-paso/tutoriales-pagina-de-afip/autorizar-web-service-de-produccion
Si es asi puede se que tarda en impactar
Hola Ivan! Si, el contador lo autorizo... Igual al parecer el problema esta con alias nuevo ya que con un alias viejo que estaba relacionado con Padron A5 (como se llamaba antes) solo crearon el CRT nuevo si funciona... 🙄
Si Ivan, con un CRT nuevo generado en el alias viejo funciona...
Buenas tardes, estoy realizando un codigo para consultar cuits rapidamente, ya estoy en produccion y pude revisar y consultar afip.RegisterInscriptionProof, pero lo que necesito es consultar un cuit independientemente de si es monotributo o inscripto para yo poder actualizar una lista de proveedores y catalogarlos correctamente.
Si queres acceso al padron alcance 10 debes pedir lo a AFIP, recomiendo usar el alcance 13 o el de constancia de inscripcion que es accesible para todos
Gracias
Buenas tardes! Estoy tratando de obtener los detalles del contribuyente , usando el metodo 'afip.RegisterScopeFive.getTaxpayerDetails' y le envio el CUIT de un monotributista en formato numerico y me devuelve el error 'Debe autorizar el uso del web service. Revise el tutorial https://docs.afipsdk.com/paso-a-paso/web-services. ns1:coe.notAuthorized', segui los pasos que indica el resultado de esos pasos de da '{ status: 'exists' }', luego vuelvo a intentar el primer metodo y me vuelve a dar error, alguien me ayudaria con este tema? Gracias
El padron alcance 5 se cambio por el de constancia de inscripcion, proba con ese mejor, aveces puede tardar un poco en impactar la autorizacion
Buenas Ivan! Estuve revisando en la plataforma de AFIP y tengo la la autorización de testing/homologación creada para usar el 'wsfe', de igual manera sigo el proceso de 'https://docs.afipsdk.com/paso-a-paso/web-services' para asegurarme que este autorizado el mismo me responde '{ status: 'exists' }' entiendo con esa respuesta que estoy autorizado para utilizar el metodo 'afip.RegisterInscriptionProof.getTaxpayerDetails' el cual me da el error 'message: 'Debe autorizar el uso del web service. Revise el tutorial https://docs.afipsdk.com/paso-a-paso/web-services. ns1:coe.notAuthorized'', alguien me daria una mano? Gracias y buen viernes!
El web service que debes autorizar es el "wsid": "ws_sr_constancia_inscripcion"
Ahhhh perfecto!
Buenas @user , como estas? Queria saber que WS utilizo para obtener todos los datos de un contribuyente, la idea es crear un formulario donde el cliente ingrese su CUIT muestre un boton "Consultar" y obtenga todos los datos de afip, muchas gracias.
https://docs.afipsdk.com/paso-a-paso/web-services/padron-de-constancia-de-inscripcion https://docs.afipsdk.com/paso-a-paso/web-services/padron-alcance-13 esos son los mas usados, cada uno te de diferentes datos, el de constancia de inscripcion es bastante completo.
Buenos días! Estoy teniendo problemas al escanear el qr que esta en la factura, el mismo lleva una url de AFIP + unos datos de la factura en base 64, al escanearlo debería de llevarte a una vista de afip y autocompletarte datos de la factura en esa vista, pero por alguna razón a algunos datos no me los autocompleta y mas abajo me da un msj que hay datos que estan incompletos y que los llene manualmente, pero quisiera que se autocomplete solos. Estoy usando la libreria que recomiendas en afip-sdk(qrcode) y usando los datos tal cual muestra: https://www.afip.gob.ar/fe/qr/documentos/QRespecificaciones.pdf , alguien sabe que podria ser? No encontre coódigo de ejemplo, estoy en modo desarrollo
tenes la url que estas generando? aver que puede tener mal
Fijate de respetar el tipo de dato (string o number)
Mal:
{
"ver":"1",
"fecha":"2024-10-14",
"cuit":20381085962,
"ptoVta":1,
"tipoCmp":11,
"nroCmp":120,
"importe":"2242.00",
"moneda":"PES",
"ctz":1,
"tipoDocRec":96,
"nroDocRec":"40679320",
"tipoCodAut":"E",
"codAut":"74422201890501"
}
Bien:
{
"ver":1,
"fecha":"2024-10-14",
"cuit":20381085962,
"ptoVta":1,
"tipoCmp":11,
"nroCmp":120,
"importe":2242,
"moneda":"PES",
"ctz":1,
"tipoDocRec":96,
"nroDocRec":40679320,
"tipoCodAut":"E",
"codAut":74422201890501
}
Muchas gracias Ivan! Enseguida lo reviso! Un genio la verdad!
Buenas @user hice los cambios que me marcaste, deje tal cual el objeto que uso, pero en la url generada estoy teniendo el siguiente error: BL4950286403740 . Esta es la url: https://www.afip.gob.ar/fe/qr/?p=eyJ2ZXIiOjEsImZlY2hhIjoiMjAyNC0xMC0xNSIsImN1aXQiOjIwMzgxMDg1OTYyLCJwdG9WdGEiOjEsInRpcG9DbXAiOjExLCJucm9DbXAiOjEzNSwiaW1wb3J0ZSI6MjI0MiwibW9uZWRhIjoiUEVTIiwiY3R6IjoxLCJ0aXBvRG9jUmVjIjo5NiwibnJvRG9jUmVjIjo0MDY3OTMyMCwidGlwb0NvZEF1dCI6IkUiLCJjb2RBdXQiOjc0NDIyMjAxOTQzODM2fQ y este el obj: { ver: 1, fecha: '2024-10-15', cuit: 20381085962, ptoVta: 1, tipoCmp: 11, nroCmp: 135, importe: 2242, moneda: 'PES', ctz: 1, tipoDocRec: 96, nroDocRec: 40679320, tipoCodAut: 'E', codAut: 74422201943836 } Estuve revisando y estoy enviando tal cual como me marcaste, gracias!
Mmm no le veo nada raro, y si lo pones como muestro abajo la url funciona bien, imagino que debe ser algun bug de AFIP en esa pagina
Yo creo que el objeto está mal, le faltan las comillas. Tendría que ser así.
{ "ver": 1, "fecha": "2024-10-15", "cuit": 20381085962, "ptoVta": 1, "tipoCmp": 11, "nroCmp": 135, "importe": 2242, "moneda": "PES", "ctz": 1, "tipoDocRec": 96, "nroDocRec": 40679320, "tipoCodAut": "E", "codAut": 74422201943836 }
Buenas tardes! Probé también hacer eso y me da el mismo problema, estaría mal que deje algunos campos vacíos y que el usuario deba de cargarlos si quiere consultar?
Yo acabo de probarlo tal cual y funciona, quizá está sucia la cadena base64
😲😲
Déjame que llego a casa y lo reviso!
Es verdad algo raro quedo en ese base64 porque agarre el mismo y lo desencoee y luego encodie de nuevo el miemo objeto y funciona bien https://www.afip.gob.ar/fe/qr/?p=eyJ2ZXIiOjEsImZlY2hhIjoiMjAyNC0xMC0xNSIsImN1aXQiOjIwMzgxMDg1OTYyLCJwdG9WdGEiOjEsInRpcG9DbXAiOjExLCJucm9DbXAiOjEzNSwiaW1wb3J0ZSI6MjI0MiwibW9uZWRhIjoiUEVTIiwiY3R6IjoxLCJ0aXBvRG9jUmVjIjo5NiwibnJvRG9jUmVjIjo0MDY3OTMyMCwidGlwb0NvZEF1dCI6IkUiLCJjb2RBdXQiOjc0NDIyMjAxOTQzODM2fQ==
Acabo de hacer una prueba y efectivamente estaba mal el codificado a base 64, estaba usando el metodo 'base64url' no sé de donde salio y el correcto es 'base64', muchas gracias!
Hoola! @user estoy intentando utilizar la libreria en una app basada en NestJS.
Veo este error al querer utilizarla como un custom provider.
TypeError: afip_js_1.default is not a constructor
Estaba editando 😄 . Si necesitas mas contexto puedo enviarte un mail con mas detalles de la implementacion. Pero en resumen, existen limitaciones al usar el sdk via imports? en lugar de require?
Si, tenes que tenes configurar de typescript. Creo que tenias que agregarle "esModuleInterop": true al tsconfig.json
Si googleas el error te sale info https://www.google.com/search?q=TypeError%3A+*.default+is+not+a+constructor
Ahi anduvo al parecer! Gracias! Estaba convencido que ya tenia esa config :/
Hola! ¿Cómo están? Consulta, a alguien más les está fallando el afip.ElectronicBilling.getLastVoucher ?
¿Saben si es algo temporal?
Es algo temporal, con esta reestructuracion de la AFIP a ARCA imagino que debe haber poca gente haciendose cargo de los sistemas
Hola gente, como están? Les hago una consulta, en los últimos días estuve teniendo problemas con mi integración de AFIP con dos errores en específico:
Emitir comprobante: Error: ns1:cms.sign.invalid Firma inválida o algoritmo no soportado.
Método CreateCert: Ocurrio un error, reintenta nuevamente o contacta a [email protected] si el problema persiste.
No realice ningún cambio ni actualización y antes no tenía estos problemas.
Estoy utilizando al versión @afipsdk/afip.js 1.1.1 con node.js 20.
@user
Hola @user, no sé cómo será en nodejs, pero normalmente ese error es cuando no se genera correctamente el archivo TRA.xml, cuando me ha pasado en PHP, lo he eliminado y se genera uno nuevo correctamente. Si lo probás, guardá una copia por las dudas. Puede ser caché, puede que se haya cambiado la fecha/hora del equipo en el que estás ejecutando la solicitud.
Buenas, una consulta, que código tiene una factura a un cliente con iva exento?
Porque estoy en la duda si tengo que ponerle el id de 0% o otro
Genial! Muchas gracias
Buenas tardes, cual es la propiedad para asignar la condición frente al IVA? No logré encontrar la información en la documentación. Muchas gracias de antemano
Estimo será eso? Cómo indico si es por ejemplo Responsable Inscripto, IVA exento, etc el receptor de la factura?
@user en la imagen que está arriba de tu primer comentario están los códigos de iva y su descripción.
Muchas gracias! Si no tenía muy claro en que propiedad dentro del objeto debía declararlo
Hola gente! Tengo una consulta, quiero realizar una consulta al Padrón de constancia de inscripción en productivo (https://docs.afipsdk.com/paso-a-paso/web-services/padron-de-constancia-de-inscripcion). tengo mi access token pero cuando realizo la petición me responde un error 500. Estuve buscando por acá para ver si encontraba alguna solución pero no encontré nada. Desde ya gracias!
Buenas gente! Una consulta, no entiendo mucho del tema AFIP y las ticketeras, un cliente me pidio conectarle el sistema que ya tiene integrado el SDK a la impresora fiscal de su negocio. La impresora es como una impresora mas a la cual solamente le envió los datos para que imprima y listo o hay que hacer algún tipo de conexión especial?
Exacto, es como una impresora mas, lo unico especial es que debes obtener el CAE con el web service de facturacion electronica y ponerlo junto con los demas datos del comprobante
Ahhh genial. Muchas gracias Ivan
Imprimen PDF directamente?
que?
Preguntaba si la impresora fiscal imprime PDF o utiliza alguna libreria específica?
Porque me ha tocado lidiar con una impresora termica
@user mirate eso: https://afipsdk.com/blog/crear-pdf-de-afip-en-nodejs/
Muchas gracias!
faultstring: 'Este token no le permite actuar en representacion de la CUIT.
probe en postman y me devuelve un token y un sign que uso para hacer la request del ws_sr_constancia_inscripcion y me devuelve lo mismo que Este token no le permite actuar en representacion de la CUIT
estas usando tu CUIT?
estaba usado el de la empresa, por lo que pude deducir hay algun problema con el .crt y .key que ya tenia generado desde afip. Ahora probe generarlos desde node con afip.CreateCert(username, password, alias) y me anda el getTaxpayerDetails. Indudablemente algún quilombo hay con ese certificado. Gracias, voy a usar el generado mediante el llamado!
Ya lei! Si no me equivoco xfa corrijanme. Es que yo con el CAE , y con el vencimiento recien puedo empezar a realizar la factura. Entonces despues tendria que hacer un ejs o algo similar al bill.html para que sea dinamico y se vaya creando con los datos que yo quiera no?
graciass , estaba re perdido
y una vez que pase a produccion cuando yo genere la factura ya deberia de figurar en la pagina de afip en la seccion de consultas
eso mismo
por ahora en entorno desarrollo no puedo visualizar en ningun lado no?