Skip to content

About

Unabhängige .NET-Bibliothek für ebInterface (4.3–6.1): lesen, schreiben und prüfen inkl. der Regeln von e-Rechnung.gv.at

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

EbInterface.Net

CI Lizenz: MIT

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.

Status

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 ✅ ✅ ✅ – –

Installation

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.

Verwendung

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.

Rechnung lesen

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.

Rechnung schreiben und auf 6.1 aktualisieren

EbInvoice invoice = EbInterfaceReader.ReadFile("alt-4p3.xml");
EbInterfaceWriter.WriteFile(invoice, "neu-6p1.xml");   // schreibt immer ebInterface 6.1

Geschrieben 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.

Aus Claude heraus (MCP-Server)

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.

Entwicklung

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.

Mitwirken

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).

Lizenz

Der Code steht unter der MIT-Lizenz. Die eingebetteten Schemas von AUSTRIAPRO sind davon ausgenommen – siehe THIRD-PARTY-NOTICES.md.

About

Unabhängige .NET-Bibliothek für ebInterface (4.3–6.1): lesen, schreiben und prüfen inkl. der Regeln von e-Rechnung.gv.at

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages