O texto da BR-CO-09 no Schematron da EN 16931 (validation-1.3.17), com gravidade 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’.»
Afeta três números: o seu (BT-31), o do seu representante fiscal, se o tiver (BT-63), e o do cliente (BT-48). A Grécia é a exceção: pode usar EL em vez de GR.

As regras que exigem o número
A BR-CO-09 olha para o formato. Estas outras verificam que o número esteja presente, e dependem da categoria de IVA das linhas:
| Regra | Quando se aplica | Texto |
|---|---|---|
| BR-CO-26 | Sempre | 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 | Linhas à taxa normal | 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 | Autoliquidação | 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 intracomunitária | 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). |
As quatro são fatais. Repare na diferença: numa venda à taxa normal basta o seu número; numa autoliquidação ou numa entrega intracomunitária, é preciso também o do cliente.
O que verifica o Odoo
Antes de gerar o ficheiro, o Odoo verifica que o número de IVA da sua empresa e o do cliente começam por duas letras. Se não começarem, avisa com «The VAT of the %s should be prefixed with its country code.», com «supplier» ou «customer». No Odoo 17, esta verificação só corre em três formatos, Peppol BIS, XRechnung e NLCIUS (o formato dos Países Baixos); no Odoo 18, 19 e 20 está na camada comum da EN 16931.
O aviso só procura letras à frente. Se essas letras são as do país correto, ou se o número é válido, essa regra já não o verifica.
Como o escrever no Odoo
- Certo
- O número tal como o publica o registo de IVA de cada país, com as duas letras à frente: DE para a Alemanha, FR para França, BE para a Bélgica, NL para os Países Baixos.
- Errado
- O número sem letras, com espaços ou pontos pelo meio, ou com o prefixo de outro país.
- Grécia
- EL à frente, não GR: é a exceção que a própria regra indica.
Com o nosso módulo XRechnung e ZUGFeRD

No Odoo 18, 19 e 20, com a subscrição do FlexigoTech Cloud, cada XRechnung e cada ZUGFeRD EN 16931 que o módulo gera é validado com as regras da KoSIT, que incluem as da EN 16931: um NIF-IVA sem prefixo aparece como BR-CO-09 em Validation Errors e a fatura não fica marcada como Ready to send. No Odoo 17, a versão publicada não valida.
O que corrigir
- Abra a ficha que o aviso indica: a sua empresa (supplier) ou o cliente (customer).
- Escreva o número de IVA com o prefixo do país, sem espaços.
- Se for uma autoliquidação ou uma venda a outro país da UE, verifique também o número do cliente.
- Gere o ficheiro de novo.
Continue a ler
Verificado no código do módulo (versão 17.0 e 20.0) e nas fontes indicadas
Fontes
- 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 do módulo: flexigo_germany_xrechnung 20.0 (446f2f68): models/xrechnung_cloud.py
- Código do módulo: flexigo_germany_xrechnung 17.0 (ad05de8f): __manifest__.py
- github.com/ConnectingEurope/eInvoicing-EN16931/releases/tag/validation-1.3.17
