To the SDK
C++
SX:: ObjPtr <SX::EInvoice:: IInvoiceDocument > ptrInvoiceDoc = m_pApp -> get_Factory ()-> CreateEInvoiceDocument ();
SX:: ObjPtr <SX::EInvoice:: IInvoiceData > ptrInvoice = ptrInvoiceDoc -> CreateInvoice ();
ptrInvoice -> Create (SX::EInvoice:: einv_standard_facturx , SX::EInvoice:: einv_profile_EN16931 );
// invoice properties
auto pInvDesc = ptrInvoice -> get_Description ();
pInvDesc -> set_ID ( L"EI4772485" ); // invoice number
pInvDesc -> set_TypeCode ( 380 ); // invoice type "commercial invoice"
pInvDesc -> GetNote ( true , 0 )-> set_Content ( L"Contract V74-2925-678" );
// ...
auto pInvTrans = ptrInvoice -> get_Transaction ();
auto pAgr = pInvTrans -> get_Agreement ();
pAgr -> set_BuyerReference ( L"90320860-03083-12" );
auto pSeller = pAgr -> GetSeller ( true );
auto pAddr = pSeller -> GetAddress ( true );
pSeller -> set_Name ( L"Seller GmbH" );
pAddr -> set_Line1 ( L"Berlinerstr. 225" );
pAddr -> set_Postcode ( 80333 );
pAddr -> set_City ( L"München" );
// ...
auto pBuyer = pAgr -> GetBuyer ( true );
pAddr = pBuyer -> GetAddress ( true );
pBuyer -> set_Name ( L"Buyer AG" );
pAddr -> set_Postcode ( 10178 );
pAddr -> set_Line1 ( L"Jörg Müller" );
pAddr -> set_Line2 ( L"Münchener. 96" );
pAddr -> set_City ( L"Berlin" );
// ...
Visual invoice part Seller GmbH | Berlinerstr. 225 | 80333 München
Buyer AG
Jörg Müller
Münchener. 96
10178 Berlin
Commercial Invoice EI4772485
Contract V74-2925-678
Buyer reference 90320860-03083-12
...
XML (FACTUR-X) ...
<rsm:ExchangedDocument>
<ram:ID>EI4772485</ram:ID>
<ram:TypeCode>380</ram:TypeCode>
...
<ram:SellerTradeParty>
...
<ram:Name>Seller GmbH</ram:Name>
<ram:PostalTradeAddress>
<ram:PostcodeCode>80333</ram:PostcodeCode>
<ram:LineOne>Berlinerstr. 225</ram:LineOne>
<ram:CityName>München</ram:CityName>
... </ram:SellerTradeParty>
...
<ram:BuyerTradeParty>
... <ram:Name>Buyer AG</ram:Name>
<ram:PostalTradeAddress>
<ram:PostcodeCode>10178</ram:PostcodeCode>
<ram:LineOne>Jörg Müller</ram:LineOne>
<ram:LineTwo>Münchener. 96</ram:LineTwo>
<ram:CityName>Berlin</ram:CityName>
</ram:PostalTradeAddress>
... </ram:BuyerTradeParty>
...
Homepage (e-rechnung-bund.de)
XRechnung – XStandards Procurement (xeinkauf.de)
What is ZUGFeRD | Forum elektronische Rechnung Deutschland (ferd-net.de)
Draft bill "Wachstumschancengesetz", e-invoicing provisions anchored in VAT regulations (see Articles 29 and 30): DIP – Act to Strengthen Growth Opportunities, Investment and Innovation as well as Tax Simplification and Tax Fairness (bundestag.de)
Peppol BIS Billing
E-Invoices
in the PDF Xpansion SDK
Support for:XRechnungZUGFeRDFactur-XUN/CEFACT CIIUBLPeppol BIS BillingAll versions & extensions supportedZUGFeRD / FACTUR-X
ZUGFeRD is a uniform, hybrid format for electronic invoices (e-invoices) developed by the Forum elektronische Rechnung Deutschland (FeRD). From version 2.1 onwards, it is technically identical to the French invoicing standard Factur-X 1.0 (both, of course, comply with EN 16931). The PDF Xpansion SDK supports all six profiles: EN 16931, EXTENDED, BASIC, BASIC WL, MINIMUM, XRECHNUNG.
Release 2.5.2 (= Factur-X 1.09.2) already added new functionality from the upcoming EU standard EN 16931-1:2026 to the EXTENDED profile. The aim is to support the requirements of the French B2B e-invoicing reform and the revised EN 16931 as early as possible.
The next ZUGFeRD release is expected in autumn 2026 and will likely include support for gross invoices and further functionality from the new revision of EN 16931.
Release 2.5.2 (= Factur-X 1.09.2) already added new functionality from the upcoming EU standard EN 16931-1:2026 to the EXTENDED profile. The aim is to support the requirements of the French B2B e-invoicing reform and the revised EN 16931 as early as possible.
The next ZUGFeRD release is expected in autumn 2026 and will likely include support for gross invoices and further functionality from the new revision of EN 16931.
Peppol BIS Billing 3.0
Peppol BIS Billing (Business Interoperability Specification) is a Europe-wide standard for electronic invoices in the Peppol network. It is very similar to XRechnung, but supports UBL syntax only, including CreditNote.
XRechnung
XRechnung is a standardised data set for electronic invoices in XML format, developed by the German federal and state governments (current version 3.0.2). There are two syntax variants for this format: UN/CEFACT CII and UBL. Both, of course, comply with EN 16931. By default, the UBL syntax is supplemented by an extension to represent third-party payments and sub-line items. The UBL syntax also supports the CreditNote document type.
The upcoming version XRechnung 4.0 is the German implementation of the new EU standard EN 16931-1:2026 and builds on the established XRechnung standard. Many of the current changes to EN 16931-1:2026 address specific requirements of both German public administration and industry.
The upcoming version XRechnung 4.0 is the German implementation of the new EU standard EN 16931-1:2026 and builds on the established XRechnung standard. Many of the current changes to EN 16931-1:2026 address specific requirements of both German public administration and industry.
Important information on the e-invoicing obligation has been compiled on this page.
Our installable standard software Perfect E-Invoice also offers a wide range of powerful features.
The PDF Xpansion SDK offers the following functions for electronic invoicing
- Format support: XRechnung 1.2–3.0.2 (UN/CEFACT CII, UBL and Extension), Factur-X 1.0, ZUGFeRD 1.0–2.4, Peppol BIS Billing 3.0
- File formats: XML-based and PDF/A-based (Factur-X/ZUGFeRD) e-invoices see sample files
- Read and technical validation (syntax, structure, completeness) of XML-based invoices, retrieve invoice data
- Read and technical validation (PDF/A conformance, PDF metadata, embedded XML invoice) of Factur-X and ZUGFeRD-based invoices, extract the embedded XML invoice – including from non-standards-compliant files
- Creation of XML-based invoices via SDK API – all invoice data can be created by calling the SDK methods, save e-invoices as XML files (UN/CEFACT CII and/or UBL)
- Creation of PDF/A invoices from XML-based invoices and the classic invoice (rendered as a PDF file), save e-invoices as PDF/A files (Factur-X/ZUGFeRD)
- Change the format, version or profile of existing XML-based invoices, for example from ZUGFeRD 2.4 to XRechnung 3.0.2
- Visualise existing XML-based invoices (create a PDF file from the invoice data and a template) see visualisation templates
- Support for the XRechnung Extension "SubInvoiceLine" (UBL format only)
- Support for credit notes (Credit Note, code 381) for XRechnung in UBL syntax
- Support for CDATA elements in XML invoices
- Calculate method for e-invoices with improved precision and compliance with rounding rules
- Display the PDF part of the invoice in the PDF viewer
- Print the PDF part of the invoice
- Digital signatures for outgoing ZUGFeRD invoices, including all PAdES conformance levels
- Stamp incoming invoices with "RECEIVED"
Process e-invoices quickly & easily with the PDF Xpansion SDK
Code example:
C++
C# / .NET
Further Resources
Background information on e-invoicing:Homepage (e-rechnung-bund.de)
XRechnung – XStandards Procurement (xeinkauf.de)
What is ZUGFeRD | Forum elektronische Rechnung Deutschland (ferd-net.de)
Draft bill "Wachstumschancengesetz", e-invoicing provisions anchored in VAT regulations (see Articles 29 and 30): DIP – Act to Strengthen Growth Opportunities, Investment and Innovation as well as Tax Simplification and Tax Fairness (bundestag.de)
Peppol BIS Billing
soft Xpansion Support
Perfect PDF 12 & PDF Xpansion SDK
🗑
✕


