FiscalAPI
Timbrado de facturas: guía técnica completa

Timbrado de facturas: guía técnica completa

4 de abril de 2026

Cada factura electrónica en México pasa por un proceso que la convierte de un simple XML en un documento con validez fiscal. Ese proceso se llama timbrado de facturas. Sin él, tu CFDI no existe para el SAT, tu cliente no puede deducirlo, y tu transacción queda en el limbo fiscal. Llevo más de una década integrando sistemas de facturación y puedo decirte que la mayoría de los problemas en producción no vienen de la lógica de negocio, sino de no entender cómo funciona realmente el timbrado.

Qué es el timbrado de facturas

El timbrado de facturas es el proceso mediante el cual un Proveedor Autorizado de Certificación (PAC) valida, sella y registra un CFDI ante el SAT. Cuando timbras una factura, el PAC verifica que los datos fiscales sean correctos, aplica un sello digital (el timbre fiscal digital o TFD), le asigna un UUID (folio fiscal), y reporta el comprobante al SAT en tiempo real.

El resultado es un XML que contiene dos sellos: el del emisor (tu Certificado de Sello Digital o CSD) y el del PAC (el timbre fiscal). Ambos son necesarios. El sello del emisor prueba que tú generaste el comprobante. El timbre del PAC prueba que un tercero autorizado lo validó y que el SAT tiene constancia de su existencia.

Sin timbrado, un CFDI es solo un archivo XML con datos fiscales. Con timbrado, es un comprobante fiscal con validez legal plena.

El timbrado de facturas es obligatorio para todos los contribuyentes que emiten CFDI en México. No puedes timbrar directamente con el SAT; necesitas hacerlo a través de un PAC autorizado. El listado de PACs autorizados se actualiza periódicamente en el portal del SAT.

Cómo funciona el timbrado paso a paso

El proceso de timbrado involucra tres actores: el emisor (tú o tu sistema), el PAC, y el SAT. Cada uno cumple un rol específico, y entender la secuencia te ahorra horas de depuración cuando algo falla.

Lo que este diagrama no muestra es todo lo que ocurre dentro de la validación del PAC. No es solo verificar que el XML esté bien formado. El PAC consulta las listas de RFC activos del SAT, valida que tu CSD no esté revocado, comprueba que el régimen fiscal del emisor y receptor coincidan con lo registrado ante el SAT, y verifica que cada código (uso de CFDI, forma de pago, clave de producto) exista en los catálogos vigentes.

1

El emisor genera el XML y lo firma con su CSD#

Tu sistema construye el XML del CFDI con todos los datos fiscales: emisor, receptor, conceptos, impuestos, moneda, método de pago. Después aplica el Certificado de Sello Digital (CSD) para firmar el comprobante. Esta firma es criptográfica y garantiza que el contenido no fue alterado después de la emisión. Sin el CSD, el PAC rechaza el XML de inmediato.

2

El PAC recibe el XML y lo valida#

El PAC ejecuta decenas de validaciones. Verifica la estructura del XML contra el esquema XSD del SAT, confirma que el RFC del emisor esté activo en la lista LCO (Lista de Contribuyentes Obligados), valida que el CSD no esté revocado, y comprueba que cada campo cumpla con las reglas de validación del Anexo 20. Si cualquier validación falla, el PAC devuelve un código de error específico y el timbrado no procede.

3

El PAC registra el CFDI ante el SAT#

Una vez que todo valida, el PAC envía el comprobante al SAT. El SAT lo registra en su base de datos y confirma el registro. Desde este momento, el CFDI existe en el sistema del SAT y puede consultarse con el UUID asignado.

4

El PAC genera el timbre fiscal y devuelve el XML timbrado#

El PAC genera el nodo TimbreFiscalDigital (TFD) que contiene: el UUID del comprobante, la fecha de timbrado, el sello del SAT, el sello del emisor, y el número de certificado del PAC. Este nodo se agrega al XML original. El resultado es el CFDI timbrado que le entregas a tu cliente.

Qué contiene el timbre fiscal digital

El timbre fiscal digital (TFD) es el nodo XML que el PAC agrega a tu CFDI después de validarlo. Contiene la evidencia criptográfica de que el comprobante fue revisado y registrado.

El folio fiscal. Es un identificador único universal de 36 caracteres en formato hexadecimal con guiones (ejemplo: 6F8A4C12-3B7E-4D9A-A1F0-8C2E5D7B9F03). No se repite jamás. Es el identificador definitivo de tu factura ante el SAT. Lo necesitas para cancelar, consultar estatus, vincular complementos de pago, o responder requerimientos fiscales.

El CSD: la llave para timbrar

No puedes timbrar facturas sin un Certificado de Sello Digital vigente. El CSD es un par de archivos que el SAT te emite: un certificado (.cer) y una llave privada (.key), protegida por una contraseña. Juntos forman tu identidad digital para efectos de facturación.

Qué hace el CSD

Firma digitalmente cada CFDI que emites. El PAC verifica esta firma antes de timbrar. Si el CSD está vencido, revocado, o no corresponde al RFC del emisor, el timbrado falla. El CSD tiene vigencia de 4 años, pero el SAT puede revocarlo antes si detecta irregularidades fiscales.

CSD vs e.firma

No son lo mismo, aunque usan la misma tecnología. La e.firma (antes FIEL) es tu identidad general ante el SAT: sirve para declaraciones, trámites, y buzón tributario. El CSD es específico para timbrar CFDIs. Puedes tener múltiples CSDs activos (uno por sucursal, por ejemplo), pero solo una e.firma. Necesitas la e.firma activa para tramitar tu CSD.

Si el SAT revoca tu CSD, no puedes timbrar facturas hasta obtener uno nuevo. La revocación puede ocurrir por irregularidades fiscales, declaraciones inconsistentes, o por estar en la lista negra del Artículo 69-B del Código Fiscal de la Federación. Monitorea el estatus de tu CSD regularmente.

Errores comunes en el timbrado de facturas

Después de depurar cientos de integraciones con PACs, puedo decirte que los errores de timbrado se repiten con una consistencia notable. Estos son los que vas a encontrar en producción.

Para diagnosticar errores de timbrado, revisa siempre el código de error que devuelve el PAC. Los códigos están estandarizados por el SAT y cada uno apunta a un campo o regla específica. Un buen log que capture el código de error, el mensaje, y el XML que intentaste timbrar te ahorra horas de depuración.

Timbrado de facturas con Fiscalapi

Construir el XML, firmarlo con el CSD, enviarlo al PAC, parsear la respuesta, y manejar errores. Ese flujo tiene decenas de puntos de falla si lo implementas desde cero. Fiscalapi abstrae todo eso en una sola llamada a la API. Tú envías los datos de negocio (quién vende, quién compra, qué se vendió, cuánto costó) y Fiscalapi se encarga de armar el XML, firmarlo, timbrarlo, y devolverte el CFDI sellado con su UUID.

var fiscalapi = FiscalApiClient.Create(settings => {
    settings.ApiUrl = "https://test.fiscalapi.com";
    settings.ApiKey = "TU_API_KEY";
    settings.Tenant = "TU_TENANT";
});

var factura = await fiscalapi.Invoices.CreateAsync(new Invoice {
    VersionCode = "4.0",
    Series = "F",
    TypeCode = "I",
    PaymentFormCode = "03",
    PaymentMethodCode = "PUE",
    CurrencyCode = "MXN",
    ExpeditionZipCode = "42501",
    Issuer = new InvoiceIssuer { Id = "ID_DEL_EMISOR" },
    Recipient = new InvoiceRecipient { Id = "ID_DEL_RECEPTOR" },
    Items = new List<InvoiceItem> {
        new InvoiceItem {
            Id = "ID_DEL_PRODUCTO",
            Quantity = 1
        }
    }
});

// factura.Data.Id contiene el UUID del CFDI timbrado
Console.WriteLine($"UUID: {factura.Data.Id}");

Eso es todo. Una llamada. Fiscalapi toma esos datos, construye el XML completo con todos los nodos que el SAT requiere, lo firma con tu CSD (que subes una sola vez al configurar tu cuenta), lo envía al PAC, y te devuelve el CFDI timbrado. El UUID, el XML sellado, y el PDF vienen en la respuesta.

El ambiente de sandbox en test.fiscalapi.com simula el flujo completo de timbrado sin consecuencias fiscales. Puedes timbrar, cancelar, y volver a timbrar las veces que necesites mientras desarrollas tu integración. Cuando estés listo para producción, solo cambias la URL y las credenciales.

La documentación completa de la API cubre desde la configuración inicial hasta escenarios avanzados como timbrado de complementos de pago, notas de crédito, y CFDI con complemento Carta Porte.

Validar el timbrado de una factura

Después de timbrar, conviene verificar que el CFDI quedó correctamente registrado ante el SAT. Hay dos formas de hacerlo.

Verificación en el portal del SAT

El SAT ofrece un verificador de CFDIs donde ingresas el UUID, el RFC del emisor, el RFC del receptor, y los últimos 8 caracteres del sello digital. Si el CFDI existe y está vigente, el portal te lo confirma. Esta verificación es útil para comprobaciones manuales o cuando un cliente te cuestiona la validez de una factura.

Verificación por API

Para sistemas automatizados, consultar el portal del SAT manualmente no escala. Con Fiscalapi puedes consultar el estatus de cualquier CFDI timbrado usando el ID del comprobante. La API te devuelve el estatus actual (vigente, cancelado, en proceso de cancelación) y todos los metadatos del timbrado.

Cancelación de facturas timbradas

Timbrar una factura no significa que sea permanente. El SAT permite cancelar CFDIs, pero el proceso tiene reglas que cambiaron significativamente en 2022.

Para facturas con un monto mayor a $1,000 MXN, necesitas que el receptor acepte la cancelación. Cuando solicitas la cancelación, el SAT notifica al receptor a través de su buzón tributario. El receptor tiene 3 días hábiles para aceptar o rechazar. Si no responde, la cancelación se acepta por defecto. Este flujo aplica con el motivo de cancelación 01 (Comprobante emitido con errores con relación).

El plazo máximo para cancelar un CFDI es dentro del mes siguiente a su emisión, durante el periodo de declaración anual, o antes de que el SAT inicie facultades de comprobación. Después de esos plazos, la cancelación se complica y puede requerir una declaración complementaria. No dejes cancelaciones pendientes.

Timbrado masivo: consideraciones de arquitectura

Cuando procesas miles de facturas por día, el timbrado deja de ser una llamada HTTP y se convierte en un problema de arquitectura. El PAC tiene tiempos de respuesta variables (entre 500ms y 3 segundos dependiendo de la carga del SAT), y tu sistema necesita manejar reintentos, timeouts, e idempotencia.

1

Usa colas de mensajes para desacoplar la generación del timbrado#

No timbres sincrónicamente dentro de la transacción de negocio. Genera los datos de la factura, ponlos en una cola (RabbitMQ, SQS, Azure Service Bus), y deja que un worker dedicado procese el timbrado. Así tu flujo de venta no depende del tiempo de respuesta del PAC.

2

Implementa idempotencia con claves únicas#

Si un timeout te deja sin saber si el PAC timbró o no, necesitas poder reintentar sin generar un CFDI duplicado. Usa un identificador único por factura (tu ID interno de venta, por ejemplo) y verifica si ya existe un CFDI timbrado para ese identificador antes de reintentar.

3

Monitorea tiempos de respuesta y tasas de error#

Los PACs tienen caídas. El SAT tiene mantenimientos. Si tu tasa de error sube del 5%, algo está pasando y necesitas saberlo antes de que se acumulen miles de facturas sin timbrar. Implementa alertas basadas en métricas, no en quejas de usuarios.

4

Considera un PAC secundario como fallback#

Si tu volumen lo justifica, configura un segundo PAC. Cuando el principal falla o su latencia se degrada, tu sistema redirige al secundario. Fiscalapi ya maneja múltiples PACs internamente, así que si usas la API no necesitas implementar esta capa tú mismo.

Preguntas frecuentes sobre el timbrado de facturas

Recapitulando

El timbrado de facturas no es magia ni burocracia arbitraria. Es un protocolo criptográfico que garantiza la autenticidad e integridad de cada transacción fiscal en México. Tu sistema genera el XML, lo firma con el CSD, el PAC lo valida contra las reglas del SAT, lo sella con el timbre fiscal, y te devuelve un comprobante con validez legal. Los errores más comunes son predecibles y prevenibles: CSDs vencidos, datos del receptor que no coinciden, combinaciones inválidas de catálogos.

Si estás construyendo una integración de facturación, no reinventes el timbrado desde cero. Usa una API como Fiscalapi que ya resolvió los problemas de validación, firmado, comunicación con el PAC, y manejo de errores. Tu tiempo es mejor invertido en la lógica de negocio de tu aplicación, no en parsear XSDs del SAT.