Manual
eInvoice Viewer — Invoice MonitorInstall, work, configure
invoiceTools / Manuals / eInvoice Viewer — Invoice Monitor

eInvoice Viewer — Invoice Monitor – Manual

Applies to version 1.0.1, for the plugin and for the add-on of the viewer app. As of 26 October 2026.

1 · Overview

Note: Built for the eInvoice Viewer 3.0.0 and runs only with it; update the viewer first.

The add-on "Invoice Monitor" gives the eInvoice Viewer two lists: Inbound for invoices your company has to pay, and Outbound for invoices your company has issued. Every invoice the viewer reads can go into one of them. The add-on recognises the list from the identifiers of your company: if your VAT ID or tax number stands with the seller, the invoice goes outbound; if it stands with the buyer, inbound.

What the add-on does:

  • It recognises the list of an invoice from the VAT ID, the tax number and further identifiers of your company, such as a GLN or a Leitweg-ID.
  • It keeps the invoice unchanged as the original file and records its checksum and the time of receipt.
  • It warns when the same invoice number of the same seller is already in the list from another file.
  • It keeps a status per invoice: open, marked for payment or collection, paid or received, forwarded, rejected.
  • It sorts the lists by due date, marks overdue invoices and shows the sum of the open items per currency.
  • It recognises a cash discount when the invoice states it in fields of its own or in the XRechnung form #SKONTO#, and deducts it in the transfer while its period runs.
  • It writes a SEPA credit transfer for selected inbound invoices and a SEPA direct debit for selected outbound invoices.
  • It gives the list as a CSV file, puts together a package for the tax advisor and builds a document package per invoice.
  • It takes a checked invoice over from the inbound check with one click, and in the plugin the outbound invoices of the Gravity generators and the shop validators arrive in the outbound list by themselves.
  • It saves both lists with every file in one backup file and reads it in again.

What the add-on does not do:

  • It is no bookkeeping. It does not post, does not reconcile bank statements and does not send reminders.
  • It is no unalterable archive in the sense of the German GoBD. The lists and packages help as evidence; keeping the invoices remains your duty.
  • It does not pay. You upload the SEPA file in your online banking.

Requirements:

RequirementValue
WordPress6.2 or later
PHP8.2 or later
PlugineInvoice Viewer for PEPPOL & EN16931 from version 3.0.0
In the viewer appinstead of WordPress and the plugin: the viewer app from version 3.0.0 and the add-on "Invoice Monitor" for the app
Browserin the app Chrome or Edge for the data folder; in Firefox and Safari the lists stay there in the browser's storage

2 · Installation

In the plugin the lists and the original files are kept in two tables of their own in the database of your website, not in a folder. The files are kept there and not in the uploads folder, so that no invoice can be fetched by an address. Only users with the capability manage_options, that is administrators, have access; the filter spim_capability lets a developer choose another capability, such as edit_posts for the role "Editor". Guests do not see the add-on. A file may have at most 10 MB.

In the viewer app

The add-on for the viewer app is a ZIP file of its own from the shop. It works entirely in the browser, without WordPress and without a server.

3 · Setting up

The identifiers of your company

Open Settings and there the section Invoice Monitor. Enter:

FieldMeaning
Name of your companyUsed only when no identifier of your company appears in the invoice, and only when it is exactly the same.
VAT IDs of your companySeveral separated by commas. Compared with BT-31 of the seller and BT-48 of the buyer.
Tax numbers of your companySeveral separated by commas, written as on your invoices. Compared with BT-32; the buyer has no tax number in EN 16931.
Further identifiersGLN, Leitweg-ID, registration number or Peppol address; several separated by commas.
Account holder, your IBAN, your BICThe account the transfers are paid from and the direct debits are collected to. The BIC is optional.
Your creditor identifierOnly for direct debits.
Add every invoice whose list is clear by itselfThe box stands at the top of the section, under "Adding invoices". With the box ticked, every invoice in which your company is recognised as seller or buyer goes into its list without a click, unless it is in a list already.
Add the outbound invoices of this website to the outbound list by themselvesOnly in the plugin. The box is ticked by default. Section 4 says under "Outbound invoices by themselves" which invoices arrive.
Deduct the cash discount in the SEPA transferThe box is ticked by default. Section 4 says under "Cash discount" when it is deducted.

If the Inbound Check is installed and your company is entered there, the add-on takes the name, the VAT ID and the Leitweg-ID from there as long as the fields here are empty.

The data folder ( app )

In the app, open the Invoice Monitor and choose a folder on your computer or on a network drive with Choose data folder. The add-on writes the file invoice-monitor.json into it and one sub-folder per invoice under inbound/ or outbound/. The browser remembers the folder. On the next start it may ask once whether the page may keep using it; the button Allow is there for that.

A web page may not open a folder it names itself, only one you choose. That is why there is no path in a configuration file, but the choice once per browser. With the folder on a network drive, several colleagues can use the same lists; the add-on reads the list again before every write and merges the changes.

4 · Working with the lists

Adding an invoice

Read an invoice into the viewer. The tab Invoice Monitor says on which side of the invoice your company stands and offers Add to the inbound list and Add to the outbound list; the matching button is highlighted. If your company stands on both sides or on neither, you choose the list yourself. If the invoice is already in a list, the tab names the list and the status.

From the inbound check. Under a checked invoice, the inbound check shows the button Add to the Invoice Monitor. It puts the invoice into the inbound list with one click. In the plugin "eInvoice Inbound" the button appears when this plugin is active. In the app "eInvoice Inbound" it appears when the file einvoice-viewer-invoice-monitor.js lies next to its start page. The app then writes into the same lists as the viewer app, provided both run in the same browser under the same address, that is both on the same web server or both from the hard disk. The original is the hybrid PDF, otherwise the XML file. If the same file is already in the list, the page says so and adds nothing twice. If an invoice with the same number from the same seller is there from another file, the invoice is added and the page warns.

When you check the invoice in the viewer with Validate with KoSIT, Validate with Mustang or Validate with VAMPIRE, the report is kept with the invoice by itself: at once when the invoice is in a list, otherwise as soon as you add it. The tab then names the reports kept with the invoice and their result. Add a validation report puts a report you downloaded elsewhere into the folder of the invoice. Both go into the document package.

The lists

The button Invoice Monitor opens both lists, with or without an invoice in the viewer. The tabs Inbound and Outbound show the number of invoices. Below, you filter by status, period of the invoice date and a search term. Per row you change the status, open the invoice in the viewer again with Show in the viewer, or download its Document package.

Due date and open items. The lists are sorted by due date: the open invoices first, the earliest due date at the top, the settled ones below. The due date is BT-9 of the invoice. Without it, the add-on takes the end of the net period from the payment terms, and the cell says "from the payment terms". Without that as well, the invoice date counts, and the cell says "no due date given; invoice date". An open invoice past its due date has a red edge and a sentence such as "Overdue by 235 days". In the field "Status", Overdue shows only these invoices.

Above the list stand the open items: in the inbound list what you owe, in the outbound list what you are owed. Open are the invoices with the status "Open" or "Marked for payment" or "Marked for collection". There is one line per currency with the number of documents, their sum and the overdue part. A credit note counts with a minus sign. A cash discount is not deducted in these sums. The sums cover the whole list, not only the filtered rows.

Cash discount. The column "Cash discount" shows the tier that still applies today, for example "2 % until 2026-10-31", with the amount saved and the amount to pay. When the period is over, it says "ended". The add-on recognises a cash discount in two forms only: in fields of its own, as UBL and ZUGFeRD EXTENDED have them, and in the XRechnung form #SKONTO#TAGE=7#PROZENT=2.00# in the payment terms. The days count from the invoice date, and the percentage applies to the amount due unless the invoice names a base amount of its own. A sentence such as "2 % discount if paid within 14 days" stays text: you see it as a tooltip over the cell, but it is never deducted, because a pattern for such sentences could also take default interest for a discount.

Send. When the eInvoice Mailer is there, every row of the outbound list carries the button Send as well: on the website the plugin "eInvoice Mailer", in the app its add-on. The button opens the invoice in the viewer and then the mail dialog with the template "Send a checked invoice". The original file and the validation reports kept with the invoice are attached. You can untick an attachment in the dialog when it should not go along. On the website the website sends the mail; in the app Share hands it to your mail program. Without the Mailer the button is not there.

The SEPA files

Select the invoices and choose SEPA transfer for the selected invoices in the inbound list or SEPA direct debit for the selected invoices in the outbound list. The file is downloaded, and the invoices in it are then "marked for payment" or "marked for collection". Invoices that could not go into the file are listed with the reason.

What the page saysWhy
The bank account is not in your supplier list.An invoice goes into the transfer only when its IBAN is on file in the supplier list of the Inbound Check. A changed bank account is the most common pattern of invoice fraud.
This is a credit note: the supplier owes you this amount. A credit note is never paid by transfer.The document is a credit note, not an invoice. The money goes from the supplier to you; settle it with the supplier, for example against the next invoice.
This is a credit note you issued: you owe the customer this amount. A credit note is never collected by direct debit.You owe the money to the customer. Pay it back by transfer from your online banking, or set it off against the next invoice.
SEPA knows only euro.The invoice is in another currency.
The invoice is paid by direct debit.A transfer on top would pay twice.
Enter the date the customer signed the mandate.The invoice names the mandate reference and the customer's account, but no e-invoice carries the date of the signature. Enter it in the column "Mandate signed on".
Your creditor identifier in the settings is missing or wrong.There is no direct debit without a creditor identifier.

Cash discount in the transfer. With "Deduct the cash discount in the SEPA transfer" ticked in the settings, the transfer pays the amount reduced by the cash discount when the period still runs on the execution date. The execution date is the day you make the file. Under the message the page says per invoice how much was deducted and what the transfer pays, and the row remembers the amount paid. The direct debit never deducts a cash discount; it collects the amount the invoice names as due.

Not every bank accepts such files for every account; for business accounts it is usual, for private accounts not always.

Note: With the add-on "eInvoice Viewer — Invoice Approval" active, an inbound invoice goes into the transfer only after it was approved. The page names every other one with the sentence "Not approved ( status: … ). Only approved invoices go into the SEPA transfer." The website then also accepts the status "Marked for payment" only for an approved invoice. The direct debit of the outbound list is not affected.

Outbound invoices by themselves ( plugin )

In the plugin, the e-invoices made on your website arrive in the outbound list without a click. This holds for the eInvoice Generator for Gravity Forms, the eInvoice Generator for Gravity PDF, the eInvoice Validator for Germanized and the eInvoice Validator for PDF Invoices & Packing Slips, each in a version that does it. The table says what arrives from each.

PluginWhat goes into the outbound list
eInvoice Generator for Gravity Formsthe hybrid PDF when Factur-X is embedded, otherwise the XML file; with the validation report when the feed checks after generating
eInvoice Generator for Gravity PDFthe same, once Gravity PDF has saved the PDF
eInvoice Validator for Germanizedthe e-invoice Germanized Pro writes when the invoice is finalised, with the validation report
eInvoice Validator for PDF Invoices & Packing Slipsthe XML file of the mail to the customer, the PDF as a further file, with the validation report; only when the invoice really goes to the customer

There is one row per invoice number. When a plugin makes the same invoice again, for example on every download, no second row is added. Add a corrected invoice under the same number by hand through the viewer. The box "Add the outbound invoices of this website to the outbound list by themselves" in the settings switches this off.

For developers: a plugin of your own hands over an e-invoice with the action einvoice_invoice_monitor_outbound. It expects an array with xml ( the CII or UBL text ) and optionally file ( name and data of the original ), extra ( further files ), reports ( each with validator, data and optionally valid ) and source. Ask has_action( 'einvoice_invoice_monitor_outbound' ) first. The filter spim_outbound_enabled decides last whether an invoice is taken in.

Package for the tax advisor and document package

Package for the tax advisor downloads a ZIP file with every invoice of the list that matches the filter: the original files, a cover sheet per invoice and the list as a CSV file. Set the period first.

The document package of a row holds the original file, every validation report kept with the invoice, a cover sheet and the file SHA256SUMS.txt with the checksums. The cover sheet says whether the original in the package is still the file recorded at receipt, and lists every check with validator, time and result.

CSV file

CSV file downloads the filtered list with semicolons and the decimal comma, so that Excel on a German system opens it without an import dialog.

The column "Document type" names each row "Invoice" or "Credit note" with the code of the e-invoice, for example "Credit note (381)". The amounts of a credit note carry a minus sign in the file, in both lists. When you add up an amount column, the sum therefore takes every credit note off the invoices. In the list on the page a credit note carries the same word after its number, and its amount carries the minus sign as well.

Backup

Save backup in the Invoice Monitor downloads a ZIP file with both lists, every original file, the validation reports and the settings of the section "Invoice Monitor". The file is named like invoice-monitor-backup-2026-10-26.zip. Unpacked into an empty folder, it is itself a data folder the app can choose.

Read backup reads such a file in again, in the same browser, in another one or in the plugin. Reading never deletes anything. An invoice that is missing is added. For an invoice that is already there, the younger change counts. A file an invoice already has stays unchanged. Reading the same backup twice changes nothing the second time. The settings of the backup are taken only when none are stored yet. A damaged file is refused before anything is written.

In Firefox and Safari the backup is the only protection. There the app cannot choose a folder, and the lists live in the storage of the browser. Clearing the browser data deletes them. Save a backup regularly; the Invoice Monitor reminds you at the top of its window. In the plugin the backup serves a move to another website, because there the lists are in the database anyway.

Switching it off on one page

In the shortcode of the viewer you switch off on a single page what this add-on shows, for example [spev_einvoice_viewer tab_invoice_monitor="no"]. Without the attribute everything stays on.

SwitchWhat the page leaves out
tab_invoice_monitorthe tab "Invoice Monitor"
tab_spimthe whole add-on on this page, with its section in the settings

A switch only takes something off this page. Who may use the add-on at all is set with "Available from role" in the settings of the viewer. The viewer app uses the same names in config.js, for example features: { tab_invoice_monitor: false }. Only the value false without quotes switches off.

5 · Privacy

In the app the add-on sends no invoice to any server; the lists and the original files lie in the folder you chose or in your browser's storage. In the WordPress plugin they lie in the database of your own website and go to no other server. If you remove the plugin, the two tables stay, because the invoices are yours.

6 · Licence

The add-on is licensed under GPL-2.0-or-later.

7 · Versions

1.0.0 is the first version. 1.0.1 brings due dates and open items, the cash discount, adding from the inbound check, outbound invoices by themselves and the backup. 2.0.0 is built for the eInvoice Viewer 3.0.0.