Automation MCP Server Features Blog Pricing Contact
Validation rule EN 16931 core

BR-IC-12

Zero-rating an intra-community supply is only justified because the goods go to another member state, so the invoice has to say where. BR-IC-12 fails when a VAT breakdown with category code K is present but the deliver-to country code (BT-80) is blank.

What BR-IC-12 checks

BR-IC-12 requires that an invoice containing a VAT breakdown (BG-23) with category code K, Intra-community supply, state the destination of the goods: the deliver-to country code (BT-80) must not be blank. The code sits in the deliver-to address (BG-15) inside the delivery information group (BG-13). In UBL that is cac:Delivery/cac:DeliveryLocation/cac:Address/cac:Country/cbc:IdentificationCode; in CII it is ram:ShipToTradeAddress/ram:CountryID.

Layer and formats

The rule fires in the en16931 core layer for every syntax and profile. It is the counterpart of BR-IC-11: one rule pins down when the supply happened, this one pins down where it went. Both trigger on the mere presence of a K breakdown group, independent of any amounts.

Why it fails in practice

  • No delivery block at all. The export writes seller, buyer and lines but never emits BG-13, because domestic invoices validate fine without it.
  • Delivery address without a country. Street and city are mapped from the shipping address, but the country field of the source record is empty or not exported.
  • The buyer address is assumed to cover it. The buyer's country (BT-55) is present, and the integration assumes that satisfies the rule; BR-IC-12 reads only BT-80.

How to fix it

Emit the deliver-to address with its country code:

<cac:Delivery>
  <cac:DeliveryLocation>
    <cac:Address>
      <cac:Country>
        <cbc:IdentificationCode>FR</cbc:IdentificationCode>
      </cac:Country>
    </cac:Address>
  </cac:DeliveryLocation>
</cac:Delivery>

In an InvoiceXML create request the field is invoice.delivery.deliveryAddress.country, an ISO 3166-1 alpha-2 code. Set it whenever a line or breakdown uses VAT category K.

The raw rejection vs the InvoiceXML finding

The Schematron report quotes the rule prose:

<svrl:failed-assert id="BR-IC-12" flag="fatal"
    location="/*:Invoice[namespace-uri()='...']/cac:TaxTotal[1]/cac:TaxSubtotal[1]">
  <svrl:text>[BR-IC-12]-In an Invoice with a VAT breakdown (BG-23) where the
    VAT category code (BT-118) is "Intra-community supply" the Deliver to
    country code (BT-80) shall not be blank.</svrl:text>
</svrl:failed-assert>

The InvoiceXML finding for the same failure:

{
  "rule": "BR-IC-12",
  "layer": "en16931",
  "line": null,
  "message": "An invoice with an Intra-community supply VAT breakdown must state where the goods were delivered. Add the deliver-to country code.",
  "btCodes": ["BT-80"],
  "fields": ["delivery.deliveryAddress.country"],
  "raw": "[BR-IC-12] EN16931: In an Invoice with a VAT breakdown (BG-23) where the VAT category code (BT-118) is \"Intra-community supply\" the Deliver to country code (BT-80) shall not be blank."
}

The message names the missing field in plain terms, and fields points at the exact request path, three levels deep, that a form should highlight.

Check or generate intra-community invoices

Validate a document in the UBL validator or the XRechnung validator to see the whole category K package at once. Generating via POST /v1/create/ubl or POST /v1/create/facturx validates every document against the full rule set before delivery. The VAT category model is part of EN 16931 explained.

  • BR-IC-11, the delivery date or invoicing period requirement of the same K package
  • BR-IC-02 and BR-IC-03, the seller and buyer VAT identifier requirements for intra-community supplies
  • BR-IC-05, BR-IC-08 and BR-IC-10, the 0% rate, zero tax amount and exemption reason constraints
  • BR-E-10, the exemption reason requirement of the exempt category

Frequently asked questions

Is the buyer's address not enough?

No. The buyer's postal address (BG-8) is where the invoice goes, not necessarily where the goods go. EN 16931 keeps the two separate, and BR-IC-12 looks specifically at the deliver-to address country (BT-80) inside the delivery group (BG-13/BG-15).

Do I have to provide the full delivery address?

The rule itself only requires the country code. In practice the delivery address group carries whatever you know (street, city, post code), but a K breakdown validates as soon as BT-80 holds an ISO 3166-1 code such as FR or NL.

What else does a category K invoice need?

The K package spans several rules: line items at 0% (BR-IC-05), a zero tax amount in the breakdown (BR-IC-08), an exemption reason (BR-IC-10), seller and buyer VAT identifiers (BR-IC-02/BR-IC-03), and a delivery date or invoicing period (BR-IC-11). BR-IC-12 is the destination piece of that package.

Which layer and formats does BR-IC-12 apply to?

It is an en16931 core layer rule: every format and profile inherits it, from plain UBL and CII through XRechnung, Peppol BIS and hybrid Factur-X/ZUGFeRD PDFs.