Unabhängige .NET-Implementierung des österreichischen E-Rechnungsstandards ebInterface – lesen, schreiben und prüfen, inklusive der Sonderregeln von e-Rechnung.gv.at.
Hinweis: Dies ist ein unabhängiges Open-Source-Projekt. Es wird nicht von AUSTRIAPRO oder der Wirtschaftskammer Österreich herausgegeben oder unterstützt. Der offizielle Standard ist unter ebinterface.at zu finden.
English: EbInterface.Net is an independent .NET library for ebInterface, the Austrian XML e-invoicing standard (versions 4.3 to 6.1): read, write and validate invoices, including the additional rules of the Austrian federal e-invoicing portal e-Rechnung.gv.at. Messages and documentation are in German. Not affiliated with AUSTRIAPRO.
Frühe Entwicklungsphase (0.1.0-alpha). Die API kann sich noch ändern.
| Funktion | 4.3 | 5.0 | 6.0 | 6.1 | 7.0 |
|---|---|---|---|---|---|
| Versionserkennung | ✅ | ✅ | ✅ | ✅ | geplant |
| Schema-Prüfung (XSD) | ✅ | ✅ | ✅ | ✅ | geplant |
| Regeln von e-Rechnung.gv.at | ✅ | ✅ | ✅ | ✅ | geplant |
| Lesen in ein Modell | ✅ | ✅ | ✅ | ✅ | geplant |
| Schreiben | – | – | – | ✅ | geplant |
| Versions-Upgrade auf 6.1 | ✅ | ✅ | ✅ | – | – |
dotnet add package EbInterface.Net --prerelease
Unterstützt .NET Standard 2.0 (damit auch .NET Framework ab 4.6.1) und .NET 8. Keine Abhängigkeiten zu anderen Paketen.
using EbInterface;
using EbInterface.Validation;
// Nur der ebInterface-Standard (XML, Version, Schema) – z. B. für Rechnungen an Unternehmen:
var result = EbInterfaceValidator.ValidateFile("rechnung.xml");
// Zusätzlich die Regeln von e-Rechnung.gv.at – für Rechnungen an Bund, Länder und Gemeinden:
result = EbInterfaceValidator.ValidateFile("rechnung.xml",
new ValidationOptions { Profile = ValidationProfile.ERechnungGvAt });
Console.WriteLine($"Version: {result.Version.ToDisplayString()}");
foreach (var message in result.Messages)
Console.WriteLine(message); // [ERB-05] Zeile 42, Spalte 8: Bei einer Bestellnummer des Bundes ...IsValid ist true, solange es keine Fehler gibt. Warnungen stehen zusätzlich in Messages, zum Beispiel für
Felder, die e-Rechnung.gv.at nicht auswertet. Alle Codes und Regeln stehen in docs/pruefregeln.md.
using EbInterface;
using EbInterface.Model;
EbInvoice invoice = EbInterfaceReader.ReadFile("rechnung.xml"); // 4.3, 5.0, 6.0 oder 6.1
Console.WriteLine($"{invoice.InvoiceNumber} vom {invoice.InvoiceDate:d}: {invoice.PayableAmount} {invoice.Currency}");
foreach (LineItem line in invoice.AllLineItems)
Console.WriteLine($" {line.Quantity} {line.Unit} {line.Descriptions[0]} à {line.UnitPrice} ({line.TaxPercent} % USt)");Gelesen werden nur schemagültige Dokumente; andernfalls kommt eine EbInterfaceReadException mit allen Meldungen
in Validation. Alle Versionen landen im selben Modell. Noch nicht abgebildet sind Erweiterungen (Extension),
Signaturen, AdditionalInformation, Classification, Fremdwährungsangaben und PresentationDetails.
EbInvoice invoice = EbInterfaceReader.ReadFile("alt-4p3.xml");
EbInterfaceWriter.WriteFile(invoice, "neu-6p1.xml"); // schreibt immer ebInterface 6.1Geschrieben wird nur schemagültiges XML. Fehlen Pflichtangaben (WRT-01, mit Pfad) oder verletzt die Rechnung das
Schema, kommt eine EbInterfaceWriteException mit allen Meldungen, und es entsteht keine Datei. Lese- und
Schreibfehler haben die gemeinsame Basisklasse EbInterfaceException. Beim Upgrade aus 4.3 wird die Steuerkategorie ergänzt
(„S“ bei einem Steuersatz über 0, sonst „E“); Sonderfälle wie Reverse Charge („AE“) bitte vorher im Modell setzen.
Dreistellige Sprachcodes (ger) werden in zweistellige (de) übersetzt. Sonstige Abgaben auf Zeilenebene haben in 4.3
keinen eigenen Steuersatz; beim Upgrade gilt der Satz der Zeile. Die Zahlungsart DirectDebit gibt es in
6.1 nicht.
Das Zusatzpaket EbInterface.Net.Mcp stellt Prüfung, Lesen und Upgrade als lokalen MCP-Server bereit, z. B. für
Claude Code oder Claude Desktop: dotnet tool install -g EbInterface.Net.Mcp, dann
claude mcp add --scope user ebinterface -- ebinterface-mcp. Details und Hinweise zum Datenschutz stehen im
README des MCP-Pakets.
Die Bibliothek prüft vollständig lokal und baut keine Netzwerkverbindungen auf. Den endgültigen Nachweis liefert der Test-Upload von e-Rechnung.gv.at.
Die offiziellen Schemas und Beispielrechnungen stammen aus dem Repository austriapro/ebinterface-standards und sind als Git-Submodule eingebunden:
git clone --recurse-submodules https://github.com/haraldrohan/EbInterface.Net.git
dotnet test
Wer schon ohne Submodule geklont hat: git submodule update --init.
Fehlermeldungen und Hinweise sind willkommen – besonders, wenn e-Rechnung.gv.at eine Rechnung anders beurteilt als diese Bibliothek. Wie das geht, steht in CONTRIBUTING.md; Sicherheitslücken bitte vertraulich melden (siehe SECURITY.md).
Der Code steht unter der MIT-Lizenz. Die eingebetteten Schemas von AUSTRIAPRO sind davon ausgenommen – siehe THIRD-PARTY-NOTICES.md.