Peppol validator. Validate Peppol invoice files in your browser.

You received a UBL file, or built one, and you want to know whether it will be accepted before you send it.

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

Drop it here and the validator gives you, for every finding, the rule code, a sentence in plain English, the path to the element and the original English wording of the rule behind a disclosure link. Which rule set applies is decided by the CustomizationID field: EN 16931, Peppol BIS Billing 3.0 or XRechnung 3.x. The file is read in your browser and never uploaded.

  • 332 rule codes from EN 16931, Peppol BIS Billing 3.0 and XRechnung 3.x
  • findings in plain English, with the path to the element and the rule quoted
  • validation 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.

What does this Peppol validator check?

332 rule codes: 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, the rules of Peppol BIS Billing 3.0 including check digits of national identifiers, the rules of XRechnung 3.x (BR-DE-1 to BR-DE-31) and thirteen checks of our own, such as IBAN mod 97 and the shape of a German Leitweg-ID.

Is my invoice uploaded anywhere?

No. The file is read by your browser and checked there; it does not leave your machine. We create no account and store nothing except the emailed result you ask for. Exactly one thing goes to a server, and only if you buy: after you come back from the payment, we ask whether that payment went through. One exception: if you choose to have the result emailed below the check, your email address and a summary (profile, counts and rule codes, never the file) go to our server and are kept in our database until the email is sent; a copy of the sent email stays in our mailbox (privacy policy, section 3).

How does the validator know which rules apply?

From the CustomizationID field, term BT-24. For Peppol BIS Billing 3.0 the value is urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0; for XRechnung 3.0 it ends with xrechnung_3.0. The validator reads that field and picks the rule set itself, there is nothing to configure.

What does it not check?

It does not check the UBL 2.1 XSD schema, so neither element order nor data types. It does not check the 755 rules of the UBL-CR, UBL-SR and UBL-DT groups, which mostly flag surplus elements. It applies no rules to the CII syntax: such a file we recognise and tell you so. Passing here is a good first check, not a guarantee that the receiver or the network will accept the invoice.

Why does it report BR-CO-15?

BR-CO-15 requires the invoice total with VAT (BT-112) to equal the total without VAT (BT-109) plus the total VAT amount (BT-110). It is usually a single cent: your software computes VAT line by line and rounds, while the standard wants one VAT amount per rate, computed from the whole taxable amount. Correct the total in the invoice header, not the individual lines.

Is validating free?

Yes, validation and the document preview are free, with no account and no limit. You pay only if you use the generator to build a new invoice and want to download the finished XML: 2.90 € excl. VAT for one invoice or 9.90 € excl. VAT for 30 days.

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.