Zum Inhalt springen

XRechnung – Beispiel

Viele ERP- und Warenwirtschaftsprogramme können Rechnungen drucken, aber keine XRechnung erzeugen. Mit RUNOS genügt es, dass die gedruckte Rechnung ein paar zusätzliche Zeilen enthält. RUNOS liest sie, erzeugt daraus die XRechnung, prüft sie mit dem KoSIT-Validator und verschickt sie.

ERP druckt Rechnung ──▶ RUNOS-PDF-Drucker speichert PDF im Pool ──▶ RUNOS File-Trigger
│
Skriptblöcke im PDF-Text ◀──────┘
│
XRechnung erzeugen + KoSIT-Prüfung + ZUGFeRD-PDF
│
Mail an den Kunden (SMTP / MAPI / Microsoft 365)

Legen Sie in RUNOS unter Drucker einen PDF-Drucker mit dem Ordner C:\RUNOS\Rechnungen an, der jedes Dokument automatisch dort speichert, und wählen Sie ihn im ERP für Rechnungen. Wie das geht, steht unter PDF-Drucker.

Das PDF muss echten Text enthalten (keine eingescannte Grafik), damit RUNOS die Skriptblöcke lesen kann.

Ergänzen Sie das Rechnungsformular Ihres ERP um Zeilen in der Kurzform der Skriptblöcke. Jede Zeile setzt ein Feld der Rechnung. XR ist der Name der XRechnung-Aktion im Workflow (Schritt 3):

#RUNOS XR.Invoice.BT1=RE-2026-0001 #RUNOS
#RUNOS XR.Invoice.BT2=2026-10-08 #RUNOS
#RUNOS XR.Invoice.BT9=2026-11-07 #RUNOS
#RUNOS XR.Invoice.BT10=04011000-12345-03 #RUNOS
#RUNOS XR.Invoice.BG7.BT44=Musterkunde GmbH #RUNOS
#RUNOS XR.Invoice.BG7.BT49=rechnung@musterkunde.de #RUNOS
#RUNOS XR.Invoice.BG7.BG8.BT50=Beispielweg 2 #RUNOS
#RUNOS XR.Invoice.BG7.BG8.BT52=München #RUNOS
#RUNOS XR.Invoice.BG7.BG8.BT53=80331 #RUNOS
#RUNOS XR.Invoice.BG25.BT126=1 #RUNOS
#RUNOS XR.Invoice.BG25.BT129=2 #RUNOS
#RUNOS XR.Invoice.BG25.BT130=HUR #RUNOS
#RUNOS XR.Invoice.BG25.BG29.BT146=50.00 #RUNOS
#RUNOS XR.Invoice.BG25.BG30.BT151=S #RUNOS
#RUNOS XR.Invoice.BG25.BG30.BT152=19 #RUNOS
#RUNOS XR.Invoice.BG25.BG31.BT153=Beratung #RUNOS
#RUNOS XR.Invoice.BG25.BT126=2 #RUNOS
#RUNOS XR.Invoice.BG25.BT129=1 #RUNOS
#RUNOS XR.Invoice.BG25.BT130=C62 #RUNOS
#RUNOS XR.Invoice.BG25.BG29.BT146=120.00 #RUNOS
#RUNOS XR.Invoice.BG25.BG30.BT151=S #RUNOS
#RUNOS XR.Invoice.BG25.BG30.BT152=19 #RUNOS
#RUNOS XR.Invoice.BG25.BG31.BT153=Einrichtung #RUNOS
#RUNOS SendMail.To=rechnung@musterkunde.de #RUNOS
#RUNOS SendMail.Subject=Rechnung RE-2026-0001 #RUNOS
  • Jede Position beginnt mit BT126 (Positionsnummer). Ein erneutes BT126 beginnt die nächste Position. Schreiben Sie jede Position vollständig, bevor die nächste beginnt.
  • Je Position: Menge (BT129), Einheit (BT130), Nettopreis (BG29.BT146), Steuerkategorie und -satz (BG30.BT151, BG30.BT152) und Bezeichnung (BG31.BT153).
  • Beträge mit Punkt als Dezimaltrennzeichen und ohne Tausendertrennzeichen.
  • Die Zeilen dürfen klein gedruckt werden (z. B. 4-Punkt-Schrift am Seitenende, auch weiß auf weiß), müssen aber im Text des PDFs stehen. Lassen Sie keine Zeile umbrechen.
  • Die letzten beiden Zeilen setzen Empfänger und Betreff der Mail-Aktion SendMail.

Welche Felder es gibt, steht unter Struktur. In der Ansicht E-Rechnung (XRechnung) der Aktivitätsleiste können Sie eine Rechnung vorher ausprobieren.

Die festen Daten (Ihr Unternehmen, Bankverbindung, Zahlungsbedingungen) stehen einmal im Parameter Invoice der XRechnung-Aktion. Die Werte aus dem PDF werden darübergelegt.

{
"Name": "ERP-Rechnung als XRechnung",
"Autostart": true,
"Trigger": {
"Type": "File",
"Name": "Rechnungsdruck",
"Parameters": {
"Pool": "C:\\RUNOS\\Rechnungen",
"Filter": "*.pdf",
"CronExpression": "0/10 * * * * ?"
}
},
"Actions": [
{
"Type": "XRechnung",
"Name": "XR",
"Parameters": {
"AutoCalculateTotals": true,
"EnableZugferd": true,
"PdfSourcePath": "{{FilePath}}",
"SaveToFolder": true,
"OutputFolder": "C:\\RUNOS\\Archiv\\%yyyy%",
"Invoice": {
"BT3": "380",
"BT5": "EUR",
"BT20": "Zahlbar innerhalb von 30 Tagen ohne Abzug.",
"BG4": {
"BT27": "Muster GmbH",
"BT31": "DE123456789",
"BT34": "rechnung@muster.de",
"BT34-1": "EM",
"BG5": { "BT35": "Musterstraße 1", "BT37": "Berlin", "BT38": "10115", "BT40": "DE" },
"BG6": { "BT41": "Buchhaltung", "BT42": "+49 30 1234567", "BT43": "rechnung@muster.de" }
},
"BG7": {
"BT49-1": "EM",
"BG8": { "BT55": "DE" }
},
"BG16": {
"BT81": "58",
"BG17": [ { "BT84": "DE89370400440532013000", "BT85": "Muster GmbH" } ]
}
}
}
},
{
"Type": "SMTP",
"Name": "SendMail",
"Parameters": {
"SmtpServer": "smtp.example.com",
"SmtpUser": "{{connector.Mailserver.Username}}",
"SmtpPassword": "{{connector.Mailserver.Password}}",
"From": "rechnung@muster.de",
"FromName": "Muster GmbH",
"To": "",
"Subject": "Ihre Rechnung",
"Body": "Guten Tag,\n\nanbei erhalten Sie unsere Rechnung als ZUGFeRD-PDF.",
"Attachments": "{{XR.Response.Results.Zugferd.ZugferdPath}}"
}
}
]
}

AutoCalculateTotals berechnet Positionsbeträge, Umsatzsteuer-Aufschlüsselung und Summen, sodass das ERP sie nicht drucken muss. Die Zugangsdaten zum Mailserver liegen in einem Basic-Konnektor namens Mailserver.

  1. Öffnen Sie den Workflow im Editor und klicken Sie auf Lauschen.
  2. Drucken Sie eine Rechnung aus dem ERP auf den RUNOS-PDF-Drucker.
  3. Im Protokoll sehen Sie die gefundene Datei, die gelesenen Skriptblöcke (ScriptShorthandParsed), das Ergebnis der Prüfung und den Versand.

Schlägt die Prüfung fehl, nennt die Meldung jedes fehlende oder falsche Feld mit der Regel aus dem Standard. Das PDF liegt dann in C:\RUNOS\Rechnungen\Spooler\Failed\. Korrigieren Sie Formular oder Daten und drucken Sie erneut.

  • Nur XML statt ZUGFeRD-PDF: EnableZugferd weglassen und {{XR.Response.Results.FilePath}} anhängen. Öffentliche Auftraggeber verlangen meist die reine XRechnung mit Leitweg-ID in BT10.
  • Ablage statt Mail: SaveToFolder: true mit OutputFolder legt XML und ZUGFeRD-PDF dauerhaft ab; die Mail-Aktion entfällt.
  • Daten als JSON-Block: Statt vieler Kurzform-Zeilen kann das ERP einen JSON-Block drucken: #RUNOS {"Actions":{"XR":{"Invoice":{"BT1":"RE-2026-0001", …}}}} #RUNOS.
  • Daten aus einer Datei: Schreibt das ERP die Rechnung als JSON-Datei, nimmt der File-Trigger *.json und die Aktion "InvoiceJsonFile": "{{FilePath}}".
  • Vorlagen: Unter Neu enthält die Vorlage Gedruckte Rechnung als XRechnung genau diesen Workflow, XRechnung per E-Mail einen Workflow, der eine XRechnung aus Daten im Workflow erzeugt, prüft und mailt.