The e-invoice reader: your supplier invoices arrive as data now, stop retyping them
Exact totals straight from the file, checked against your own records before anyone pays
Setup: A weekend (~6-10 h)Running cost: $3-15/mo(software included)Time saved: saves ~0.8-1.3 h/week for the owner at 15 supplier invoices a week — basisAfter setup: Runs unattended— reads and files by itself; you only look at what it flagsData lives: Mixed— The archive, the checks and the extracted figures stay on your box; every invoice passes through your access point provider on the way in.
Built for small businesses in general — not a sector list.
Before you start
An access point or approved-platform subscription: you cannot join the network yourself for less than about EUR 3.350 a year, and your accounting software may already include one
Your company number registered as your address on the network, and a written answer from your provider on how incoming invoices reach you: watched folder, API or dedicated mailbox
Something to check the invoice against: agreed prices, order references or a supplier list, or the checks have nothing to compare with
An accountant who will take a structured export instead of a stack of printouts
A machine that stays on, and disk for seven years of archived invoices plus a real backup
One person who clears the flagged queue every day, and who is allowed to hold a payment
What breaks firstFAILS SILENTLY
the link to your access point: a lapsed subscription, a changed mailbox password, or a folder watcher that does not resume after a restart. An invoice that never arrives looks exactly like a supplier who has not billed you yet, and under the mandate it counts as delivered anyway. Alert when nothing has come through the access point for seven days.
Version history
v1.0 · 2026-08-10 — First release. Built for the mandate wave (Belgium live 01/01/2026, France reception 01/09/2026): reads the structured invoice instead of scanning a picture of it, and keeps the OCR route for whatever still arrives on paper.
From 1 September 2026, every business registered for VAT in France has to be able to receive an electronic invoice. Belgium has been there since 1 January 2026, and German issuing obligations start on 1 January 2027 above €800.000 of turnover and cover everyone from 1 January 2028. That is the compliance headline and it is the least interesting part. The interesting part: the invoice now arrives as a file with the supplier, the date, the total, the VAT and the IBAN in named fields, and most businesses still print it, look at it, and type those numbers over by hand. If you are running OCR on supplier invoices, a growing share of that work is already obsolete.
The architecture
the same flow as text
[ Your access point / approved platform ] — a paid service, not something you host
│ drops each invoice in a watched folder, or a dedicated mailbox
▼
[ n8n — the intake engine (self-hosted, one small box) ]
├─ structured XML (UBL / CII)? → read the fields, no guessing
├─ hybrid PDF (Factur-X / ZUGFeRD)? → pull the XML out of the PDF first
├─ plain PDF or paper? → hand it to the OCR route, unchanged
├─ validate against EN 16931 (Mustang CLI, one command)
└─ check against your own records:
supplier known · IBAN unchanged · total matches the order · number not seen before
▼
[ paperless-ngx ] the archive, original file kept intact
├─ clean → filed, tagged, exported for the accountant
└─ failed a check → a human queue
Nothing here pays anything. It reads, checks, files and flags.
Three parts: a service you rent, an engine you own, an archive you own. The split is not a design preference, it is a hard boundary in the network, and it is the first thing to be clear about before you budget anything.
The problem
A supplier invoice used to be a picture of some numbers. You scanned it, a tool guessed at the total, and someone checked the guess. That is the route the receipt and invoice intake blueprint in this library automates, and it is still the right route for paper and for plain PDFs. But under the new mandates the invoice is no longer a picture. It is a structured file, and reading it is not guessing. It is the difference between reading a meter and reading a photograph of a meter.
What actually changed. Belgium made structured e-invoicing mandatory for domestic B2B between VAT-registered businesses on 1 January 2026, over the Peppol network, in the EN 16931 standard (Peppol BIS Billing 3.0). A plain PDF is no longer a valid invoice for transactions in scope. B2C is out of scope. France starts on 1 September 2026 with reception for everybody, issuing for large and mid-sized companies on the same date, and issuing for SMEs and micro-enterprises on 1 September 2027, through state-approved platforms, in Factur-X, UBL or CII. Different plumbing, same consequence for your back office: a rising share of what lands in your inbox is machine-readable, whether or not you use it.
Why that is worth a weekend. Take 15 supplier invoices a week and 3 to 5 minutes each to open, read, type and file. That is 45 to 75 minutes a week of pure retyping, and every one of those minutes carries the risk of a wrong total in a VAT return. The structured file removes the typing and the guessing in one move. It also gives you something you never had with OCR: a number you can check automatically against your own records, before anyone pays it.
One honest boundary before we start. This blueprint is about the plumbing on your side, not about your obligations. Whether your specific business is in scope, which platform you must use and how long you must keep what is a question for your accountant and your tax authority. Get that answered first.
Tool choices — and why
The access point is bought, not built, and here is the number
You cannot connect to Peppol yourself. You need a certified provider. If you were tempted to become one, OpenPeppol's own published fee table for an Access-Point-only membership at a 1 to 50 employee organisation is €1.050 sign-up plus €1.850 a year, plus a €1.500 certification fee billed at first certification and annually thereafter. That is roughly €3.350 a year before you write a line of code, before hosting, and before the twice-yearly network updates you are contractually required to implement. For a business sending and receiving a few hundred invoices a year, renting is not the compromise. It is the answer. At the cheap end, pay-per-use Belgian providers list from around €0,20 per invoice, and most accounting and invoicing packages now bundle it into a plan you already pay for. Check current list prices yourself, they move.
Mustangproject
(Apache-2.0, 448 stars, release 2.25.0 on 05/08/2026) is the engine of the whole thing, and it earns the pick on one specific capability: it ships a command-line tool that both extracts the XML out of a Factur-X or ZUGFeRD PDF and validates a file against EN 16931, in one binary, with no service and no account. That is exactly the two jobs you need and nothing else. It is Java, which means one dependency and no build step, and it has been maintained continuously for years by people who sit close to the standard.
KoSIT validator
(Apache-2.0, 169 stars, plus its XRechnung configuration at 109 stars, updated 05/08/2026) is the second opinion if you send to German public bodies or want the reference rule set rather than a library's interpretation of it. It is the official German validation tool. Optional for most small businesses. Non-optional if a customer bounces your invoice and you need to say who is wrong.
n8n
(fair-code, self-hostable, free for your own internal use) is the wiring: watch the folder or mailbox, branch on the file type, call Mustang, do the four checks, push into the archive, raise the flag. If you already run n8n for the invoice chaser or the email triage in this library, this is one more workflow on the same box. Read the Sustainable Use Licence once if you plan to offer this to clients as a service, since that is where the terms bite.
paperless-ngx
(GPL-3.0, 44.1k stars, v3.0.5 on 01/08/2026) is the archive, and it is where the invoice has to live for seven years in Belgium. Version 3 added a parser plugin framework, and there is a young community plugin, paperless-ngx-erechnung (GPL-3.0), that renders XRechnung as a readable PDF and surfaces the invoice fields in the sidebar. Honest read: 33 stars, first commit in May 2026, last push 26/05/2026. Useful, not load-bearing. Do the extraction in n8n before the file reaches the archive, and treat the plugin as a nice viewer if it survives.
If you would rather stay in your own language
than call a Java binary: horstoeko/zugferd (MIT, 430 stars, pushed 04/08/2026) is the PHP option and is genuinely well maintained. akretion/factur-x (302 stars, pushed 08/08/2026) is the Python option and is actively developed, but GitHub does not resolve its licence to a standard identifier, so read the LICENCE file before you build a product on it. Both are good; neither replaces the validator.
Cost
Software €0, all of it. Access point €0 to €12 a month for a small business, or per-invoice from about €0,20, and often already inside your accounting subscription. Small always-on box €5 to €12 a month, or €0 if it is the box you already run. Belgian SMEs and self-employed should note article 64ter CIR 92 from the law of 6 February 2024: an increased 120% cost deduction on e-invoicing subscription and advisory costs for taxable periods 2024 to 2027, with a separate 20% enhanced investment deduction for digital investments from 1 January 2025. Depreciation on capitalised software is excluded from the 120%. Your accountant decides which one applies to you.
What we did not pick
A full accounts-payable SaaS does all of this and holds your invoice data, and at 15 invoices a week the licence costs more than the problem. A large language model reading the invoice is the wrong tool here and it is worth being blunt about why: the numbers are already in named fields. Putting a model in front of exact data to produce approximately the same data is how you turn a certainty into a probability.
Setup outline
1. Find out what is already arriving. Before buying anything, look at last month's supplier invoices and count three buckets: structured XML, hybrid PDF with embedded XML, plain PDF or paper. Drop a few files on any free format detector, or run Mustang's extract command locally. What you will see when it works: a bucket you did not know you had. That count is your business case.
2. Sort out the access point. Ask your accountant or your invoicing software first, because you may already have one included. Confirm your company number is registered as your address on the network, and ask for one thing specifically: how incoming invoices reach you. A watched folder, an API, or a dedicated mailbox. Everything downstream hangs off that answer.
3. Send yourself a test invoice and confirm it lands where you were told it would. Do this before you build anything.
4. Install n8n and paperless-ngx on a small always-on box, or reuse the one you have. Install Mustang and check it runs with one validate command against your test file.
5. Build the branch: structured XML goes one way, hybrid PDF gets the XML pulled out first, everything else falls through to the existing OCR route untouched. What you will see when it works: a real supplier invoice appearing in the archive with the exact total, and no OCR step in the log.
6. Add the four checks, one at a time, in this order: supplier is on your list, invoice number has not been seen before, total matches the order or the agreed price, IBAN matches the one you have on file. That last one is the same check as the supplier bank-detail gate in this library, and if you already run it, feed it from here instead of duplicating it.
7. Wire the human queue and agree who clears it, daily. A flag nobody looks at is worse than no flag, because it feels like control.
8. Add a counter: if no invoice has arrived through the access point in seven days, alert. Then run both routes in parallel for one month and reconcile against your accountant's figures before you trust it.
Pitfalls — the real ones
Not receiving is not a defence
Under these mandates an invoice delivered to your access point has been delivered to you, whether or not anything on your side picked it up. A broken folder watcher, an expired mailbox password, a lapsed subscription: all three look exactly like a quiet month, and the first sign is a supplier chasing a payment you never saw. The seven-day counter in step 8 is the cheapest insurance in this blueprint.
The XML is the invoice, not the PDF
In a hybrid file the structured data is the legal document and the pretty page is a rendering of it. If they disagree, the data wins. So keep the original file byte for byte: re-saving or re-compressing a Factur-X PDF can break the PDF/A-3 conformance that makes it valid. Archive the original, derive everything else.
Valid does not mean correct
An invoice can pass EN 16931 cleanly and still be for goods you never ordered, at a price you never agreed, from a supplier who changed their bank details last week. Validation checks the form. Your four checks are what protect the money.
Profiles carry different fields
Factur-X comes in Minimum, Basic, EN 16931 and Extended. A Minimum file legitimately carries less than you might build a check on. Handle an empty field as "unknown, ask a human", never as zero.
Do not let it pay anything
Reading, checking and filing are safe to automate. Payment is not, and an automated payment run fed by an inbox is exactly the shape of attack that invoice fraud is built for. Keep a person on the release.
Do not rebuild your accountant's system
The goal is a clean export they accept, not a second set of books that drifts from the first. Ask them what they want before you design the export, not after.
Watch the next date, not this one
Belgium has near-real-time reporting to the tax authority scheduled for 2028, and France runs reporting alongside invoicing from the start. If your data is clean and structured now, that step is a configuration change at your provider. If it is not, it is another project.
Repo facts checked 10/08/2026. Mandate dates from the European Commission's eInvoicing country pages, the Belgian law of 6 February 2024 and the French rollout schedule; access point fees from OpenPeppol's published fee table. None of this is tax advice: confirm your own scope and archiving obligations with your accountant.
Get the next blueprint as it publishes — free, practical, verified tooling only.
Subscribe · Want it audited or extended for your business? DM @RXed_EU