E-invoicing under EN 16931
UBL invoice example XML.Load it, read it, check it.
If you need a UBL invoice example XML to start from, use the Load sample button below: it drops a complete UBL 2.1 invoice into the box, runs the check over it and shows it as an ordinary document. Change a value, run it again, and watch which rule breaks. Then paste your own file in the same box. Nothing is uploaded, the whole thing happens in your browser.
- one click loads a working UBL 2.1 invoice, already passing the rules
- every finding names the rule code and the path to the element
- check and preview free, no account, no limit
The structure is always the same. The root element is Invoice, or CreditNote for a credit note, in the UBL 2.1 Invoice-2 namespace. Right under it sit the header fields in the cbc namespace: cbc:CustomizationID (BT-24, which specification applies), cbc:ID (the invoice number), cbc:IssueDate, cbc:DueDate, cbc:InvoiceTypeCode (380 for a commercial invoice, 381 for a credit note) and cbc:DocumentCurrencyCode.
Then come the groups in the cac namespace: cac:AccountingSupplierParty and cac:AccountingCustomerParty for seller and buyer, cac:PaymentMeans for how to pay, cac:TaxTotal with one cac:TaxSubtotal per VAT rate, cac:LegalMonetaryTotal with the sums, and one cac:InvoiceLine per line. Every one of those carries the business terms of EN 16931, which is why the same rules apply to files from completely different software.
for the XML download of one invoice, or 9.90 € for 30 days with no limit on the number of invoices. Check and preview are free.
- fill in the form and watch the document build itself
- the XML is made in your browser, nothing goes to a server
- our own check runs over it before you download
Seller: ARLing s. r. o., company ID 56583486, Bratislava, Slovakia. Stripe handles the payment.
The tool
Check an e-invoice
Load a UBL 2.1 file (Invoice or CreditNote) and we tell you what is wrong with it. Every finding carries the rule code, a sentence in plain English explaining what to fix, the path to the element, and the original wording of the rule under a disclosure link. We read the CustomizationID field and pick the rule set ourselves: EN 16931, Peppol BIS Billing 3.0 or XRechnung.
Preview an e-invoice as a document
The same XML file, read as an ordinary invoice: who billed whom, for what, when, how much and where to pay. Useful when a file arrives from a supplier and you have to read it without accounting software. The button below saves it as a PDF in A4.
Create an e-invoice without accounting software
Fill in the seller, the buyer, the numbers and the lines. On the right the document builds itself, and the UBL 2.1 XML with it. Seller and buyer can be kept in an address book that never leaves your browser. Before the download we run the same check over the generated XML as in the first tab; if it has an error, we do not hand it to you.
Show previewXML download
The form and the preview are free. The finished XML is paid: 2.90 € for one invoice (unlocked in this browser for 24 hours, so you can correct it and download again) or 9.90 € for 30 days with no limit on the number of invoices. The XML is made in your browser and is never sent to a server, so we never see it.
Stripe handles the sale as merchant of record (Stripe Payments Europe, Ltd., Dublin): the purchase contract is with Stripe, which collects the payment, issues the receipt and settles the VAT; ARLing supplies the content. By clicking pay you agree to immediate delivery of digital content and acknowledge that you lose the right to withdraw (EU Consumer Rights Directive 2011/83/EU Article 16(m); under Slovak law, where ARLing is based, section 19(1)(m) of Act 108/2024 Coll.). Terms · Withdrawal
or click and pick it from your computer
What we check and what we do not
An honest list, not a promise of completeness.
We check 332 rule codes. That covers the core rules of EN 16931 (BR-01 to BR-65), the total rules BR-CO, the decimal rules BR-DEC, the code list rules BR-CL, the rules per VAT category (S, Z, E, AE, K, G, O, L, M), the rules of Peppol BIS Billing 3.0 including the check digits of national identifiers, the rules of XRechnung 3.x (BR-DE-1 to BR-DE-31), and thirteen checks of our own: IBAN by mod 97, the shape of German, Slovak, Czech and Austrian VAT numbers, the format of the German Leitweg-ID, the order of dates and the currency code.
We do not check the UBL 2.1 XSD schema, so neither element order nor data types. We do not check the 755 rules in the UBL-CR, UBL-SR and UBL-DT groups, which mostly point at elements that should not be there. We apply no rules over the CII syntax: such a file we recognise and say so. Passing our check therefore does not guarantee that the buyer, the buyer invoicing system or the Peppol network will accept the invoice. It is a good first check, not the last word.
The rule wordings come from the official schematron files: EN 16931 from ConnectingEurope, Peppol BIS Billing 3.0 from OpenPEPPOL and XRechnung from KoSIT. Rule codes and rule texts are normative, so we quote them alongside the rule code and write our own explanation of what to fix.
- EN 16931 and its schematron: github.com/ConnectingEurope/eInvoicing-EN16931
- Peppol BIS Billing 3.0, including the EAS and ICD code lists: docs.peppol.eu
- XRechnung, the German CIUS, by KoSIT: xeinkauf.de
- Germany, the federal finance ministry on e-invoicing from 1 January 2025: bundesfinanzministerium.de
- Slovakia, Act 385/2025 Coll. (new section 76a, in force from 1 January 2027): slov-lex.sk
Questions
What people ask.
Where do I get a UBL invoice example XML?
Press Load sample in the input box on this page. It fills the box with a complete UBL 2.1 invoice, runs the check over it and renders it as a readable document. You can copy the text out of the box and use it as a starting point for your own file.
What is UBL 2.1 and how does it relate to EN 16931?
UBL 2.1 is an OASIS XML vocabulary for business documents. EN 16931, the European standard for the core invoice, allows two syntaxes: OASIS UBL 2.1 and UN/CEFACT CII. Peppol BIS Billing 3.0 is a restriction of EN 16931 over UBL 2.1, which is why the network carries UBL files in practice.
What are the main blocks of a UBL invoice?
A header with CustomizationID, invoice number, dates, type code and currency; the parties in AccountingSupplierParty and AccountingCustomerParty; PaymentMeans with the payment details; TaxTotal with a TaxSubtotal per VAT rate; LegalMonetaryTotal with the sums; and one InvoiceLine per item. Amount elements carry a currencyID attribute, quantities a unitCode from UN/ECE Recommendation 20.
What do the BT and BG codes mean?
They are the business terms of EN 16931. BT is a single term, for example BT-24 CustomizationID or BT-10 buyer reference; BG is a group of terms, for example BG-6 seller contact. Rules are written against these codes, so a message like BR-DE-15 about BT-10 points at exactly one place in the file no matter which syntax you use.
Can I check my own file here too?
Yes, and that is the point of the page. Drag your XML onto the drop zone, pick it from disk or paste it into the box. The checker applies 332 rule codes from EN 16931, Peppol BIS Billing 3.0 and XRechnung 3.x and explains every finding. The file is read in your browser and never uploaded.
Is the sample a real invoice?
No, it is a made-up invoice used to show the format, with invented parties and amounts. Use it to see the shape of a valid file and to try what happens when you break a rule. It is a template and a check, not tax advice.
What this is and what it is not
A template and a check, not tax advice.
This tool checks the shape of the file and assembles a UBL 2.1 invoice from what you type. It does not judge whether you should charge VAT, which rate applies to a supply, whether the reverse charge applies, or whether the supply is taxable at all. That is tax advice, and that is what an accountant or a tax adviser is for. Whoever issues the invoice is responsible for it being right.
We do not create an account and we do not store your data. The file and the form live in your browser; the address book for sellers and buyers sits in localStorage and a button in the form erases it. Exactly one thing goes to a server: after you come back from the payment, we ask whether that payment went through.
We offer VAT rates only for the countries we verified at an official source. For any other country the generator asks you to type the rate yourself rather than guessing it for you.
When a law, a schematron or a version of the specification changes, we adjust the rules and write it here with a date. The facts on this page we verified at the official sources listed above on 11 September 2026.