El texto de cada regla
Todas son fatales en el Schematron de EN 16931 (validation-1.3.17), y las aplican igual Peppol BIS, XRechnung y Factur-X:
- BR-08: «An Invoice shall contain the Seller postal address.»
- BR-09: «The Seller postal address (BG-5) shall contain a Seller country code (BT-40).»
- BR-10: «An Invoice shall contain the Buyer postal address (BG-8).»
- BR-11: «The Buyer postal address shall contain a Buyer country code (BT-55).»
- BR-CL-14: «Country codes in an invoice MUST be coded using ISO code list 3166-1»
Dentro de la dirección, las reglas de EN 16931 solo piden el país. Pero hay formatos que piden más: XRechnung exige además ciudad y código postal del vendedor (BR-DE-3 y BR-DE-4) y del comprador (BR-DE-8 y BR-DE-9).

Lo que te dice Odoo
En las cuatro versiones, Odoo comprueba BR-09 y BR-11 antes de generar el fichero UBL. Si falta el país en tu empresa o en el cliente, el aviso es este: «The country is required for the %s.», con «supplier» o «customer» en el hueco. En Odoo 17 la comprobación está en la exportación Peppol BIS (y en las que heredan de ella, como XRechnung); en 18, 19 y 20, en la capa común de EN 16931.
El aviso te dice cuál de las dos fichas mirar: «supplier» es tu empresa, la de la factura; «customer» es el contacto de facturación del cliente.
Por qué falta un país en Odoo
| Situación | Dónde mirarlo |
|---|---|
| Empresa creada deprisa, sin dirección | Ajustes de la empresa: calle, ciudad, código postal y país. |
| Cliente importado de una hoja de cálculo | La columna de país vacía o con el nombre escrito a mano en vez de elegido. |
| Factura a un contacto hijo | La dirección de facturación del contacto que va en la factura, no solo la de su empresa. |
| Cliente particular de una tienda en línea | El pedido trajo dirección sin país, o con un país que no está en la lista. |
Como el país en Odoo se elige de una lista y no se escribe, BR-CL-14 casi nunca sale de una factura de Odoo: el código de dos letras viene del propio país. Si te aparece, mira si el fichero pasó por otro programa antes de llegar al cliente.
Con nuestro módulo XRechnung y ZUGFeRD

Con el país, el módulo no avisa. Si a tu empresa o al cliente les falta, escribe DE, el código de Alemania, en UBL y en CII, y su comprobación antes de generar no mira ese campo. El fichero cumple BR-09 y BR-11 y el validador de KoSIT lo acepta (lo hemos comprobado), pero la dirección dice Alemania aunque el cliente esté en otro país. Revisa el país de cada cliente antes de generar.
En Odoo 18, 19 y 20, con la suscripción a FlexigoTech Cloud, cada XRechnung y cada ZUGFeRD EN 16931 que genera el módulo se valida con las reglas de KoSIT. Si al cliente le faltan la ciudad o el código postal, eso sí sale: BR-DE-8 y BR-DE-9 quedan en Validation Errors y la factura no se marca como Ready to send. La versión publicada para Odoo 17 genera los ficheros pero no los valida.
Pasos
- Lee el aviso: «supplier» o «customer».
- Abre esa ficha y elige el país de la lista; completa calle, ciudad y código postal aunque EN 16931 no los pida.
- Si facturas a un contacto de una empresa, revisa la dirección de ese contacto.
- Genera el fichero otra vez.
Sigue leyendo
Comprobado en el código del módulo (versión 17.0 y 20.0) y en las fuentes enlazadas
Fuentes
- Código del módulo: flexigo_germany_xrechnung 20.0 (446f2f68): lib/generators/ubl_generator.py
- github.com/odoo/odoo/blob/6f00fdadb875342de2d14a179f25431f93cd63c9/addons/account_edi_ubl_
- github.com/odoo/odoo/blob/2982b5f44af03fae6a9888f20632c1cc19f623ba/addons/account_edi_ubl_
- github.com/odoo/odoo/blob/4d2d4b5895db70596863df941d9a1f0beeb117f8/addons/account_edi_ubl_
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/account_edi_ubl_
- Código del módulo: flexigo_germany_xrechnung 20.0 (446f2f68): models/xrechnung_cloud.py
- Código del módulo: flexigo_germany_xrechnung 20.0 (446f2f68): models/account_move.py
- Código del módulo: flexigo_germany_xrechnung 17.0 (ad05de8f): __manifest__.py
- github.com/ConnectingEurope/eInvoicing-EN16931/releases/tag/validation-1.3.17
- github.com/itplr-kosit/xrechnung-schematron/releases/tag/v2.6.0
