DocuGenerate verzorgt automatisch de technische verpakking die vereist is door e-factureringsstandaarden zoals Factur-X en XRechnung. Zodra u een conform XML-bestand bijvoegt bij een gegenereerd PDF-bestand, detecteert DocuGenerate dit en voegt het de metadata toe die de standaard vereist, zonder extra parameters of configuratie van uw kant.
DocuGenerate zoekt naar specifieke tags die het XML-bestand identificeren als een UN/CEFACT Cross Industry Invoice (CII)-document, de structuur die wordt gebruikt door Factur-X, ZUGFeRD 2.1+ en XRechnung. Wanneer deze tags aanwezig zijn, wordt de in de XML ingesloten guideline-identifier gebruikt om het conformiteitsprofiel te bepalen. De ondersteunde profielen zijn:
| Profile | Description |
|---|---|
MINIMUM | Bevat alleen de minimale boekhoudkundige gegevens die vereist zijn voor btw-doeleinden. |
BASIC WL | Voegt informatie op headerniveau toe bovenop MINIMUM, zonder factuurregels. |
BASIC | Bevat volledige factuurregels, volgens een subset van het EN 16931-model. |
EN 16931 | Volledig conform de Europese e-factureringsstandaard EN 16931. |
EXTENDED | Ondersteunt complexe bedrijfsprocessen met aanvullende gegevens naast EN 16931. |
XRECHNUNG | Het Duitse referentieprofiel voor facturen aan overheidsinstanties. |
Dit geldt alleen voor XML-bestanden die een van deze standaarden volgen, terwijl andere bijlagen als gewone bestanden worden behandeld.
De volgende XMP-tags worden samen met de bijbehorende PDF/A Extension Schema-declaratie in de metadata van het gegenereerde PDF-bestand geschreven:
| Tag | Description |
|---|---|
fx:DocumentType | Het type document. Altijd INVOICE. |
fx:DocumentFileName | De naam van het bijgevoegde XML-bestand, zoals factur-x.xml. |
fx:Version | De versie van het schema dat door het bijgevoegde XML-bestand wordt gebruikt. |
fx:ConformanceLevel | Het gedetecteerde profiel, zoals MINIMUM, BASIC WL, BASIC, EN 16931, EXTENDED of XRECHNUNG. |
Hier is een voorbeeld van de XMP-tags die worden toegevoegd aan de metadata van een PDF-bestand voor een XML-bestand met het profiel MINIMUM:
<rdf:Description rdf:about="" xmlns:fx="urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#">
<fx:DocumentType>INVOICE</fx:DocumentType>
<fx:DocumentFileName>factur-x.xml</fx:DocumentFileName>
<fx:Version>1.0</fx:Version>
<fx:ConformanceLevel>MINIMUM</fx:ConformanceLevel>
</rdf:Description>
De Factur-X- en ZUGFeRD-standaarden vereisen dat het ingesloten XML-bestand, afhankelijk van het profiel, een specifieke naam gebruikt: factur-x.xml voor de meeste profielen, en xrechnung.xml voor het XRECHNUNG-profiel. Als u een bestandsnaam opgeeft, wordt deze zoals opgegeven gebruikt. Als u het bestand als data-URI bijvoegt zonder een name-eigenschap, kent DocuGenerate automatisch de juiste bestandsnaam toe zodra het profiel is gedetecteerd.
Aan elk bijgevoegd bestand wordt ook de PDF/A-3-waarde AFRelationship toegekend die het best bij de rol ervan past. Voor de profielen MINIMUM en BASIC WL wordt deze ingesteld op Data, omdat het PDF-bestand doorgaans meer informatie bevat dan het gestructureerde bestand. Voor de andere profielen wordt het XML-bestand dat onder zijn officiële naam is bijgevoegd, ingesteld op Alternative, wat aangeeft dat het PDF- en het XML-bestand dezelfde factuurinhoud vertegenwoordigen.
Voeg uw Factur-X- of XRechnung-XML-bestand op dezelfde manier toe als u elk ander bestand zou toevoegen, met het uitvoerformaat .pdf/a-3b:
curl -X 'POST' \
'https://api.docugenerate.com/v1/document' \
-H 'accept: application/json' \
-H 'Authorization: 491c000c5fad32ed7787005b0723ad55' \
-H 'Content-Type: multipart/form-data' \
-F 'template_id=7VYocxLnIupLU3YT4iLr' \
-F 'attach="data:text/xml;name=factur-x.xml;base64,77u/PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4KPHJzbTpDcm9zc0luZHVzdHJ5SW52b2ljZSB4bWxuczpxZHQ9InVybjp1bjp1bmVjZTp1bmNlZmFjdDpkYXRhOnN0YW5kYXJkOlF1YWxpZmllZERhdGFUeXBlOjEwMCIKeG1sbnM6cmFtPSJ1cm46dW46dW5lY2U6dW5jZWZhY3Q6ZGF0YTpzdGFuZGFyZDpSZXVzYWJsZUFnZ3JlZ2F0ZUJ1c2luZXNzSW5mb3JtYXRpb25FbnRpdHk6MTAwIgp4bWxuczpyc209InVybjp1bjp1bmVjZTp1bmNlZmFjdDpkYXRhOnN0YW5kYXJkOkNyb3NzSW5kdXN0cnlJbnZvaWNlOjEwMCIKeG1sbnM6dWR0PSJ1cm46dW46dW5lY2U6dW5jZWZhY3Q6ZGF0YTpzdGFuZGFyZDpVbnF1YWxpZmllZERhdGFUeXBlOjEwMCIKeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSI+CiAgICAgPHJzbTpFeGNoYW5nZWREb2N1bWVudENvbnRleHQ+CiAgICAgICAgICA8cmFtOkJ1c2luZXNzUHJvY2Vzc1NwZWNpZmllZERvY3VtZW50Q29udGV4dFBhcmFtZXRlcj4KICAgICAgICAgICAgICAgPHJhbTpJRD5TMTwvcmFtOklEPgogICAgICAgICAgPC9yYW06QnVzaW5lc3NQcm9jZXNzU3BlY2lmaWVkRG9jdW1lbnRDb250ZXh0UGFyYW1ldGVyPgogICAgICAgICAgPHJhbTpHdWlkZWxpbmVTcGVjaWZpZWREb2N1bWVudENvbnRleHRQYXJhbWV0ZXI+CiAgICAgICAgICAgICAgIDxyYW06SUQ+dXJuOmZhY3R1ci14LmV1OjFwMDptaW5pbXVtPC9yYW06SUQ+CiAgICAgICAgICA8L3JhbTpHdWlkZWxpbmVTcGVjaWZpZWREb2N1bWVudENvbnRleHRQYXJhbWV0ZXI+CiAgICAgPC9yc206RXhjaGFuZ2VkRG9jdW1lbnRDb250ZXh0PgogICAgIDxyc206RXhjaGFuZ2VkRG9jdW1lbnQ+CiAgICAgICAgICA8cmFtOklEPkYyMDI2MDAyMzwvcmFtOklEPgogICAgICAgICAgPHJhbTpUeXBlQ29kZT4zODA8L3JhbTpUeXBlQ29kZT4KICAgICAgICAgIDxyYW06SXNzdWVEYXRlVGltZT4KICAgICAgICAgICAgICAgPHVkdDpEYXRlVGltZVN0cmluZyBmb3JtYXQ9IjEwMiI+MjAyNjAxMzE8L3VkdDpEYXRlVGltZVN0cmluZz4KICAgICAgICAgIDwvcmFtOklzc3VlRGF0ZVRpbWU+CiAgICAgPC9yc206RXhjaGFuZ2VkRG9jdW1lbnQ+CiAgICAgPHJzbTpTdXBwbHlDaGFpblRyYWRlVHJhbnNhY3Rpb24+CiAgICAgICAgICA8cmFtOkFwcGxpY2FibGVIZWFkZXJUcmFkZUFncmVlbWVudD4KICAgICAgICAgICAgICAgPHJhbTpCdXllclJlZmVyZW5jZT5TRVJWRVhFQzwvcmFtOkJ1eWVyUmVmZXJlbmNlPgogICAgICAgICAgICAgICA8cmFtOlNlbGxlclRyYWRlUGFydHk+CiAgICAgICAgICAgICAgICAgICAgPHJhbTpOYW1lPkNvbXBhbnkgSW5jLjwvcmFtOk5hbWU+CiAgICAgICAgICAgICAgICAgICAgPHJhbTpTcGVjaWZpZWRMZWdhbE9yZ2FuaXphdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgIDxyYW06SUQgc2NoZW1lSUQ9IjAwMDIiPjEyMzQ1Njc4MjwvcmFtOklEPgogICAgICAgICAgICAgICAgICAgIDwvcmFtOlNwZWNpZmllZExlZ2FsT3JnYW5pemF0aW9uPgogICAgICAgICAgICAgICAgICAgIDxyYW06UG9zdGFsVHJhZGVBZGRyZXNzPgogICAgICAgICAgICAgICAgICAgICAgICAgPHJhbTpDb3VudHJ5SUQ+RlI8L3JhbTpDb3VudHJ5SUQ+CiAgICAgICAgICAgICAgICAgICAgPC9yYW06UG9zdGFsVHJhZGVBZGRyZXNzPgogICAgICAgICAgICAgICAgICAgIDxyYW06U3BlY2lmaWVkVGF4UmVnaXN0cmF0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgPHJhbTpJRCBzY2hlbWVJRD0iVkEiPkZSMTExMjM0NTY3ODI8L3JhbTpJRD4KICAgICAgICAgICAgICAgICAgICA8L3JhbTpTcGVjaWZpZWRUYXhSZWdpc3RyYXRpb24+CiAgICAgICAgICAgICAgIDwvcmFtOlNlbGxlclRyYWRlUGFydHk+CiAgICAgICAgICAgICAgIDxyYW06QnV5ZXJUcmFkZVBhcnR5PgogICAgICAgICAgICAgICAgICAgIDxyYW06TmFtZT5BY21lIENvcnA8L3JhbTpOYW1lPgogICAgICAgICAgICAgICAgICAgIDxyYW06U3BlY2lmaWVkTGVnYWxPcmdhbml6YXRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICA8cmFtOklEIHNjaGVtZUlEPSIwMDAyIj45ODc2NTQzMjE8L3JhbTpJRD4KICAgICAgICAgICAgICAgICAgICA8L3JhbTpTcGVjaWZpZWRMZWdhbE9yZ2FuaXphdGlvbj4KICAgICAgICAgICAgICAgPC9yYW06QnV5ZXJUcmFkZVBhcnR5PgogICAgICAgICAgICAgICA8cmFtOkJ1eWVyT3JkZXJSZWZlcmVuY2VkRG9jdW1lbnQ+CiAgICAgICAgICAgICAgICAgICAgPHJhbTpJc3N1ZXJBc3NpZ25lZElEPlBPMjAxOTI1NDc4PC9yYW06SXNzdWVyQXNzaWduZWRJRD4KICAgICAgICAgICAgICAgPC9yYW06QnV5ZXJPcmRlclJlZmVyZW5jZWREb2N1bWVudD4KICAgICAgICAgIDwvcmFtOkFwcGxpY2FibGVIZWFkZXJUcmFkZUFncmVlbWVudD4KPHJhbTpBcHBsaWNhYmxlSGVhZGVyVHJhZGVEZWxpdmVyeS8+CiAgICAgICAgICA8cmFtOkFwcGxpY2FibGVIZWFkZXJUcmFkZVNldHRsZW1lbnQ+CiAgICAgICAgICAgICAgIDxyYW06SW52b2ljZUN1cnJlbmN5Q29kZT5FVVI8L3JhbTpJbnZvaWNlQ3VycmVuY3lDb2RlPgogICAgICAgICAgICAgICA8cmFtOlNwZWNpZmllZFRyYWRlU2V0dGxlbWVudEhlYWRlck1vbmV0YXJ5U3VtbWF0aW9uPgogICAgICAgICAgICAgICAgICAgIDxyYW06VGF4QmFzaXNUb3RhbEFtb3VudD4xNTAwLjAwPC9yYW06VGF4QmFzaXNUb3RhbEFtb3VudD4KICAgICAgICAgICAgICAgICAgICA8cmFtOlRheFRvdGFsQW1vdW50IGN1cnJlbmN5SUQ9IkVVUiI+MC4wMDwvcmFtOlRheFRvdGFsQW1vdW50PgogICAgICAgICAgICAgICAgICAgIDxyYW06R3JhbmRUb3RhbEFtb3VudD4xNTAwLjAwPC9yYW06R3JhbmRUb3RhbEFtb3VudD4KICAgICAgICAgICAgICAgICAgICA8cmFtOkR1ZVBheWFibGVBbW91bnQ+MTUwMC4wMDwvcmFtOkR1ZVBheWFibGVBbW91bnQ+CiAgICAgICAgICAgICAgIDwvcmFtOlNwZWNpZmllZFRyYWRlU2V0dGxlbWVudEhlYWRlck1vbmV0YXJ5U3VtbWF0aW9uPgogICAgICAgICAgPC9yYW06QXBwbGljYWJsZUhlYWRlclRyYWRlU2V0dGxlbWVudD4KICAgICA8L3JzbTpTdXBwbHlDaGFpblRyYWRlVHJhbnNhY3Rpb24+CjwvcnNtOkNyb3NzSW5kdXN0cnlJbnZvaWNlPg=="' \
-F 'data={ "Company Name": "Acme Corp", "Invoice No": "INV-123456", "Street Address": "123 Main St", "City": "Springfield", "State": "IL", "Zip Code": "62701", "Invoice Date": "2025-02-26", "Phone": "(555) 123-4567", "Description": "Consulting services for Q1 2025", "Quantity": "10", "Amount": "150.00", "Total": "1500.00" }' \
-F 'output_format=.pdf/a-3b'
Het resulterende PDF-bestand bevat zowel de visuele factuur als het ingesloten XML-bestand, met de metadata al aanwezig. Het doorstaat met succes de validatie bij een externe dienst:

DocuGenerate genereert of valideert de inhoud van het XML-bestand zelf niet. U bent zelf verantwoordelijk voor het aanleveren van een XML-bestand dat voldoet aan het XSD-schema en de Schematron-regels van de door u gekozen standaard. DocuGenerate verzorgt alleen de PDF/A-3-verpakking en de metadata die het bijgevoegde bestand beschrijven, niet de gegevens erin.
Voor een volledige, stapsgewijze tutorial over het maken van sjablonen, het voorbereiden van XML en het genereren van PDF-bestanden, zie Hoe Maakt u ZUGFeRD / Factur-X PDF-Facturen met DocuGenerate.