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.

Drop the XML file hereor click and pick it from your computer

Check an e-invoice

Example

We found 2 errors. Fix them and check again.

Profile: Peppol BIS Billing 3.0Document type: Invoice2 errors0 warnings0 notes

For this profile we evaluated 289 rules.

ErrorBR-CO-15

The invoice total with VAT (BT-112) should be the total without VAT 1500.00 plus the VAT 0.00, that is 1500.00. The file says 1500.01. Correct the total in the invoice header, not the individual lines.

Value in the file: 1500.01

Path to the element: /Invoice/cac:LegalMonetaryTotal/cbc:TaxInclusiveAmount

ErrorARL-IBAN

The IBAN "IE29AIBK93115212345671" fails the mod 97 check under ISO 13616. Check the account number for a typo.

Value in the file: IE29AIBK93115212345671

Path to the element: /Invoice/cac:PaymentMeans/cac:PayeeFinancialAccount/cbc:ID

Example: our sample invoice with two errors we put in on purpose. Load a file and your own result appears here.

  • 0 € check and preview, no account
  • 2.90 € excl. VAT (3.57 € incl. 23 % VAT in Slovakia) the XML of one invoice
  • 9.90 € excl. VAT (12.18 € incl. 23 % VAT in Slovakia) 30 days, no limit
Pricing in detail

332 rule codes from the official schematron files

EN 16931, XRechnung 3.0, Peppol BIS Billing 3.0, UBL 2.1, Invoice, CreditNote, BR-01 to BR-65, BR-CO, BR-DEC, BR-CL, BR-DE-1 to BR-DE-31, Leitweg-ID, IBAN mod 97, CustomizationID

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.

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.

  • 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

Three steps, nothing to install.

  1. Load the file

    Drop the XML from your invoicing software, pick it from your computer or paste the text. We read UBL 2.1, invoices and credit notes alike. A CII file we recognise and tell you so, but we do not run the rules on it.

  2. Read the errors, explained

    Every finding gives you the rule code, a sentence in plain English, the value from the file, the path to the element and the original wording of the rule. The CustomizationID field tells us whether EN 16931, Peppol BIS Billing 3.0 or XRechnung applies.

    ErrorBR-CO-15

    The invoice total with VAT (BT-112) should be the total without VAT 1500.00 plus the VAT 0.00, that is 1500.00. The file says 1500.01. Correct the total in the invoice header, not the individual lines.

    Value in the file: 1500.01

    Path to the element: /Invoice/cac:LegalMonetaryTotal/cbc:TaxInclusiveAmount

    Original wording of the rule

    [BR-CO-15]-Invoice total amount with VAT (BT-112) = Invoice total amount without VAT (BT-109) + Invoice total VAT amount (BT-110).

  3. Save the report or buy the XML

    The check report and the document preview, PDF included, are free. You pay only for the XML of an invoice you build in the form here: 2.90 € excl. VAT for one, or 9.90 € excl. VAT for 30 days. The same check runs over it before the download.

Who it is for, and from when.

  • Germanysince 1 January 2025

    Businesses must be able to receive B2B e-invoices. Sending is staged: companies with a previous year turnover of up to 800 000 euro have until 31 December 2027, and everyone must send from 1 January 2028. You can check and build XRechnung 3.x here, Leitweg-ID field included.

  • PeppolPeppol BIS Billing 3.0

    You hand the invoice to your access point provider, who delivers it to the buyer. Here you check it first, or build it, in the Peppol BIS Billing 3.0 profile. Delivery into the Peppol network is not included.

  • Slovakiafrom 1 January 2027

    E-invoicing over Peppol becomes mandatory for domestic business-to-business supplies between VAT payers, under Act 385/2025 Coll. Slovak companies are identified there by schemeID 0245 and their tax number DIC.

The invoice file is read, checked and drawn in your browser. It is never sent to our server.

Stays in your browser

  • Reading the file. The XML opens right in the browser and is never uploaded.
  • Rule check and preview. All 332 rule codes and the drawing of the document run on your machine.
  • Building XML and PDF. The XML is made from the form in your browser; the PDF is saved by the print function of your browser.
  • Address book and draft. Kept only in this browser; one button in the form erases them.

Goes to a server

  • Payment check. When you come back from Stripe, the page asks our server, by the checkout session number, whether the payment went through. The invoice is not sent along.
  • Payment. Happens on the Stripe page. The seller (merchant of record) is Link (Sold through Link, LLC) through the Stripe Managed Payments service; ARLing s. r. o. supplies the product.
  • Optional enquiry. Sends only what you type into it.
  • Result by email. Only if you ask for it below the result: your address and a summary (profile, counts, rule codes), never the file. Details in our privacy policy.
  • Visit counting. Our own Umami counts visits and events, for example that a check ran and how it ended. The contents of the invoice never go into it.

The invoice file and the details in the invoice creation form stay in your browser. The address book for sellers and buyers sits in localStorage and can be cleared with the button in that form. After a payment, we check its status on the server. A separate optional enquiry sends ARLing only what you enter in it; the invoice is not automatically attached. We measure visits with our own Umami.

The result by email sends only your email address and a summary (profile, counts and rule codes, never the file), and only if you ask for it below the result.

You pay only for the finished XML.

  • Check and preview

    No account, no limit, with the check report and the document as a PDF.

    0 €

    Check a file
  • XML of one invoice

    The download stays unlocked in this browser for 24 hours, so you can correct the invoice and download it again.

    2.90 € excl. VAT3.57 € incl. 23 % VAT in Slovakia, other countries at checkout

    Create an invoice
  • 30 days, no limit

    Any number of invoices, including a CSV batch in one ZIP. One-time payment, no subscription.

    9.90 € excl. VAT12.18 € incl. 23 % VAT in Slovakia, other countries at checkout

    Batch from CSV

Prices exclude VAT. The Stripe checkout adds VAT where it applies, by the buyer’s country, for example 23 % in Slovakia (one invoice 3.57 €, 30 days 12.18 €) or 19 % in Germany (3.45 €, 11.78 €), and shows the final total before payment.

Provider: ARLing s. r. o., company ID 56583486, Bratislava, Slovakia. Stripe handles the payment.

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.

What people ask.

No answer here? Write to support@arling.sk.

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.

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 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.

Got the XML at hand? You will see the result in seconds.

Free, no account, and the file stays in your browser.