E-invoicing API: Factur-X, XRechnung & ZUGFeRD from the JSON you already have
On September 1, 2026, every business in France must be able to receive structured e-invoices, and large and mid-size companies must issue them. Germany's B2B receive mandate is already live. The format behind both — EN 16931 — is a 200-page semantic standard with hundreds of business rules. Slipstack turns it into the same JSON call you use for PDF invoices.
Generate: one endpoint, two formats
- xrechnung-cii — standalone UN/CEFACT Cross-Industry Invoice XML carrying the XRechnung 3.0 guideline identifier. What German public-sector buyers and B2B platforms ingest.
- facturx-pdf — your invoice PDF with the CII XML embedded as
factur-x.xml(Factur-X BASIC profile guideline, PDF/A-3-style attachment and XMP metadata). Human-readable and machine-readable in one file — the French/German hybrid approach (Factur-X / ZUGFeRD).
// XRechnung-style CII XML (application/xml response)
const res = await fetch("https://slipstack.dev/api/v1/einvoice", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.SLIPSTACK_KEY}`, // Pro plan
"Content-Type": "application/json",
},
body: JSON.stringify({
options: { format: "xrechnung-cii" }, // or "facturx-pdf"
data: {
from: {
name: "Atelier Lumière SARL",
countryCode: "FR", // required for e-invoices
vatId: "FR32123456789", // required when taxRate > 0
address: "12 Rue de la Roquette",
city: "Paris", postalCode: "75011",
},
to: { name: "Bauhaus Digital GmbH", countryCode: "DE", vatId: "DE811569869" },
number: "FX-2026-0042",
date: "2026-06-09",
dueDate: "2026-07-09",
currency: "EUR",
items: [{ description: "Design retainer", quantity: 12, unitPrice: 95.5 }],
taxRate: 20,
paymentIban: "FR7630006000011234567890189",
paymentReference: "FX-2026-0042",
},
}),
});Parse: incoming CII and UBL invoices
The receive side of the mandate is the part that hits everyone. POST any EN 16931 invoice — CII (Factur-X, ZUGFeRD, XRechnung) or UBL (Peppol BIS) — and get back normalized JSON: parties, VAT identifiers, line items, totals, payment details.
# Parse any CII or UBL e-invoice back into clean JSON
curl -X POST https://slipstack.dev/api/v1/einvoice/parse \
-H "Authorization: Bearer $SLIPSTACK_KEY" \
-H "Content-Type: application/xml" \
--data-binary @incoming-invoice.xml
# -> { "format": "cii", "data": { from, to, number, items[], ... },
# "reported_totals": { ... }, "fields": { seller_vat_id, ... } }What we validate — and what we don't
Honesty matters more than badges in compliance tooling, so here is exactly where we stand:
- Validated: every generated document is tested against the official EN 16931 CII schematron (ConnectingEurope validation artifacts v1.3.16) and the UN/CEFACT D16B XSDs in our test suite — zero fatal rule violations across standard-rated, zero-rated, and not-subject-to-VAT scenarios.
- Not yet validated: country-CIUS extras on top of the core norm — KoSIT's XRechnung-specific rules (e.g. mandatory seller contact block) and Peppol BIS rules. Our XML carries the right guideline identifiers and passes the core EN 16931 rules they build on.
- facturx-pdf is labeled "facturx-hybrid (beta)": the embedded XML, attachment wiring (AFRelationship, /AF) and Factur-X XMP are spec-correct, but the PDF container is not a certified PDF/A-3 file (standard fonts are not embedded). If your counterparty requires strict PDF/A-3 conformance, use
xrechnung-ciiXML today. - Profile support: single VAT rate per invoice with an optional document-level discount. Multi-rate invoices, credit notes, and charges are on the roadmap.
For agents: it's on the MCP server too
The Slipstack MCP server exposes create_einvoice_xml and parse_einvoice — try both without an account on the demo quota.
E-invoicing ships with Pro
Generation on Pro and Scale. Parsing on every paid plan. Same key as your PDF API.
See pricing