WebhooksNuevo
Tu sistema recibe un aviso firmado cuando se timbra o se cancela un CFDI, o se registra un pago. Si no responde, el aviso se reintenta.
Envía un JSON o tu XML ya sellado y recibe el CFDI timbrado con XML y PDF. La API v5 viene incluida: pagas folios que no caducan, 1 por CFDI timbrado.
JSON · XML Base64 · Archivo XML
Si empiezas de cero, envía JSON. Si ya generas y sellas tu XML, solo cambias a dónde lo envías.
Envías los datos en JSON y nosotros generamos el XML, lo sellamos con el CSD de tu cuenta y lo timbramos. Recibes el UUID, el XML en Base64 y la liga al PDF.
{
"Version": "4.0",
"Serie": "F",
"Folio": "AUTO",
"Fecha": "AUTO",
"FormaPago": "03",
"MetodoPago": "PUE",
"Moneda": "MXN",
"TipoDeComprobante": "I",
"Exportacion": "01",
"LugarExpedicion": "64000",
"SubTotal": "1000.00",
"Total": "1160.00",
"Emisor": { "RegimenFiscal": "601" },
"Receptor": {
"Rfc": "XIA190128J61",
"Nombre": "XENON INDUSTRIAL ARTICLES",
"DomicilioFiscalReceptor": "76343",
"RegimenFiscalReceptor": "601",
"UsoCFDI": "G03"
},
"Conceptos": [{
"ClaveProdServ": "81111811",
"Cantidad": "1",
"ClaveUnidad": "E48",
"Descripcion": "Servicio de soporte técnico",
"ValorUnitario": "1000.00",
"Importe": "1000.00",
"ObjetoImp": "02",
"Impuestos": { "Traslados": [{
"Base": "1000.00",
"Impuesto": "002",
"TipoFactor": "Tasa",
"TasaOCuota": "0.160000",
"Importe": "160.00"
}] }
}],
"Impuestos": { ... },
"enviar_mail": {
"destinatarios": "cliente@facturadigital.com.mx"
}
}Se envía en el campo json de POST /invoice/create:
curl -X POST \
"https://app.facturadigital.com.mx/api/v5/invoice/create" \
-H "X-Api-Key: $FD_API_KEY" \
--data-urlencode "json@factura.json"Sin costo extra: pagas folios, no la API.
Tu sistema recibe un aviso firmado cuando se timbra o se cancela un CFDI, o se registra un pago. Si no responde, el aviso se reintenta.
La API es REST sobre HTTPS y funciona con cualquier lenguaje. Si prefieres una librería, hay SDKs para Node.js, PHP y Python.
Conecta Claude, ChatGPT o Gemini a tu cuenta. El asistente prepara la factura y tú confirmas antes de timbrar.
Timbra, cancela con motivos 01 a 04, reenvía por correo, lista emitidos, recibidos y pagos, y consulta CFDI relacionados.
Da de alta clientes, productos y proveedores; registra tickets para tu kiosko de autofactura; y valida RFC, listas negras y estatus de CFDI con créditos aparte.
Si un PAC no responde, tu CFDI se timbra igual y tu integración no cambia. Corre en AWS (región México) y Google Cloud; tus XML y PDF se resguardan 5 años.
Es gratis y los CFDI que generes ahí no tienen validez fiscal.
En Configuración → Certificados sube tu .cer, tu .key y la contraseña.
Usa el Certificado de Sello Digital (CSD), no tu e.firma.
Está en Configuración → Datos de facturación y va en el header X-Api-Key. Sandbox y producción usan llaves distintas.
Consulta tus folios con GET /account/balance y timbra tu primer CFDI con POST /invoice/create.
Timbra factura, nota de crédito, recibo de pago, nómina y Carta Porte. Los complementos se incluyen con límite; con Premium no tienen límite.
Guías por caso de uso
Conserva tu generador de XML y envía tu CFDI sellado a stampxml.
Ingreso y traslado, con las reglas del SAT revisadas antes de timbrar.
Pagos 2.0 con parcialidades, saldos e impuestos por documento.
Motivos 01 a 04, folio de sustitución o tu CSD en la petición. Cancelar no usa folio.
Claves CFDI40143 a CFDI40161, cómo llegan en la respuesta y el respaldo con RFC genérico.
Para probar sin usar tu certificado
CFDI 4.0 sellado con los RFC y CSD de prueba del SAT, listo para el sandbox.
Revisa el sello, el certificado, la fecha y los importes de tu XML.
Revisa el JSON de invoice/create con las reglas del SAT y con el sandbox.
Las claves de error del SAT y los códigos de la API v5, con buscador.
Cada endpoint de la API v5 listo para importar y probar.
Timbrado en curl, PHP, Node.js, Python, C# y Java.
¿Necesitas ayuda con la integración?
Con JSON (POST /invoice/create), no: envías los datos y nosotros armamos el XML, lo sellamos con tu CSD y lo timbramos. Si ya generas y sellas tu XML, envíalo a /invoice/stampxml (Base64) o a /invoice/stampxmlfile (archivo) y solo lo timbramos.
No. La API v5 está incluida: pagas folios, no la API. Cada CFDI timbrado usa 1 folio, igual que en la web, y los folios no caducan.
Sí. El sandbox en sandbox-app.facturadigital.com.mx es gratis y timbra con un PAC de pruebas; los CFDI que generes ahí no tienen validez fiscal. Cuando estés listo, cambias la URL y la llave por las de producción.
Con el header X-Api-Key. La llave ya viene codificada en Base64: la copias de Configuración → Datos de facturación o la obtienes con GET /account/authorize enviando tu usuario y contraseña.
En cualquiera que haga peticiones HTTPS: con curl, fetch, Guzzle, requests o HttpClient basta. Si prefieres una librería, hay SDKs oficiales (nuevo) para Node.js, PHP y Python.
Con webhooks (nuevo): enviamos un aviso firmado a la URL de tu sistema cuando se timbra o se cancela un CFDI, o cuando se registra un pago. Si tu servidor no responde, el aviso se reintenta.
Sí, con el servidor MCP (nuevo). Conectas tu asistente de IA a tu cuenta y le pides la factura; el asistente la prepara y tú confirmas antes de timbrar. Tiene los mismos permisos que tu usuario.
Timbrado PAC ultrarrápido y con respaldo: si un PAC no responde, tu CFDI se timbra igual. El cambio ocurre de nuestro lado, sin que modifiques tu integración. La plataforma corre en AWS (región México) y en Google Cloud.
Si ya generas y sellas tu XML, sí: lo envías tal cual a /invoice/stampxml o /invoice/stampxmlfile. Cambias la URL y la autenticación; tu generador de XML se queda igual. Para cancelar sin cargar tu CSD en la cuenta, usa /invoice/cancelwithcsd.
Sí: Carta Porte 3.1 (con IdCCP en "AUTO"), recibo de pago 2.0, nómina 1.2, Comercio Exterior 2.0 y los demás complementos vigentes, además de algunos que solo existen por API, como Detallista o Notarios.
No se timbra y la respuesta te dice qué corregir. Si el CFDI no cumple el esquema del SAT, la API responde con code 702, un resumen en español y la lista errors con el elemento, el campo y el mensaje de cada error; por ejemplo: «Elemento 'Comprobante': El campo 'Exportacion' es obligatorio.»
Sí, como socio habilitado: alta de cuentas y carga de CSD por API, solo desde las IP que registres. Escríbenos por WhatsApp para habilitarlo.
Sin tarjeta. Subes tu constancia y tu CSD, y timbras desde el navegador.
10 folios de regalo, sin tarjeta. En el siguiente paso completas tu registro.