| Regla | Gravedad | Texto de KoSIT | Qué falta |
|---|---|---|---|
| BR-DE-2 | fatal | Die Gruppe "SELLER CONTACT" (BG-6) muss übermittelt werden. | El bloque entero de contacto del vendedor. |
| BR-DE-3 | fatal | Das Element "Seller city" (BT-37) muss übermittelt werden. | La ciudad de tu empresa. |
| BR-DE-4 | fatal | Das Element "Seller post code" (BT-38) muss übermittelt werden. | El código postal de tu empresa. |
| BR-DE-5 | fatal | Das Element "Seller contact point" (BT-41) muss übermittelt werden. | Una persona o un departamento de contacto. |
| BR-DE-6 | fatal | Das Element "Seller contact telephone number" (BT-42) muss übermittelt werden. | Un teléfono. |
| BR-DE-7 | fatal | Das Element "Seller contact email address" (BT-43) muss übermittelt werden. | Un correo electrónico. |
| BR-DE-27 | warning | In BT-42 sollen mindestens drei Ziffern enthalten sein. | Un teléfono con al menos tres cifras. |
| BR-DE-28 | warning | In BT-43 soll genau ein @-Zeichen enthalten sein, welches nicht von einem Leerzeichen, einem Punkt, aber mindestens zwei Zeichen auf beiden Seiten flankiert werden soll. Ein Punkt sollte nicht am Anfang oder am Ende stehen. | Un correo bien formado: una sola arroba, sin espacios ni puntos pegados a ella, y sin punto al principio ni al final. |
Los textos son los del Schematron de XRechnung 3.0.2 (versión v2.6.0 de KoSIT), en alemán como los devuelve el validador. Entre las reglas de EN 16931 no hay ninguna que pida el contacto del vendedor; entre las de XRechnung, sí. Por eso solo aparecen cuando la factura es una XRechnung.

Los dos avisos no tumban la factura
BR-DE-27 y BR-DE-28 tienen gravedad warning en el Schematron, no fatal. El informe los enseña, pero una XRechnung que solo tenga estos dos avisos sigue siendo válida. Merece la pena corregirlos igual: un teléfono como «-» o un correo con espacios suelen venir de una ficha rellenada deprisa.
Lo que comprueba Odoo antes de generar
La XRechnung que trae Odoo comprueba dos de estas reglas en la ficha de tu empresa antes de generar el fichero, según la versión:
- Odoo 17: pide un teléfono o un móvil, con el aviso «At least one of the following fields %s is required on %s.», y el correo, con «The field %s is required on %s.».
- Odoo 18: por defecto no comprueba ni el teléfono ni el correo. Esa comprobación está en el exportador antiguo, y Odoo 18 usa el nuevo salvo que el parámetro del sistema account_edi_ubl_cii.use_new_dict_to_xml_helpers valga False. El nuevo escribe como teléfono (BT-42) solo el campo Teléfono: si tu empresa solo tiene móvil, la XRechnung sale sin teléfono y el validador da BR-DE-6.
- Odoo 19 y 20: piden el teléfono y el correo, y el aviso dice «The field %(field)s is required on %(record)s.» con el nombre del campo y el de tu empresa.
La ciudad, el código postal y el punto de contacto no tienen esa comprobación previa en ninguna versión. Si la ficha de tu empresa no los tiene, lo sabrás por el validador del cliente o por el tuyo.
Con nuestro módulo XRechnung y ZUGFeRD
El módulo escribe el bloque BG-6 con el nombre de tu empresa como punto de contacto (BT-41), su teléfono (BT-42) y su correo (BT-43). Antes de generar comprueba el teléfono y el correo de la empresa, y también el correo del cliente, con un mensaje para cada uno.

En Odoo 18, 19 y 20, con la suscripción a FlexigoTech Cloud, cada XRechnung se valida con las reglas de KoSIT y lo que falla queda en la factura, en Validation Errors, una línea por regla con su nivel. Solo la que pasa queda como Ready to send. En Odoo 17, la versión publicada genera la XRechnung pero no la valida.
Qué rellenar
- Ficha de tu empresa: calle, ciudad y código postal completos.
- Teléfono con prefijo y al menos tres cifras, en el campo Teléfono: el móvil solo cuenta en la XRechnung de Odoo 17.
- Un correo de facturación que alguien lea, con una sola arroba y sin espacios.
- Vuelve a generar la XRechnung y revisa el resultado antes de enviarla.
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/2982b5f44af03fae6a9888f20632c1cc19f623ba/addons/account_edi_ubl_
- 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_
- 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): lib/generators/ubl_generator.py
- 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/itplr-kosit/xrechnung-schematron/releases/tag/v2.6.0
- github.com/OpenPEPPOL/peppol-bis-invoice-3/releases/tag/3.0.22
