El texto de BR-CO-09 en el Schematron de EN 16931 (validation-1.3.17), con gravedad fatal: «The Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) shall have a prefix in accordance with ISO code ISO 3166-1 alpha-2 by which the country of issue may be identified. Nevertheless, Greece may use the prefix ‘EL’.»
Afecta a tres números: el tuyo (BT-31), el de tu representante fiscal si lo tienes (BT-63) y el del cliente (BT-48). Grecia es la excepción: puede usar EL en vez de GR.

Las reglas que piden el número
BR-CO-09 mira el formato. Estas otras miran que el número esté, y dependen de la categoría de IVA de las líneas:
| Regla | Cuándo aplica | Texto |
|---|---|---|
| BR-CO-26 | Siempre | In order for the buyer to automatically identify a supplier, the Seller identifier (BT-29), the Seller legal registration identifier (BT-30) and/or the Seller VAT identifier (BT-31) shall be present. |
| BR-S-02 | Líneas al tipo general | An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Standard rated" shall contain the Seller VAT Identifier (BT-31), the Seller tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63). |
| BR-AE-02 | Inversión del sujeto pasivo | An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Reverse charge" shall contain the Seller VAT Identifier (BT-31), the Seller Tax registration identifier (BT-32) and/or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) and/or the Buyer legal registration identifier (BT-47). |
| BR-IC-02 | Entrega intracomunitaria | An Invoice that contains an Invoice line (BG-25) where the Invoiced item VAT category code (BT-151) is "Intra-community supply" shall contain the Seller VAT Identifier (BT-31) or the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48). |
Las cuatro son fatales. Fíjate en la diferencia: en una venta al tipo general solo hace falta tu número; en una inversión del sujeto pasivo o en una entrega intracomunitaria, también el del cliente.
Lo que comprueba Odoo
Antes de generar el fichero, Odoo mira que el número de IVA de tu empresa y el del cliente empiecen por dos letras. Si no, avisa con «The VAT of the %s should be prefixed with its country code.», con «supplier» o «customer». En Odoo 17 esa comprobación solo corre en tres formatos, Peppol BIS, XRechnung y NLCIUS (el formato de Países Bajos); en Odoo 18, 19 y 20 está en la capa común de EN 16931.
El aviso solo mira que haya letras delante. Que esas letras sean las del país correcto, o que el número sea válido, ya no lo comprueba esa regla.
Cómo escribirlo en Odoo
- Bien
- El número tal como lo publica el registro de IVA de cada país, con sus dos letras delante: DE para Alemania, FR para Francia, BE para Bélgica, NL para Países Bajos.
- Mal
- El número sin letras, con espacios o puntos en medio, o con el prefijo de otro país.
- Grecia
- EL delante, no GR: es la excepción que recoge la propia regla.
Con nuestro módulo XRechnung y ZUGFeRD

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, que incluyen las de EN 16931: un NIF-IVA sin prefijo queda como BR-CO-09 en Validation Errors y la factura no se marca como Ready to send. En Odoo 17, la versión publicada no valida.
Qué corregir
- Abre la ficha que dice el aviso: tu empresa (supplier) o el cliente (customer).
- Escribe el número de IVA con el prefijo del país, sin espacios.
- Si es una inversión del sujeto pasivo o una venta a otro país de la UE, comprueba también el número del cliente.
- Genera el fichero de nuevo.
Sigue leyendo
Comprobado en el código del módulo (versión 17.0 y 20.0) y en las fuentes enlazadas
Fuentes
- 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 17.0 (ad05de8f): __manifest__.py
- github.com/ConnectingEurope/eInvoicing-EN16931/releases/tag/validation-1.3.17
