Erori e-FacturaBR-CO-20

Perioada de facturare pe linie trebuie să aibă cel puțin o dată

Codul regulii este BR-CO-20.

Mesajul exact din validatorul ANAF

textEroare=[BR-CO-20]-If Invoice line period (BG-26) is used, the Invoice line period start date (BT-134) or the Invoice line period end date (BT-135) shall be filled, or both.
textEroare=[BR-CO-19]-If Invoicing period (BG-14) is used, the Invoicing period start date (BT-73) or the Invoicing period end date (BT-74) shall be filled, or both.

Ce inseamna

Dacă în linia facturii apare grupul perioadei de facturare (BG-26), el nu are voie să rămână gol: trebuie completată data de început (BT-134) sau data de sfârșit (BT-135), ori ambele. Validatorul consideră perioada "folosită" pur și simplu pentru că elementul cac:InvoicePeriod există în linie, chiar dacă nu conține nicio dată. Regula nu cere ambele date, deci o singură dată este suficientă.

Cum repari

În programul de facturare, pentru fiecare linie: fie completezi perioada cu data de început și/sau de sfârșit, fie nu mai emiți deloc elementul cac:InvoicePeriod atunci când nu ai date de pus în el. Cel mai des se întâmplă când șablonul generează perioada din perioada globală a facturii și o lasă fără date.

Exemplu

Asa pica

<ubl:Invoice xmlns:ubl="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
  <cac:InvoiceLine>
    <cbc:ID>1</cbc:ID>
    <cbc:InvoicedQuantity unitCode="H87">10</cbc:InvoicedQuantity>
    <cbc:LineExtensionAmount currencyID="RON">1000.00</cbc:LineExtensionAmount>
    <cac:InvoicePeriod/>
    <cac:Item>
      <cbc:Name>Serviciu de consultanta</cbc:Name>
      <cac:ClassifiedTaxCategory>
        <cbc:ID>S</cbc:ID>
        <cbc:Percent>19.00</cbc:Percent>
        <cac:TaxScheme>
          <cbc:ID>VAT</cbc:ID>
        </cac:TaxScheme>
      </cac:ClassifiedTaxCategory>
    </cac:Item>
    <cac:Price>
      <cbc:PriceAmount currencyID="RON">100.00</cbc:PriceAmount>
    </cac:Price>
  </cac:InvoiceLine>
</ubl:Invoice>

Asa trece

<ubl:Invoice xmlns:ubl="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
  <cac:InvoiceLine>
    <cbc:ID>1</cbc:ID>
    <cbc:InvoicedQuantity unitCode="H87">10</cbc:InvoicedQuantity>
    <cbc:LineExtensionAmount currencyID="RON">1000.00</cbc:LineExtensionAmount>
    <cac:InvoicePeriod>
      <cbc:StartDate>2024-06-01</cbc:StartDate>
      <cbc:EndDate>2024-06-30</cbc:EndDate>
    </cac:InvoicePeriod>
    <cac:Item>
      <cbc:Name>Serviciu de consultanta</cbc:Name>
      <cac:ClassifiedTaxCategory>
        <cbc:ID>S</cbc:ID>
        <cbc:Percent>19.00</cbc:Percent>
        <cac:TaxScheme>
          <cbc:ID>VAT</cbc:ID>
        </cac:TaxScheme>
      </cac:ClassifiedTaxCategory>
    </cac:Item>
    <cac:Price>
      <cbc:PriceAmount currencyID="RON">100.00</cbc:PriceAmount>
    </cac:Price>
  </cac:InvoiceLine>
</ubl:Invoice>

Greseala asta strica si alte verificari, deci in acelasi raspuns vei gasi si: BR-CO-19. Le repari pe toate odata cu asta.

Verificat. Am pus fiecare din cele doua fragmente intr-o factura completa si le-am trecut prin validatorul oficial ANAF, versiunea ro16931-ubl-1.0.9. Factura cu fragmentul din stanga a fost respinsa cu exact mesajul de mai sus; cea cu fragmentul din dreapta a trecut fara nicio eroare. Verificarea s-a facut pe 14.09.2026.
Regula asa cum e scrisa in schematronul oficial

Textul oficial, in engleza

If Invoice line period (BG-26) is used, the Invoice line period start date (BT-134) or the Invoice line period end date (BT-135) shall be filled, or both.

Unde se aplica

$Invoice_Line_Period

Conditia care trebuie sa fie adevarata

$BR-CO-20
Ce nu rezulta din textul oficial al regulii

Factura de referință nu conține deloc cac:InvoicePeriod, deci poziția exactă a grupului în secvența UBL a lui cac:InvoiceLine (după cbc:LineExtensionAmount și înainte de cac:Item) am luat-o din ordinea standard UBL 2.1, nu am putut verifica-o pe datele primite. De asemenea, nu am putut confirma pe datele primite dacă validatorul ANAF acceptă la nivel de schemă XSD un cac:InvoicePeriod complet gol; dacă îl respinge și ca eroare de schemă, șterge elementul cu totul când nu ai date de perioadă.