EN16931 Format

EN16931 is the European standard for electronic invoicing, defining the semantic data model used across the EU.

Overview

PropertyValue
StandardEN 16931-1:2017
TypePure XML
RegionEuropean Union
Use CaseCross-border B2B/B2G

What is EN16931?

EN16931 is a semantic standard that defines:

  • What information an e-invoice must contain
  • How that information is structured
  • Business rules for validation

It does not define the syntax (XML format). Instead, it has two syntax bindings:

SyntaxDescription
UBL 2.1Universal Business Language
CII D16BUN/CEFACT Cross-Industry Invoice

Relationship to Other Formats

EN16931 is the foundation for:

FormatBased OnAdditions
ZUGFeRDEN16931 + CIIGerman extensions
Factur-XEN16931 + CIIFrench extensions
XRechnungEN16931German B2G rules
Peppol BISEN16931 + UBLEU interoperability

When to Use EN16931

Use pure EN16931 format when:

  • Trading with EU partners who require the standard
  • No country-specific format is required
  • Maximum interoperability is needed

Configuration

Enable EN16931

Stores >Configuration > MageB2B > E-Invoice:

  1. Set Default B2B Format: EN16931
  2. Set Validation Level: Standard or Strict

Syntax Selection

The extension uses CII (Cross-Industry Invoice) syntax by default, which is compatible with ZUGFeRD/Factur-X.

Generated Files

FilePath Example
XMLpub/media/einvoice/invoice-100000001-en16931.xml

Note: in this module, credit memo generation supports ZUGFeRD and XRechnung.

Validation

EN16931 validation includes:

  1. Core data model compliance
  2. Business rules (BR-xx rules)
  3. Country-specific rules (if applicable)

EU E-Invoicing Directive

EN16931 was created to fulfill EU Directive 2014/55/EU, which mandates:

  • All EU public sector entities must accept EN16931 invoices
  • Cross-border B2G invoicing uses this standard
  • Member states can require additional national rules

Best Practices

  1. Use for cross-border EU transactions
  2. Validate against BR rules before sending
  3. Consider Peppol for B2G delivery
  4. Test with recipient systems

Found an issue with this documentation? Let us know