Convert UBL 2.1 to Factur-X (PDF/A-3)
France’s phased B2B e-invoicing mandate accepts Factur-X as one of its three permitted formats (alongside UBL and CII).
Deadline: September 2026 (large/mid-size companies begin receiving); September 2027 (all companies must issue).
Factur-X (France) and ZUGFeRD (Germany, same underlying format) are hybrid invoices: a normal, human-readable PDF with a complete EN 16931 CII XML embedded as an attachment, so one file works for a person opening it and a system parsing it.
InvoiceHub generates a genuinely PDF/A-3b conformant container — verified with veraPDF, the reference open-source PDF/A conformance checker, not eyeballed — with the correct output intent, XMP metadata (including the Factur-X extension schema most generators get subtly wrong), and the embedded XML validated against the same official EN 16931 CII Schematron used everywhere else. You can also embed into your own existing invoice PDF rather than use the generated default rendering.
Try it
curl -X POST https://api.invoicehub.dev/api/v1/convert \
-H "Authorization: Bearer ih_live_xxx" \
-H "Content-Type: application/json" \
-d '{"from": "UBL_2.1", "to": "Factur-X", "document": "<source document>"}'Real Factur-X output
Excerpt from actual, verified conversion output — not a mocked example.
%PDF-1.7
... (PDF/A-3 container; embedded attachment) ...
factur-x.xml (AFRelationship: Alternative)
<rsm:CrossIndustryInvoice ...>
<rsm:ExchangedDocumentContext>
<ram:GuidelineSpecifiedDocumentContextParameter>
<ram:ID>urn:cen.eu:en16931:2017</ram:ID>
</ram:GuidelineSpecifiedDocumentContextParameter>
</rsm:ExchangedDocumentContext>
...
</rsm:CrossIndustryInvoice>
XMP: pdfaid:part=3, pdfaid:conformance=B, fx:ConformanceLevel=EN 16931Common validation errors
- DOC-06 — No embedded invoice XML found in the PDF — the file isn’t a Factur-X/ZUGFeRD hybrid, or the attachment name doesn’t match factur-x.xml.
- BR-CO-15 (in the embedded CII) — The embedded XML fails EN 16931 arithmetic rules — the PDF may render fine but the machine-readable data is still checked independently.
Get an API key
Free tier includes unlimited validation and UBL 2.1 generation. This conversion requires the Pro plan or above.