FiscalAPI
Anexo 20: qué es y cómo define la estructura del CFDI

Anexo 20: qué es y cómo define la estructura del CFDI

20 de mayo de 2026

Si alguna vez te rebotó un CFDI con un error críptico tipo "CFDI40114" o "el RFC no cumple con el patrón del Anexo 20", estás viendo el Anexo 20 en acción. Es el documento técnico al que el SAT delegó toda la definición de cómo debe verse una factura electrónica en México: estructura XML, catálogos, reglas de validación, casos especiales. Después de años integrando CFDI en producción, mi recomendación es clara: si tocas facturación en código, no puedes operar sin tener el Anexo 20 abierto en otra pestaña.

¿Qué es el Anexo 20?

El Anexo 20 es el documento técnico de la Resolución Miscelánea Fiscal en el que el SAT define la estructura, el contenido y las reglas de validación de los Comprobantes Fiscales Digitales por Internet (CFDI). Especifica el esquema XML, los catálogos obligatorios, los algoritmos de sellado y las validaciones que cada PAC debe aplicar antes de timbrar.

En la práctica, el Anexo 20 es la fuente única de verdad. Si hay duda sobre si un campo es obligatorio, qué valores acepta o cómo se calcula un total, la respuesta está ahí. Los demás documentos (manuales de PACs, blogs, foros) son interpretaciones; el Anexo 20 es la norma.

Para qué sirve el Anexo 20

El Anexo 20 cumple tres funciones simultáneas que conviene separar mentalmente cuando programas contra CFDI.

Primero, define el contrato técnico: te dice qué nodos XML existen, qué atributos lleva cada uno, qué tipos de dato acepta y qué orden deben tener. Es el equivalente al schema de una API, pero para facturación electrónica.

Segundo, establece las reglas de validación: condicionales del tipo "si la moneda es MXN entonces el tipo de cambio debe ser 1", "si el método de pago es PUE entonces la forma de pago no puede ser 99", o "si el receptor es persona moral entonces el régimen fiscal debe estar en este subconjunto". Estas reglas son las que tu PAC ejecuta antes de timbrar.

Tercero, fija los catálogos: las listas oficiales de claves del SAT (uso de CFDI, formas de pago, regímenes fiscales, claves de producto, unidades de medida, países, monedas) y los rangos válidos para cada campo. Si un código no está en el catálogo, no existe para el SAT.

¿Quién publica y actualiza el Anexo 20?

Lo publica el SAT como parte de la Resolución Miscelánea Fiscal (RMF), que se emite anualmente y se modifica con resoluciones intermedias durante el año. La versión vigente del Anexo 20 vive en el portal de trámites del SAT, y se acompaña de dos documentos críticos: la Guía de llenado (cómo poblar cada campo) y los Apéndices (casos especiales, ejemplos, preguntas frecuentes).

La regla práctica: la versión vigente cambia cuando el SAT publica una nueva RMF o un cambio puntual. Los Apéndices se actualizan con más frecuencia que el documento principal, y son la fuente de la mayoría de los ajustes que terminan rompiendo integraciones en producción.

El Anexo 20 forma parte de la RMF, pero no es lo mismo. La RMF es la resolución completa que cubre todos los aspectos fiscales del año; el Anexo 20 es solo la sección que define la facturación electrónica. Cuando alguien dice "se actualizó el Anexo 20", lo que normalmente cambió es un Apéndice, no la estructura principal.

Estructura del Anexo 20: secciones que importan

El documento principal del Anexo 20 está organizado en bloques. Si vas a integrar CFDI, estos son los que realmente vas a consultar.

SecciónQué contieneCuándo la usas
Estándar técnicoEsquema XSD, nodos, atributos, tipos de datoAl diseñar la generación del XML
Reglas de validaciónCondicionales que el PAC ejecutaAl depurar errores de timbrado
CatálogosURLs oficiales de cada catálogo del SATAl validar inputs del usuario
Algoritmo de selladoCadena original y firma con CSDAl implementar el sellado
ApéndicesCasos especiales y ejemplosAl manejar anticipos, notas de crédito, complementos
Guía de llenadoCómo poblar cada campo en escenarios realesCuando la documentación técnica no es clara

Los Apéndices son donde vive el conocimiento que duele aprender por las malas. El Apéndice 5 cubre los anticipos. El Apéndice 7 son preguntas frecuentes homologadas con respuestas oficiales. El Apéndice 4 trata las notas de crédito. Si un escenario de negocio te parece raro, casi seguro está documentado en algún Apéndice.

Anexo 20 versión 4.0: qué cambió respecto a 3.3

La versión actual del Anexo 20 es la 4.0, vigente desde 2022 y obligatoria desde 2023. Reemplazó completamente a la versión 3.3, que ya no se acepta para emitir CFDI. Estos son los cambios que más impacto tuvieron en integraciones reales.

Datos obligatorios del receptor: ahora el RFC del receptor debe acompañarse del nombre o razón social, código postal y régimen fiscal. En la 3.3 con el RFC bastaba. Si tu integración heredada no captura estos campos, falla al timbrar.

Exportación con catálogo: el campo Exportacion pasó de ser opcional a obligatorio en cada CFDI, con valores de un catálogo cerrado. La mayoría de los CFDIs nacionales llevan 01 (no aplica), pero el campo debe estar.

Objeto del impuesto: cada concepto debe declarar si es objeto de impuesto o no. Tres opciones: 01 no objeto, 02 sí objeto, 03 sí objeto y no obligado a desglose. Este campo fue causa #1 de errores en la migración 3.3 a 4.0.

Validaciones más estrictas en código postal: debe corresponder al lugar de expedición y existir en el catálogo de códigos postales del SAT. Capturar un CP con tipografía vieja o uno que ya cambió en el catálogo te rebota la factura.

La versión 3.3 quedó completamente fuera. Cualquier sistema que aún genere CFDI 3.3 está emitiendo XML inválidos que el PAC rechazará. Si encuentras código heredado que arma comprobantes 3.3, marcarlo como deuda técnica urgente.

Si tu equipo aún no migró del todo, la guía del CFDI 4.0 cubre los cambios a profundidad.

Validaciones del Anexo 20 que el PAC aplica antes de timbrar

Cada PAC implementa exactamente las mismas validaciones del Anexo 20, porque el SAT las certifica. Si entiendes este conjunto, dejas de adivinar qué te va a rechazar tu PAC.

1

Validación estructural del XML#

El PAC valida el XML contra el esquema XSD oficial del Anexo 20. Si falta un atributo obligatorio, si un nodo está en el orden incorrecto o si un valor no respeta el tipo de dato declarado, el comprobante se rechaza antes de cualquier otra validación.

2

Validación de catálogos#

Cada código en el CFDI (uso, forma de pago, régimen, clave producto, unidad, moneda, país) se valida contra el catálogo del SAT correspondiente. Si el catálogo se actualizó y tu base de datos local sigue desactualizada, vas a enviar códigos que el PAC rechazará.

3

Validación de reglas condicionales#

Aquí es donde la mayoría se atora. Reglas como "si Forma de Pago es 99 entonces Método de Pago debe ser PPD", "si Moneda es XXX entonces Tipo de Cambio no debe enviarse", o "si el receptor tiene régimen 616 entonces el RFC debe ser genérico". Vienen tabuladas en la Guía de llenado.

4

Validación criptográfica#

El PAC verifica que el sello del emisor (calculado con tu CSD sobre la cadena original) sea matemáticamente correcto. Si la cadena original se construyó con datos distintos a los del XML, el sello no validará.

5

Validación contra el SAT#

Por último, el PAC consulta el estatus del RFC del emisor (que esté activo, que el CSD no esté revocado) y del receptor. Si el RFC fue cancelado, el SAT no acepta el comprobante aunque todo lo demás esté impecable.

Casos especiales documentados en el Anexo 20

Hay tres escenarios que aparecen en el Anexo 20 con tratamiento especial y que merecen revisión específica antes de implementarlos.

Anticipos: el Apéndice 5 describe el flujo completo, que requiere emitir tres CFDIs (anticipo, ingreso total, egreso por el anticipo aplicado) y vincularlos correctamente. Las cantidades, claves y relaciones están reglamentadas al detalle. Si quieres ver cómo se modela en código, revisa la guía de factura de anticipo.

Notas de crédito: el Apéndice 4 explica cómo emitir egresos correctamente. Lo que más confunde es cuándo usar tipo de relación 01 (nota de crédito) versus 03 (devolución de mercancía) versus 07 (CFDI por aplicación de anticipo). El post sobre notas de crédito cubre el detalle.

Complementos: el Anexo 20 define la estructura base, pero los complementos (pago, comercio exterior, carta porte, INE) tienen sus propios anexos y guías. Cada complemento agrega un namespace al XML y sus propias reglas de validación. El PAC valida todo en conjunto.

Cómo mantenerte al día con cambios del Anexo 20

El Anexo 20 cambia menos que sus catálogos y Apéndices. Estas son las fuentes que vale la pena monitorear y la frecuencia razonable.

El portal del SAT publica las versiones vigentes y los proyectos de actualización. Vale la pena revisarlo trimestralmente. La sección de trámites y servicios es la oficial.

Los catálogos del SAT se actualizan más seguido. Es el dato que más se rompe en silencio: una clave nueva que entra, una clave que se marca como obsoleta, un código postal que cambia. La práctica buena es sincronizar tu copia local contra los catálogos del SAT al menos mensualmente, o automatizar la consulta en runtime.

Los Apéndices se publican como PDFs separados. Cuando el SAT añade un caso nuevo, suele aparecer ahí antes que en el documento principal.

Si prefieres no mantener todo esto manualmente, en Fiscalapi mantenemos catálogos sincronizados y reglas del Anexo 20 actualizadas en cada release. Puedes consultar la documentación de la API o los SDKs oficiales para ver cómo se accede a los catálogos y validaciones al día.

Preguntas frecuentes

Tratar al Anexo 20 como el contrato real de la API del SAT, y no como un documento legal que alguien más debería leer, es lo que separa una integración que aguanta producción de una que se cae cada vez que cambia un catálogo.