facturapi
v4.16.0
Published
SDK oficial de Facturapi para Node.js y navegadores. Integra facturación electrónica en México (CFDI) de forma simple y obtén una perspectiva fiscal completa de tu operación, con búsquedas indexadas, envío de documentos y trazabilidad.
Downloads
38,959
Maintainers
Readme
FacturAPI
Official HTTP client for FacturAPI.
FacturAPI helps developers generate valid electronic invoices (CFDI) in Mexico.
If you've used Stripe or Conekta, you'll find the API style familiar.
Compatibility
| Runtime | Support |
| --- | --- |
| Node.js | >=18 (CI tested on 18, 20, 22, 24) |
| Browser | Environments with fetch, FormData, and Blob |
| React Native | Versions that provide global fetch, FormData, and Blob |
Install
npm i facturapiTypeScript
This SDK is TypeScript-first and exports its public types.
Getting started
Make sure you have a FacturAPI account and your API key.
import Facturapi from 'facturapi';
const facturapi = new Facturapi(process.env.FACTURAPI_KEY!);CommonJS:
const Facturapi = require('facturapi').default;Create a customer
const customer = await facturapi.customers.create({
legal_name: 'Walter White',
tax_id: 'WIWA761018',
email: '[email protected]',
address: {
zip: '06800',
country: 'MEX',
},
});Create an invoice
const invoice = await facturapi.invoices.create({
customer: 'YOUR_CUSTOMER_ID',
payment_form: Facturapi.PaymentForm.TRANSFERENCIA_ELECTRONICA_DE_FONDOS,
items: [
{
quantity: 1,
product: 'YOUR_PRODUCT_ID',
},
],
});Download your invoice
downloadZip, downloadPdf and downloadXml return a binary result:
- Node.js: stream-like object
- Browser:
Blob
import fs from 'fs';
const file = await facturapi.invoices.downloadZip(invoice.id);
// Node-first style (explicit cast)
const stream = file as NodeJS.ReadableStream;
stream.pipe(fs.createWriteStream('/tmp/invoice.zip'));Portable style (Node + browser):
const file = await facturapi.invoices.downloadZip(invoice.id);
if ('pipe' in file && typeof file.pipe === 'function') {
file.pipe(fs.createWriteStream('/tmp/invoice.zip'));
} else {
const url = URL.createObjectURL(file);
window.open(url, '_blank');
}Send your invoice by email
await facturapi.invoices.sendByEmail(invoice.id, {
email: '[email protected]',
});Documentation
Visit docs.facturapi.io.
Help
Found a bug?
Please report it on the issue tracker.
Want to contribute?
Send us your PR! We appreciate your help :)
