A payment or invoicing team building for one EU market can pick a format and stop thinking about it. A team building for four or five markets can't, because the four names that come up most, UBL, XRechnung, FatturaPA, Facturae, don't sit on the same level. Two of them are XML syntaxes. Two are national schemas that predate the European e-invoicing standard entirely and don't use either syntax. This guide sits alongside fiskaly's format-specific deep dives on XRechnung, ZUGFeRD/Factur-X, UBL vs. CII, and Italy's and Spain's national systems; rather than covering any one format in isolation, it lines them up against each other so the differences that actually matter for a multi-market rollout are visible in one place.
TL;DR
- UBL and CII are XML syntaxes, not finished invoice formats. Country-level specs decide which fields are mandatory.
- XRechnung and Factur-X/ZUGFeRD build on those syntaxes and comply with the EN 16931 standard.
- FatturaPA (Italy) and Facturae (Spain) predate EN 16931 and use neither UBL nor CII.
- Factur-X/ZUGFeRD ships in six profiles, from MINIMUM up to EXTENDED, each carrying a different depth of data.
- Peppol BIS Billing 3.0 is a UBL profile for network exchange, not a competing format.
What is UBL, and where is it used?
UBL (Universal Business Language) is an open XML standard maintained by OASIS that defines a generic structure for business documents, including invoices, credit notes, and orders. A UBL invoice uses two namespace prefixes: cbc (Common Basic Components) for simple fields like dates and amounts, and cac (Common Aggregate Components) for structured blocks like parties and addresses. The root element of a UBL invoice is <Invoice>; credit notes use <CreditNote> instead.
UBL 2.1 is the current version in active use for e-invoicing. It is broader than any single national mandate: it supports dozens of optional fields that individual countries or networks then restrict into a CIUS (Core Invoice Usage Specification). Peppol BIS Billing 3.0, Germany's XRechnung (UBL variant), and the Netherlands' NLCIUS are all CIUS profiles built on the same UBL 2.1 schema. The underlying XML grammar does not change across borders; only the business rules layered on top of it do.
What is UN/CEFACT CII, and how does it differ from UBL?
CII (Cross Industry Invoice) is the second EN 16931-recognized syntax, maintained by UN/CEFACT, and it is the syntax used inside hybrid formats like Factur-X and ZUGFeRD. Structurally, CII organizes an invoice around trade-transaction concepts, using elements like ExchangedDocument, SellerTradeParty, BuyerTradeParty, and SpecifiedTradeSettlement, rather than UBL's document-component model. Both syntaxes can express the same EN 16931 semantic content.
In practice, the choice between UBL and CII is not usually made invoice by invoice. It is set by whichever format the receiving country or platform expects. Germany's XRechnung, for example, lets the sender choose either UBL or CII XML for the same underlying data, and the resulting files are functionally equivalent once validated. That free choice applies to XRechnung itself; the transmission channel can constrain it in practice, since Peppol BIS Billing 3.0 requires UBL and ZUGFeRD/Factur-X hybrids use CII only. Direct submission through a portal like OZG-RE still allows either syntax.
What is XRechnung, and is it UBL or CII?
XRechnung is Germany's national CIUS (Core Invoice Usage Specification) of EN 16931: a pure, structured XML file with no PDF or visual layer, available in either UBL or CII syntax. It is not a hybrid format. An XRechnung file is meant to be processed by software, not opened and read directly.
The current version is XRechnung 3.0.2, identified in the XML by its CustomizationID field, which confirms both EN 16931 compliance and the specific German extension rules. XRechnung 4.0, implementing EN 16931-1:2026, is expected in late 2026 and will supersede 3.0.2. Because XRechnung is a CIUS rather than a separate schema, its UBL variant is compatible with the broader Peppol BIS Billing 3.0 profile. A UN/CEFACT CII-based XRechnung file uses the same underlying schema as the EN 16931 profile embedded in a ZUGFeRD 2.x PDF. Invoices to German federal bodies go through the OZG-RE platform, which replaced the ZRE in 2025; Länder and municipalities operate their own channels. These platforms validate incoming files against the same open-source KoSIT validator rules that most German software uses to check compliance before sending. fiskaly also offers SIGN DE for German fiscalization; it runs on a separate, country-specific API today, with a shared integration onto fiskaly's unified platform planned for 2027.
What is Factur-X/ZUGFeRD, and what are its profiles?
Factur-X and ZUGFeRD are the same hybrid invoice format under two names: a human-readable PDF/A-3 document with a structured CII XML file embedded inside, jointly developed by France's FNFE-MPE and Germany's FeRD. Since ZUGFeRD 2.1 (2020), the two specifications have been technically identical: same XML schema, same PDF/A-3 container, same profile tiers, and even the same embedded filename, factur-x.xml. Only the brand name differs by market.
The format defines six profiles, each carrying progressively more structured data:

