Sept règles tournent autour du même bloc. BR-49, BR-61 et BR-50 proviennent de la norme européenne EN 16931 et valent pour tout format ; les BR-DE ne concernent que XRechnung (Schematron v2.6.0 de KoSIT) :
- BR-DE-1 (fatale) : « Eine Rechnung (INVOICE) muss Angaben zu "PAYMENT INSTRUCTIONS" (BG-16) enthalten. » Sans bloc de paiement, la XRechnung n'est pas valide.
- BR-49 (fatale) : « A Payment instruction (BG-16) shall specify the Payment means type code (BT-81). »
- BR-61 (fatale) : « If the Payment means type code (BT-81) means SEPA credit transfer, Local credit transfer or Non-SEPA international credit transfer, the Payment account identifier (BT-84) shall be present. »
- BR-50 (fatale) : « A Payment account identifier (BT-84) shall be present if Credit transfer (BG-17) information is provided in the Invoice. »
- BR-DE-23-a (fatale) : « Wenn BT-81 "Payment means type code" einen Schlüssel für Überweisungen enthält (30, 58), muss BG-17 "CREDIT TRANSFER" übermittelt werden. »
- BR-DE-23-b (fatale) : « Wenn BT-81 "Payment means type code" einen Schlüssel für Überweisungen enthält (30, 58), dürfen BG-18 und BG-19 nicht übermittelt werden. » Un virement ne peut pas porter en même temps des données de carte (BG-18) ni de prélèvement (BG-19).
- BR-DE-19 (avertissement) : « "Payment account identifier" (BT-84) soll eine korrekte IBAN enthalten, wenn in "Payment means type code" (BT-81) mit dem Code 58 SEPA als Zahlungsmittel gefordert wird. » C'est un avertissement : avec le code 58, le compte devrait être un IBAN valide.

Les moyens de paiement que vous allez voir
- 30
- Virement (credit transfer). C'est celui qu'Odoo met sur une facture avec Recipient Bank.
- 58
- Virement SEPA. C'est celui que met notre module XRechnung et ZUGFeRD.
- ZZZ
- Défini d'un commun accord (mutually defined). C'est celui qu'Odoo met sur une facture sans banque.
- 57
- Accord permanent (standing agreement). C'est celui qu'Odoo met sur les avoirs.
Ce que fait Odoo avec une facture
Dans Odoo 17, 18, 19 et 20, la décision est la même et dépend du champ Recipient Bank de la facture. Si elle a une banque, le moyen est 30 et le compte va dans BT-84 : BR-61, BR-50 et BR-DE-23-a sont respectées d'elles-mêmes. Sinon, le moyen est ZZZ. Le bloc BG-16 existe, donc BR-DE-1 ne se déclenche pas, mais la facture ne dit pas sur quel compte payer.
En outre, avant de générer le fichier, Odoo répète la vérification de BR-61 : si le moyen est 30 ou 58 et que la facture n'a pas de Recipient Bank, il s'arrête avec le message de champ obligatoire. Avec la logique ci-dessus, c'est difficile à atteindre, mais un module qui modifie le moyen de paiement peut le provoquer.
Avec notre module XRechnung et ZUGFeRD
Le module ne regarde pas le Recipient Bank : les instructions de paiement proviennent de l'IBAN XRechnung de votre entreprise, avec le moyen 58, l'IBAN dans BT-84 et le BIC s'il existe. Si cet IBAN est vide, le module ne génère rien et s'arrête d'abord avec le message « Company IBAN (BT-84) is required for XRechnung generation. ». Ainsi, avec le module, une facture sans BG-16 ne peut pas partir.

Dans Odoo 18, 19 et 20, avec l'abonnement à FlexigoTech Cloud, chaque XRechnung générée passe en plus par les règles de KoSIT, et seule celle qui les respecte reste en Ready to send. Dans Odoo 17, la version publiée ne valide pas.
Comment corriger
- Dans Odoo, choisissez le compte bancaire d'encaissement dans le champ Recipient Bank de la facture avant de générer la XRechnung.
- Avec notre module, renseignez l'IBAN XRechnung de votre entreprise (et le BIC, si votre client le demande).
- Vérifiez que l'IBAN est correct : avec le moyen 58, BR-DE-19 avertit s'il ne l'est pas.
- Générez à nouveau la XRechnung ; celle déjà envoyée reste telle quelle.
À lire aussi
Vérifié dans le code du module (version 17.0 et 20.0) et dans les sources citées
Sources
- Code du module : flexigo_germany_xrechnung 20.0 (446f2f68): models/account_move.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_
- 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_
- Code du module : flexigo_germany_xrechnung 20.0 (446f2f68): lib/generators/ubl_generator.py
- Code du module : flexigo_germany_xrechnung 20.0 (446f2f68): models/xrechnung_cloud.py
- Code du module : 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
