Error CFDI40166: ValorUnitario debe ser mayor que cero
Folios sin caducidad · Multi-empresa · Timbrado CFDI 4.0 · Ver paquetes
Error / Problema Actualizado 28/10/2026

Error CFDI40166 al timbrar: el ValorUnitario del concepto debe ser mayor que cero en ingreso, egreso o nómina

El error CFDI40166 aparece cuando un concepto tiene ValorUnitario igual a cero en un comprobante de ingreso (I), egreso (E) o nómina (N). Es típico de las líneas de obsequio, muestra o cortesía, que muchos sistemas registran con precio 0.00. Aquí verás por qué no se acepta, cómo registrar esas líneas y qué hacer con los productos que no se cobran.

Resumen rápido del error

  • Código: CFDI40166
  • Campo: ValorUnitario
  • Nodo del XML: cfdi:Conceptos/cfdi:Concepto
  • Regla del SAT (Anexo 20): El valor de este atributo debe ser mayor que cero (0) cuando el tipo de comprobante es Ingreso, Egreso o Nomina.
  • Mensaje de rechazo: El valor valor del campo ValorUnitario debe ser mayor que cero (0) cuando el tipo de comprobante es Ingreso, Egreso o Nomina.
  • Cuándo aparece: al timbrar, antes de que se genere el UUID.

¿Qué significa el error CFDI40166?

El ValorUnitario es el precio de una unidad del bien o servicio. En ingresos, egresos y nómina debe ser positivo; la regla CFDI40166 rechaza el cero. Con los tipos T y P, en cambio, el valor cero es lo habitual.

Tampoco debe confundirse con CFDI40167, que exige que el importe del concepto esté entre ciertos límites, ni con CFDI40197, que pide ValorUnitario mayor que cero en las partes de un concepto. Aquí solo importa que el precio unitario del concepto no sea cero.

Dónde se valida: el nodo Concepto y valor unitario

La validación se aplica al atributo ValorUnitario de cada cfdi:Concepto y depende del TipoDeComprobante del comprobante.

  • CFDI40165: la ClaveUnidad debe estar en c_ClaveUnidad.
  • CFDI40166: el ValorUnitario debe ser mayor que cero con I, E o N (esta ficha).
  • CFDI40167: el Importe debe estar entre los límites de cantidad por valor unitario.
  • CFDI40168: el Descuento debe tener hasta los decimales del Importe.
  • CFDI40169: el Descuento debe ser menor o igual al Importe.

Causas más comunes del error CFDI40166

  • Una línea de obsequio con precio cero. Se agregó un producto de regalo con 0.00.
  • Una muestra sin costo. Se registró como producto con precio vacío.
  • El precio no se cargó. El catálogo no tiene precio para ese producto.
  • Un descuento del cien por ciento. Se bajó el valor unitario a cero en lugar de usar el descuento.
  • Se capturó mal la unidad. Un precio se escribió en la cantidad.
  • El tipo de comprobante es incorrecto. Se quería hacer un traslado y se escogió ingreso.

Cómo corregir el error CFDI40166 paso a paso

  1. Identifica el concepto con cero. Revisa los conceptos del XML.
  2. Decide qué es esa línea. Obsequio, muestra, error de precio o movimiento sin venta.
  3. Si es error de precio, corrígelo. Carga el precio real del producto.
  4. Si es un obsequio, consulta cómo registrarlo. Una opción es el precio normal con el descuento correspondiente.
  5. Revisa el tipo de comprobante. Si no hay venta, quizá corresponde un traslado.
  6. Se vuelve a timbrar. Con los datos coherentes, el PAC pasa a las demás validaciones.

Ejemplo en el XML: incorrecto y correcto

Ejemplo de un concepto de obsequio con valor unitario cero; los importes son ficticios:

Incorrecto:

<cfdi:Concepto ClaveProdServ="01010101" Cantidad="1" ClaveUnidad="H87" Descripcion="Muestra de producto" ValorUnitario="0.00" Importe="0.00" ObjetoImp="01" />

Correcto:

<cfdi:Concepto ClaveProdServ="01010101" Cantidad="1" ClaveUnidad="H87" Descripcion="Muestra de producto" ValorUnitario="50.00" Importe="50.00" Descuento="50.00" ObjetoImp="01" />

Los importes son ficticios. El ejemplo correcto es solo una opción de las posibles y debe revisarse con el contador, porque el descuento afecta la base de los impuestos.

Qué hacer con obsequios y muestras en tu sistema

Si tu negocio entrega muestras, obsequios o cortesías con frecuencia, define con tu contador cómo se registran y deja esa regla configurada. Un sistema que permite precio cero en pantalla pero no lo traduce a un XML válido genera rechazos recurrentes. Mantén en tu catálogo un precio real para cada producto, incluso el que se regala, y usa los campos de descuento o los comprobantes que correspondan. Evita crear productos "de regalo" con precio vacío. Para repasar el cálculo de importes y descuentos, consulta la guía de facturación electrónica CFDI 4.0.

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

¿Qué significa el error 40166?

Que un concepto de ingreso, egreso o nómina tiene valor unitario cero.

¿Puedo registrar un obsequio con precio cero?

No en estos tipos de comprobante. Consulta cómo registrarlo con tu contador.

¿Y en traslados y pagos?

En ellos el cero es lo habitual.

¿Es lo mismo que el 40197?

No. El 40197 se refiere a las partes de un concepto.

¿Un descuento del cien por ciento sirve?

Consúltalo con tu contador por su efecto en impuestos.

¿Se genera UUID con este error?

No. El comprobante se rechaza antes del timbrado.

¿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