n8n

n8n Integration

Community Node Available

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

VIDEO WALKTHROUGH

Automate e-invoicing with n8n

Step by step: install the community node, add your API key, and generate XRechnung & ZUGFeRD straight from your n8n workflow.

Available · Live

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.

Ready-Made Workflow Templates

5 Templates

Production-ready n8n workflows for direct import. Each template includes JSON workflow, documentation, and example data.

Archive inbound e-invoices from Gmail to Drive (with a searchable sheet log)

Archive inbound e-invoices from Gmail to Drive (with a searchable sheet log)

When our team passed 50 people, the supplier-invoice flow turned into a problem I couldn't keep ignoring. I'm Head of Finance at a software company; XRechnung XML from IT contractors, PDFs from the hosting provider, a…

5 min setupView template
Turn a Google Sheet row into an XRechnung and email it

Turn a Google Sheet row into an XRechnung and email it

Since January 2025 our public-sector clients stopped accepting PDF invoices — they want XRechnung XML (EN 16931) or they don't pay. We're a four-person consultancy; I handle the admin side on top of my actual work, an…

10 min setupView template
Self-service invoice validator (upload form)

Self-service invoice validator (upload form)

I run n8n as the automation layer for a B2B online shop. Our suppliers send invoices in every shape we buy into — XRechnung XML, ZUGFeRD hybrids, plain PDFs. Before any downstream workflow (booking, reconciliation, pa…

3 min setupView template
Bulk-parse inbound e-invoices from Gmail into a flat Google Sheet

Bulk-parse inbound e-invoices from Gmail into a flat Google Sheet

Between Christmas and mid-January I was out for three weeks, and the supplier invoices for three of my clients had been stacking up in their inboxes — roughly a hundred and eighty attachments. I'm a freelance bookkeep…

5 min setupView template
WooCommerce order → XRechnung → email the buyer, note the order

WooCommerce order → XRechnung → email the buyer, note the order

My shop sells lab consumables — pipette tips, reagent bottles, filter papers — mostly to university institutes, clinics, and the occasional research foundation. They're all publicly funded, and since early 2025 their …

10 min setupView template

What is n8n?

n8n is an open-source workflow automation tool — like Zapier or Make.com, but self-hostable and with full code access. With over 400 built-in integrations and community nodes, n8n is ideal for automating e-invoice workflows in privacy-sensitive environments.

Self-Hosted

Run on your own servers. Your invoice data never leaves your infrastructure.

No-Code / Low-Code

Visual workflow editor with drag & drop. Code when you need it.

Open Source

Fair-code licensed. Inspect, modify and extend as needed.

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, facturx, 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 "countrySpecific": { "buyerReference": "BUYER-REF-001" },
25 "items": [{
26 "position": 1,
27 "description": "Beratung",
28 "quantity": 10,
29 "unit": "HUR",
30 "unitPrice": 150.00,
31 "taxRate": 19,
32 "netAmount": 1500.00,
33 "taxAmount": 285.00,
34 "grossAmount": 1785.00
35 }],
36 "currency": "EUR",
37 "subtotal": 1500.00,
38 "total": 1785.00,
39 "taxSummary": [{ "taxRate": 19, "netAmount": 1500.00, "taxAmount": 285.00 }],
40 "paymentTerms": { "dueDays": 30 }
41 }
42}
43 
44// Response:
45{
46 "success": true,
47 "format": "xrechnung",
48 "filename": "INV-2025-001.xml",
49 "mimeType": "application/xml",
50 "hash": "sha256:...",
51 "data": "PD94bWwgdmVyc2lvbj0i..."
52}

Parse

Extract data from XML/PDF with known format

Parameters

countryCode(options)Ländercode (de, at, ch, fr, it, ...)
format(options)xrechnung, zugferd, facturx, 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/de/xrechnung/parse
2// Request: application/json
3{
4 "data": "<base64-encoded XML or PDF>",
5 "filename": "rechnung.xml"
6}
7 
8// Response:
9{
10 "success": true,
11 "format": "XRECHNUNG_UBL",
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// Request: application/json
3{
4 "data": "<base64-encoded XML or PDF>",
5 "filename": "rechnung.xml"
6}
7 
8// Response:
9{
10 "success": true,
11 "hash": "sha256:...",
12 "invoice": {
13 "invoiceNumber": "INV-2025-001",
14 "issueDate": "2025-01-15",
15 ...
16 },
17 "detection": {
18 "format": "XRECHNUNG_UBL",
19 "formatVersion": "3.0.2",
20 "countryCode": "DE",
21 "confidence": 98,
22 "formatMethod": "CUSTOMIZATION_ID",
23 "countrySource": "DOCUMENT",
24 "isAmbiguous": false,
25 "alternativeCountries": []
26 }
27}

Validate

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 "errors": [],
15 "warnings": []
16}

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}

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

n8n vs Zapier vs Make vs Direct API

How does the n8n integration compare to other automation options?

Featuren8n + Invoice-api.xhubZapierMake.comDirect API
Native Invoice Node
Self-Hosted Option
No-Code Workflows
E-Invoice Formats11111111
Countries28282828
Open Source
Automation CostFree (self-hosted)From $20/moFrom $20/moFree (self-hosted)

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

28 countries with various e-invoice formats are supported.

Fully supportedPartially supported
  • AUAustraliaUBL (EN 16931)
  • ATAustriaebInterface · UBL (EN 16931)
  • BEBelgiumUBL (EN 16931) · Factur-X
  • BGBulgariaUBL (EN 16931)
  • CYCyprusUBL (EN 16931)
  • CZCzechiaISDOC · UBL (EN 16931)
  • DKDenmarkUBL (EN 16931)
  • EEEstoniaUBL (EN 16931)
  • FIFinlandUBL (EN 16931)
  • FRFranceFactur-X · UBL (EN 16931)
  • DEGermanyXRechnung · ZUGFeRD
  • GRGreecemyDATA
  • HUHungaryNAV Online Számla XML
  • IEIrelandUBL (EN 16931)
  • ITItalyFatturaPA
  • LVLatviaUBL (EN 16931)
  • LTLithuaniaUBL (EN 16931)
  • LULuxembourgUBL (EN 16931)
  • MTMaltaUBL (EN 16931)
  • NLNetherlandsUBL (EN 16931)
  • NZNew ZealandUBL (EN 16931)
  • NONorwayUBL (EN 16931)
  • PLPolandUBL (EN 16931) · Peppol BIS UBL
  • RORomaniaUBL (EN 16931) · Peppol BIS UBL
  • SKSlovakiaUBL (EN 16931) · Peppol BIS UBL
  • SISloveniaUBL (EN 16931)
  • ESSpainFacturae · UBL (EN 16931)
  • SESwedenUBL (EN 16931)
  • CHSwitzerlandQR-Bill · ZUGFeRD
  • AEUnited Arab EmiratesUBL (EN 16931)
  • GBUnited KingdomUBL (EN 16931)

Troubleshooting

Common problems and their solutions.

Get Started Now

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

What works with n8n

Supported

  • Community node for generation, validation and parsing
  • Self-hostable — invoice data leaves your instance only for the API call
  • Any trigger: webhook, database, email, cron
  • Ready-made templates for recurring workflows

Limits

  • Peppol dispatch is not available yet (planned Q1/2027)
  • The converter endpoint is planned for Q4/2026 — until then, switch formats via parse + generate
  • Error handling and retry strategy belong in your workflow, not in the API

What it costs for your workflow

A n8n setup producing around 2,000 invoices per month fits the Starter plan at 23 € per month.

All prices net, plus VAT · 20 % off when billed annually · Free tier without a credit card

All plans

n8n — frequently asked

Does this work on a self-hosted n8n instance?

Yes, and that is the common case. The node calls the API over HTTPS; invoice data leaves your instance only for that single call and is not stored permanently.

How do I handle failed calls?

The validator names the rule that failed with its code (e.g. BR-DE-01). The usual shape is a retry branch for network errors and a separate branch for validation errors that flags the order for manual review — the latter do not fix themselves by retrying.

Does every validation count against my quota?

Generated invoices are API calls. Budget for validation runs during development if you are testing on the free tier.

For agencies

If you build n8n shops for clients: this page is the explanation you can hand them. Get in touch for volume terms and joint projects.