Crear Factura Electrónica de AFIP en NodeJS
Con pocas líneas de código

Si es tu primera vez conectándote con la facturación electrónica de AFIP/ARCA, te recomiendo leer esta guía básica sobre su funcionamiento general.

Conectar tu sistema con la facturación electrónica de AFIP
Guía paso a paso
El primer paso para crear una factura electrónica de AFIP es obtener el Código de Autorización Electrónico o CAE.
Esto lo vamos a hacer utilizando Afip SDK que nos permite conectarnos a los web services de AFIP sin complicarnos con el uso de SOAP y la autenticación.
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
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({ CUIT: CUIT });
Crear la factura
Vamos a crear una Factura B por un importe de $121
const fecha = new Date(Date.now() - ((new Date()).getTimezoneOffset() * 60000)).toISOString().split('T')[0];
let data = {
'CantReg' : 1, // Cantidad de comprobantes a registrar
'PtoVta' : 1, // Punto de venta
'CbteTipo' : 6, // Tipo de comprobante (ver tipos disponibles)
'Concepto' : 1, // Concepto del Comprobante: (1)Productos, (2)Servicios, (3)Productos y Servicios
'DocTipo' : 99, // Tipo de documento del comprador (99 consumidor final, ver tipos disponibles)
'DocNro' : 0, // Número de documento del comprador (0 consumidor final)
'CbteDesde' : 1, // Número de comprobante o numero del primer comprobante en caso de ser mas de uno
'CbteHasta' : 1, // Número de comprobante o numero del último comprobante en caso de ser mas de uno
'CbteFch' : parseInt(fecha.replace(/-/g, '')), // (Opcional) Fecha del comprobante (yyyymmdd) o fecha actual si es nulo
'ImpTotal' : 121, // Importe total del comprobante
'ImpTotConc' : 0, // Importe neto no gravado
'ImpNeto' : 100, // Importe neto gravado
'ImpOpEx' : 0, // Importe exento de IVA
'ImpIVA' : 21, //Importe total de IVA
'ImpTrib' : 0, //Importe total de tributos
'MonId' : 'PES', //Tipo de moneda usada en el comprobante (ver tipos disponibles)('PES' para pesos argentinos)
'MonCotiz' : 1, // Cotización de la moneda usada (1 para pesos argentinos)
'Iva' : [ // (Opcional) Alícuotas asociadas al comprobante
{
'Id' : 5, // Id del tipo de IVA (5 para 21%)(ver tipos disponibles)
'BaseImp' : 100, // Base imponible
'Importe' : 21 // Importe
}
],
};
const res = await afip.ElectronicBilling.createVoucher(data);
Y por último mostramos el CAE y su vencimiento por pantalla.
console.log(res['CAE']); //CAE asignado el comprobante
console.log(res['CAEFchVto']); //Fecha de vencimiento del CAE (yyyy-mm-dd)
Ahora que tenemos el CAE ya podemos proceder a Crear PDF de AFIP en NodeJS.
Luego, 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/