eInvoice Viewer — Hybrid Check

Add-on for the eInvoice Viewer · WordPress plugin and app · Paid product

ZUGFeRD: compare the PDF and XML before you pay

A ZUGFeRD or Factur-X invoice holds two invoices in one file: the PDF that you read and the invoice data in the XML that your accounting software processes. Nothing in the format forces both to say the same thing. That is exactly where invoice fraud comes in: the XML names a different IBAN, while the PDF still shows the familiar bank account.

The Hybrid Check is an add-on for the free eInvoice Viewer for PEPPOL & EN16931. It compares the PDF and XML by itself as soon as you open the invoice: invoice number, total amount and bank account. A contradiction appears right at the affected field, and the comparison runs entirely in your browser.

App and plugin

The Hybrid Check in the app and in the WordPress plugin

In the app. The Hybrid Check is an add-on for the free viewer app. You put it into the viewer’s folder, as a folder or as a single file, and it is there the next time you start the viewer. Next to the one-file app, the single file is enough. The “Hybrid Check” tab appears in the app exactly as in the plugin.

In the WordPress plugin. On your website you install The Hybrid Check as a plugin of its own next to the free viewer plugin. There you get the additional functions of a website: you limit the calls per visitor and day and decide from which role the add-on appears.


Detect ZUGFeRD invoice fraud: the PDF says one thing, the XML another

Imagine a supplier sends you a ZUGFeRD invoice, just like every month. The PDF looks as usual, with the same bank account as last month. But your accounting software does not read the PDF; it reads the invoice data in the XML, and that names a different IBAN. The payment goes to someone else’s account, and nobody noticed anything unusual.

A validator, a program that checks e-invoices, does not catch this. It checks whether the invoice data is built correctly, but it does not compare it with what the PDF shows. Comparing both sides line by line by hand is not realistic with many invoices a day.

Who checks what: a validator and the Hybrid Check complement each other
QuestionValidatorHybrid Check
Is the invoice data in the XML built correctly?yesno
Does the PDF show the same invoice number as the XML?noyes
Does the PDF show the same total amount as the XML?noyes
Does the PDF show the same bank account as the XML?noyes

How the Hybrid Check compares the PDF and XML

You do not have to click anything. As soon as the viewer has read an invoice with a PDF, the Hybrid Check compares the invoice number, the total amount and the bank account from the XML with the text of the PDF.

  • 1. Install the add-on

    Upload the ZIP file from the shop to WordPress and activate the plugin next to the eInvoice Viewer. For the viewer app, unzip the file into the app folder. The add-on needs no settings.

  • 2. Open a ZUGFeRD invoice

    Drop the invoice into the viewer as usual. The comparison runs by itself.

  • 3. Read the note above the invoice

    If there is a contradiction, a sentence above the invoice announces it, and the affected field carries a card with the message.

  • 4. Open the “Hybrid Check” tab

    The tab shows all messages as cards: the field and “Error”, “Warning” or “OK” at the top, the sentence below. Compare both sides before you pay.


Protection against the most common scam: a different IBAN in the XML

A changed bank account is the most common pattern of invoice fraud. In a ZUGFeRD or Factur-X invoice it is especially easy to hide, because people read the PDF and software reads the XML. The Hybrid Check puts both side by side. If the IBAN from the invoice data does not appear in the PDF, it reports a contradiction.

What you gain: You see before paying that the file contains two different bank accounts, and you can check with your supplier before money goes to someone else’s account.

The contradiction is shown right at the field

A contradiction does not only appear in the “Hybrid Check” tab, but also as a card at the affected field of the invoice: the invoice number, the total amount or the bank account. A sentence above the invoice announces it. The tab does not open by itself, so the invoice stays in view.

What you gain: You see the contradiction where you are looking anyway, and you know right away which detail to clear up with your supplier.

The PDF inside an XRechnung, too

An XRechnung can carry a PDF as an attachment. If that PDF shows the invoice number, the Hybrid Check compares it with the invoice data as well. Attachments that do not show the invoice itself, such as a quantity survey or a rental contract, are left out.

What you gain: The protection covers not only ZUGFeRD and Factur-X, but also XRechnung files that come with an invoice PDF.

It reports a contradiction, not a guess

Many invoice templates do not print the bank account, or print it only as an image. That is why the Hybrid Check does not report that something is missing from the PDF; it only reports when a detail from the invoice data cannot be found in a PDF that has readable text. If the PDF is a scan without readable text, it tells you that it could not compare.

What you gain: A message really means you should take a look, and for every PDF you know whether it was compared.

Hybrid Check in the viewer app

The add-on is also available for the free viewer app, the folder you open in your browser without WordPress. It is a separate ZIP file from the shop that you unzip into the app folder, which then contains the folder addons/hybrid-check/. The app needs version 2.37.1 or later. There, the comparison runs entirely in the browser, without WordPress and without a server.

What you gain: An accounts payable workstation without WordPress also compares every ZUGFeRD invoice before payment.

You decide who gets the comparison

The add-on has no settings page of its own. On the viewer’s settings page, “Available from role” sets the WordPress role from which the add-ons work. On a single page, you switch the comparison off with a switch in the viewer’s shortcode:

[spev_einvoice_viewer tab_sphc="no"]

What you gain: You offer the viewer publicly and keep the comparison for your accounting team.


What the comparison reports

The messages of the Hybrid Check and what they mean
What the page saysMeaning
The visible document shows the invoice number and total amount of the invoice data.The PDF and XML match. If the bank account also appears in the PDF, the sentence names it too.
The invoice number, total amount or bank account of the invoice data does not appear in the visible document.A contradiction. It also appears as a card at the field of the invoice. Compare both sides before you pay.
The visible document contains no readable text.The PDF is probably a scan and was not compared.

The visible document is the PDF that a person reads. A plain XML file without a PDF gets no message, because there is nothing to compare.


  • The accounts payable clerk before the payment run

    She opens every ZUGFeRD invoice in the viewer. If a note appears above the invoice and the bank account carries a card, she calls the supplier at the number she knows before she approves the payment.

  • The owner of a small business

    He pays his invoices himself and has no time to compare the PDF and XML. The Hybrid Check does it when he opens the invoice and only speaks up when something is wrong.

  • The invoice sender before sending

    He opens his own ZUGFeRD invoice in the viewer. If the PDF shows a different total than the invoice data, he notices before the customer asks.


What you need

Requirements for the Hybrid Check 1.2.0
WhatRequirement
WordPressversion 5.8 or later
PHPversion 8.2 or later
PlugineInvoice Viewer for PEPPOL & EN16931, free on wordpress.org; the separate tab requires version 2.38.0 or later
In the viewer appinstead of WordPress and the plugin: the viewer app version 2.37.1 or later and the Hybrid Check add-on for the app
LicenseGPL-2.0-or-later
  • The invoice stays in your browser.

    The comparison runs in the browser with the file the viewer has already read. The add-on sends nothing to your website or to any outside service, and it stores nothing.

  • No click needed.

    The comparison runs by itself when you open the invoice. With a viewer older than 2.38.0, the result appears in a panel next to the invoice instead of in its own tab.


So that you know exactly what you get, we also tell you the limits of the add-on:

  • It does not read scanned PDFs. A PDF without readable text is not compared; the add-on tells you so.
  • It does not report that something is missing from the PDF. Many templates do not print the bank account, or print it only as an image. Only a contradiction is reported.
  • It does not compare attachments that do not show the invoice itself, such as a quantity survey or a rental contract.
  • It does not tell you whether the IBAN belongs to your supplier. Even if the PDF and XML match, both can be wrong. Whether the bank account matches a known supplier is checked by the Inbound Check with your supplier list.
  • It does not tell you whether the invoice is valid. Whether the invoice data meets all the rules of its format is checked by a validator.
eInvoice Viewer — Inbound Check eInvoice Viewer — Inbound Check

eInvoice Viewer — Inbound Check

This add-on compares an incoming invoice with your supplier list, so you learn whether the money is to go to a known account.
Paid product

eInvoice Viewer — EPC QR Code eInvoice Viewer — EPC QR Code

eInvoice Viewer — EPC QR Code

This add-on shows the EPC QR code for the invoice, ready for your banking app. Compare first, then scan.
Paid product

eInvoice Validator for VAMPIRE eInvoice Validator for VAMPIRE

eInvoice Validator for VAMPIRE

This free WordPress plugin checks the invoice data against the official rules of its format. It is written in pure PHP and therefore needs no Java.


3

details are compared: invoice number, total amount and bank account

0

clicks are needed; the comparison runs when you open the invoice

2

ways to use it: as a WordPress plugin and as an add-on for the viewer app


Yes. The Hybrid Check is an add-on and does nothing without the eInvoice Viewer for PEPPOL & EN16931, which you get free of charge on wordpress.org. From viewer version 2.38.0, the result appears in its own “Hybrid Check” tab; with an older viewer, in a panel next to the invoice.

ZUGFeRD and Factur-X invoices, which are PDF files with embedded invoice data, and XRechnung files that carry a PDF showing the invoice number as an attachment. A plain XML file without a PDF has nothing to compare.

The invoice number, total amount and bank account from the invoice data are looked up in the text of the PDF. If one of them is missing from a PDF that has readable text, the Hybrid Check reports a contradiction.

No. The comparison runs in your browser. The add-on sends nothing to your website or to any outside service, and it stores nothing.

It closes an important gap: different details in the PDF and XML. If both match, the bank account can still be new. For that there is the Inbound Check, which compares the IBAN with your supplier list. The two add-ons complement each other.

No. A validator checks whether the invoice data meets the rules of its format. The Hybrid Check checks whether the PDF says the same as the invoice data. One tells you nothing about the other.


Do not pay an invoice whose PDF says something different from its XML: the Hybrid Check compares the invoice number, total amount and bank account of every ZUGFeRD invoice you open in the viewer. You do not have the eInvoice Viewer yet? It is the free basis for this add-on.