Integrar FacturAPI paso a paso: guía técnica completa (2026)

FacturAPI es el PAC favorito de developers en México. Te explicamos cómo integrarlo a tu sistema: setup de cuenta, primera factura via API, manejo de errores y casos avanzados.

ACTUALIZADO: 21 DE MAYO DE 2026
6 min de lectura
D

DevActivo

FacturAPI es el PAC que más usan los developers en México por una razón simple: tiene una API REST moderna, documentación decente y se integra con cualquier sistema en horas, no en semanas. Si tu ERP, e-commerce o app necesita timbrar CFDI 4.0 automáticamente, esta guía te lleva de cero a primer XML timbrado en menos de 4 horas de trabajo real.

Datos basados en más de 30 integraciones que hemos hecho con FacturAPI en producción durante los últimos 4 años para clientes mexicanos de diferentes industrias.

Qué es FacturAPI y por qué lo recomendamos

FacturAPI es un Proveedor Autorizado de Certificación (PAC) certificado por el SAT que expone toda su funcionalidad vía API REST. A diferencia de PACs tradicionales (Edicom, Solución Factible) que pelean con SOAP y documentación enredada, FacturAPI se siente como Stripe pero para CFDI.

Ventajas técnicas:

  • API REST con respuestas en JSON
  • SDKs oficiales en Node, Python, Go, PHP, .NET
  • Sandbox completo gratis para desarrollo
  • Webhooks para notificaciones asíncronas
  • Documentación con ejemplos curl que funcionan
  • Soporte para emisión, cancelación, complementos de pago, retenciones y comercio exterior

Cuándo NO usar FacturAPI:

  • Necesitas integración SOAP con un sistema legacy enterprise
  • Tu volumen pasa de 50,000 facturas/mes (revisa pricing, otros PACs salen más baratos)
  • Tu compliance corporativo exige un PAC específico no negociable

Paso 1: Crear cuenta y obtener API keys

Ve a factura.com/api/dashboard (FacturAPI es propiedad de Factura.com) y crea cuenta con tu email. Después necesitas:

  1. Datos fiscales de tu empresa o cliente que va a emitir (RFC, régimen, dirección).
  2. Certificado de Sello Digital (CSD) del SAT. Son dos archivos (.cer y .key) y una contraseña. Si tu cliente no lo tiene, debe tramitarlo en el portal del SAT (gratis, toma 1-3 días).
  3. API keys de FacturAPI: una para test (sandbox) y una para producción. Las generas en el dashboard.

Pro tip: nunca subas la API key de producción al repositorio. Va en variables de entorno o un secret manager.

Paso 2: Subir el CSD al panel de FacturAPI

Antes de timbrar necesitas subir el CSD del emisor al panel:

  1. Dashboard → Organizaciones → Tu organización → Certificados
  2. Sube los dos archivos (.cer y .key) y la contraseña
  3. FacturAPI valida con el SAT que el CSD está vigente

Si el CSD está revocado o vencido, FacturAPI te lo dice inmediatamente. No timbrarás nada hasta arreglar eso.

Paso 3: Primera factura via API (Node.js)

Con el SDK oficial:

npm install facturapi

Código mínimo para timbrar una factura:

import Facturapi from 'facturapi';

const facturapi = new Facturapi('sk_test_TU_API_KEY');

const invoice = await facturapi.invoices.create({
  customer: {
    legal_name: 'CLIENTE EJEMPLO SA DE CV',
    tax_id: 'XAXX010101000',
    tax_system: '601',           // Regimen General de Ley
    address: {
      zip: '06600'
    }
  },
  items: [
    {
      quantity: 1,
      product: {
        description: 'Servicio de desarrollo de software',
        product_key: '81111500',  // Clave SAT para servicios de IT
        price: 5000,
        tax_included: false,
        taxes: [
          { type: 'IVA', rate: 0.16 }
        ],
        unit_key: 'E48',           // Servicio
        unit_name: 'Servicio'
      }
    }
  ],
  payment_form: '03',              // Transferencia electronica
  payment_method: 'PUE',           // Pago en una exhibicion
  use: 'G03',                      // Gastos en general
  type: 'I'                        // Ingreso
});

console.log('Folio:', invoice.folio_number);
console.log('UUID:', invoice.uuid);
console.log('PDF URL:', invoice.pdf);
console.log('XML URL:', invoice.xml);

Si todo va bien, FacturAPI timbra contra SAT y te regresa el UUID, el PDF y el XML en 2-5 segundos.

Paso 4: Validar datos del receptor ANTES de timbrar

Este es el error más común que vemos en producción. Si los datos del receptor están mal (RFC inválido, código postal incorrecto, régimen incompatible), el SAT rechaza la factura y FacturAPI te cobra el intento igual.

Validar antes de timbrar:

// Validar RFC contra lista LRFC del SAT
const rfcValid = await facturapi.tools.taxIdValidation({
  tax_id: 'XAXX010101000',
  tax_system: '601'
});

if (!rfcValid.is_valid) {
  throw new Error('RFC no encontrado en lista del SAT');
}

// Validar codigo postal en catalogo SAT
const zipValid = await facturapi.tools.zipValidation({
  zip: '06600'
});

Implementar estas validaciones te ahorra 15-20% de intentos rechazados.

Paso 5: Manejo de errores en producción

Los errores más frecuentes y cómo manejarlos:

Error Causa Acción
CFDI40104 RFC del receptor no existe en lista SAT Validar RFC con tool antes de timbrar
CFDI40105 Codigo postal no esta en catalogo Validar zip y/o usar el del emisor como fallback
CFDI40158 Regimen Fiscal Receptor incompatible Validar regimen segun tipo de persona
CFDI40177 Objeto de impuesto requerido en concepto Agregar campo objeto_imp en cada item
503/504 SAT caido temporalmente Retry exponencial: 1m, 5m, 15m, 1h
429 Rate limit FacturAPI Throttle a 5 req/seg max en sandbox, 50 en prod

Paso 6: Webhooks para integraciones asíncronas

Para flujos donde no quieres bloquear la respuesta al cliente, configura webhooks:

  1. Dashboard FacturAPI → Webhooks → Agregar endpoint con la URL de tu servidor
  2. Selecciona eventos: invoice.created, invoice.canceled, invoice.payment_received
  3. FacturAPI llama a tu endpoint con payload JSON cuando ocurre el evento
  4. Verifica la firma con el secret de webhooks para asegurar que el request viene de FacturAPI

Esto es ideal para WooCommerce, Shopify u otros sistemas donde el flujo de compra no debe esperar 5 segundos al timbrado.

Paso 7: Cancelaciones

Cancelar un CFDI requiere indicar motivo según catálogo SAT:

  • 01: Comprobante emitido con errores con relación
  • 02: Comprobante emitido con errores sin relación
  • 03: No se llevó a cabo la operación
  • 04: Operación nominativa relacionada en factura global
const canceled = await facturapi.invoices.cancel('INVOICE_ID', {
  motive: '02'
});

// Verificar status de aceptacion
const status = await facturapi.invoices.retrieve('INVOICE_ID');
console.log('Cancelacion status:', status.cancellation_status);
// 'pending', 'accepted', 'rejected'

Importante: si el monto del CFDI es mayor a 1,000 pesos, el receptor debe aceptar la cancelación dentro de 72 horas. Tu sistema debe consultar el status para confirmar.

Costos reales de FacturAPI

Pricing al momento de escribir (verifica en factura.com/pricing):

  • Starter: 0.50 pesos por timbre, sin renta mensual. Ideal para arrancar.
  • Pro: Renta mensual + bolsa de timbres con precio reducido. Si emites 500+ al mes, conviene.
  • Enterprise: Volumen alto, precios negociados, SLA específico.

Para una empresa que emite 1,000 facturas/mes, el costo en FacturAPI es típicamente 300-500 pesos/mes. Mucho menos que un empleado capturando manualmente.

Cuándo contratarnos para integrar FacturAPI

Si tienes equipo técnico interno con experiencia en APIs REST, integrar FacturAPI es trabajo de 1-3 días. Si tu equipo está saturado o no tiene experiencia con CFDI 4.0, contratarnos te ahorra 4-8 semanas de errores y aprendizaje.

En DevActivo ofrecemos integración completa de FacturAPI con tu sistema desde 8,000 pesos en 4-7 días. Incluye validaciones, manejo de errores, webhooks, cancelaciones y testing en sandbox antes de pasar a producción.

También integramos otros PACs (Edicom, Solución Factible, SW Sapien) y construimos pipelines completos con n8n para automatizar el flujo end-to-end. Agenda una llamada y te damos propuesta cerrada en 48 horas.

Servicios relacionados: