Error CFDI40197 al timbrar: el ValorUnitario de la Parte debe ser mayor que cero
El error CFDI40197 aparece cuando una cfdi:Parte dentro de un concepto trae ValorUnitario con valor cero o negativo. La parte describe un componente de un concepto compuesto, como los artículos de un kit, y si declara un valor unitario, este debe ser mayor que cero. Esta guía se centra en la parte; el valor unitario del concepto principal tiene su propia regla.
Resumen rápido del error
- Código: CFDI40197
- Campo: ValorUnitario
- Nodo del XML:
cfdi:Comprobante/cfdi:Conceptos/cfdi:Concepto/cfdi:Parte - Regla del SAT (Anexo 20): El valor de este atributo debe ser mayor que cero (0).
- Mensaje de rechazo: El valor del campo ValorUnitario debe ser mayor que cero (0).
- Cuándo aparece: al timbrar, antes de que se genere el UUID.
¿Qué significa el error CFDI40197?
Una cfdi:Parte sirve para detallar de qué se compone un concepto. Por ejemplo, un paquete de oficina puede listar sus piezas. Cada parte puede llevar Cantidad, Descripcion, ValorUnitario e Importe. Cuando se incluye ValorUnitario, el SAT exige que sea mayor que cero.
La regla CFDI40197 solo comprueba el signo y que no sea cero. No valida que la suma de las partes coincida con el concepto: las partes son informativas y no sustituyen el importe del concepto.
Dónde se valida: el nodo Parte dentro del Concepto
La validación se aplica a cada cfdi:Parte de cada concepto. Un concepto sin partes no la dispara, y uno con varias partes se revisa parte por parte.
cfdi:Concepto: suValorUnitariodebe ser mayor que cero en ingresos, egresos y nómina (CFDI40166).cfdi:Parte: suValorUnitario, si existe, mayor que cero (CFDI40197, esta ficha).cfdi:Partecon información aduanera: reglas del número de pedimento (CFDI40199 y CFDI40200).
Causas más comunes del error CFDI40197
- Se declaró una parte sin costo. Un accesorio incluido “de regalo” con
ValorUnitario="0.00". - Se capturó un valor negativo. Una bonificación o descuento registrado como parte.
- El sistema envía cero en vez de omitir el atributo. El valor es opcional, pero una plantilla lo llena con 0.
- Se copió el valor de otro campo. Por ejemplo, el descuento o el IVA de la parte.
- La parte no tiene precio propio. La descripción solo informa el contenido del kit.
Cómo corregir el error CFDI40197 paso a paso
- Localiza la parte que falla. Revisa los
ValorUnitariode las partes de cada concepto. - Decide si la parte necesita valor. Si no tiene precio propio, omite
ValorUnitarioeImporteen la parte. - Si lo lleva, captura un valor positivo. Con los decimales que correspondan a la moneda.
- Revisa que no sea una bonificación. Los descuentos van en el atributo
Descuentodel concepto, no como parte con valor negativo. - Confirma el concepto principal. Su
ValorUnitarioeImportedeben seguir siendo coherentes (CFDI40166). - Vuelve a timbrar. Con valores positivos u omitidos, el PAC continúa con las demás reglas.
Ejemplo en el XML: incorrecto y correcto
Ejemplo de un kit de 1 pieza con dos partes; los datos son ficticios:
Incorrecto:
<cfdi:Concepto Cantidad="1" ValorUnitario="600.00" Importe="600.00" ... >
<cfdi:Parte ClaveProdServ="43211500" Cantidad="1" Descripcion="Teclado" ValorUnitario="0.00" Importe="0.00" />
<cfdi:Parte ClaveProdServ="43211708" Cantidad="1" Descripcion="Ratón" ValorUnitario="150.00" Importe="150.00" />
</cfdi:Concepto>
Correcto:
<cfdi:Concepto Cantidad="1" ValorUnitario="600.00" Importe="600.00" ... >
<cfdi:Parte ClaveProdServ="43211500" Cantidad="1" Descripcion="Teclado" />
<cfdi:Parte ClaveProdServ="43211708" Cantidad="1" Descripcion="Ratón" ValorUnitario="150.00" Importe="150.00" />
</cfdi:Concepto>
En el ejemplo, la parte sin precio propio omite ValorUnitario e Importe. Las claves de producto del ejemplo solo ilustran el formato.
Cuándo conviene usar partes
Usa partes cuando necesitas detallar el contenido de un concepto compuesto, por ejemplo un kit o un equipo con accesorios. Si todas las piezas se cobran dentro de un único precio, basta con describir el concepto y listar las partes sin valor. Si las vendes por separado, lo más claro es facturarlas como conceptos independientes, cada uno con su cantidad y valor unitario mayor que cero. Consulta con tu contador cuál esquema te conviene.
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
- Error CFDI40166 (ValorUnitario): el valor unitario del concepto debe ser mayor que cero.
- Error CFDI40196 (ClaveProdServ): la clave de producto de la Parte debe estar en el catálogo.
- Error CFDI40199 (NumeroPedimento): el número de pedimento de la Parte debe cumplir el formato.
- Error CFDI40200 (NumeroPedimento): el pedimento de la Parte no debe existir con comercio exterior.
- Error CFDI40169 (Descuento): el descuento del concepto no puede ser mayor que el importe.
Consulta también el Centro de Soluciones con todos los errores del SAT.
Preguntas frecuentes
¿Puedo poner cero en el valor de una parte?
No. Si se incluye ValorUnitario, debe ser mayor que cero; si no tiene precio, omite el atributo.
¿Es obligatorio el ValorUnitario de la Parte?
Es opcional; la regla solo aplica cuando se incluye.
¿Las partes suman al importe del concepto?
No, son informativas.
¿Dónde registro un descuento?
En el atributo Descuento del concepto.
¿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.