UNPKG

nodefact

Version:

Biblioteca para facturación electrónica en Perú con Node.js. Compatible con UBL 2.1 y servicios web de SUNAT.

120 lines (90 loc) 2.6 kB
# NodeFact Biblioteca para facturación electrónica en Perú, compatible con los requerimientos de SUNAT. ## Instalación ```bash npm install nodefact ``` ## Características - Generación de XMLs según los esquemas UBL 2.1 - Firma digital de documentos XML - Comunicación con los servicios web de SUNAT - Validación de documentos - Generación de representaciones imprimibles (PDF) ## Documentos Soportados - Facturas y Boletas (UBL 2.1) - Notas de Crédito (UBL 2.1) - Notas de Débito (UBL 2.1) - Guías de Remisión (UBL estándar y 2022) - Comprobantes de Retención - Comprobantes de Percepción - Resúmenes Diarios - Comunicaciones de Baja ## Uso Básico ### Generación de XML ```typescript import { generateXML } from 'nodefact'; // Datos de la factura const invoiceData = { // ... datos de la factura }; // Generar XML const xml = generateXML(invoiceData, '01'); // 01 = Factura ``` ### Firma Digital ```typescript import { signXml } from 'nodefact'; // Opción 1: Usando archivos separados para clave privada y certificado const signOptions = { keyFile: 'path/to/private.key', certFile: 'path/to/certificate.pem', password: 'password' }; // Opción 2: Usando un único archivo PEM que contiene tanto la clave privada como el certificado // const signOptions = { // pemFile: 'path/to/certificate.pem', // password: 'password' // }; // Firmar XML const result = await signXml(xml, signOptions); if (result.success) { console.log('XML firmado:', result.signedXml); } else { console.error('Error al firmar:', result.error); } ``` ### Envío a SUNAT ```typescript import { SunatEndpoints, createSunatClient } from 'nodefact'; // Crear cliente SUNAT const client = createSunatClient({ endpoint: SunatEndpoints.HOMOLOGACION_FACTURA, credentials: { ruc: '20123456789', usuario: 'MODDATOS', clave: 'moddatos' } }); // Enviar documento const result = await client.sendBill('20123456789-01-F001-1.zip', base64Content); if (result.success) { console.log('Documento aceptado:', result.cdr); } else { console.error('Error al enviar:', result.error); } ``` ### Generación de PDF ```typescript import { generatePdf } from 'nodefact'; // Generar PDF const result = await generatePdf(invoiceData, { outputPath: 'factura.pdf', logo: 'path/to/logo.png' }); if (result.success) { console.log('PDF generado en:', result.path); } else { console.error('Error al generar PDF:', result.error); } ``` ## Licencia MIT