Desarrollado para integraciones B2B en Mexico

FacturaGPT API para generar CFDI desde tickets en Mexico

Envias la imagen del ticket y los datos fiscales del receptor. FacturaGPT extrae la informacion, detecta el flujo de facturacion del comercio y te entrega el XML y PDF de forma asincrona.

Para plataformas de gastos, fintechs, ERP, software contable y empresas con alto volumen de tickets.

Pensado para integraciones B2B. No esta diseñado como herramienta de consumo para facturar un solo ticket manualmente.

Asincrono por defecto

Listo para webhooks y procesos en background.

Un solo flujo de integracion

Sin mantener portales y reglas por comercio en tu producto.

Orientado a volumen

Pensado para equipos y plataformas con tickets recurrentes.

XML + PDF

Entrega programatica del CFDI final cuando el proceso concluye.

Que es FacturaGPT

FacturaGPT es una API B2B para generar CFDI en Mexico a partir de tickets. Tu sistema envia la imagen del ticket y la informacion fiscal del receptor, FacturaGPT ejecuta el flujo de facturacion del comercio en segundo plano y entrega el XML y PDF cuando el CFDI esta listo.

Lo que resuelve

Centraliza en una sola integracion la extraccion del ticket, la deteccion del comercio y la ejecucion del flujo de facturacion oficial.

  • Una sola API para multiples comercios
  • Reduce trabajo manual y deuda tecnica
  • Evita construir logica por portal

Para quien es

Si tus usuarios o equipos suben tickets y necesitas recuperar CFDI sin construir integraciones por comercio, esta API esta diseñada para ti.

  • Plataformas de gastos
  • Fintech y tarjetas corporativas
  • ERP y software contable
  • Equipos financieros con 100+ tickets al mes

Como funciona

El flujo esta diseñado para que tu equipo integre una sola vez y reciba los resultados por webhook o por consulta de estado.

1

Envias el ticket

Mandas ticket_image con un external_id y la informacion fiscal del receptor.

2

FacturaGPT extrae y valida

La API ejecuta OCR del ticket y devuelve de inmediato un primer resultado con estatus processing.

3

Se ejecuta el flujo del comercio

FacturaGPT detecta el canal de facturacion y corre el proceso correspondiente en segundo plano.

4

Recibes el CFDI

Tu sistema recibe el resultado por webhook o consulta el estatus con GET /api/v1/get_factura_status/{session_id}.

Ejemplo de request

Usa el endpoint real de produccion. El request se divide en datos del ticket y datos fiscales del receptor.

POST /api/v1/get_factura
curl -X POST https://api.facturagpt.com.mx/api/v1/get_factura \
  -H "Authorization: Bearer fgpt_live_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "external_id": "expense_12345",
    "ticket_image": "<base64-encoded image>",
    "save_customer": true,
    "uso_cfdi": "G03",
    "payment_method": "28",
    "user_info": {
      "razon_social": "ACME SA DE CV",
      "rfc": "XAXX010101000",
      "email": "finance@acme.com",
      "regimen": "601",
      "cp": "11560"
    },
    "webhook_url": "https://your-server.com/webhooks/facturagpt",
    "test_mode": false
  }'

Campos clave

  • external_id: idempotencia y reconciliacion
  • ticket_image: imagen del ticket en base64
  • user_info o csf_pdf: datos fiscales del receptor
  • save_customer: guarda el perfil fiscal para futuras solicitudes

Reglas importantes

  • Debes enviar customer_id o datos fiscales crudos
  • test_mode: true ejecuta el flujo sin cobrar
  • El webhook debe estar configurado para produccion
  • Enviar el mismo external_id con otro payload devuelve conflicto

Respuesta inicial

La primera respuesta no es el CFDI final. El request fue aceptado, el OCR ya corrio y el proceso continua en background.

202 Accepted
{
  "ok": true,
  "data": {
    "session_id": "id_abc123",
    "external_id": "expense_12345",
    "status": "processing",
    "ocr_result": {
      "merchant_name": "Starbucks",
      "merchant_rfc": "SCA9312224NA",
      "amount": "125.50",
      "net_amount": "108.19",
      "tax_amount": "17.31",
      "tax_rate": "0.16",
      "currency": "MXN",
      "date": "2026-03-06",
      "payment_method": "card",
      "ticket_readable": true
    }
  },
  "error": null,
  "meta": {
    "version": "2026-03",
    "session_id": "id_abc123",
    "timestamp": "2026-03-06T12:00:00Z"
  }
}

Estados y consulta de progreso

Usa GET /api/v1/get_factura_status/{session_id} para confirmar resultados, reconciliar registros o verificar lo ocurrido despues de un webhook.

Estados

  • processing: solicitud aceptada, automatizacion en curso
  • completed: CFDI generado correctamente y cobrable
  • failed: no se genero CFDI y no es cobrable

Patron recomendado

  • Usa webhooks como canal principal
  • Usa polling solo como verificacion o reconciliacion
  • Guarda siempre external_id y session_id
GET /api/v1/get_factura_status/{session_id}
{
  "ok": true,
  "data": {
    "session_id": "id_abc123",
    "status": "completed",
    "ocr": {
      "ticket": {
        "merchant_name": "Starbucks",
        "merchant_rfc": "SCA9312224NA",
        "total": 125.5,
        "date": "2026-03-06"
      }
    }
  },
  "error": null,
  "meta": {
    "version": "2026-03",
    "session_id": "id_abc123",
    "timestamp": "2026-03-06T12:02:00Z"
  }
}

Webhooks

Los webhooks son la forma recomendada de recibir resultados. Configura tu URL en el dashboard o usa webhook_url como override por request.

Eventos

  • factura.completed: CFDI listo y archivos disponibles
  • factura.failed: el proceso fallo despues de reintentos
  • Responde rapido con 200 y procesa en background

Buenas practicas

  • Deduplica con idempotency_key
  • Guarda el payload antes de procesarlo
  • Asume at-least-once delivery
factura.completed
{
  "event": "factura.completed",
  "version": "2026-03",
  "idempotency_key": "factura.completed:id_abc123:1741132800",
  "session_id": "id_abc123",
  "external_id": "expense_12345",
  "status": "completed",
  "completed_at": "2026-03-06T12:01:23Z",
  "processing_time_seconds": 34,
  "files": {
    "xml_url": "https://api.facturagpt.com.mx/api/v1/files/id_abc123/xml",
    "pdf_url": "https://api.facturagpt.com.mx/api/v1/files/id_abc123/pdf"
  }
}

Casos de uso

Esta API esta pensada para integrarse en flujos reales de producto y operacion, no como una herramienta de uso individual.

Recuperacion automatica de CFDI

Convierte tickets de gastos en CFDI dentro de tu plataforma sin pedir que el usuario facture manualmente en cada comercio.

Tarjetas corporativas y spend

Asocia cada transaccion con su ticket y automatiza la recuperacion del CFDI para mejorar control y deducibilidad.

ERP y software contable

Integra facturacion automatica desde tickets para acelerar cierres, conciliacion y carga documental.

Equipos financieros con alto volumen

Reduce carga operativa y soporte interno cuando tu empresa procesa cientos o miles de tickets al mes.

Por que no construir esto internamente

El costo no es solo tecnico. Tambien es operativo, de mantenimiento y de soporte a medida que cambian los flujos de cada comercio.

El problema real

  • Cada comercio tiene su propio flujo y sus propias reglas
  • Los portales cambian con el tiempo
  • La recuperacion de CFDI mezcla OCR, logica fiscal y operacion
  • Tu equipo termina manteniendo excepciones y soporte

Lo que externalizas con FacturaGPT

  • Deteccion del flujo del comercio
  • Ejecucion del proceso de facturacion
  • Entrega asincrona de XML y PDF
  • Una sola integracion para un problema multi-comercio

Solicitar sandbox

Cuéntanos un poco sobre tu caso de uso. Te enviaremos mas informacion por email y, despues del envio, podras crear tu cuenta para empezar a probar la API.

Despues de enviar el formulario, te redirigiremos para que puedas crear tu cuenta y explorar la API.

Solicitud enviada. Te redirigiremos en un momento.
No pudimos enviar tu solicitud. Intentalo de nuevo.

Preguntas frecuentes

Las preguntas que mas ayudan a un equipo tecnico a decidir si esta API encaja con su flujo.

¿La API funciona de forma sincronica o asincronica?

Funciona de forma asincrona. El request inicial devuelve processing y un session_id. El resultado final llega por webhook o se consulta por estatus.

¿Que necesito enviar para generar una factura?

Debes enviar ticket_image, external_id y el perfil fiscal del receptor mediante customer_id, user_info o csf_pdf.

¿Puedo reutilizar un perfil fiscal guardado?

Si. Puedes guardar el perfil con save_customer y despues reutilizar el customer_id en nuevas solicitudes.

¿Que pasa si el comercio no emite CFDI?

La sesion termina con estatus failed. Ese resultado no es cobrable y se puede manejar desde tu sistema como un caso fallido.

¿Como recibo el XML y PDF?

El resultado llega por webhook cuando la factura queda completada y los archivos tambien se pueden descargar a traves de los endpoints de archivos.

¿Hay modo de pruebas?

Si. Puedes ejecutar el flujo con test_mode: true para probar sin cobrar saldo.

Prueba FacturaGPT en tu flujo

Si estas evaluando como automatizar CFDI desde tickets en Mexico, este es el mejor punto para iniciar la conversacion y activar pruebas.