Saltar al contenido principal
EN 16931 · listas de códigos

Error BR-CL-23: la unidad de medida de la línea no es un código UN/ECE

Cada línea de una factura electrónica lleva su cantidad con una unidad, escrita como un código de la Recomendación 20 de la UN/ECE: C62 para unidad, por ejemplo. BR-CL-23 comprueba que el código esté en la lista, BR-23 que exista y PEPPOL-EN16931-R130 que la unidad del precio sea la misma que la de la cantidad.

FlexigoTech · Responsable: Víctor Gómez · Actualizado el 4 de noviembre de 2026

Lo esencial

Versiones
Odoo 17, 18, 19 y 20
Comprobado
en el código del módulo, versión 17.0 y 20.0 · en las fuentes enlazadas al final
Lectura
3 min
  1. BR-23, fatal «An Invoice line (BG-25) shall have an Invoiced quantity unit of measure code (BT-130).» La línea tiene que llevar unidad.
  2. BR-CL-23, fatal «Unit code MUST be coded according to the UN/ECE Recommendation 20 with Rec 21 extension» La unidad tiene que ser un código de la lista.
  3. PEPPOL-EN16931-R130, fatal «Unit code of price base quantity MUST be same as invoiced quantity.» Si el precio va por una cantidad base, su unidad es la misma que la de la línea.

Las dos primeras son de EN 16931 (Schematron validation-1.3.17). La tercera es de Peppol BIS (3.0.22) y XRechnung también la aplica.

Tarjeta de las reglas de unidad de medida
BR-CL-23, BR-23 y PEPPOL-EN16931-R130 sobre BT-130 y el atributo unitCode.

De dónde saca Odoo el código

El código que Odoo escribe en el fichero sale de un sitio distinto según la versión:

  • Odoo 17, 18 y 19: tiene una tabla que relaciona las unidades de Odoo (por su identificador externo) con códigos UN/ECE. Una unidad que has creado tú no está en la tabla y sale como C62, unidad.
  • Odoo 20: cada unidad de medida tiene su propio campo de código UN/ECE, y es ese código el que va al fichero. Odoo lo pasa a mayúsculas, pero no lo compara con la lista.

BR-CL-23 salta cuando el código del fichero no está en la lista. En Odoo 20 basta un código mal escrito en la unidad de medida. En Odoo 17 a 19 la tabla siempre da un código de la lista, así que la regla solo salta si el código llega por otro camino, como un módulo que lo cambie.

Hay además un problema que ninguna regla ve: una unidad propia («palé», «caja de doce») que en Odoo 17 a 19 se convierte en C62 sin avisar. El fichero pasa BR-CL-23, porque C62 está en la lista, pero tu cliente recibe «unidades» donde tú vendías cajas.

Para quien recibe la factura, el código cuenta: su programa lo lee para casar la línea con su pedido y con la entrada de mercancía. Si pidió cajas y la factura dice unidades, la cantidad no cuadra con lo que recibió aunque el importe sea el mismo, y la factura se queda parada en su revisión.

Con nuestro módulo XRechnung y ZUGFeRD

El módulo trae su propia tabla de unidades de Odoo a códigos UN/ECE, editable, para que cada unidad tuya tenga su código en BT-130. Una unidad que no esté en esa tabla sale como C62, igual que en Odoo 17 a 19, y el único aviso queda en el registro del servidor, que no se ve desde la factura. Una línea sin unidad también sale como C62.

Tabla del módulo XRechnung que relaciona unidades de Odoo con códigos UN/ECE en Odoo 20
Minutos, unidades, horas, metros cuadrados, kilovatios hora y otras, con su código para BT-130. Captura de Odoo 20 con datos de demostración.

En Odoo 18, 19 y 20, con la suscripción a FlexigoTech Cloud, cada XRechnung y cada ZUGFeRD EN 16931 se valida con las reglas de KoSIT y un código fuera de la lista queda como BR-CL-23 en Validation Errors. En Odoo 17 la versión publicada no valida.

Qué revisar

  1. Mira qué unidad lleva la línea en el XML (atributo unitCode).
  2. En Odoo 20, abre la unidad de medida y pon su código UN/ECE.
  3. En Odoo 17, 18 y 19, si usas unidades propias, ten en cuenta que saldrán como C62. Con nuestro módulo, en cualquier versión, añade cada una a su tabla: las que falten también salen como C62.
  4. Si el precio va por cantidad base (por ejemplo, por cada cien unidades), que su unidad sea la misma que la de la línea.
  5. Genera el fichero otra vez y comprueba el atributo unitCode de cada línea antes de enviarlo.

Sigue leyendo

Error UBL-SR-48: una línea de la factura con dos impuestos o sin ningunoUBL-SR-48 y BR-CO-04 exigen una categoría de IVA, y solo una, en cada línea de la factura electrónica. El aviso de Odoo 17, 18, 19 y 20, junto con BR-25 y BR-16.Error BR-CO-15 en la factura electrónica: el total con IVA no es base más IVABR-CO-15, BR-CO-14, BR-CO-16 y BR-CO-17 comprueban que los totales de la factura electrónica cuadren. Qué suma cada una y cuáles fallan por un céntimo.Errores BR-09 y BR-11: la dirección del vendedor o del comprador sin código de paísBR-09 y BR-11 piden el código de país en la dirección del vendedor y del comprador; BR-08 y BR-10, la dirección misma. El aviso de Odoo 17, 18, 19 y 20 y qué rellenar.
Comprobado en el código del módulo (versión 17.0 y 20.0) y en las fuentes enlazadas

Fuentes