ZUGFeRD and Factur-X API
Create PDF invoices that people can read and accounting software can process, from a simple JSON request. EN 16931 compliant, for Germany's B2B mandate and France's e-invoicing reform.
Get Your Free API Key Read the docsNo credit card required
What are ZUGFeRD and Factur-X?
ZUGFeRD and Factur-X are hybrid e-invoices: a normal-looking PDF invoice with the invoice data embedded inside it as an XML file. Your customer can open and read the PDF like any other invoice, and their accounting software reads the seller, buyer, line items, VAT and payment details straight from the XML.
ZUGFeRD is the German name and Factur-X the French name of the same standard, so one file works in both countries. InvoicingAPI creates ZUGFeRD 2.3 / Factur-X 1.07 invoices with the EN 16931 profile, the profile that counts as an e-invoice under the German B2B rules.
You choose the template, colors and logo as usual. The PDF is an archival PDF/A-3 file, and the XML is embedded as factur-x.xml.
Who needs it?
Germany
- Since 1 January 2025, every business must be able to receive e-invoices from other businesses.
- From 1 January 2027, businesses with a turnover over €800,000 must send them.
- From 1 January 2028, every business must send them. Small invoices up to €250 are exempt.
- ZUGFeRD with the EN 16931 profile and XRechnung both qualify. Public authorities usually ask for XRechnung.
France
- Since 1 September 2026, every business must be able to receive e-invoices, and large and mid-sized companies must send them.
- From 1 September 2027, small and micro businesses must send them too.
- Factur-X is one of the accepted formats. Invoices are exchanged through a certified platform (plateforme agréée), which you send the file to.
This is a summary, not tax advice. Check with your tax advisor which rules apply to your business.
One request, one ZUGFeRD invoice
Send the same JSON you would send for a PDF invoice, and add an eInvoice object with the format zugferd or factur-x. InvoicingAPI calculates the totals and VAT using the EN 16931 rounding rules, so the PDF always shows the same amounts as the embedded XML.
curl -X POST "https://dev.invoicingapi.com/v1/invoice/createinvoice" \
-H "ApiKey: __YOUR_API_KEY__" \
-H "Content-Type: application/json" \
-d '{
"template": "business3",
"documentType": "a4",
"color": "blue",
"invoiceNumber": "RE-2026-001",
"issueDate": "2026-11-04",
"dueDate": "2026-12-04",
"currency": "EUR",
"issuerAddress": {
"name": "Muster Software GmbH",
"addressLine1": "Hauptstrasse 1",
"city": "Berlin",
"postalCode": "10115",
"countryCode": "DE",
"vatNo": "DE123456789"
},
"recipientAddress": {
"name": "Beispiel AG",
"addressLine1": "Marktplatz 5",
"city": "Hamburg",
"postalCode": "20095",
"countryCode": "DE"
},
"taxData": {
"type": "VAT",
"percentage": 19
},
"lineItems": [
{
"description": "Software development",
"quantity": 12.5,
"unitPrice": 95,
"unitCode": "HUR"
},
{
"description": "Licence",
"quantity": 3,
"unitPrice": 49.99
}
],
"eInvoice": {
"format": "zugferd",
"payment": {
"iban": "DE02120300000000202051",
"bic": "BYLADEM1001"
},
"paymentTerms": "Payable within 30 days"
}
}' \
-o RE-2026-001.pdf
ZUGFeRD needs less than XRechnung: no contact person, buyer reference, email addresses or postal codes are required, and the bank details are optional.
What's supported
Every template
All our invoice templates work, with your colors, logo, font size and page size.
VAT
Standard and reduced rates, zero-rated, exempt, reverse charge, exports outside the EU, and invoices not subject to VAT. Exemption reasons are printed on the PDF too.
Matching amounts
The PDF and the XML show the same totals, calculated with the EN 16931 rounding rules, including discounts, prices that include VAT, and invoices that are already paid.
PDF/A-3
An archival PDF with all fonts embedded, as ZUGFeRD and Factur-X require, so the invoice looks the same everywhere for years to come.
Payment details
Optional SEPA credit transfer details with IBAN, BIC and account name, your payment terms and the due date.
Validated output
Our output is tested with the Mustang validator, which checks the PDF/A-3 file and the official ZUGFeRD and Factur-X rules for the XML.
Test for free, then go live
Sandbox
Every account comes with a sandbox API key. Use it to build and test your integration with up to 200 invoices a day. Sandbox invoices are watermarked "SANDBOX - NOT A VALID INVOICE" and don't count towards your plan.
Pricing
A ZUGFeRD invoice counts as one invoice. The Free plan includes 10 invoices a month, and the Standard plan includes unlimited invoices for €5 a month. See the Pricing page. Sending thousands of e-invoices a month? Email us and we'll help with your integration.
ZUGFeRD and Factur-X FAQ
Is there a difference between ZUGFeRD and Factur-X?
Not in the file. Germany and France developed the standard together, and ZUGFeRD 2.3 is identical to Factur-X 1.07. The format values zugferd and factur-x produce the same invoice.
Should I use ZUGFeRD or XRechnung?
Use ZUGFeRD or Factur-X when your customers are businesses, since everyone can read the PDF. Use XRechnung for German public authorities, which usually require it, or when a customer asks for an XML file only.
Which ZUGFeRD profile do you create?
The EN 16931 profile (called COMFORT in older ZUGFeRD versions). It contains everything the European standard requires, and it counts as an e-invoice under the German B2B rules, unlike the MINIMUM and BASIC WL profiles.
Can I use different VAT rates on one invoice?
Not yet for ZUGFeRD and Factur-X, since the PDF templates show one VAT rate. If you need different rates per line, use the xrechnung format, or let us know.
How can I see the embedded XML?
Open the PDF in a viewer that shows attachments, such as Adobe Acrobat Reader, and open the attachments panel. You'll find factur-x.xml there.
Can I download a ZUGFeRD invoice again later?
Yes. Invoices created with your live API key appear on your Invoices page, and downloading them again gives you the ZUGFeRD PDF with the XML embedded.