Error CFDI40184: retención con TipoFactor Exento
Folios sin caducidad · Multi-empresa · Timbrado CFDI 4.0 · Ver paquetes
Error / Problema Actualizado 28/10/2026

Error CFDI40184 al timbrar: una retención no puede tener TipoFactor Exento

El error CFDI40184 aparece cuando una cfdi:Retencion dentro de un concepto declara TipoFactor="Exento". Aunque Exento es un valor válido del catálogo, el SAT no lo permite en retenciones: una retención o se aplica con tasa o cuota, o simplemente no se declara. En esta guía verás por qué ocurre, qué hacer con el nodo y cómo se distingue de los errores de catálogo del factor.

Resumen rápido del error

  • Código: CFDI40184
  • Campo: TipoFactor
  • Nodo del XML: cfdi:Comprobante/cfdi:Conceptos/cfdi:Concepto/cfdi:Impuestos/cfdi:Retenciones/cfdi:Retencion
  • Regla del SAT (Anexo 20): El valor registrado debe ser distinto de Exento.
  • Mensaje de rechazo: El valor registrado debe ser distinto de Exento.
  • Cuándo aparece: al timbrar, antes de que se genere el UUID.

¿Qué significa el error CFDI40184?

Exento describe una operación que no causa un impuesto trasladado. Una retención es otra cosa: es un impuesto que se retiene y se entera, así que no existe una “retención exenta”. Por eso, dentro de cfdi:Retenciones, el factor debe ser Tasa o Cuota.

La regla CFDI40184 no compara el valor contra el catálogo (eso lo hace CFDI40183); lo que hace es prohibir un valor concreto que sí está en el catálogo. Por eso suele aparecer cuando un sistema usa la misma plantilla para traslados y retenciones.

Dónde se valida: el nodo Retención del concepto y el valor Exento

La validación se aplica a cada cfdi:Retencion del concepto. Si el comprobante tiene conceptos con traslados exentos, esos traslados siguen siendo válidos; el error se produce solo cuando el factor Exento aparece dentro del nodo de retenciones.

  • Traslados: Exento es un valor permitido; entonces no llevan TasaOCuota ni Importe (CFDI40177).
  • Retenciones: Exento no está permitido (CFDI40184).
  • Retenciones con un factor inexistente en el catálogo: CFDI40183.
  • Resumen del comprobante: solo agrega los importes retenidos de los conceptos.

Causas más comunes del error CFDI40184

  • Una plantilla común para traslados y retenciones. El sistema copia el factor del traslado exento al nodo de retención del mismo concepto.
  • Se quiso indicar “no aplica retención”. Se declaró la retención con Exento en lugar de omitir el nodo.
  • Se heredó el factor de un producto exento. El producto está marcado como exento de IVA y esa marca se propagó a todos sus impuestos.
  • Configuración por defecto del impuesto. El impuesto retenido se creó en el sistema sin elegir Tasa y quedó con el primer valor de la lista.
  • Se confundió con el objeto del impuesto. En lugar de ajustar ObjetoImp, se intentó expresar la exención dentro del nodo de retención.

Cómo corregir el error CFDI40184 paso a paso

  1. Localiza la retención con error. Revisa cada cfdi:Retencion y busca el valor Exento.
  2. Decide si la retención realmente aplica. Si no aplica, elimina el nodo cfdi:Retencion. Si aplica, continúa.
  3. Cambia el factor. Escribe Tasa (o Cuota) y registra TasaOCuota e Importe con valores válidos.
  4. Revisa los traslados del mismo concepto. Un traslado Exento en el mismo concepto es válido; no necesita cambios por este error.
  5. Corrige la plantilla. Para que traslados y retenciones tengan configuraciones separadas.
  6. Vuelve a timbrar. Con la retención corregida el PAC continúa con las demás validaciones.

Ejemplo en el XML: incorrecto y correcto

Ejemplo con una retención mal declarada como exenta; las cifras son ilustrativas:

Incorrecto:

<cfdi:Retencion Base="1000.00" Impuesto="001" TipoFactor="Exento"/>

Correcto:

<cfdi:Retencion Base="1000.00" Impuesto="001" TipoFactor="Tasa" TasaOCuota="0.100000" Importe="100.00"/>

Hay dos salidas: si la retención aplica, declárala con Tasa y su tasa e importe; si no aplica, elimina el nodo. Cuál procede en tu caso debe confirmarlo tu contador; la tasa del ejemplo es solo ilustrativa.

Exento en traslados, no en retenciones: cómo mantenerlos separados

Una buena práctica es configurar los impuestos de tu sistema por separado: un registro para el traslado (con su factor, que puede ser Tasa, Cuota o Exento) y otro para la retención (con Tasa o Cuota). Cuando un producto sea exento de un impuesto trasladado, esa marca solo debe afectar al traslado y no a las retenciones que puedan acompañar al concepto. Antes de timbrar, revisa el XML y busca el texto Exento dentro de los nodos cfdi:Retencion: no debería aparecer nunca. Si tu operación combina productos exentos con retenciones, confirma con tu contador cómo se declara cada concepto.

Cómo evitar este error con Soicont

Soicont es una plataforma de facturación electrónica CFDI 4.0 con PAC autorizado. Antes de enviar el comprobante a timbrar, valida los datos del receptor, los catálogos del SAT y los cálculos de impuestos, y si algo no cuadra te muestra el error con una explicación clara para que lo corrijas y vuelvas a emitir. Además, tus folios no caducan y puedes facturar para varias empresas (multi-RFC) desde una sola cuenta.

Conoce la facturación electrónica CFDI 4.0, la plataforma y los paquetes de folios.

Errores relacionados

Consulta también el Centro de Soluciones con todos los errores del SAT.

Preguntas frecuentes

¿Puede una retención ser exenta?

No. Dentro de cfdi:Retenciones el factor debe ser Tasa o Cuota.

¿Por qué Exento es válido en traslados pero no en retenciones?

Porque exento describe una operación sin impuesto trasladado; una retención es un impuesto retenido y se declara con tasa o cuota.

¿Qué hago si no quiero retener?

Elimina el nodo de retención del concepto y confirma con tu contador el valor de ObjetoImp.

¿Se parece a CFDI40183?

Es una regla hermana: CFDI40183 revisa que el valor exista en el catálogo; CFDI40184 prohíbe el valor Exento aunque exista.

¿Se genera UUID con CFDI40184?

No. El comprobante se rechaza antes del timbrado y se corrige antes de volver a emitir.

¿Todavía no se resuelve?

Si después de revisar estos puntos el error continúa, escríbenos desde la página de contacto con el código del error y el XML que intentaste timbrar (nunca envíes contraseñas ni la llave privada del CSD). Si aún no tienes cuenta, crea la tuya y empieza a facturar con validaciones previas.

Regístrate