EN 16931 for Shopify: the standard behind XRechnung, ZUGFeRD and UBL
Last updated 26 July 2026
Once you start looking into EU e-invoicing, one code keeps appearing: EN 16931. It sits underneath XRechnung, ZUGFeRD, UBL and Peppol — the standard they all point back to. This is a plain-English explainer for Shopify merchants: what EN 16931 actually is, how those other names relate to it, and what it takes for a store to produce a compliant invoice.
What EN 16931 actually is
EN 16931 is a European standard that defines the "core" of an electronic invoice — the list of data fields a compliant e-invoice must carry, and exactly what each one means. Think seller and buyer identifiers, VAT numbers, line items, tax breakdown, totals, payment terms: EN 16931 says which of these are required, how they relate, and the rules the numbers must satisfy.
It was created under the EU's Directive 2014/55/EU, originally to make public-sector (B2G) invoicing interoperable across Europe, and has since become the backbone of the wider B2B e-invoicing mandates now rolling out. The key idea: an e-invoice is not a PDF you look at — it is structured data a computer reads, in a shape everyone agrees on.
How XRechnung, ZUGFeRD and UBL fit in
This is where most people get tangled. These names sit at different layers — they are not competing alternatives to EN 16931, they are built on top of it:
| Name | What it is |
|---|---|
| EN 16931 | The underlying semantic standard — what data an invoice contains and the rules it must follow. |
| UBL / CII | The two permitted XML syntaxes EN 16931 can be written in — how the data is laid out in a file. UBL (OASIS) is the most common; CII is UN/CEFACT's equivalent. |
| XRechnung | A German profile (CIUS) of EN 16931 — the national rules that tighten the standard for German public bodies. Pure XML. |
| ZUGFeRD / Factur-X | A hybrid format: a normal PDF invoice with EN 16931 XML embedded inside it, so a human and a machine can both read the same file. (Factur-X is the French twin.) |
| Peppol BIS Billing 3.0 | Another profile of EN 16931, in UBL, designed to travel over the Peppol network. |
So if a buyer asks for "an XRechnung" or "a ZUGFeRD invoice" or "UBL," they are all asking for the same thing underneath: an EN 16931-compliant invoice, packaged the way their country or software expects.
Why a Shopify merchant should care
Two forces are pushing EU B2B sellers toward EN 16931:
- Mandates. B2B e-invoicing is becoming compulsory country by country — Germany's sending mandate lands in 2027–2028, with others close behind, and the EU's ViDA reforms steer the whole bloc onto structured invoices built on EN 16931.
- Buyers. Larger business customers increasingly require an EN 16931 invoice, because it drops straight into their accounting system with no re-typing.
A PDF invoice generated from a Shopify order looks fine to a human but isn't an EN 16931 e-invoice — it carries none of the required structured fields and can't be validated. That's the gap.
Can Shopify produce an EN 16931 invoice on its own?
No. Shopify is great at taking orders, but it has no native EN 16931 support. Out of the box it can't:
- map an order to the EN 16931 core fields (in UBL or CII),
- apply a national profile such as XRechnung or produce a ZUGFeRD hybrid PDF, or
- validate the result against the EN 16931 business rules before it goes out.
Those capabilities are added with an app or service that sits between your store and the invoice format.
What an EN 16931 invoice has to get right
An EN 16931 document is validated — not just formatted. To pass, a Shopify order has to be turned into a structured invoice that carries, at minimum:
| Element | Why it matters |
|---|---|
| Seller & buyer identity | Legal names, addresses and VAT numbers — and, for delivery over Peppol, participant IDs. |
| Invoice metadata | A unique number, issue date, currency and invoice type code, in the exact fields the standard defines. |
| Line items | Each line's quantity, unit price, net amount and VAT category — structured, not free text. |
| VAT breakdown | Tax grouped by rate and category, with the right code for reverse charge or exemptions. |
| Totals that reconcile | Net, VAT and gross must add up to the cent, or the invoice is rejected by the validation rules. |
How a Shopify store meets EN 16931
You don't retrofit the standard onto Shopify by hand — a purpose-built app maps each order into a compliant document. The flow looks like this:
| Step | What happens |
|---|---|
| 1 · Capture | Collect the buyer's company details and VAT number (plus Peppol ID if you'll send over Peppol) at checkout or on the order. |
| 2 · Map | Turn the Shopify order into the EN 16931 core fields, in UBL or CII — the profile your buyer or country needs (XRechnung, ZUGFeRD, Peppol BIS). |
| 3 · Get VAT right | Derive net and VAT correctly — including reverse charge for cross-border B2B — and check the buyer's VAT number against VIES. |
| 4 · Validate | Run the document against the EN 16931 business rules so it passes before it's ever sent. |
| 5 · Deliver | Send it the way the buyer expects — over a Peppol Access Point, by email, or as a ZUGFeRD PDF — and track the outcome. |
The part everyone underestimates: VAT correctness
EN 16931 invoices are validated to the cent. If net, VAT and gross don't reconcile, the invoice is rejected — and a rejected invoice that was legally required is a failed sale. Pulling clean figures out of Shopify is trickier than it looks: whether your prices include or exclude tax changes how net and VAT are derived, rounding can leave you a cent off, and selling to a VAT-registered business in another EU country usually means reverse charge — 0% VAT with the correct EN 16931 category code and legal note. Producing the right file format is only half the job; the numbers inside it have to be right too.
Zeppol makes your Shopify orders EN 16931-compliant
Zeppol turns your Shopify orders into EN 16931-valid e-invoices — in the profile your buyers need (Peppol BIS, XRechnung or ZUGFeRD) — gets the VAT right (reverse charge and VIES included), and delivers them over a certified Peppol Access Point with status tracked in your admin. Germany-first, built for the 2027 mandate wave. Join the early-access list.
Frequently asked questions
What is EN 16931?
The European standard that defines the core data model of an e-invoice — the fields a compliant invoice must carry and what they mean. Created under EU Directive 2014/55/EU, it's the common model behind XRechnung, ZUGFeRD and Peppol BIS, expressed in the UBL or CII XML syntax.
Is EN 16931 the same as XRechnung, ZUGFeRD or UBL?
No — different layers. EN 16931 is the semantic standard; UBL and CII are the XML syntaxes it's written in; XRechnung is a German profile of it; ZUGFeRD is a hybrid PDF-plus-XML that embeds it. They're all ways of expressing an EN 16931 invoice.
Can Shopify create an EN 16931 invoice?
No. Shopify's order and PDF outputs aren't structured e-invoices, don't carry the required fields, and aren't validated. You add EN 16931 output with an app that maps the order to a compliant UBL or CII document.
Do I need EN 16931 for my Shopify store?
If you sell B2B in the EU, increasingly yes. Mandates — Germany from 2027–2028 and others under ViDA — require structured invoices built on EN 16931, and many business buyers already expect them. A PDF won't qualify.
What's the difference between EN 16931 and Peppol?
EN 16931 is the invoice format; Peppol is the network that delivers it. Peppol BIS Billing is itself a profile of EN 16931, so a Peppol invoice is an EN 16931 invoice sent over the Peppol network. You usually need both to be compliant end to end.
This guide is general information for Shopify merchants, not legal or tax advice. Rules, mandates and thresholds vary by country and change over time — confirm your obligations with a qualified tax adviser.