CFDI40166

El valor valor del campo ValorUnitario debe ser mayor que cero (0) cuando el tipo de comprobante es Ingreso, Egreso o Nomina.

In English In an I, E or N CFDI a line's ValorUnitario (unit price) must be more than zero.

error: the document is invalid

What the rule checks

As the rule set's publisher wrote it. The rule runs on every element the context matches, and fails where the test is false; the validator reports the line of that element.

Context
cfdi:Conceptos/cfdi:Concepto
Test
not(/cfdi:Comprobante/@TipoDeComprobante = ('I', 'E', 'N')) or mx:dec(@ValorUnitario) gt 0

Checked with CFDI 4.0