Ecosistema completo de paquetes Node.js/TypeScript para la generación, validación, firma y procesamiento de CFDI en México.
| Paquete |
Descripcion |
| @cfdi/xsd |
Validacion XSD con JSON Schema |
| @cfdi/schema |
Procesamiento de esquemas XSD del SAT |
| Paquete |
Descripcion |
| @cfdi/csd |
Manejo de Certificados de Sello Digital (.cer/.key) |
| @cfdi/csf |
Lectura de Constancia de Situacion Fiscal (PDF) |
| @cfdi/rfc |
Validacion de RFC |
| @renapo/curp |
Validacion y consulta de CURP |
| @sat/auth |
Autenticacion con webservices del SAT (FIEL) |
| @sat/recursos |
Descarga de recursos XSD/XSLT del SAT |
| Paquete |
Descripcion |
| @cfdi/designs |
Disenos y plantillas PDF para facturas |
| @cfdi/pdf |
Opciones de generacion PDF |
| @cfdi/utils |
Utilidades (numeros a letras, logos, archivos) |
- Node.js >= 22
- Java JDK (para Saxon-HE)
- OpenSSL (para operaciones con certificados)
- Saxon-HE >= 9.9 (para cadena original)
sudo apt install default-jre default-jdk
sudo apt-get install openssl
yum install openssl
brew install openssl
npm install -g @microsoft/rush
npm install -g pnpm
git clone https://github.com/MisaelMa/cfdi.git
cd cfdi
rush install
rush build
rush test:ci
npm install @cfdi/xml @cfdi/csd
import { CFDI } from '@cfdi/xml';
const cfdi = new CFDI({ xslt: 'path/to/cadenaoriginal.xslt' });
cfdi.certificar('path/to/certificado.cer');
cfdi.setEmisor({
Rfc: 'AAA010101AAA',
Nombre: 'Empresa SA',
RegimenFiscal: '601',
});
cfdi.setReceptor({
Rfc: 'XAXX010101000',
Nombre: 'Publico General',
UsoCFDI: 'S01',
});
cfdi.addConcepto({
ClaveProdServ: '01010101',
Cantidad: '1',
ClaveUnidad: 'ACT',
Descripcion: 'Servicio profesional',
ValorUnitario: '1000.00',
Importe: '1000.00',
});
await cfdi.sellar('path/to/llave.key', 'password');
const xml = cfdi.getXmlCdfi();
MIT - Amir Misael Marin Coh