Rule at a Glance

ID Severity Context (XPath)
BR-16 Fatal (error) /ubl:Invoice | /cn:CreditNote
Series reference: BR-16  |  Schematron ID: ibr-016

Classification

Transaction Data — BR-16 is a structural rule operating at the document root level. It applies to both invoices (ubl:Invoice) and credit notes (cn:CreditNote). A document with no line items is structurally invalid under PINT-AE and the underlying UBL 2.1 specification.

What the Rule Is Checking

BR-16 tests that the root invoice or credit note element contains at least one cac:InvoiceLine (for invoices) or cac:CreditNoteLine (for credit notes). There is no maximum line count — PINT-AE imposes no upper limit on invoice lines. The rule fires only when the document contains zero lines of either type.

This is the schematron's guard against header-only documents: invoices that carry monetary totals but no itemised breakdown. Such documents cannot be processed by the PEPPOL network because the line-level VAT treatment, HS code, and unit quantity fields are required inputs for the buyer's automated accounting and the FTA's audit validation.

Why This Rule Exists

UAE e-invoicing under MD 243 requires structured, machine-readable data at line level. The FTA's data requirements (Article 7, MD 243) specify that each invoice line must carry item description, quantity, unit price, HS code classification, and VAT treatment. None of these fields exist in a header-only document. A zero-line invoice provides no basis for automated VAT classification or accounting journal generation.

From an ERP integration perspective, the line-level structure is also the anchor for three-way matching (purchase order, goods receipt, invoice line). Systems that attempt to submit summary-level invoices without line detail will fail at BR-16 before reaching any field-level validation.

Standard / Code List

No code list applies to BR-16 itself. However, each invoice line that BR-16's presence allows must carry a valid unit code (UNECE Rec 20 — see UNECE Rec 20 unit codes in PINT-AE) and a VAT category code.

UAE Data Example

PASSES ✓ — invoice with one line
<ubl:Invoice>
  <!-- ... header fields ... -->
  <cac:InvoiceLine>
    <cbc:ID>1</cbc:ID>
    <cbc:InvoicedQuantity unitCode="EA">10</cbc:InvoicedQuantity>
    <cbc:LineExtensionAmount currencyID="AED">1000.00</cbc:LineExtensionAmount>
    <cac:Item>
      <cbc:Name>Office Chairs</cbc:Name>
    </cac:Item>
    <cac:Price>
      <cbc:PriceAmount currencyID="AED">100.00</cbc:PriceAmount>
    </cac:Price>
  </cac:InvoiceLine>
</ubl:Invoice>

FAILS ✗ — no invoice lines
<ubl:Invoice>
  <!-- header and monetary totals present, but no cac:InvoiceLine elements -->
  <cac:LegalMonetaryTotal>
    <cbc:TaxExclusiveAmount currencyID="AED">1000.00</cbc:TaxExclusiveAmount>
    <cbc:TaxInclusiveAmount currencyID="AED">1050.00</cbc:TaxInclusiveAmount>
    <cbc:PayableAmount currencyID="AED">1050.00</cbc:PayableAmount>
  </cac:LegalMonetaryTotal>
</ubl:Invoice>

What Your ERP / IT Team Must Ensure

  • Your UBL builder must always generate at least one cac:InvoiceLine element, even for single-item invoices or lump-sum service charges.
  • If your billing system generates consolidated invoices with a single summary line, that line must still be expressed as a proper cac:InvoiceLine with all mandatory line-level fields populated.
  • For credit notes, ensure your credit note builder generates cac:CreditNoteLine elements — never attempt to produce a header-only credit note.
  • Validate the line count as the first check in your pre-submission pipeline; catching a zero-line document early prevents wasted API calls to the ASP.
  • Consult Article 7 of MD 243 for the full list of mandatory line-level data fields that must accompany each cac:InvoiceLine in the UAE context.

Related Rules

BR-21 (invoice line identifier mandatory), BR-22 (invoiced quantity mandatory), BR-23 (unit of measure code mandatory), BR-24 (line net amount mandatory), BR-25 (item name mandatory). See also 51 mandatory fields in PINT-AE and MD 243 Article 7 data fields.