Factur-X / ZUGFeRD profile detection
A Factur-X or ZUGFeRD invoice is a PDF with a machine-readable UN/CEFACT CII invoice embedded inside it. FactureCheck extracts that embedded XML and validates it exactly like a standalone CII file — same schematron rules, same findings — then reports which of the five Factur-X profiles the document declares.
The five profiles
The profile is read from the embedded CII document's guideline
identifier (GuidelineSpecifiedDocumentContextParameter/ID) and
returned as metadata.facturx_profile in the validation
response:
- Minimum — a handful of core fields only, no line items.
- Basic WL — Basic without line-item detail.
- Basic — full line items, simplified content.
- EN16931 — the full EN 16931 semantic data model.
- Extended — EN16931 plus additional trading-partner fields.
An identifier that does not match any of the five is reported as
unknown rather than guessed.
PDF/A-3 and attachment checks
Five rule codes in the taxonomy cover the PDF container itself, not just the embedded XML:
- FCX-01 — PDF/A-3 conformance is declared in the XMP metadata.
- FCX-02 — the embedded file's
/AFRelationshipentry is present. - FCX-03 — the attachment is named
factur-x.xml(not a legacy ZUGFeRD name). - FCX-04 — the XMP conformance level matches the profile declared inside the CII XML.
- FCX-05 — the guideline identifier matches one of the five known profiles.
Try it
curl -X POST https://facturecheck.eu/api/v1/validate \
-H "Content-Type: application/pdf" \
--data-binary @invoice.pdf
The response is the same JSON shape as an XML upload, with
metadata.facturx_profile set. Repair (see
what gets fixed) works on the extracted XML the same way it does for a
plain CII upload; it does not rewrite the PDF container itself.