Does the PDF match the XML?

A ZUGFeRD or Factur-X invoice is two invoices in one file: a PDF for people and an XML for software. If they say different things, your accounting software pays what the XML says. Our free validator now compares both.

Why a mismatch matters

Accounting and payment software reads the XML. People read the PDF. When the two differ, nobody notices until the money has gone to the wrong place. A changed IBAN in the XML is a known invoice-fraud pattern. More often a mismatch is a software error, for example a PDF regenerated after the XML was created.

What we compare

  • IBAN: every IBAN in the XML (BT-84) against the IBANs printed on the PDF. Only real IBANs with valid check digits count. A difference gets a red warning.
  • Invoice number (BT-1): must appear on the PDF.
  • Amount due (BT-115): must appear on the PDF, in any usual format (1.190,00 or 1,190.00).

The rest of the check is the full official validation: KoSIT for XRechnung, the CEN EN 16931 rules and Peppol BIS 3.0.

How to check an invoice

Upload the PDF to the free validator. The file is checked in memory and discarded right away. You get the validation result, the comparison, and a readable view of the XML to compare by eye.

If the IBAN differs

Don't pay yet. Call the seller on a phone number you already know (not one from the invoice or the email) and confirm the bank details. Ask for a corrected file. If you send ZUGFeRD invoices yourself, check your software's export: the PDF and the XML must come from the same data.

Limits

Scanned PDFs have no readable text, so we can't compare them, and you'll see a note saying so. We compare the three fields where mismatches cost money. Other differences, such as a changed line item, still need a look at the readable view.

Invoiceer for Stripe: XRechnung, ZUGFeRD and Peppol from every Stripe invoice, validated with the official rules. Free for 5 e-invoices a month.

See the Stripe app Read the setup guide

Questions

Which part of a ZUGFeRD invoice counts, the PDF or the XML?

For e-invoicing, the structured XML is the leading part. In Germany the BMF letter of 15 October 2024 treats it that way. The PDF is a readable copy and should show the same content.

Is my invoice uploaded anywhere?

No. The file is checked in memory on our EU server and discarded right away. Nothing is stored.

Can I check this automatically?

Yes. The free validation API and the MCP server return the same warnings (codes PDF-XML-IBAN, PDF-XML-NUMBER, PDF-XML-AMOUNT).

More: XRechnung + Stripe · ZUGFeRD + Stripe · Peppol + Stripe · Peppol registration · Peppol BIS 3.0.21 changes