n8n

n8n Integration

Community Node Available

Open-source workflow automation with self-hosting option. Perfect for privacy-sensitive e-invoice workflows.

Community Node Now Available

The official n8n-nodes-invoice-api-xhub Community Node is now available in the n8n Community Node Registry. Install it directly in n8n and start automating e-invoices immediately.

Quick Start

Get Started in 3 Steps

  1. 1

    Install Community Node

    Settings → Community Nodes → Search for n8n-nodes-invoice-api-xhub

  2. 2

    Set Up Credentials

    Enter API Key and Base URL in Invoice-api.xhub credentials

  3. 3

    Add Node to Workflow

    Add Invoice-api.xhub node and select operation

bash
1# Installation via n8n UI:
2# Settings Community Nodes Install
3 
4# Oder via npm (für selbst-gehostete Instanzen):
5cd ~/.n8n/custom
6npm install n8n-nodes-invoice-api-xhub
7 
8# n8n neu starten
9# Der Node erscheint unter "Invoice-api.xhub" in der Node-Liste

Credentials Setup

Create new credentials for the Invoice-api.xhub node:

NameInvoice-api.xhub API

Any name for identification

API Keysk_test_xxxxxxxxxxxx

Test key (sk_test_*) or live key (sk_live_*)

Base URLhttps://service.invoice-api.xhub.io

Default API endpoint (pre-filled)

json
1// Credentials JSON Struktur
2{
3 "name": "Invoice-api.xhub API",
4 "type": "invoiceXhubApi",
5 "data": {
6 "apiKey": "sk_test_xxxxxxxxxxxxxxxxxxxx",
7 "baseUrl": "https://service.invoice-api.xhub.io"
8 }
9}
10 
11// API Key Formate:
12// sk_test_* → Sandbox/Test-Umgebung
13// sk_live_* → Produktions-Umgebung
14 
15// Den API Key findest du in der Console:
16// https://console.invoice-api.xhub.io

Node Operations

The Invoice-api.xhub node offers 5 main operations for e-invoice processing.

Generate

Create e-invoice from JSON

Parameters

countryCode(options)Ländercode (DE, AT, CH, FR, IT, ...)
format(options)xrechnung, zugferd, factur-x, fatturapa, ...
invoiceData(json)Rechnungsdaten als JSON-Objekt
outputBinary(boolean)Dokument als Binary ausgeben (Standard: true)
binaryPropertyName(string)Name der Binary-Property (Standard: data)
includeWarnings(boolean)Validierungs-Warnungen einschließen
formatOptions(json)Format-spezifische Optionen (z.B. Template, Profil)
json
1// POST /api/v1/invoice/{countryCode}/{format}/generate
2{
3 "invoice": {
4 "invoiceNumber": "INV-2025-001",
5 "type": "invoice",
6 "issueDate": "2025-01-15",
7 "dueDate": "2025-02-14",
8 "seller": {
9 "name": "ACME GmbH",
10 "vatId": "DE123456789",
11 "street": "Hauptstraße 1",
12 "city": "Berlin",
13 "postalCode": "10115",
14 "countryCode": "DE"
15 },
16 "buyer": {
17 "name": "Customer AG",
18 "vatId": "DE987654321",
19 "street": "Musterweg 5",
20 "city": "München",
21 "postalCode": "80331",
22 "countryCode": "DE"
23 },
24 "items": [{
25 "position": 1,
26 "description": "Beratung",
27 "quantity": 10,
28 "unit": "HUR",
29 "unitPrice": 150.00,
30 "taxRate": 19,
31 "netAmount": 1500.00,
32 "taxAmount": 285.00,
33 "grossAmount": 1785.00
34 }],
35 "currency": "EUR",
36 "subtotal": 1500.00,
37 "total": 1785.00,
38 "taxSummary": [{ "taxRate": 19, "netAmount": 1500.00, "taxAmount": 285.00 }],
39 "paymentTerms": { "dueDays": 30 }
40 }
41}
42 
43// Response:
44{
45 "success": true,
46 "format": "xrechnung",
47 "filename": "INV-2025-001.xml",
48 "mimeType": "application/xml",
49 "hash": "sha256:...",
50 "data": "PD94bWwgdmVyc2lvbj0i..."
51}

Parse

Extract data from XML/PDF with known format

Parameters

countryCode(options)Ländercode (DE, AT, CH, FR, IT, ...)
format(options)xrechnung, zugferd, factur-x, fatturapa, ...
inputType(options)binary (aus vorherigem Node) oder base64
binaryPropertyName(string)Name der Binary-Property (Standard: data)
base64Data(string)Base64-kodiertes Dokument (bei inputType=base64)
json
1// POST /api/v1/invoice/{countryCode}/{format}/parse
2// Input: Binary-Daten oder Base64-String
3 
4// n8n Expression (Binary Input):
5// inputType: "binary"
6// binaryPropertyName: "data"
7 
8// Response:
9{
10 "success": true,
11 "format": "xrechnung",
12 "hash": "sha256:...",
13 "invoice": {
14 "invoiceNumber": "INV-2025-001",
15 "type": "invoice",
16 "issueDate": "2025-01-15",
17 "dueDate": "2025-02-14",
18 "seller": { "name": "ACME GmbH", ... },
19 "buyer": { "name": "Customer AG", ... },
20 "items": [{ "position": 1, "description": "Beratung", ... }],
21 "currency": "EUR",
22 "subtotal": 1500.00,
23 "total": 1785.00
24 }
25}

Parse (Auto-Detect)

Automatic detection of country and format

Parameters

inputType(options)binary (aus vorherigem Node) oder base64
binaryPropertyName(string)Name der Binary-Property (Standard: data)
base64Data(string)Base64-kodiertes Dokument (bei inputType=base64)
json
1// POST /api/v1/invoice/parse
2// Kein countryCode/format nötig — wird automatisch erkannt
3 
4// Response:
5{
6 "success": true,
7 "format": "xrechnung",
8 "hash": "sha256:...",
9 "invoice": {
10 "invoiceNumber": "INV-2025-001",
11 "issueDate": "2025-01-15",
12 ...
13 },
14 "detection": {
15 "format": "xrechnung",
16 "countryCode": "DE",
17 "confidence": 95,
18 "formatMethod": "NAMESPACE",
19 "countrySource": "DOCUMENT",
20 "isAmbiguous": false
21 },
22 "detectedFormat": "xrechnung",
23 "detectedCountry": "DE",
24 "confidence": 95
25}

Validate

Planned Q2 2026

Validate against country-specific rules

Parameters

countryCode(options)Ländercode (DE, AT, CH, FR, IT, ...)
invoiceData(json)Rechnungsdaten als JSON-Objekt
failOnErrors(boolean)Node bei Fehlern als fehlgeschlagen markieren
failOnWarnings(boolean)Node bei Warnungen als fehlgeschlagen markieren
json
1// POST /api/v1/invoice/{countryCode}/validate
2{
3 "invoice": {
4 "invoiceNumber": "INV-2025-001",
5 "type": "invoice",
6 "issueDate": "2025-01-15",
7 ...
8 }
9}
10 
11// Response:
12{
13 "valid": true,
14 "countryCode": "DE",
15 "errors": [],
16 "warnings": [],
17 "errorCount": 0,
18 "warningCount": 0
19}

Get Formats

Retrieve supported countries/formats

Parameters

scope(options)all (alle Länder) oder country (einzelnes Land)
countryCode(options)Ländercode (DE, AT, CH, FR, IT, ...)
json
1// GET /api/v1/invoice/formats (scope: all)
2// GET /api/v1/invoice/{countryCode}/formats (scope: country)
3 
4// Response (scope: all):
5{
6 "countries": [
7 { "code": "DE", "name": "Germany", "formats": [
8 { "name": "XRechnung", "id": "xrechnung", "mimeType": "application/xml" },
9 { "name": "ZUGFeRD", "id": "zugferd", "mimeType": "application/pdf" },
10 { "name": "PDF", "id": "pdf", "mimeType": "application/pdf" }
11 ]
12 },
13 { "code": "AT", "name": "Austria", "formats": [
14 { "name": "ebInterface", "id": "ebinterface", "mimeType": "application/xml" },
15 { "name": "PDF", "id": "pdf", "mimeType": "application/pdf" }
16 ]
17 },
18 ...
19 ],
20 "totalCountries": 14
21}

Why n8n?

Self-Hosted

Run n8n on your own infrastructure

Open Source

Fully open source under Fair-Code license

400+ Integrations

Native nodes for the most popular tools

Code-Capable

JavaScript/Python code directly in workflows

Multi-Agent Architecture

For complex scenarios: Build a system of specialized agents that work together.

Webhook
Receive invoice
Coordinator Agent
Analyze & route requests
Validation
Agent
Generation
Agent
Parsing
Agent
Error Handler Agent
Error diagnosis & escalation

Coordinator Agent

Receives requests and routes them to the appropriate specialized agent

Validation Agent

Validates invoices against official XRechnung/ZUGFeRD schemas

Generation Agent

Creates compliant e-invoices from JSON data

Error Handler Agent

Analyzes errors, attempts auto-fixes, or escalates to humans

Supported Formats

14 countries with various e-invoice formats are supported.

DE
XRechnungZUGFeRD

B2G Pflicht seit 2020

2025

AT
ebInterface

Q2 2026

CH
QR-Rechnung

Q2 2026

FR
Factur-X

B2B Pflicht ab 2026

Q2 2026

IT
FatturaPA

SDI Pflicht

Q2 2026

ES
Facturae

Q2 2026

NL
UBL

Q2 2026

BE
UBL

Q2 2026

PT
PDFSAF-T

Q2 2026

PL
KSeF

Pflicht ab 2026

Q2 2026

CZ
ISDOC

Q2 2026

HU
NAV

Q2 2026

RO
e-Factura

Q2 2026

BG
UBL

Q2 2026

Troubleshooting

Common problems and their solutions.

Get Started Now

Install the community node and automate your e-invoice workflows.