De vorm van een EU e-factuur en waarom twee formaten worden gestapeld
Een moderne EU e-factuur is twee documenten verpakt in één bestand:
- Een PDF/A-3 die een mens kan lezen: factuurnummer, regels, totalen en branding van de leverancier. De PDF/A-3-specificatie (ISO 19005-3) is de enige PDF/A-variant die willekeurige bestandsbijlagen binnen de bewaarwrapper toestaat.
- Een EN 16931 CII XML-bijlage binnen die PDF: dezelfde factuur uitgedrukt als gestructureerde data die AP-automatisering, ERP-imports en systemen van belastingautoriteiten zonder OCR kunnen parseren.
Factur-X (Frankrijk) en ZUGFeRD (Duitsland) zijn hetzelfde idee met verschillende nationale labels. Beide koppelen EN 16931 Cross-Industry Invoice (CII) XML aan een PDF/A-3-wrapper. ZUGFeRD is sinds 2025 verplicht voor Duitse B2B-ontvangst van facturen; Factur-X wordt in 2026-2027 gefaseerd verplicht voor B2B-uitgifte in Frankrijk.
Als u in 2026 facturen naar Franse of Duitse klanten stuurt, is een van deze twee formaten niet langer optioneel.
Waarom zelf genereren pijnlijk is en waarom gPdf één endpoint is
Dit vanaf nul samenstellen betekent:
- PDF-bytes genereren: typografie, fonts en layout.
- De CII XML apart genereren en afstemmen op EN 16931.
- De PDF/A-3 XMP namespace correct zetten (
urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#voor Factur-X; de ZUGFeRD 2.x namespace verschilt). - De XML insluiten met
AFRelationship="Alternative"volgens de specificatie. - Het ingesloten bestand correct markeren in de
/AFarray van PDF/A-3. - Het resultaat verifiëren met veraPDF (PDF/A-kant) en Mustang (CII XML-kant): beide moeten slagen.
Een gemiddeld team maakt dit twee keer verkeerd voordat het door beide engines komt. De gPdf API brengt alle zes stappen terug tot één POST /api/v1/e-invoice/render call. U levert:
settings.e_invoice.standard:factur_xofzugferdsettings.e_invoice.xml.content: uw CII XMLpages[]: de zichtbare factuurlayout- de rest wordt automatisch uitgegeven met de juiste PDF/A-3-metadata.
Zie §5 van de E-Invoice API-referentie voor het volledige requestschema, validatiemodi (basic vs strict) en de asynchrone joblevenscyclus voor strikte validatieruns.
De output verifiëren: het auditpatroon
Een leverancier die zegt “ja, onze PDF voldoet aan PDF/A-3” is niets waard als de auditor de referentie-engines gebruikt. Het auditwaardige patroon is:
- Genereer de e-factuur via
POST /api/v1/e-invoice/render. - Plaats de resulterende PDF in validator. Die draait:
- veraPDF: de officiële referentie-implementatie die wordt onderhouden door de PDF Association. PDF/A-3-conformiteit.
- Mustang: open-source Duits project (mustangproject.org) dat de de-facto Factur-X / ZUGFeRD-referentiechecker is; extraheert de ingesloten CII XML, valideert tegen EN 16931 Schematron en rapporteert veld voor veld.
- Beide rapporten verschijnen naast elkaar in dezelfde UI. Beide moeten “Pass” tonen voordat u naar productie-AP-automatisering gaat.
Dit patroon telt omdat:
- Een PDF die door veraPDF komt maar faalt in Mustang heeft een conforme wrapper maar misvormde XML binnenin; het AP-systeem weigert de factuur bij ontvangst.
- Een PDF die door Mustang komt maar faalt in veraPDF heeft correcte XML, maar de bewaarwrapper voldoet niet aan PDF/A-3; langetermijnbewaring wordt geweigerd.
- Elke fout breekt de end-to-end stroom. Beide moeten slagen.
De validator is gratis, vereist geen login en produceert JSON-rapporten die u aan uw QA-bewijs kunt koppelen. Het is hetzelfde dual-engine patroon dat Big Four-auditkantoren intern gebruiken; gPdf host het alleen publiek.
Verder dan Factur-X / ZUGFeRD
Als u ook werkt met:
- FatturaPA (Italië, verplicht sinds 2019): staat al op de validator-roadmap.
- Peppol BIS 3.0 UBL (Noordse landen / Benelux / steeds vaker grensoverschrijdend): roadmap.
- KSeF (Polen, verplicht in 2026): roadmap.
Het e-factuurendpoint van gPdf breidt de dekking uit naarmate elk formaat van “vroege roadmap” naar “live in de validator en de PDF-generator” gaat. De vorm blijft gelijk: één JSON-request, de juiste XMP namespace en AFRelationship intern afgehandeld, beide engines verifiëren voordat u live gaat.
TL;DR
- Eén API-call -> PDF/A-3 plus ingesloten EN 16931 CII XML.
- Kies Factur-X of ZUGFeRD via
settings.e_invoice.standard. - Verifieer met validator: veraPDF plus Mustang parallel, gratis.
- Beide engines moeten slagen. De gPdf API is gebouwd zodat ze dat doen; de validator is het publieke bewijsstuk.