Resolución N° 5.616/2024. Más información

Usar web services de ARCA en NodeJS

Con pocas líneas de código

Ivan Muñoz feb 27, 2024 - Ultima edicion feb 22, 2025

Usar web services de ARCA en NodeJS

Requisitos previos

Para poder seguir esta guía, primero necesitarás:

Instalación

Lo primero es instalar la librería Afip.js

npm

npm install --save @afipsdk/afip.js

Yarn

yarn add @afipsdk/afip.js

Creamos una instancia de la clase Afip

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.

const Afip = require('@afipsdk/afip.js');

/**
 * CUIT vinculado al certificado
 *
 * Podes usar 20409378472 para desarrollo
 * sin necesidad de key o cert
 **/
const CUIT = 20409378472;

const afip = new Afip({
    access_token: 'TU_ACCESS_TOKEN',
    CUIT,
});

Creamos una instancia del web service

/**
 * Nombre del web service.
 * 
 * El nombre por el cual se llama al web service en ARCA.
 * Esto lo podes encontrar en el manual correspondiente. 
 * Por ej. el de factura electronica se llama 'wsfe', el de
 * comprobantes T se llama 'wsct'  
 **/
const servicio = 'wsct';

/**
 * Creamos el web service
 **/
const genericWebService = afip.WebService(servicio);

Llamamos al web service

Este es un ejemplo de como utilizar el wsct para obtener el ultimo comprobante autorizado.

Aquí veras como obtener un Token Authorization para el web service que acabamos de crear y como ejecutar un request básico

(async () => {
 /**
  * Obtenemos el Token Authorizataion
  **/
 const ta = await genericWebService.getTokenAuthorization();
 
 /**
  * Preparamos los datos que nos pide el web service
  * 
  * Este ejemplo es especifico para el wsct. En el manual
  * del web service que quieras utilizar encontraras que 
  * datos requiere cada metodo
  **/
 const data = {
  'authRequest': { 
   'token': ta.token,
   'sign' : ta.sign,
   'cuitRepresentada' : afip.CUIT
  },
  'codigoTipoComprobante': 195,
  'numeroPuntoVenta': 1
 };

 /**
  * Iniciamos la variable donde guardaremos el resultado
  **/
 let result;
 
 try {
  /**
   * Ejecutamos la request al web service
   * 
   * consultarUltimoComprobanteAutorizado es un metodo
   * de wsct, esto debes cambiarlo por el metodo que 
   * quieras utilizar
   **/
  result = await genericWebService.executeRequest('consultarUltimoComprobanteAutorizado', data);
 
  /**
   * Seteamos el resultado en nuestra variable.
   * 
   * consultarUltimoComprobanteAutorizadoReturn es especifico
   * de este metodo de este web service. Esto deberas adaptarlo
   * al web service que estes integrando
   **/
  result = result.consultarUltimoComprobanteAutorizadoReturn
 
  /**
   * Checkeamos si devolvio error en el resultado.
   * 
   * arrayErrores es especifico de este web service. 
   * Esto deberas adaptarlo al web service que estes integrando
   **/
  if (typeof result.arrayErrores !== 'undefined') {
   err = Array.isArray(result.arrayErrores.codigoDescripcion) ? result.arrayErrores.codigoDescripcion[0] : result.arrayErrores.codigoDescripcion;
   throw new Error(`(${err.codigo}) ${err.descripcion}`, err.codigo);
  }
 }
 catch(error){
 /**
  * Si hubo un error lo logeamos
  **/
 console.error(error);
}

/**
* Logeamos el resultado final
**/
console.log(result);
})();

Con esto ya podemos acceder a todos los web servicies de ARCA en NodeJS.

Lo único que nos queda es pasar a modo producción.


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.

Conéctate a ARCA hoy mismo

Evitá la complejidad de ARCA. Con Afip SDK integrás tu sistema en minutos y te enfocás en hacer crecer tu negocio.