Planned Q4/2026

Converter API

Convert e-invoices between XRechnung, ZUGFeRD/Factur-X and UBL – lossless where the target profile allows it. Fields that cannot be mapped are reported as warnings.

In Planning

Available today: combine Parser + Creator

Live

No need to wait for the Converter API: the Parser API returns a canonical invoice JSON for every supported invoice, and the Creator API accepts it directly as input. Two API calls give you a complete conversion today – in this example: XRechnung to ZUGFeRD.

  1. 1Parse the source invoice – POST /api/v1/invoice/parse accepts XML or ZUGFeRD/Factur-X PDF (Base64) and auto-detects format and country.
  2. 2Optionally validate – the validate endpoint checks the invoice JSON against country rules without consuming your quota.
  3. 3Generate the target format – pass the invoice JSON unchanged to the target format's generate endpoint; set the ZUGFeRD profile via formatOptions.profile.
bash
1# Works today Parser + Creator API combined
2 
3# 1) Parse the source (auto-detects format & country)
4INVOICE=$(curl -s -X POST https://service.invoice-api.xhub.io/api/v1/invoice/parse \
5 -H "Authorization: Bearer sk_live_abc123..." \
6 -H "Content-Type: application/json" \
7 -d '{"data": "'$(base64 -i xrechnung.xml)'", "filename": "xrechnung.xml"}' \
8 | jq '.invoice')
9 
10# 2) Generate the target format from the unchanged invoice JSON
11jq -n --argjson inv "$INVOICE" '{invoice: $inv, formatOptions: {profile: "EN16931"}}' \
12 | curl -s -X POST https://service.invoice-api.xhub.io/api/v1/invoice/de/zugferd/generate \
13 -H "Authorization: Bearer sk_live_abc123..." \
14 -H "Content-Type: application/json" \
15 -d @- \
16 | jq -r '.data' | base64 -d > rechnung-zugferd.pdf

Limits: input invoices from 28 countries are recognized; output covers 11 formats across 14 countries. Conversion goes through the canonical invoice model – format-specific extra fields it does not cover are lost; the parse response flags them in warnings.

Bidirectional

Convert in both directions between all current formats

Validated

Automatic validation of source and target format against the official schemas (EN 16931, KoSIT)

PDF Included

ZUGFeRD conversion automatically generates a PDF/A-3

Conversion Matrix

FromTo
XRechnung 3.0
ZUGFeRD / Factur-XUBL (Peppol BIS 3.0)
XRechnung 2.x
XRechnung 3.0ZUGFeRD / Factur-XUBL (Peppol BIS 3.0)
ZUGFeRD / Factur-X
XRechnung 3.0UBL (Peppol BIS 3.0)
UBL (Peppol BIS 3.0)
XRechnung 3.0ZUGFeRD / Factur-X

Format not listed?

We build custom format conversions as commissioned work – e.g. proprietary ERP exports, legacy formats or industry-specific profiles. We scope feasibility, effort and timeline together with you.

Example

bash
1# Planned API not yet available
2curl -X POST https://service.invoice-api.xhub.io/api/v1/invoice/convert \
3 -H "Authorization: Bearer sk_live_abc123..." \
4 -H "Content-Type: application/json" \
5 -d '{
6 "xml": "<?xml version=\"1.0\"?>\n<Invoice xmlns=\"urn:oasis:names:specification:ubl:schema:xsd:Invoice-2\">...</Invoice>",
7 "sourceFormat": "xrechnung",
8 "targetFormat": "zugferd"
9 }'

Alternative: Multipart File Upload

bash
1# Planned API not yet available
2curl -X POST https://service.invoice-api.xhub.io/api/v1/invoice/convert \
3 -H "Authorization: Bearer sk_live_abc123..." \
4 -H "Content-Type: multipart/form-data" \
5 -F "file=@xrechnung.xml" \
6 -F "targetFormat=zugferd"

Response

json
1{
2 "success": true,
3 "sourceFormat": "xrechnung",
4 "targetFormat": "zugferd",
5 "filename": "invoice-converted.pdf",
6 "mimeType": "application/pdf",
7 "hash": "sha256:xyz789...",
8 "data": "JVBERi0xLjcKCjEgMCBvYmoKPDwKL1R5cGUgL0NhdGFsb2cK...",
9 "errors": [],
10 "warnings": []
11}

Request Parameters

ParameterTypeRequiredDescription
xmlstringThe XML invoice to convert
sourceFormatstring-Source format. Automatically detected if not specified
targetFormatstringTarget format for conversion
profilestring-ZUGFeRD profile: MINIMUM, BASIC, BASIC-WL, EN16931, EXTENDED (Default: EN16931)
validateSourceboolean-Validate source XML before conversion (Default: true)
validateTargetboolean-Validate target XML after conversion (Default: true)

Format Values

xrechnung

XRechnung 3.0

zugferd

ZUGFeRD 2.x

facturx

Factur-X 1.0.x

ubl-peppol

UBL (Peppol BIS 3.0)

ZUGFeRD and Factur-X are the same Franco-German hybrid standard (PDF/A-3 with embedded EN 16931 XML) – both values produce the same result. Older versions are auto-detected as source format; the target is always the current version.

ZUGFeRD Profiles

When converting to ZUGFeRD, you can specify the profile. The profile determines which fields are included in the XML.

MINIMUM

Required fields only, for simple invoices

BASIC

Basic information for automatic processing

BASIC-WL

BASIC without line items (totals only)

EN16931

EU standard, recommended for B2G (default)

EXTENDED

All fields, maximum detail

ZUGFeRD PDF Generation

When converting to ZUGFeRD, a PDF/A-3 is automatically created with embedded XML. The PDF uses a standard layout. For custom PDF designs, use the Visualizer API (planned Q4/2026).

Typical Use Cases

XRechnung to ZUGFeRD

You have created XRechnung invoices for authorities and want to send the same invoices as PDF with embedded XML to business customers.

ZUGFeRD to XRechnung

You receive ZUGFeRD invoices from suppliers and need to convert them to XRechnung for further processing.

XRechnung 2.3 to 3.0

Migrate existing XRechnung invoices to the current version 3.0 for compatibility with current government systems.

Factur-X to XRechnung

Prepare French Factur-X invoices for the German market and send them to public contracting authorities.

Custom conversions as commissioned work

From special format to production conversion: we analyze your source and target formats, build the adaptation and make it available to you through the API – optionally as part of an Enterprise package with its own SLA.