Versionen und Release Notes
Hier finden Sie die wichtigsten Änderungen der aktuellen und kommenden FactoorSharp-Versionen.
Version 20.0.0
AktuellVersion 20.0 ist ein Major-Release: Es macht Nachkommastellen konfigurierbar, ergänzt Seriennummern und Chargen je Position, gibt Rechnungen auf Deutsch, Englisch und Französisch aus und räumt die API auf. Einige Änderungen betreffen bestehenden Code – sie sind unten mit „Breaking Change“ gekennzeichnet und jeweils mit einem Umstiegsbeispiel versehen.
Die Neuerungen im Detail:
-
Steuersatz je Position ist jetzt optional (BT-152) Breaking Change KernDie Eigenschaft
TradeLineItem.TaxPercentist jetzt vom Typdecimal?. Fehlt der Satz in der Rechnung, liefert sienullstatt 0, und beim Schreiben entfällt das Element – für die Steuerkategorie O (nicht steuerbar) ist das vorgeschrieben. Beim Lesen genügt?? 0m, um das bisherige Verhalten zu erhalten. BeiAddTradeLineItem()isttaxPercentjetzt standardmäßignull: Positionen mit 0 % Steuer (etwa die Kategorien E, AE und Z) müssen den Satz ausdrücklich mit0mangeben.
// Steuersatz einer Position lesen: fehlt er in der Rechnung, ist TaxPercent jetzt null decimal taxPercent = tradeLineItem.TaxPercent ?? 0m; // Positionen mit 0 % Steuer: den Satz ausdrücklich angeben, er ist nicht mehr mit 0 vorbelegt invoice.AddTradeLineItem( name: "Beratung", netUnitPrice: 100m, unitCode: QuantityCodes.C62, billedQuantity: 1m, taxType: TaxTypes.VAT, categoryCode: TaxCategoryCodes.E, taxPercent: 0m); ' Steuersatz einer Position lesen: fehlt er in der Rechnung, ist TaxPercent jetzt null Dim taxPercent As Decimal = If(tradeLineItem.TaxPercent, 0D) ' Positionen mit 0 % Steuer: den Satz ausdrücklich angeben, er ist nicht mehr mit 0 vorbelegt invoice.AddTradeLineItem( name:="Beratung", netUnitPrice:=100D, unitCode:=QuantityCodes.C62, billedQuantity:=1D, taxType:=TaxTypes.VAT, categoryCode:=TaxCategoryCodes.E, taxPercent:=0D) -
Speichern als PDF liefert ein Ergebnis und erzeugt PDF/A-3B Breaking Change PDF
SaveToPdf()undSaveToPdfAsync()geben jetzt einPdfSaveResultzurück, das auflistet, was an der Eingabe-PDF repariert wurde oder offen blieb. Die erzeugte PDF erklärt sich als PDF/A-3B statt PDF/A-3A. Der Quelltext kompiliert unverändert; bereits übersetzte Anwendungen müssen jedoch neu kompiliert werden, weil sich die Signatur geändert hat. Alle Überladungen nehmen außerdem optionalInvoiceFormatOptionsentgegen, die auch auf das eingebettete XML wirken. Details finden Sie in der Dokumentation „Umgang mit PDF-Dateien“.
// SaveToPdfAsync() liefert jetzt ein PdfSaveResult PdfSaveResult result = await FacturXInvoicePdfProcessor.SaveToPdfAsync( "rechnung-zugferd.pdf", ZUGFeRDVersion.Version25, Profile.Comfort, ZUGFeRDFormats.CII, "rechnung.pdf", invoice); // Was an der Eingabe-PDF repariert wurde oder offen blieb foreach (PdfSourceIssue issue in result.Issues) { Console.WriteLine(issue); } ' SaveToPdfAsync() liefert jetzt ein PdfSaveResult Dim result As PdfSaveResult = Await FacturXInvoicePdfProcessor.SaveToPdfAsync( "rechnung-zugferd.pdf", ZUGFeRDVersion.Version25, Profile.Comfort, ZUGFeRDFormats.CII, "rechnung.pdf", invoice) ' Was an der Eingabe-PDF repariert wurde oder offen blieb For Each issue As PdfSourceIssue In result.Issues Console.WriteLine(issue) Next -
Veraltete Funktionen entfernt Breaking Change KernDie bisher mit
[Obsolete]markierten Funktionen sind entfernt. Das Beispiel zeigt jeweils den Ersatz; die Umstellung ist eine Umbenennung ohne Änderung der Ergebnisse. Ebenfalls entfernt sind die KlassenInvoiceValidatorundValidationResultdes Kernpakets – die Prüfung steht im PaketFactoorSharp.FacturX.Validatorzur Verfügung.
// AddTradeeCharge() (mit Tippfehler) -> AddTradeCharge() invoice.AddTradeCharge(null, CurrencyCodes.EUR, 25m, null, "Verpackung", TaxTypes.VAT, TaxCategoryCodes.S, 19m); // SetTaxTotalInAccountingCurrency() -> SetTaxCurrencyExchange() invoice.SetTaxCurrencyExchange(175.08m, CurrencyCodes.EUR, 0.9215m, new DateTime(2026, 9, 1)); // SellerElectronicAddress / BuyerElectronicAddress -> Seller.ElectronicAddress / Buyer.ElectronicAddress invoice.Seller.ElectronicAddress = new ElectronicAddress { Address = "rechnung@verkaeufer.de", ElectronicAddressSchemeID = ElectronicAddressSchemeIdentifiers.ElectronicMailSmtp }; // TradeLineItem.SetOrderReferencedDocument() -> SetBuyerOrderReferencedDocument() lineItem.SetBuyerOrderReferencedDocument("PO-2026-00417", new DateTime(2026, 2, 1), "10"); // InvoiceVisualizer.Render() / RenderToBytes() -> RenderPdf() byte[] pdf = InvoiceVisualizer.RenderPdf(invoice); // InvoiceValidator / FactoorSharp.FacturX.ValidationResult -> Paket FactoorSharp.FacturX.Validator ValidationResult result = FacturXValidator.Validate("invoice.pdf", extendedValidation: false); ' AddTradeeCharge() (mit Tippfehler) -> AddTradeCharge() invoice.AddTradeCharge(Nothing, CurrencyCodes.EUR, 25D, Nothing, "Verpackung", TaxTypes.VAT, TaxCategoryCodes.S, 19D) ' SetTaxTotalInAccountingCurrency() -> SetTaxCurrencyExchange() invoice.SetTaxCurrencyExchange(175.08D, CurrencyCodes.EUR, 0.9215D, New DateTime(2026, 9, 1)) ' SellerElectronicAddress / BuyerElectronicAddress -> Seller.ElectronicAddress / Buyer.ElectronicAddress invoice.Seller.ElectronicAddress = New ElectronicAddress With { .Address = "rechnung@verkaeufer.de", .ElectronicAddressSchemeID = ElectronicAddressSchemeIdentifiers.ElectronicMailSmtp } ' TradeLineItem.SetOrderReferencedDocument() -> SetBuyerOrderReferencedDocument() lineItem.SetBuyerOrderReferencedDocument("PO-2026-00417", New DateTime(2026, 2, 1), "10") ' InvoiceVisualizer.Render() / RenderToBytes() -> RenderPdf() Dim pdf As Byte() = InvoiceVisualizer.RenderPdf(invoice) ' InvoiceValidator / FactoorSharp.FacturX.ValidationResult -> Paket FactoorSharp.FacturX.Validator Dim result As ValidationResult = FacturXValidator.Validate("invoice.pdf", extendedValidation:=False) -
Nachkommastellen konfigurieren KernPreise, Mengen, Prozentsätze und Umrechnungskurse lassen sich jetzt mit mehr Nachkommastellen schreiben – für jeden Datentyp getrennt. Beträge bleiben bei zwei Stellen; nur für Positionsbeträge gibt es ein ausdrückliches Opt-in, das nicht EN-16931-konform ist. Ohne Optionen ändert sich an der Ausgabe nichts. Alle Details in der Dokumentation „Konfiguration“.
InvoiceFormatOptions options = InvoiceOptionsBuilder .Create() .SetUnitPricePrecision(6) // Preise: 1.1234567 -> 1.123457, 20 -> 20.00 .SetQuantityPrecision(6) // Mengen: 3.5 -> 3.5, 3 -> 3 .SetPercentPrecision(4) // Steuersätze, Zu-/Abschlags- und Skontoprozente .SetExchangeRatePrecision(6) // Umrechnungskurs der Steuerwährung .Build(); invoice.Save("factur-x.xml", ZUGFeRDVersion.Version25, Profile.Comfort, ZUGFeRDFormats.CII, options); Dim options As InvoiceFormatOptions = InvoiceOptionsBuilder _ .Create() _ .SetUnitPricePrecision(6) _ .SetQuantityPrecision(6) _ .SetPercentPrecision(4) _ .SetExchangeRatePrecision(6) _ .Build() invoice.Save("factur-x.xml", ZUGFeRDVersion.Version25, Profile.Comfort, ZUGFeRDFormats.CII, options) -
Seriennummern und Chargen je Position (BG-X-84) KernEinzelne gelieferte Geräte lassen sich mit Seriennummer (BT-X-307) und Chargennummer (BT-X-306) an der Rechnungsposition angeben, etwa eine Zeile je Maschine. Die Angaben bleiben beim Einlesen erhalten (Profil EXTENDED, ZUGFeRD 2.4 und 2.5). Siehe „Seriennummern und Chargen“.
// Einzelne gelieferte Geräte mit Seriennummer (BT-X-307) und Charge (BT-X-306), nur Profil EXTENDED item.AddIndividualTradeProductInstance(supplierAssignedSerialId: "KS40-2026-000117", batchId: "L2607-A"); item.AddIndividualTradeProductInstance(supplierAssignedSerialId: "KS40-2026-000118", batchId: "L2607-A"); ' Einzelne gelieferte Geräte mit Seriennummer (BT-X-307) und Charge (BT-X-306), nur Profil EXTENDED item.AddIndividualTradeProductInstance(supplierAssignedSerialId:="KS40-2026-000117", batchId:="L2607-A") item.AddIndividualTradeProductInstance(supplierAssignedSerialId:="KS40-2026-000118", batchId:="L2607-A") -
Eingabe-PDFs werden für PDF/A bereinigt PDFQuell-PDFs aus Berichtsgeneratoren bringen häufig PDF/A-Verstöße mit, die bisher unverändert übernommen wurden. FactoorSharp setzt jetzt fehlende Annotations-Flags (Regel 6.3.2), bettet fehlende Schriften ein und repariert die Kodierung symbolischer TrueType-Schriften, wie sie Barcode-Generatoren erzeugen (Regel 6.2.11.6). Jede Reparatur erscheint im
PdfSaveResult. -
Rechnungsdarstellung in Deutsch, Englisch und Französisch VisualisierungDie PDF- und die HTML-Ausgabe lassen sich über die
Cultureder Render-Optionen auf Deutsch, Englisch oder Französisch erzeugen. Beschriftungen, Dokumenttitel, Einheiten sowie Zahlen- und Datumsformate folgen der gewählten Sprache. Ohne Angabe bleibt die Ausgabe deutsch. Siehe „Bildliche Darstellung von Rechnungen“.
// Rechnung auf Englisch bzw. Französisch darstellen – Sprache, Zahlen- und Datumsformat folgen der Culture InvoiceVisualizer.RenderPdf(invoice, "invoice-en.pdf", options: new PdfRenderOptions { Culture = CultureInfo.GetCultureInfo("en-GB") }); string html = InvoiceVisualizer.RenderHtml(invoice, options: new HtmlRenderOptions { Culture = CultureInfo.GetCultureInfo("fr-FR") }); ' Rechnung auf Englisch bzw. Französisch darstellen – Sprache, Zahlen- und Datumsformat folgen der Culture InvoiceVisualizer.RenderPdf(invoice, "invoice-en.pdf", options:=New PdfRenderOptions With {.Culture = CultureInfo.GetCultureInfo("en-GB")}) Dim html As String = InvoiceVisualizer.RenderHtml(invoice, options:=New HtmlRenderOptions With {.Culture = CultureInfo.GetCultureInfo("fr-FR")}) -
Mehr Angaben in der Rechnungsdarstellung VisualisierungDie Darstellung zeigt jetzt die Versandanzeige (BT-16), die Käuferreferenz und die Freitexte der Position, weist Dokumentreferenzen (BT-17, BT-18, BT-122, BT-128) lesbar aus und wählt für jeden Rechnungstyp einen passenden Dokumenttitel. Preise, Mengen und Prozentsätze erscheinen mit allen signifikanten Nachkommastellen, damit die Darstellung nicht von der eingebetteten XML abweicht.
-
Prüfbericht in Ihrer Sprache ValidierungFür die erweiterte Validierung über den Online-Dienst lässt sich die Sprache des Prüfberichts festlegen: Deutsch, Englisch oder Französisch. Ohne Angabe bleibt es bei Deutsch; bei der rein lokalen Prüfung ist die Angabe ohne Wirkung. Fehlermeldungen des Dienstes werden zudem zuverlässiger in verständliche Ausnahmen übersetzt.
// Sprache des Prüfberichts festlegen: "de", "en" oder "fr" ValidationResult result = await FacturXValidator.ValidateAsync("invoice.pdf", language: "en"); ' Sprache des Prüfberichts festlegen: "de", "en" oder "fr" Dim result As ValidationResult = Await FacturXValidator.ValidateAsync("invoice.pdf", language:="en") -
Fehlende optionale Angaben bleiben leer KernOptionale Codes, die in einer Rechnung fehlen, wurden beim Einlesen bisher durch einen Standardwert ersetzt und beim erneuten Speichern mitgeschrieben – etwa die Kontoart (BT-X-290), die Steuerwährung (BT-6) oder Gründe von Zu- und Abschlägen. Sie bleiben jetzt leer (
null). Bitte beachten Sie: Code, der sich auf die früheren Standardwerte verließ, muss aufnullprüfen. -
Weitere Korrekturen KernDas Format 616 (Kalenderwoche, CCYYWW) lehnt Wochen ab, die das Jahr nicht enthält. Ergänzt wurde außerdem der Betreff-Code AAG für Anweisungen der Partei.
Version 19.1.1
Version 19.1.1 korrigiert mehrere Fehler beim Schreiben von ZUGFeRD-2.0-/2.5- und UBL-Rechnungen und erweitert die Validierung spanischer und italienischer Rechnungen.
Die Neuerungen im Detail:
-
Rechnungspositionsbetrag bei ZUGFeRD 2.5 korrekt berechnet (BT-131) KernWurde der Positionsbetrag nicht ausdrücklich gesetzt, schrieb ZUGFeRD 2.5 bislang 0 statt ihn wie 2.0, 2.4 und UBL aus Einzelpreis und Menge zu berechnen. War der Betrag ausdrücklich gesetzt, war die Rechnung immer korrekt.
-
Umsatzsteuer in Buchungswährung jetzt auch in UBL korrekt (BT-111, BT-6) KernDer Steuerbetrag in der Buchungswährung wurde in UBL bislang nie geschrieben und beim Einlesen nicht zuverlässig erkannt. Beides funktioniert jetzt korrekt, auch für XRechnung im UBL-Format.
-
Keine unzulässigen Befreiungsgründe mehr in der Steueraufschlüsselung (BT-120, BT-121) KernFür die Steuerkategorien Regelsatz, Nullsatz, IGIC und IPSI verbietet die EN 16931 einen Befreiungsgrund in der Steueraufschlüsselung. Bisher wurde das nur für den Nullsatz beachtet, in UBL gar nicht.
-
ZUGFeRD 2.0: elektronische Adresse und Positions-Befreiung nachgezogen (BT-34, BT-49, BT-X-96, BT-X-97) KernDie elektronische Adresse wurde in ZUGFeRD 2.0 bislang für keine beteiligte Partei geschrieben, der Befreiungsgrund auf Positionsebene fehlte ebenfalls. Beides wird jetzt geschrieben und gelesen, wie bei 2.4 und 2.5.
-
Spanien: rechnerische Prüfung und FACe-Modus für Facturae ValidierungDie lokale Validierung prüft Facturae-Rechnungen jetzt auf rechnerische Richtigkeit von Positions-, Sammel- und Rechnungssummen, die NIF-Prüfziffer und die Signaturpolitik. Mit der neuen Option
CheckFACeRequirementslassen sich zusätzlich die strengeren Annahmebedingungen des spanischen Behörden-Empfangspunkts FACe prüfen.
// Facturae-Rechnung zusätzlich gegen die Annahmebedingungen von FACe prüfen // (dem Empfangspunkt für Rechnungen an spanische Behörden) ValidationResult result = await Validator.ValidateAsync("rechnung.xsig", new ValidationOptions { CheckFACeRequirements = true }); ' Facturae-Rechnung zusätzlich gegen die Annahmebedingungen von FACe prüfen ' (dem Empfangspunkt für Rechnungen an spanische Behörden) Dim result As ValidationResult = Await Validator.ValidateAsync("rechnung.xsig", New ValidationOptions With { .CheckFACeRequirements = True }) -
Italien: FatturaPA-Schema aktualisiert ValidierungDas Schema für die „fattura ordinaria" wurde auf Version 1.2.3 aktualisiert; die vereinfachte Rechnung „fattura semplificata" wird jetzt ebenfalls validiert.
-
Absturz nach QuestPDF-Update behoben VisualisierungNach einer QuestPDF-Aktualisierung konnten veraltete native Bibliotheken im Build-Verzeichnis zu einem Absturz beim Rendern führen. Sie werden jetzt automatisch entfernt.
Version 19.1.0
Version 19.1.0 stellt Rechnungen jetzt auch als HTML dar, unterstützt Vorauszahlungen und Umsatzsteuer in Fremdwährung, liest Texte aus PDFs samt Position aus und erkennt das Rechnungsformat noch zuverlässiger.
Die Neuerungen im Detail:
-
Rechnungen als HTML anzeigen VisualisierungRechnungen lassen sich jetzt nicht nur als PDF, sondern auch als HTML darstellen – als eigenständige Seite oder als Baustein, der sich direkt in Ihre Web- oder Desktop-Anwendung einbetten lässt. Zusätzlich erscheinen Lieferschein, Bestellreferenz und Produktmerkmale in der Ansicht.
// Rechnung als eigenständige HTML-Seite string html = InvoiceVisualizer.RenderHtml(invoice); // Oder als Baustein zum Einbetten in eine bestehende Seite string fragment = InvoiceVisualizer.RenderHtml(invoice, options: new HtmlRenderOptions { Standalone = false }); // Die PDF-Ausgabe heißt jetzt RenderPdf() InvoiceVisualizer.RenderPdf(invoice, "invoice.pdf"); ' Rechnung als eigenständige HTML-Seite Dim html As String = InvoiceVisualizer.RenderHtml(invoice) ' Oder als Baustein zum Einbetten in eine bestehende Seite Dim fragment As String = InvoiceVisualizer.RenderHtml(invoice, options:=New HtmlRenderOptions With {.Standalone = False}) ' Die PDF-Ausgabe heißt jetzt RenderPdf() InvoiceVisualizer.RenderPdf(invoice, "invoice.pdf") -
Vorauszahlungen im Detail ausweisen (BG-X-45) KernBereits erhaltene Anzahlungen können im Profil EXTENDED einzeln aufgeführt werden – mit Betrag, Zahlungsdatum, enthaltener Umsatzsteuer und Verweis auf die zugehörige Anzahlungsrechnung.
// Anzahlung mit enthaltener Umsatzsteuer und Verweis auf die Anzahlungsrechnung invoice.AddAdvancePayment(2975m, new DateTime(2026, 6, 7)) .SetInvoiceReferencedDocument("AR-2026-0601", new DateTime(2026, 6, 1), InvoiceType.PartialInvoice) .AddIncludedTradeTax(475m, 19m, TaxTypes.VAT, TaxCategoryCodes.S); ' Anzahlung mit enthaltener Umsatzsteuer und Verweis auf die Anzahlungsrechnung invoice.AddAdvancePayment(2975D, New DateTime(2026, 6, 7)) _ .SetInvoiceReferencedDocument("AR-2026-0601", New DateTime(2026, 6, 1), InvoiceType.PartialInvoice) _ .AddIncludedTradeTax(475D, 19D, TaxTypes.VAT, TaxCategoryCodes.S) -
Umsatzsteuer in Fremdwährung mit Wechselkurs (BG-X-41) KernBei Rechnungen in Fremdwährung geben Sie Buchungswährung (BT-6), Umsatzsteuerbetrag in dieser Währung (BT-111) und Wechselkurs jetzt in einem Schritt an – so, wie es die EN 16931 erwartet.
// Rechnung in USD, Umsatzsteuer zusätzlich in Euro ausweisen invoice.SetTaxCurrencyExchange(taxTotalInAccountingCurrency: 175.08m, accountingCurrency: CurrencyCodes.EUR, conversionRate: 0.9215m, conversionRateTimestamp: new DateTime(2026, 9, 1)); ' Rechnung in USD, Umsatzsteuer zusätzlich in Euro ausweisen invoice.SetTaxCurrencyExchange(taxTotalInAccountingCurrency:=175.08D, accountingCurrency:=CurrencyCodes.EUR, conversionRate:=0.9215D, conversionRateTimestamp:=New DateTime(2026, 9, 1)) -
Elektronische Adresse für alle Beteiligten (BT-34, BT-49, BT-X-160) KernNicht nur Verkäufer und Käufer, sondern auch Lieferempfänger und weitere Beteiligte können jetzt eine elektronische Adresse, etwa eine E-Mail-Adresse, erhalten. Die Angaben bleiben beim Einlesen vollständig erhalten.
// Elektronische Adresse des Lieferempfängers invoice.ShipTo.ElectronicAddress = new ElectronicAddress { Address = "wareneingang@kunde.de", ElectronicAddressSchemeID = ElectronicAddressSchemeIdentifiers.ElectronicMailSmtp }; ' Elektronische Adresse des Lieferempfängers invoice.ShipTo.ElectronicAddress = New ElectronicAddress With { .Address = "wareneingang@kunde.de", .ElectronicAddressSchemeID = ElectronicAddressSchemeIdentifiers.ElectronicMailSmtp } -
Texte aus PDFs samt Position auslesen PDFAus dem sichtbaren Inhalt einer PDF lassen sich jetzt Textbausteine mit Seite, Position und Schriftgröße auslesen, etwa um einen Wert aus einer bestimmten Tabellenspalte zu übernehmen. Die normale Textextraktion gibt das Seitenlayout außerdem deutlich originalgetreuer wieder.
foreach (PdfTextFragment fragment in PdfUtils.ExtractTextFragments("invoice.pdf")) { // Seite, Position in Punkt und Text Console.WriteLine($"Seite {fragment.PageNumber}, x={fragment.X:0}, y={fragment.Y:0}: {fragment.Text}"); } For Each fragment As PdfTextFragment In PdfUtils.ExtractTextFragments("invoice.pdf") ' Seite, Position in Punkt und Text Console.WriteLine($"Seite {fragment.PageNumber}, x={fragment.X:0}, y={fragment.Y:0}: {fragment.Text}") Next -
Mehr Angaben zu Rechnungspositionen (BT-158-1, BT-X-98) KernArtikel können jetzt nach allen Klassifizierungssystemen der EN 16931 gekennzeichnet werden, zum Beispiel UNSPSC oder eCl@ss. Im Profil EXTENDED lässt sich zusätzlich die Summe der Zu- und Abschläge je Position angeben.
// Artikel nach UNSPSC klassifizieren item.AddDesignatedProductClassification(DesignatedProductClassificationClassCodes.TST, classCode: "43211503"); // Summe der Zu- und Abschläge dieser Position (nur EXTENDED) item.TotalAllowanceChargeAmount = 12.50m; ' Artikel nach UNSPSC klassifizieren item.AddDesignatedProductClassification(DesignatedProductClassificationClassCodes.TST, classCode:="43211503") ' Summe der Zu- und Abschläge dieser Position (nur EXTENDED) item.TotalAllowanceChargeAmount = 12.5D -
Zuverlässigere Erkennung des Rechnungsformats KernOb eine Datei eine ZUGFeRD-/Factur-X- oder eine UBL-Rechnung ist, wird jetzt eindeutig am Aufbau des Dokuments erkannt. Dadurch lassen sich auch Rechnungen von Absendern einlesen, die keine oder eine noch unbekannte Profilkennung (BT-24) angeben.
-
Aktuelle XRechnung-Prüfregeln 2.6.0 ValidierungDie lokale Prüfung nutzt jetzt die aktuellen KoSIT-Prüfregeln 2.6.0 für XRechnung 3.0.2. Bitte beachten Sie: Ein Verstoß gegen die Regel BR-TMP-2 gilt damit als Fehler statt als Warnung. Außerdem werden Rechnungen geprüft, deren XML unkomprimiert in die PDF eingebettet ist, und nicht lesbare Anhänge erscheinen als verständlicher Prüfbefund.
-
Gründlichere Prüfung von Beträgen und Summen ValidierungDie eingebaute Rechnungsprüfung kontrolliert Positionsbeträge, Zu- und Abschläge, Steuerbeträge und den Zahlbetrag jetzt deutlich genauer nach den Regeln der EN 16931 – inklusive Vorauszahlungen, Rundungsbeträgen und Preisbasismengen (BT-149).
-
Fehlerkorrekturen für gültige Rechnungen KernMehrere Fehler, die zu ungültigen oder unvollständigen Rechnungen führen konnten, sind behoben: Bei nullbesteuerten Umsätzen (Kategorie Z) wird kein Befreiungsgrund mehr geschrieben (BR-Z-10), MINIMUM-Rechnungen enthalten keine unzulässige elektronische Adresse mehr, leere IBAN-Angaben entfallen, UBL-Preise behalten alle Nachkommastellen und die Referenz auf den Wareneingangsbeleg (BT-15) wird in UBL korrekt gelesen und geschrieben.
Version 19.0
Version 19.0 führt eine kostenlose, lokale Rechnungsprüfung ein, verbessert die Verarbeitung von XRechnung-Preisangaben und PDF-Anhängen und härtet FactoorSharp gegen präparierte Dokumente ab.
Schwerpunkte
Version 18.5
Version 18.5 führt die Unterstützung von Rechnungszeiträumen ein, verbessert die Verarbeitung von Zahlungsbedingungen und behebt mehrere Fehler rund um ZUGFeRD 2.0 und 2.5.
Schwerpunkte
Version 18.4
Version 18.4 führt eine neue Visualisierungskomponente ein und korrigiert einige Fehler in der Arbeit mit ZUGFeRD 2.5.
Schwerpunkte
Version 18.3
Version 18.3 unterstützt ZUGFeRD 2.5 und erweitert die Validierung um italienische und spanische Rechnungen.
Schwerpunkte
Version 18.2
Version 18.2 baut die PDF-Verarbeitung weiter aus und verbessert das Quota-Management für die Validierung.
Schwerpunkte
Version 18.1
Version 18.1 baut FactoorSharp im Bereich PDF-Verarbeitung weiter aus und erweitert die Signierungsunterstützung auf alle .NET-Zielplattformen.
Schwerpunkte
Version 18.0
Version 18.0 ist die erste veröffentlichte FactoorSharp-Version. Sie bildet die stabile Grundlage für die Arbeit mit ZUGFeRD, Factur-X und XRechnung in modernen .NET-Anwendungen.