Menu

Why validating Peppol UBL e-invoices in .NET is harder than it looks
📰

Why validating Peppol UBL e-invoices in .NET is harder than it looks

DEV Community·Stefan Meier·6 months ago
#z0WRT4rK
#why#dotnet#peppol#invoice#schematron
Reading 0:00
15s threshold

Why validating Peppol UBL e-invoices in .NET is harder than it looks

When I started building InvoiceXML (a REST API for Peppol and EN 16931 e-invoice compliance), one of the first technical walls I hit was EN 16931 Schematron validation in .NET. I assumed it would be straightforward. It was not.

This post is about that journey: what Peppol UBL validation actually requires under the hood, why .NET makes it particularly awkward, what the community workarounds look like, and why I eventually decided none of them were good enough for a production compliance service.

If you are building e-invoicing into a .NET application, whether for Belgium's January 2026 B2B mandate, the broader Peppol network, ZUGFeRD/Factur-X for Germany and France, or XRechnung for German public sector, this problem applies to all of them equally.

What Peppol UBL validation actually involves

Most developers, when they first encounter Peppol e-invoicing, assume "validate the invoice" means "check the XML schema." Run the UBL XSD,…

Continue reading — create a free account

Join HashtagPLUS to read full articles, follow hashtags, vote, and join the conversation.