E-invoice validator for EN 16931 and XRechnung

Germany’s federal portal rejected your invoice? Correct it and send it again. Federal invoices need the buyer reference called (a routing reference for German authorities). Check this reference before sending.

New to this? Explained in 30 seconds

An electronic invoice is a file that accounting software can read directly.

Missing invoice data can delay processing and payment.

This tool checks the file against the selected rules.

Correct the reported fields and check again before sending.

  1. Drop your file here
  2. See what is wrong and where
  3. Fix it and check again
By clicking, you agree to send only this fictional sample to our server for this check

Choose a file or paste XML

No files selected
or drop your file here
UTF-8 · max. 10 MB
Rules: EN 16931 / XRechnung · change ▾
Check your month’s files together and get alerts when the rules change.Compare plans
More options

Your invoice is sent to our server for business-rule checks and is not stored. Temporary processing files are deleted after completion or timeout. Invoice content is not logged. Privacy details.

No file selected

Video 1:14PDF instructionsEnglish · 188 KBStep by step
How to fill in · XRechnung
Download PDF · English

Before you start

Have the XML export from your invoicing software and the buyer’s instructions ready. Use UBL or CII. A PDF printout cannot replace the XML; export the electronic invoice from your software.

Steps

  1. Open the e-invoice validator and choose the package XRechnung.
  2. Choose your XRechnung file (UBL or CII), or paste the XML.
  3. Tick the consent box, then click Check invoice.
  4. Read the result card: rule, field, XML path, and a failing and a passing example.
  5. Fix the field in your software, export and check again.

Three errors to check first

  • BR-DE-15: Buyer reference missing. Ask the buyer for the routing reference and put it in BuyerReference.
  • BR-DE-2: Seller contact missing. Add the invoicing contact to the seller record and export again.
  • BR-DE-21: Wrong specification ID. Choose the XRechnung export in your software, then check the new file.

A passed check means the selected rules passed. Confirm the buyer’s delivery requirements before sending the invoice.

The language of these instructions can differ from the controls shown. Keep the rule ID when asking a colleague for help.

Video walkthrough

How to check XRechnung · 1:14Recorded on the live site with a fictional sample invoice. Our own product; the voice is made with AI. Also on YouTube
How to fill in · EN 16931
Download PDF · English

Before you start

Have the XML export from your invoicing software and the buyer’s instructions ready. Use UBL or CII. A PDF printout cannot replace the XML; export the electronic invoice from your software.

Steps

  1. Open the e-invoice validator and choose the package EN 16931.
  2. Optional: pick the rule version by date.
  3. Choose your UBL or CII file, or paste the XML. Loading does not upload anything.
  4. Tick the consent box, then click Check invoice.
  5. Read each failed rule: the rule ID, what it requires, and the XML path showing the place in the file.
  6. Note the rule version the report names, fix the field in your software, export and check again.

Three errors to check first

  • BR-CO-10: Line total differs. Add the net amounts of the invoice lines and correct the line subtotal before VAT.
  • BR-CL-18: Invalid VAT category. Map your software’s tax code to the category required for this invoice, such as S or Z. Do not put a percentage in this field.
  • BR-06: Seller name missing. Put the seller’s legal name in PartyLegalEntity/RegistrationName.

A passed check means the selected rules passed. Confirm the buyer’s delivery requirements before sending the invoice.

The language of these instructions can differ from the controls shown. Keep the rule ID when asking a colleague for help.

Video walkthrough

How to check EN 16931 · 1:27Recorded on the live site with a fictional sample invoice. Our own product; the voice is made with AI. Also on YouTube

“I did run into this and only found out after the damage was done. Would have been great to have this earlier.”

Fred Dons, trade finance, on LinkedIn

Rules, scope and source

The result checks invoice structure, fields and totals against EN 16931 version 1.3.16, plus XRechnung 3.0.2 national rules 2.6.0 when chosen. Each report names the version used. For final acceptance, send the corrected invoice through your recipient’s required channel and keep their response.

For Peppol delivery, ask your Peppol provider to check its rules and confirm delivery. We check official rule releases hourly; see the rule sources and checking details.

You can check an invoice up to 10 MB. If a check reaches a time or report limit, correct the reported errors and check the file again. For a larger invoice, contact support to arrange a check.

Recurring invoice checks

Pro US$9/month supports 25 files per batch; Team US$29/month supports 100. Existing plan limits apply; no separate invoice pricing. Batches run sequentially and can take several minutes. Compare plans.

EN 16931 guide · XRechnung guide · API, CLI and Actions documentation

UBL, CII and the profile your recipient expects

UBL 2.1 and UN/CEFACT CII D16B are different XML vocabularies for the European invoice model. UBL uses Invoice or CreditNote roots and separate aggregate/basic namespaces. CII uses CrossIndustryInvoice with trade agreement, delivery and settlement structures. A field has different element paths in the two syntaxes; translate business terms rather than renaming tags.

Select EN 16931 for the fixed European semantic checks. Select XRechnung when the recipient asks for that German profile: it adds national constraints, including electronic addresses and buyer-reference requirements. A Leitweg-ID can be the buyer reference required for a German public recipient; confirm the actual recipient identifier instead of inventing one. Neither mode sends the invoice to a portal.

Mandate dates and country scope

Snapshot checked on 2 November 2026. These dates describe selected scopes and transitions; the format accepted by a particular recipient still matters.

  • EU public procurement: central receiving obligations from 18 April 2019, with a possible subcentral extension to 18 April 2020. EN 16931 itself is not a universal B2B mandate. Directive 2014/55/EU.
  • Germany: federal B2G supplier obligations from 27 November 2020, subject to exceptions. Domestic B2B receipt from 1 January 2025; issuance transitions through 2027/2028 depend on turnover and exceptions. XRechnung is not the exclusive B2B format. Federal FAQ · BMF guidance.
  • France: receipt for all businesses and issuance for large and intermediate businesses from 1 September 2026; issuance for small businesses and microbusinesses from 1 September 2027. Official timetable.
  • Poland: KSeF issuance from 1 February 2026 for businesses above PLN 200 million 2024 sales; from 1 April 2026 for others, with a small monthly-sales transition through 2026 and exclusions. KSeF receipt from 1 February 2026. KSeF is a separate system and is not validated here. Official KSeF scope.

Ten common error messages

These examples show invoice errors that can appear together. Open a rule to find the affected field and try a correction.

  1. BR-S-08: Standard VAT taxable base must match the lines (281 mutation reports)
  2. PEPPOL-EN16931-R008: Empty XML elements are forbidden (111 mutation reports)
  3. BR-CO-10: Line net total must equal the sum of lines (108 mutation reports)
  4. BR-CO-04: Each line needs a VAT category code (77 mutation reports)
  5. BR-25: Each invoice line needs an item name (72 mutation reports)
  6. BR-21: Each invoice line needs an identifier (51 mutation reports)
  7. BR-27: Item net price cannot be negative (51 mutation reports)
  8. BR-S-05: Standard-rated lines need a positive VAT rate (39 mutation reports)
  9. BR-CO-15: Gross total must equal net total plus VAT (34 mutation reports)
  10. BR-22: Each invoice line needs a quantity (24 mutation reports)

Search the complete pinned rule index.

From one invoice to a repeatable batch

First repair one invoice and keep its passing output as a regression example. Then sign in with Pro for up to 25 XML files per batch, or Team for up to 100. Select files in the invoice validator, choose the same fixed package and consent to server processing for each selected invoice. Checks run sequentially with a visible per-file result; a passing first file does not establish that the whole batch passes. Compare plans and limits · Run a batch.

Your next check

YOUR NEXT STEP

Check UBL and CII invoice XML against fixed official EN 16931 and XRechnung rules after explicit server-processing consent.

Open E-invoice validator

Invoice triage

Review a mixed invoice batch in this tab. Pro: 25 files; Team: 100. Existing account and Team workspace daily quotas apply. Team workspace sharing stays the same; this is not a separate client space.

Open Invoice triage · Pro / Team

The report lists the checks that passed. Open Additional checks for supported identifiers and signature checks. Check the PDF separately when required and keep the recipient’s response to confirm acceptance. See the remaining checks and how to run them.

or drop your file here
max. 10 MB

Files and results stay in this tab's memory. No automatic download, saved session or extra server storage.

Consent applies to each supported file in the displayed batch. Changing files or a package clears consent. Duplicate bytes with the same package reuse their session result.

Next: Invoice viewer for a local readable view.

Additional checks

Check identifiers, code lists and document totals locally. Each result names its rule and source.

The local check sends no document or identifier to a register.

Certificate checks use authenticated EU trust list 398, including France 184 and Italy 225. Ask your signature provider to verify the signed document, revocation and qualified status before relying on the signature. Certificate check details.

Identifier
Code list
Check document fields
or drop your file here
UTF-8 · max. 10 MB
Optional official register lookup

Identifier

Offline certificate chain on this server

The report includes source paths, amounts and certificate fingerprints. Review it before sharing.

What this checks

Invoice check by email

An invoice in your inbox should not mean another round of manual checks. Forward its XML to check@xsdhub.com. The reply shows the rule code, affected field and rule version, so you can correct the invoice in your software.

For a PDF or (an invoice with PDF and XML) invoice, export its XML from your invoicing software and send that file. You can also check the PDF in the Factur-X validator.

Email the invoice XML

Read this explanation in another language

Germany’s federal portal rejected your invoice? Correct it and send it again. Federal invoices need the buyer reference called Leitweg-ID. Check this reference before sending.

Technical details

After processing, we permanently delete the email and attachments from our mailbox. A pending check is kept for no more than 24 hours. Hashed identifiers expire within 48 hours; only anonymous daily counts remain.

EN 16931

The European standard for the information an electronic invoice must contain.

Read the full definition
XRechnung

The German electronic invoice standard for public administration.

Read the full definition
Leitweg-ID

A routing reference used by German public bodies. It tells the system which buyer should receive the invoice.

Read the full definition
XML

A text file with labelled fields, such as an invoice amount. Your software makes it for another computer to read.

Read the full definition
Factur-X

An invoice with a readable PDF and an XML file inside. People read the PDF; software reads the XML.

Read the full definition

Search

File rejected? Find the error and how to fix it.

Enter an error code or topic.