Skip to main content

RechnungsWerk - Releases

← App details

Nextcloud 34

RechnungsWerk 0.5.2
Release Details
UpdatedAug. 27, 2026, 12:40 p.m.
Changelog

Zwei Verbesserungen aus Anwender-Feedback: der saubere Einstieg in eine bereits laufende Rechnungsnummern-Folge und ein leichter auffindbarer Weg, hinterlegte Produkte in eine Rechnung zu übernehmen.

Added

  • Die nächste Rechnungsnummer lässt sich setzen. In den Einstellungen kann der Startwert der laufenden Nummer vorgegeben werden, um an eine bestehende Nummernfolge anzuknüpfen (z. B. bei „RE-2026-0143" einsteigen). Nummern lassen sich nur vorwärts setzen, nie unter eine bereits vergebene — die gesetzliche Einmaligkeit nach §14 UStG bleibt gewahrt (#270)

Changed

  • Produkte lassen sich bei der Rechnungserstellung direkt suchen und einfügen. An die Stelle des unauffälligen „Aus Produkt"-Menüs tritt ein Suchfeld „Produkt suchen und einfügen …" in der Positions-Leiste: Tippen schlägt passende Produkte mit Preis und Einheit vor, die Auswahl fügt die Position ein. Frei getippte Positionen bleiben unverändert möglich (#273)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignaturejGh8TYPrOPy5WO3V5b6CX5tbqBO1rIOdSHPCG+5m2gmZu9J9gAbEUkckUBoYR956iYNOopuyZ4WvkfMwnkhmkLDJGDrd439NnB80xP7GWpG0Tx2LpVSEvGbIldp0YqryG3TWBeIuCwrAN7HKarAPImi8YPN0H1qFAB4zK/BKpvKiDGjXN211AQWFD7T5d9gLw7p1GADAdxD0xHUS51fZGGxpmBEau4EgeoBaLIrKnv7udUcYljpgpVrJjSUabx2onsPdB3BZz5TmgYJ+YVRxZQdkdyvBvLFj3xHujD9MQgAPJZVpktixXx2041PuD0Z/q+nQ7NPPxcIRyeBAeIHi1A==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.5.1
Release Details
UpdatedAug. 26, 2026, 9:04 a.m.
Changelog

Drei Verbesserungen aus der praktischen Nutzung: ein häufig gewünschter kleiner Komfort beim Bezahlt-Markieren, ein Anzeigefehler bei der DATEV-Spalte und — am wichtigsten — eine Speicher-Falle in den Einstellungen, die beim Einrichten wie Datenverlust wirken konnte.

Added

  • Das Zahldatum lässt sich nachträglich anpassen. Der Klick auf die Bezahlt-Checkbox setzt weiterhin sofort das heutige Datum. Neu: Die Anzeige „bezahlt am {Datum}" in der Rechnungsliste ist jetzt anklickbar und öffnet ein kleines Datumsfeld, vorbelegt mit dem gesetzten Datum — so lässt sich eine Zahlung, die an einem anderen Tag einging, ohne Umweg korrigieren (#257)

Fixed

  • Die DATEV-Spalte erscheint jetzt sofort beim Öffnen der Rechnungsliste. Bisher war sie an die asynchron nachgeladenen Einstellungen gebunden und fehlte beim Kaltstart, bis dieser Fetch durch war. Jetzt hängt die Anzeige an den mit der Liste gelieferten DATEV-Status, sodass die Icons zeitgleich mit den Rechnungen erscheinen (#237)
  • Speicherfehler in den Einstellungen sind nicht mehr unsichtbar. Der Server lehnt beim Speichern die gesamte Anfrage ab, wenn ein einziges Feld ungültig ist (z. B. eine unvollständige E-Mail-Adresse). Die Fehlermeldung stand oben, der Speichern-Button unten — wer unten klickte, sah nichts und hielt das Speichern für erfolgt. Jetzt scrollt jede Fehlermeldung in den sichtbaren Bereich, und die drei E-Mail-Felder werden schon vor dem Absenden geprüft und namentlich benannt (#265)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureIMysmv7wUbyl/PYiLs+mWYhMZB44jjzTfGNUDvqMAcFg8kYKa09j3FVhSZz/LUmA/g2mUFgDj0SqMcvnoszwH9hGX0aRJ/CdPGN27+SDuWb37gIJbVFeRkv1RsWW3h8wFftMqtzGlItXYYhvsxkh3DTEVW9SC5V+brxf3yfZJQYeTv6rmHTRrRWjXxgt7bU0FnEhcxF89epf6pFDezdDfyiqwcJFJMwgA4LlRyl2mHABqXpQ4UpUWZ/Z1rLvJVA+1YXBCjaowNE9Fv2zBQZjnDNtUZjObG/gGnsWn+j1/O5BGCoFOPsV25hV+z1jfL8b91zRWAozNwux/N2cZBlOXQ==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.5.0
Release Details
UpdatedAug. 14, 2026, 12:20 p.m.
Changelog

Ein Release für alle, die die App auf Englisch bedienen: Fehlermeldungen kamen bisher auf Deutsch zurück, und fünf Texte blieben trotz vorhandener Übersetzung deutsch. Dazu zwei Anzeigefehler, die von außen gemeldet wurden, und eine Integritätsmeldung, die seit der ersten PDF-Erzeugung auftrat.

Added

  • Fehlermeldungen aus dem Backend sind übersetzbar. IL10N wurde bisher an genau einer Stelle benutzt, die übrigen 48 benutzersichtbaren Meldungen waren hart deutsch. Die Zahlenprüfung (NumberInput) wirft dafür jetzt prosafrei: die Ausnahme trägt nur den Sachverhalt, den Satz formuliert eine eigene Klasse mit IL10N. Damit bleibt die Klasse statisch und deckungsgleich mit ihrem Frontend-Zwilling (#235)

Fixed

  • Das freie Einheitenfeld war neben der Einheitenauswahl nur noch als Strich zu sehen. Beide Elemente stehen mit voller Zellenbreite in einer Zelle, die nicht umbrechen kann — welches von beiden zusammenfällt, entschied der Browser. Das freie Feld sitzt jetzt in der zweiten Zeile neben der Beschreibung, wo der Platz ohnehin vorhanden ist; Spaltenbreiten und Zeilenhöhe bleiben unverändert. In der schreibgeschützten Ansicht erscheinen beide Felder nur noch, wenn sie einen Wert tragen. Gemeldet von @myssv (#238)
  • Die Integritätsprüfung meldete nach jeder PDF-Erzeugung zwei zusätzliche Dateien. dompdf legte seinen Font-Cache innerhalb des eigenen Pakets ab, also in einem signierten Verzeichnis. Der Cache liegt jetzt unter dem Nextcloud-Temp-Pfad; ist der gemeinsame Ordner nicht benutzbar, wird auf einen Ordner je Aufruf ausgewichen statt zurück in die Auslieferung (#241)
  • Fünf Texte erschienen in der englischen Oberfläche auf Deutsch, obwohl die Übersetzung vorhanden war: vor den Auslassungspunkten steht im Quellcode ein geschütztes Leerzeichen, in den Übersetzungsdateien ein normales. Beim Draufschauen sind beide Zeichenketten identisch, deshalb prüft das jetzt eine Maschine. Acht fehlende DATEV-Texte ergänzt, fünfzehn Altlasten entfernt (#234)
  • Ordner- und Logoauswahl in den Einstellungen liefen über OC.dialogs, das seit Nextcloud 30 veraltet ist und beim Klicken gebrochen wäre, nicht beim Bauen. Ersetzt durch den FilePicker aus @nextcloud/dialogs; ein Abbruch erzeugt keine Fehlermeldung mehr (#221)

Changed

  • Das JavaScript-Bundle wird als ES-Modul ausgeliefert statt als iife. Der FilePicker lädt seine Komponente per dynamischem Import, was Code-Splitting erzwingt — das iife-Format kann das nicht. Das alte Bundle wird beim Update entfernt (#221)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureM+2YdsR2Knq7wTHEjM3DBFiP+EB7ANJVAYlAN40R0gm/xh9gG9W9ugFL79xejoTiB+HRhCEQwWU/YSjOI8BnDdFvzqxlDcpCrlrU/bu3roGuG4fPDbdOGkWnnAOpRI7Y5fzh6Xqjs7uRPqbI9ETvThZIeX1nZAT54oVOB1wZjuV2jtMLoKjquwjCCVWuaKC0ifZ3x+g4Zb/vS0L2EvRg7Dl1XVS3RRnkSCrC5nnDS6UGDDCZs17jXJcnJPCs2YDt375pa6IMNTM2lCL775gBnkB8mqgH6Yzj1TYtlAtjsARI3yPhlW2lFT4Je/apOfZFB3tP/RyzHv3LXrJclr9EAQ==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.4.1
Release Details
UpdatedAug. 11, 2026, 1:04 p.m.
Changelog

Mengen und Preise blieben beim Speichern nicht zuverlässig stehen. Gemeldet von @yummiweb (#223), und beim Prüfen kam ein zweiter Fall derselben Ursache heraus, der Beträge schon beim ersten Speichern verfälschte.

Fixed

  • Mengen und Preise bleiben über Speichern und Wiederöffnen unverändert. Die Menge steht mit drei Nachkommastellen in der Datenbank, wird also als „1.000" geliefert, wobei der Punkt ein Dezimaltrennzeichen ist. Dieser Wert lief unverändert ins Eingabefeld, wo er seit 0.3.1 regelkonform als deutsche Tausendertrennung gelesen wurde: aus der Menge 1 wurde beim nächsten Speichern 1000, aus 10,00 € Zeilensumme 10.000,00 €. Gespeicherte Werte werden jetzt in die Schreibweise des Feldes gewandelt, statt ungewandelt hineinzulaufen. Nebenbei verschwindet damit die alte Anzeige-Merkwürdigkeit, dass die Menge 1 als „1.000" dastand (#223)
  • Preise mit drei Nachkommastellen wurden beim ersten Speichern um den Faktor 1000 verfälscht. Das Preisfeld war ein Zahlenfeld des Browsers und lieferte deshalb immer Maschinenformat mit Punkt: 1,234 € kam als „1.234" an und wurde serverseitig deutsch als 1.234,00 € gelesen. Preis und Menge sind jetzt beide Textfelder in deutscher Schreibweise und werden von derselben Regel ausgewertet. Wer die Regelung mit vier Nachkommastellen nutzt, sollte seine Standardpreise und offenen Entwürfe prüfen (#223)
  • Die Beschriftung des aktiven Filters über der Rechnungs- und Angebotsliste war praktisch unsichtbar: heller Text auf hellem Grund, gemessener Kontrast 1,00. Ursache war die Nextcloud-Variable --color-primary-element-text-dark, die nicht „dunkler Text" bedeutet, sondern „Text für das dunkle Primärelement", und auf Nextcloud 34 zu fast Weiß auflöst. Jetzt 13,63 (#217)

Changed

  • Zahleneingaben werden nur noch in deutscher Schreibweise gelesen: das Komma trennt die Nachkommastellen, der Punkt die Tausender. Englische und gemischte Schreibweisen wie „12.5" oder „1,234.5" werden jetzt mit einer erklärenden Meldung abgelehnt, statt anhand des letzten Trennzeichens gedeutet zu werden. Diese Deutung war die Ursache des Fehlers oben, denn sie lässt „1.234" zwischen 1234 und 1,234 offen. Im Preisfeld sind dadurch die Pfeiltasten des Browsers entfallen; ein negativer Preis wird weiterhin abgelehnt (#223)
  • Der Entwicklungs-Build verlangt jetzt Node ^22.14 || ^24 || >=26. Das betrifft nur, wer die App selbst baut; für den Betrieb ändert sich nichts. Nachtrag zu 0.4.0, wo die Anforderung mit angehoben wurde, ohne hier zu stehen
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureXjjN6OT1TGj43VVjBE499YLk0zjaHoIVVgzfalJ5OqRQeMf+sg8eSbV11ThHvtYUO9tJuYk1uWHFM835CQT+a3Gnsj9n77K1HjoEomDIIgT/2iAoBmeikAmMJjDu4Y/8nTqC4EHThr3WhIYjW0KPglFJyFfxVrbTcckt5AA0DZG1UHbbOErTHoW2jgeD/sLI3Xtt/sR3TjRw+o3iHiy8FFtsYvQnOB42Jx6G2U1D9o7eEp7xxOQdF6jNcZ5KsNev9nOIt8vOlfoV3GSNiEvbvl4LkoUPP0YjWZfSayKzfzy75LJtvh9AzVFPPC1k1g6PGJSvMoqazIWQQdEglwVRHA==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.4.0
Release Details
UpdatedAug. 8, 2026, 4:18 p.m.
Changelog

Festgeschriebene Rechnungen sind jetzt wirklich unveränderlich. Bisher entstand jedes PDF bei jedem Zugriff neu, aus den zu diesem Zeitpunkt gültigen Einstellungen. Eine bereits ausgestellte E-Rechnung konnte sich dadurch nachträglich ändern und ungültig werden.

Changed

  • Der Beleg einer festgeschriebenen Rechnung wird beim Festschreiben abgelegt und ab dann ausgeliefert, statt bei jedem Zugriff neu zu entstehen. Damit bekommen Download, Kundenversand, DATEV-Übergabe und die Ablage in Nextcloud Files garantiert dieselbe Datei; vorher konnten zu einer Rechnung drei verschiedene Dokumente existieren. Der Beleg ist nur einmal beschreibbar, seine Prüfsumme steht am Datensatz, und der Dateiname ist mit eingefroren. Die Ablage liegt im app-eigenen Speicher und damit in jeder Instanz-Sicherung, nicht im Dateibaum des Nutzers, wo sie versehentlich zu ändern wäre (#181)
  • Der Kleinunternehmer-Fall steht jetzt an der Rechnung statt in den Einstellungen. Ein Wechsel zwischen Kleinunternehmerregelung und Regelbesteuerung ist ein völlig normaler, einmaliger Vorgang. Er machte vorher aus jeder älteren 19-%-Rechnung rückwirkend eine steuerfreie: das eingebettete XML wies CategoryCode E und 0,00 % aus, bei weiterhin ausgewiesenen 19,00 € Steuer. Ein solches Dokument widerspricht sich selbst und verletzt EN 16931 (#181)
  • Bestandsrechnungen werden im Hintergrund nachgezogen, in Häppchen und ohne Wartungsmodus. Nachträglich erzeugte Belege sind als solche gekennzeichnet und im Rechnungseditor ausgewiesen: sie stimmen inhaltlich, entsprechen im Aussehen aber dem heutigen Stand und nicht dem, was der Kunde damals bekommen hat. Für Bestandsrechnungen ist das Original-Aussehen nicht wiederherstellbar (#181)

Fixed

  • Einzelpreise werden serverseitig aus der Eingabe berechnet und geprüft. Bisher rechnete allein der Browser und schickte die fertige Zahl. Dem Server war nicht anzusehen, ob 95 als 0,0095 € oder als 95 € gemeint war. Betrifft Rechnungspositionen und den Standardpreis im Produktkatalog (#180)
  • Ein Storno übernimmt den Steuerfall der Original-Rechnung statt der aktuellen Einstellungen. Sonst hätte die Gutschrift zu einer 19-%-Rechnung nach einem Wechsel der Besteuerungsform 0 % ausgewiesen (#181)

Abhängigkeiten und Infrastruktur

  • phpmailer auf 7.1.1 angehoben. Der Mailversand wurde damit real geprüft, der Anhang bleibt der eingefrorene Beleg
  • Frontend-Werkzeuge und Bibliotheken aktualisiert: vite 8, @nextcloud/l10n 3, vue-router 5, pinia 4, @nextcloud/vue 9.9. Der Sprung auf vue-router 5 war ohne pinia 4 nicht möglich und beseitigt zugleich eine doppelte Router-Version im Abhängigkeitsbaum
  • GitHub-Actions auf checkout 7, setup-node 7 und github-script 9
  • Dependabot zielt jetzt auf develop und gruppiert Minor- und Patch-Updates
  • Der Workflow, der Issues beim Merge nach develop schließt, wertet Code in PR-Texten nicht mehr als Anweisung
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
Signaturekg15ifuNkkeQMOsP5v3QthE3KZvAghdIGVoEUZ0WySHi9mshrzqNhdoAtHfS00ZCQlmKuN/VXvX/CjQP2OWwvMYQB91s4ts3theFM6fE7UNwnc4RfF8GSO9XJNofCvnjKoGBMgeFkJr3VyvtCGYKvWXxqoxcsDgit7r71AAXMlKGxFfXuZO8+czcs0nwKBpMKuY4hvKoB/ls7ZpxLafSHUmBUjjLmMq3cEEuVgMCr0UYPID1DxETu2PupVFQ61gh8FMzo8jG3Bc0BEswToJHZJi+XRpNMOlesg/tovaT2WZOXXBagyxXb69e4YHMFavgu0nSIeBySKac0hKLumO3Tg==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.3.1
Release Details
UpdatedAug. 7, 2026, 9:12 p.m.
Changelog

Fehlerbehebungen aus Rückmeldungen von Nutzern. Zwei der Fehler erzeugten stillschweigend falsche Werte auf Rechnungen, die an Kunden gehen.

Fixed

  • Kontakte aus dem Nextcloud-Adressbuch lassen sich wieder übernehmen. Das vCard-Feld für das Land enthält laut Standard einen frei geschriebenen Namen, iOS und Outlook tragen dort „Deutschland" oder „Germany" ein. Der Wert lief ungeprüft in eine Spalte für den zweistelligen Ländercode, wodurch das Speichern des Entwurfs mit einem Fehler 500 abbrach und keine Vorschau mehr erzeugt werden konnte. Ländernamen werden jetzt in beiden Sprachen erkannt und umgesetzt, inklusive Schreibvarianten wie „Oesterreich" (#167)
  • Mengen und Einzelpreise in deutscher Schreibweise werden korrekt gelesen. Bisher brach eine achtstellige Menge wie 99.999.999 mit einem Fehler 500 ab, und eine Eingabe von 1.000 wurde ohne jeden Hinweis als 1 gespeichert, was die Rechnung um den Faktor 1000 verfälschte. Dasselbe traf den Einzelpreis, dort ohne Fehlermeldung als Warnsignal. Nicht lesbare Eingaben werden jetzt mit einer verständlichen Meldung abgelehnt statt geraten (#157)
  • Die Spaltenbreiten der Positionstabelle passen wieder zum Inhalt. Seit 0.3.0 waren alle Spalten gleich breit, wodurch die Bezeichnung viel zu früh umbrach, während die USt-Spalte Platz verschwendete (#157)
  • Die Kopfzeile der Positionstabelle bleibt bei jeder Akzentfarbe lesbar. Die Schrift war fest weiß und verschwand auf hellen Firmenfarben; sie wechselt jetzt auf Schwarz, wenn Weiß nicht mehr trägt. Die gewählte Farbe selbst bleibt unverändert (#171)
  • Das Auswahlfeld für die Akzentfarbe öffnet nicht mehr den Farbdialog des Betriebssystems, der sich unter macOS nicht wieder schließen ließ (#171)
  • Das ausgelieferte JavaScript enthält keinen Entwicklungscode mehr. Das Bundle ist dadurch rund 100 KB kleiner und die Konsole bleibt frei von Hydrations- und Prop-Warnungen (#168)

Added

  • Ein Musterstreifen in den Einstellungen zeigt beim Wählen der Akzentfarbe, wie die Kopfzeile der Positionstabelle auf der Rechnung aussehen wird, inklusive der daraus folgenden Schriftfarbe (#171)
  • Die Spalte für die Bezeichnung heißt im PDF jetzt wie im Editor „Bezeichnung" statt „Beschreibung" (#157)

Security

  • dompdf auf 3.1.6 angehoben. Die Version schließt laut Release Notes gemeldete Sicherheitslücken; dompdf erzeugt das Rechnungs-PDF

Changed

  • Weitere Abhängigkeiten aktualisiert: dompurify, fast-xml-parser, immutable, postcss, fast-uri, brace-expansion, js-yaml
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureMfyGkAWLpC5IS7BOHlL1YVoOTLrh/IBR5gkLSv7hFwhB+0tQnp6uATLUlDD46Bf2dolSg5oeyL88GDPp/jOp9XIqn16w8PVMkhEVhjPZyo7K0GxFJNf1G8uhs/346/zOtyM3KQBFFt28JUns1p17OR2TyihOOa7cS9rP+A1ghML3L/DURiepOK8zNam0tPTvc3bJU6YShsSaOStdp6VEwcPR/dQqGuLggyzT5sXV3nWDOYGpHyPubgPgUmKQ5TvvdeD6lxQhhPQTX9WJNps1Qpi1xJRs8x78DUAKU5xg1gcNlLuWB9XCZUji9X1s5yiw6HBLcI3A++iNR4Rqkl1XSw==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.3.0
Release Details
UpdatedJuly 23, 2026, 12:36 p.m.
Changelog

Added

  • Textbausteine: eine verwaltete Bibliothek wiederverwendbarer Anrede-/ Einleitungs- und Schlusstexte, getrennt für Rechnungen und Angebote. Je Dokumenttyp und Textbereich gibt es genau einen Standard-Baustein, der neue Dokumente vorbefüllt; weitere Bausteine lassen sich im Editor per Klick einfügen. Neuer Menüpunkt „Textbausteine" (#126, #141)
  • Kleinunternehmer-Hinweis (§ 19 UStG): der Hinweistext auf der Rechnung ist jetzt frei konfigurierbar (#141)
  • Datums-Variablen {MM} (Monat) und {DD} (Tag) für die Rechnungs- und Angebotsnummer, zusätzlich zu {YYYY}/{YY}/{####} (#143)
  • Weitere Einheiten zur Auswahl: kWh, Liter, Meter, Kilometer, m², Gramm, Tonne (gültige UN/ECE-Codes, E-Rechnung bleibt valide) (#146)
  • Einzelpreise mit bis zu 4 Nachkommastellen (z. B. Energie 0,3456 €/kWh); die Rundung auf ganze Cent erfolgt einmal beim Zeilenbetrag, Summen bleiben zweistellig (#147)
  • Freitext-Einheiten: frei benannte Einheiten (z. B. „Personen", „Sitzung") für Editor und PDF; die eingebettete E-Rechnung nutzt weiterhin einen gültigen generischen Einheitencode (#153)

Changed

  • Kleinunternehmer (§ 19 UStG): Rechnungen und Angebote zeigen keine „0 %"-USt- Spalte und keine „Steuerfrei 0,00 €"-Zeile mehr; da netto = brutto erscheint nur der Gesamtbetrag mit dem § 19-Hinweis. Die eingebettete XML bleibt unverändert korrekt (Kategorie „E") (#144)
  • Bei einem Angebot ist der Leistungszeitraum nicht mehr als § 14-UStG- Pflichtangabe ausgewiesen, sondern als optionaler „Geplanter Leistungszeitraum"
  • Einheitliche Bedienung der Verwaltungslisten (Textbausteine, Kunden, Produkte): Zeile anklickbar zum Bearbeiten, direkte Icon-Aktionen statt „…"-Menü

Fixed

  • Lange Produktnamen und Beschreibungen sprengen die Positionstabelle im PDF nicht mehr; die Spalten bleiben stabil und die Einheit bricht nicht mehr in eine neue Zeile um (#145)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
Signatureiz4D936PYC2hirNT+Gu01alqM2CG00jSDepS0W3no3KGsYHNuzeIFkvWuJ5bvi+GS2dz/4L/76JnC+p/hULNXubNHJR181yt2yN/B4yK2HhK8QYJDjD0UAQjePNt/8424fT4nYw4hr6CsCrimhwb711WuoNE1lgGdQ6hgjeg2pf4uTturWl12ludMPseDlg/UBzejSx1gxDM1yy3RSVtNnE9KQqveRzMk7BUBtHBraVEEHFx4gpbVsVWvqaCKTEFsSb7HYPMKxFajdQhN5NX7BzilL0jtS+W2UHIEe+WWtbcmY55jfe9CkMxQeoreD4HcKdHfyaqU2kCXTcujnblGA==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.2.0
Release Details
UpdatedJuly 18, 2026, 7:55 a.m.
Changelog

Added

  • Angebote: Angebote mit eigenem Nummernkreis erstellen, festschreiben und als PDF versenden. Ein eigener Menüpunkt „Angebote" führt zu einer eigenen Liste mit Status (Offen, Abgelaufen, Angenommen, Abgelehnt, Übernommen, Revidiert). Angebote haben ein „Gültig bis"-Datum (§ 148 BGB) und eine optionale Freibleibend-Kennzeichnung (§ 145 BGB), die als Hinweis auf dem PDF erscheint. Der Angebots-Nummernkreis (Standard AN-{YYYY}-{####}) ist in den Einstellungen unabhängig von den Rechnungen konfigurierbar (#111)
  • In Rechnung übernehmen: ein festgeschriebenes Angebot lässt sich per Knopfdruck in einen neuen Rechnungs-Entwurf überführen – Positionen und Empfänger werden übernommen, die Rechnung referenziert die Angebotsnummer, das Angebot wird als „übernommen" markiert (#111)
  • Angebot revidieren: aus einem festgeschriebenen Angebot lässt sich eine überarbeitbare Revision erstellen. Sie erhält beim Festschreiben eine Revisionsnummer (AN-…-1, -2, …), das Ursprungsangebot wird als „revidiert" markiert (#111)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureSut+zU8cXNarPEIMOdjzO6Vyt3zPfCjSliR6aqSC+JHI+CIm8DlB/lyeDsWuCLaG9K6AQ/43KaiWW1I9f4kqWlUU6t2sBnkafY9FC1F4Sl8j8Ku63t9rBmi9jpLaV5S4Lu6R4Tu8QzRF4ozFDnw9bB2N3+gRl5YfuAzAQa49q67qe+C5wN9ietNZoHicl1l5q9tpNuAs+Q2t9lva8OBNToqR1sKLjVdb3saAG1U+4MrmPTPz0EsU8vGo7oD3agYndSw9RaeXbxMTuDMSHSbLCOZEVf5P9Ns594IwKZ5JsAbCEkvtMQl64vKY7+SWLojj7+p3b7e31Wkhc/XUVmvIgg==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.1.8
Release Details
UpdatedJuly 17, 2026, 8:28 a.m.
Changelog

Added

  • Zahlungsstatus verfolgen: Rechnungen lassen sich in der Liste als bezahlt markieren; der Status (offen, überfällig, bezahlt) ist auf einen Blick sichtbar – überfällige Rechnungen sind hervorgehoben, bezahlte gedämpft dargestellt. Eine Filterleiste (Alle/Offen/Überfällig/Bezahlt) zeigt zusätzlich die Summe der offenen Beträge. Ein Standard-Zahlungsziel in den Einstellungen belegt neue Rechnungen vor (#117)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignaturesXhEzBMcXpQoQRWbU5Ky7yfzsZEyH5Ll1kI7EJKXftrcsmh1YwvMGgtcbOfeFsPO6mrbq/jzFYuX2lWJazredJEeLSSspQeHTvcuCXSY4ne25hOpuVtTux7bD8fJLGAiyQSvuJzGWXfwp6TSlTM0wdlU1TyLdR8w/dWyVLsQf9367mbQE3yfefnI0CT1G0u+TTPQsDMiy0Ua5njgIJRhpl6giGwn9pjDzIJ5OmYDkdm70c7rFDS1VqUoXAvMo9oEjJthD2UQhoBQY0A+iHk4b8aRgsn6zbBTSxj+NcOA0Qk0ZeYspQJ4oRbSUT5DymHnREzSLMq9n0n17dM3R2TnVw==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.1.7
Release Details
UpdatedJuly 15, 2026, 7:51 p.m.
Changelog

Added

  • Rechnung duplizieren: eine bestehende Rechnung lässt sich per Knopfdruck in der Rechnungsliste als Vorlage für eine neue, bearbeitbare Rechnung übernehmen. Empfänger, Positionen, Referenzen, Notizen und Textbausteine werden kopiert; die neue Rechnung startet als Entwurf ohne Nummer. Stornobelege sind davon ausgenommen (#124)

Fixed

  • Kunde anlegen: Das Speichern schlug fehl, sobald ein Zahlungsziel gesetzt war (#122)
  • Das DATEV-„gesendet"-Symbol in der Rechnungsliste wird nur noch angezeigt, wenn die DATEV-/IMAP-Anbindung eingerichtet ist. Ohne IMAP-Konfiguration lief der automatische Abgleich ohnehin nie, sodass der Status sonst dauerhaft ohne Wirkung sichtbar blieb (#127)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureJELX2endgOdkGdfh2w6fY8wd4eys440C0bemzaAVBhxT4m0sRnRYECDZMoUSv69nz6V5VOe5hTgg3l2bGFh0bzBJ0ucovrtDhy9+XXeLJUHTIgw+f/6R8OG6t+GrsJAglZMCgr1adEUMfhBa+bh09eNyPgvVQ8Jxqj0J7a99PIFQdhimYN+K4MscgCf820b/wFX1zUhT+4WxzXor9rl1Iw07q+4EZiBlT1sESS3dPvNcPYM94uyijiCa3kC+EhA4XiKXr/HkIQmLk0Plor+mQv/Gh0V9M6OkFOdOzNAUwxuDa8X2eWYUIPbE9P4bV/83gogZpUZIDMDUj4grSfB3Aw==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.1.6
Release Details
UpdatedJuly 13, 2026, 8:39 a.m.
Changelog

Fixed

  • App-Installation auf Nextcloud 31 und 32 schlug fehl mit „Primary index name on 'oc_rechnungswerk_invoice_item' is too long". Die unterstützten Datenbanken (SQLite/MySQL/PostgreSQL) sind jetzt in der info.xml deklariert, wodurch Nextclouds Oracle-Namenslimit-Prüfung nicht mehr greift (#118)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignaturekXawEvTMN/MEksp8u2OB6KxiDpbGNZvPhivMAU2DbRzqmBrGxilRgMUJb6EExxAwJ6DU91Y/qU4iZy8FX1mqzd1ANjXFImD8bG43peKgDcAJwtQyFD/IQ1s9q9wNFNL2qjeTB9VcYDaGatAXLVE9W8zdFuJiqNNKGjcU190vB/S/i6SQgMryNKZrH87Pdd02ADgWcKIi3KyYjr3VvTruaiIrbRv3LgSns9UTXtUcpyvYKdWXQPsj1uc1tY5JpZGwKIOc4VHlxhSWXyTIPOvi5rZle2uVPsyBFT5iz48e+D8WIYidgyY5t2jaoLt7djJcYENcNAbcyz3s7BTmtC/84Q==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.1.5
Release Details
UpdatedJuly 11, 2026, 6:33 p.m.
Changelog

Added

  • Neue Referenzfelder auf der Rechnung: Vertragsnummer (BT-12) und Objekt-/Projektkennung (BT-18). Beide stehen strukturiert im E-Rechnungs-XML und als Meta-Zeilen im PDF (#41)
  • Notizen/Hinweise auf der Rechnung: frei formulierbare Textzeilen, sichtbar im PDF und als Notiz (BT-22) im E-Rechnungs-XML (#41)

Changed

  • Anrede/Einleitung und Schlusstext stehen jetzt auch im E-Rechnungs-XML (BT-22) und nicht mehr nur im PDF (#41)
  • Stornobelege übernehmen die Referenzen der Originalrechnung (Bestell-, Referenz-, Vertragsnummer, Leitweg-ID, Objektkennung)
  • Generische freie Felder (Key-Value) werden nicht weiterverfolgt; bestehende Einträge bleiben als Notizen lesbar (#41)

Fixed

  • Rechnungseditor übernimmt beim Wechsel von einer Rechnung zu „Neue Rechnung" keinen alten Formularzustand mehr (#109)
  • Esc schließt Modals auch dann, wenn der Fokus in einem Eingabefeld liegt (#107)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignaturefjPXXKL3vvb63vSpX/J8RT/tRxS0jbZyE8Sg8WN1xKKtQOZZxdQTFalX7Din8u8akVxvXup2V91d3GLfhB9x1yqNvZGRVa4kggAduDoCeO/IR6vVZxKweFw1X8KAo0Wt4ph1s7aQs8kMdsEQCfzBtwtORXG9hmmj4KUmvIWQpw9ipTvf14XvA60KEitNQf/VGSAxVIlowcq1bgvXf9CrOYMBRo7slEBcucL8fN9jfw3QgV0StjK5iemBpAJg/hMMnMhdgkSXkfEczisnVwe8u8vuz9bMXMIWhAQFWjT89IECY2UW4Lcv4Ai3A+7/tUk4b6W3pfOVggfOUTm54yeJ0w==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.1.4
Release Details
UpdatedJuly 11, 2026, 10:53 a.m.
Changelog

Added

  • Rechnungsvorschau für Entwürfe: Vorschau-Button im Editor zeigt das PDF vor dem Festschreiben. Deutlich als ENTWURF gekennzeichnet (Wasserzeichen, Banner, ohne E-Rechnungs-XML) (#94)
  • Konfigurierbares Dateinamen-Schema für erzeugte PDFs mit Platzhaltern {nummer}, {YYYY}/{MM}/{DD}, {kunde}, {typ}. Gilt einheitlich für Download, Kundenmail und DATEV-Mail, mit Live-Vorschau in den Einstellungen (#37)
  • Automatische Ablage festgeschriebener Rechnungen (inkl. Stornos) in einen Nextcloud-Ordner (auch Team-/Gruppenordner), optional mit Jahres-Unterordnern; Komfort-Ablage, kein revisionssicheres Archiv (#38)
  • Girocode: optionaler EPC-Bezahl-QR-Code (EPC069-12) neben der Bankverbindung. Banking-Apps übernehmen Empfänger, Betrag und Verwendungszweck automatisch; nie auf Stornos oder Entwurfs-Vorschauen (#79)

Changed

  • Neue Runtime-Abhängigkeit bacon/bacon-qr-code für das QR-Rendering
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureLZo7cCep3E7ce/8lmUohIZa6LI36+uaqF2y6wFukPeVjvCSxwqO84q3869FFhmq8QLYJUrysSHhVopd+5ULUtoeZ2CVUQwoKq09+BFTuxQPFRkeE9cwH94Rrp0tXCapDhEBgLaS3PEZYd4tMMzZw7Av7WwA89hH8Fy3b7JnVBk6LsZg5saPchA6ViX6Y+DW5wYHdYdp2wvZHhv9+FgMJrd19Q3n3n7dJ6XK89FUb5/Z/3K09+R0mkck7A0N2iR56C/sQr12tMPeEkyqlg+Bj3x7BVmDmawpSnwFI86TCTmvn5E5ehK0BrYufQlKuDkSgg48yRNRrldNnQ03M5Vtr/w==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.1.3
Release Details
UpdatedJuly 8, 2026, 7:11 a.m.
Changelog

Added

  • Nummernkreis-Modus: fortlaufend über Jahre vs. jährlicher Reset, umschaltbar in den Einstellungen (#39)
  • Persönlicher Bereich „Mein Kontakt": eigener Verkäufer-Ansprechpartner pro Nutzer, füllt neue Rechnungen automatisch vor (#47)
  • Einheit „Monat" für Rechnungspositionen (#76)

Fixed

  • Kontakt-E-Mail aus den Einstellungen wird auf Rechnung und E-Rechnung korrekt verwendet, statt der Nextcloud-Konto-Mail (#86)
  • Rechnungstexte: Einleitung erscheint wieder, Schlusstext steht genau einmal unten (keine Dopplung, korrekte Platzierung) (#76)

Security

  • Sicherheitsupdates der Frontend-Abhängigkeiten: dompurify, js-yaml, vite/esbuild (Advisories behoben, npm audit clean)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureGfdVd7F79t0qMXZuq31SJd3IWVykZfSbU5B9eC01Vga/lkUfdvctqYcBv3YR+xoJIr6Lpg9Ax9e+yiaf4kT3RlEJatRcezHnNUNn9+YNEionm8Wzt0y7/sJI2BlmR2aFOS9ConZWSUPO/pPyIPJwN5fWz9+k935pHNWM9eEzyEAoQ1P+xTI6kqyNu1g3I6X5mVgw6CkovFYMc3zm0Swlxvln6H/4QNQPWaJ1SY8vobqTEmkJjjKEDbZf3rvHaxUNOHoQPb1XzUio5YPZrDG8MoYCoRJEHt9oURYtAUzN+yPXN2PzmUUDqgcQ0sidv5buYMJqOTOZesQUmFQCAd+WMQ==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.1.2
Release Details
UpdatedJuly 6, 2026, 3:39 a.m.
Changelog

Added

  • Nextcloud 34 wird unterstützt (max-version auf 34 angehoben)
  • Kundenverwaltung: eigene Customer-Entität mit Erfassung, Bearbeitung und Übernahme in die Rechnung

Fixed

  • Storno als rechtssichere E-Rechnung: Korrekturrechnung mit typeCode 384 und negativen Beträgen (EN16931 / §14c UStG), Referenz auf die stornierte Rechnung (BT-25/BT-26); Beleg heißt „Stornorechnung" statt „Gutschrift" (#64, #65)
  • Storno-Dialog eindeutig beschriftet, doppeltes „Cancel" behoben (#64)
  • DATEV-Rückkanal (IMAP): RFC-2047-Q-Encoding wird versionsstabil dekodiert (PHP 8.2)

Changed

  • DATEV-Rückkanal nutzt einen eigenen schlanken IMAP-Client statt webklex/php-imap (deutlich kleineres Release, unter dem App-Store-Größenlimit) (#51)
  • Anzeigename und Marken-Strings durchgängig auf „RechnungsWerk" vereinheitlicht
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignaturemUXJDuNe+Tilo+dpUr+E737GyLaklc1NJcW9vzLpYYhWaLd+43FFRC5Cv9YyDKJsxPf0C12O19vw9sBfNxxv/UfPsEDc+ltMnmDebp0mCwsusHBF4M3CODsrB/NKrodV/oj8p0z/q43TZzYPdQZ3AzqryUrQVIGvAug2znoDd89J6uhroEDGsLoxDrj6cgpN8Y5e3MFy1wqvirArLewEDS7CmkOXhX4vLTNu/DddQvQmCWp6nlFUmG90koD05VwSCRw3FP+uuig71l4q+giN07sNEb/WqWx00y4aZ//6Svm+MbZcBEeZCvoBbl/gEAgBLSIND8hnPxkeJ61H2B9syQ==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0

Nextcloud 33

RechnungsWerk 0.5.2
Release Details
UpdatedAug. 27, 2026, 12:40 p.m.
Changelog

Zwei Verbesserungen aus Anwender-Feedback: der saubere Einstieg in eine bereits laufende Rechnungsnummern-Folge und ein leichter auffindbarer Weg, hinterlegte Produkte in eine Rechnung zu übernehmen.

Added

  • Die nächste Rechnungsnummer lässt sich setzen. In den Einstellungen kann der Startwert der laufenden Nummer vorgegeben werden, um an eine bestehende Nummernfolge anzuknüpfen (z. B. bei „RE-2026-0143" einsteigen). Nummern lassen sich nur vorwärts setzen, nie unter eine bereits vergebene — die gesetzliche Einmaligkeit nach §14 UStG bleibt gewahrt (#270)

Changed

  • Produkte lassen sich bei der Rechnungserstellung direkt suchen und einfügen. An die Stelle des unauffälligen „Aus Produkt"-Menüs tritt ein Suchfeld „Produkt suchen und einfügen …" in der Positions-Leiste: Tippen schlägt passende Produkte mit Preis und Einheit vor, die Auswahl fügt die Position ein. Frei getippte Positionen bleiben unverändert möglich (#273)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignaturejGh8TYPrOPy5WO3V5b6CX5tbqBO1rIOdSHPCG+5m2gmZu9J9gAbEUkckUBoYR956iYNOopuyZ4WvkfMwnkhmkLDJGDrd439NnB80xP7GWpG0Tx2LpVSEvGbIldp0YqryG3TWBeIuCwrAN7HKarAPImi8YPN0H1qFAB4zK/BKpvKiDGjXN211AQWFD7T5d9gLw7p1GADAdxD0xHUS51fZGGxpmBEau4EgeoBaLIrKnv7udUcYljpgpVrJjSUabx2onsPdB3BZz5TmgYJ+YVRxZQdkdyvBvLFj3xHujD9MQgAPJZVpktixXx2041PuD0Z/q+nQ7NPPxcIRyeBAeIHi1A==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.5.1
Release Details
UpdatedAug. 26, 2026, 9:04 a.m.
Changelog

Drei Verbesserungen aus der praktischen Nutzung: ein häufig gewünschter kleiner Komfort beim Bezahlt-Markieren, ein Anzeigefehler bei der DATEV-Spalte und — am wichtigsten — eine Speicher-Falle in den Einstellungen, die beim Einrichten wie Datenverlust wirken konnte.

Added

  • Das Zahldatum lässt sich nachträglich anpassen. Der Klick auf die Bezahlt-Checkbox setzt weiterhin sofort das heutige Datum. Neu: Die Anzeige „bezahlt am {Datum}" in der Rechnungsliste ist jetzt anklickbar und öffnet ein kleines Datumsfeld, vorbelegt mit dem gesetzten Datum — so lässt sich eine Zahlung, die an einem anderen Tag einging, ohne Umweg korrigieren (#257)

Fixed

  • Die DATEV-Spalte erscheint jetzt sofort beim Öffnen der Rechnungsliste. Bisher war sie an die asynchron nachgeladenen Einstellungen gebunden und fehlte beim Kaltstart, bis dieser Fetch durch war. Jetzt hängt die Anzeige an den mit der Liste gelieferten DATEV-Status, sodass die Icons zeitgleich mit den Rechnungen erscheinen (#237)
  • Speicherfehler in den Einstellungen sind nicht mehr unsichtbar. Der Server lehnt beim Speichern die gesamte Anfrage ab, wenn ein einziges Feld ungültig ist (z. B. eine unvollständige E-Mail-Adresse). Die Fehlermeldung stand oben, der Speichern-Button unten — wer unten klickte, sah nichts und hielt das Speichern für erfolgt. Jetzt scrollt jede Fehlermeldung in den sichtbaren Bereich, und die drei E-Mail-Felder werden schon vor dem Absenden geprüft und namentlich benannt (#265)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureIMysmv7wUbyl/PYiLs+mWYhMZB44jjzTfGNUDvqMAcFg8kYKa09j3FVhSZz/LUmA/g2mUFgDj0SqMcvnoszwH9hGX0aRJ/CdPGN27+SDuWb37gIJbVFeRkv1RsWW3h8wFftMqtzGlItXYYhvsxkh3DTEVW9SC5V+brxf3yfZJQYeTv6rmHTRrRWjXxgt7bU0FnEhcxF89epf6pFDezdDfyiqwcJFJMwgA4LlRyl2mHABqXpQ4UpUWZ/Z1rLvJVA+1YXBCjaowNE9Fv2zBQZjnDNtUZjObG/gGnsWn+j1/O5BGCoFOPsV25hV+z1jfL8b91zRWAozNwux/N2cZBlOXQ==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.5.0
Release Details
UpdatedAug. 14, 2026, 12:20 p.m.
Changelog

Ein Release für alle, die die App auf Englisch bedienen: Fehlermeldungen kamen bisher auf Deutsch zurück, und fünf Texte blieben trotz vorhandener Übersetzung deutsch. Dazu zwei Anzeigefehler, die von außen gemeldet wurden, und eine Integritätsmeldung, die seit der ersten PDF-Erzeugung auftrat.

Added

  • Fehlermeldungen aus dem Backend sind übersetzbar. IL10N wurde bisher an genau einer Stelle benutzt, die übrigen 48 benutzersichtbaren Meldungen waren hart deutsch. Die Zahlenprüfung (NumberInput) wirft dafür jetzt prosafrei: die Ausnahme trägt nur den Sachverhalt, den Satz formuliert eine eigene Klasse mit IL10N. Damit bleibt die Klasse statisch und deckungsgleich mit ihrem Frontend-Zwilling (#235)

Fixed

  • Das freie Einheitenfeld war neben der Einheitenauswahl nur noch als Strich zu sehen. Beide Elemente stehen mit voller Zellenbreite in einer Zelle, die nicht umbrechen kann — welches von beiden zusammenfällt, entschied der Browser. Das freie Feld sitzt jetzt in der zweiten Zeile neben der Beschreibung, wo der Platz ohnehin vorhanden ist; Spaltenbreiten und Zeilenhöhe bleiben unverändert. In der schreibgeschützten Ansicht erscheinen beide Felder nur noch, wenn sie einen Wert tragen. Gemeldet von @myssv (#238)
  • Die Integritätsprüfung meldete nach jeder PDF-Erzeugung zwei zusätzliche Dateien. dompdf legte seinen Font-Cache innerhalb des eigenen Pakets ab, also in einem signierten Verzeichnis. Der Cache liegt jetzt unter dem Nextcloud-Temp-Pfad; ist der gemeinsame Ordner nicht benutzbar, wird auf einen Ordner je Aufruf ausgewichen statt zurück in die Auslieferung (#241)
  • Fünf Texte erschienen in der englischen Oberfläche auf Deutsch, obwohl die Übersetzung vorhanden war: vor den Auslassungspunkten steht im Quellcode ein geschütztes Leerzeichen, in den Übersetzungsdateien ein normales. Beim Draufschauen sind beide Zeichenketten identisch, deshalb prüft das jetzt eine Maschine. Acht fehlende DATEV-Texte ergänzt, fünfzehn Altlasten entfernt (#234)
  • Ordner- und Logoauswahl in den Einstellungen liefen über OC.dialogs, das seit Nextcloud 30 veraltet ist und beim Klicken gebrochen wäre, nicht beim Bauen. Ersetzt durch den FilePicker aus @nextcloud/dialogs; ein Abbruch erzeugt keine Fehlermeldung mehr (#221)

Changed

  • Das JavaScript-Bundle wird als ES-Modul ausgeliefert statt als iife. Der FilePicker lädt seine Komponente per dynamischem Import, was Code-Splitting erzwingt — das iife-Format kann das nicht. Das alte Bundle wird beim Update entfernt (#221)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureM+2YdsR2Knq7wTHEjM3DBFiP+EB7ANJVAYlAN40R0gm/xh9gG9W9ugFL79xejoTiB+HRhCEQwWU/YSjOI8BnDdFvzqxlDcpCrlrU/bu3roGuG4fPDbdOGkWnnAOpRI7Y5fzh6Xqjs7uRPqbI9ETvThZIeX1nZAT54oVOB1wZjuV2jtMLoKjquwjCCVWuaKC0ifZ3x+g4Zb/vS0L2EvRg7Dl1XVS3RRnkSCrC5nnDS6UGDDCZs17jXJcnJPCs2YDt375pa6IMNTM2lCL775gBnkB8mqgH6Yzj1TYtlAtjsARI3yPhlW2lFT4Je/apOfZFB3tP/RyzHv3LXrJclr9EAQ==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.4.1
Release Details
UpdatedAug. 11, 2026, 1:04 p.m.
Changelog

Mengen und Preise blieben beim Speichern nicht zuverlässig stehen. Gemeldet von @yummiweb (#223), und beim Prüfen kam ein zweiter Fall derselben Ursache heraus, der Beträge schon beim ersten Speichern verfälschte.

Fixed

  • Mengen und Preise bleiben über Speichern und Wiederöffnen unverändert. Die Menge steht mit drei Nachkommastellen in der Datenbank, wird also als „1.000" geliefert, wobei der Punkt ein Dezimaltrennzeichen ist. Dieser Wert lief unverändert ins Eingabefeld, wo er seit 0.3.1 regelkonform als deutsche Tausendertrennung gelesen wurde: aus der Menge 1 wurde beim nächsten Speichern 1000, aus 10,00 € Zeilensumme 10.000,00 €. Gespeicherte Werte werden jetzt in die Schreibweise des Feldes gewandelt, statt ungewandelt hineinzulaufen. Nebenbei verschwindet damit die alte Anzeige-Merkwürdigkeit, dass die Menge 1 als „1.000" dastand (#223)
  • Preise mit drei Nachkommastellen wurden beim ersten Speichern um den Faktor 1000 verfälscht. Das Preisfeld war ein Zahlenfeld des Browsers und lieferte deshalb immer Maschinenformat mit Punkt: 1,234 € kam als „1.234" an und wurde serverseitig deutsch als 1.234,00 € gelesen. Preis und Menge sind jetzt beide Textfelder in deutscher Schreibweise und werden von derselben Regel ausgewertet. Wer die Regelung mit vier Nachkommastellen nutzt, sollte seine Standardpreise und offenen Entwürfe prüfen (#223)
  • Die Beschriftung des aktiven Filters über der Rechnungs- und Angebotsliste war praktisch unsichtbar: heller Text auf hellem Grund, gemessener Kontrast 1,00. Ursache war die Nextcloud-Variable --color-primary-element-text-dark, die nicht „dunkler Text" bedeutet, sondern „Text für das dunkle Primärelement", und auf Nextcloud 34 zu fast Weiß auflöst. Jetzt 13,63 (#217)

Changed

  • Zahleneingaben werden nur noch in deutscher Schreibweise gelesen: das Komma trennt die Nachkommastellen, der Punkt die Tausender. Englische und gemischte Schreibweisen wie „12.5" oder „1,234.5" werden jetzt mit einer erklärenden Meldung abgelehnt, statt anhand des letzten Trennzeichens gedeutet zu werden. Diese Deutung war die Ursache des Fehlers oben, denn sie lässt „1.234" zwischen 1234 und 1,234 offen. Im Preisfeld sind dadurch die Pfeiltasten des Browsers entfallen; ein negativer Preis wird weiterhin abgelehnt (#223)
  • Der Entwicklungs-Build verlangt jetzt Node ^22.14 || ^24 || >=26. Das betrifft nur, wer die App selbst baut; für den Betrieb ändert sich nichts. Nachtrag zu 0.4.0, wo die Anforderung mit angehoben wurde, ohne hier zu stehen
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureXjjN6OT1TGj43VVjBE499YLk0zjaHoIVVgzfalJ5OqRQeMf+sg8eSbV11ThHvtYUO9tJuYk1uWHFM835CQT+a3Gnsj9n77K1HjoEomDIIgT/2iAoBmeikAmMJjDu4Y/8nTqC4EHThr3WhIYjW0KPglFJyFfxVrbTcckt5AA0DZG1UHbbOErTHoW2jgeD/sLI3Xtt/sR3TjRw+o3iHiy8FFtsYvQnOB42Jx6G2U1D9o7eEp7xxOQdF6jNcZ5KsNev9nOIt8vOlfoV3GSNiEvbvl4LkoUPP0YjWZfSayKzfzy75LJtvh9AzVFPPC1k1g6PGJSvMoqazIWQQdEglwVRHA==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.4.0
Release Details
UpdatedAug. 8, 2026, 4:18 p.m.
Changelog

Festgeschriebene Rechnungen sind jetzt wirklich unveränderlich. Bisher entstand jedes PDF bei jedem Zugriff neu, aus den zu diesem Zeitpunkt gültigen Einstellungen. Eine bereits ausgestellte E-Rechnung konnte sich dadurch nachträglich ändern und ungültig werden.

Changed

  • Der Beleg einer festgeschriebenen Rechnung wird beim Festschreiben abgelegt und ab dann ausgeliefert, statt bei jedem Zugriff neu zu entstehen. Damit bekommen Download, Kundenversand, DATEV-Übergabe und die Ablage in Nextcloud Files garantiert dieselbe Datei; vorher konnten zu einer Rechnung drei verschiedene Dokumente existieren. Der Beleg ist nur einmal beschreibbar, seine Prüfsumme steht am Datensatz, und der Dateiname ist mit eingefroren. Die Ablage liegt im app-eigenen Speicher und damit in jeder Instanz-Sicherung, nicht im Dateibaum des Nutzers, wo sie versehentlich zu ändern wäre (#181)
  • Der Kleinunternehmer-Fall steht jetzt an der Rechnung statt in den Einstellungen. Ein Wechsel zwischen Kleinunternehmerregelung und Regelbesteuerung ist ein völlig normaler, einmaliger Vorgang. Er machte vorher aus jeder älteren 19-%-Rechnung rückwirkend eine steuerfreie: das eingebettete XML wies CategoryCode E und 0,00 % aus, bei weiterhin ausgewiesenen 19,00 € Steuer. Ein solches Dokument widerspricht sich selbst und verletzt EN 16931 (#181)
  • Bestandsrechnungen werden im Hintergrund nachgezogen, in Häppchen und ohne Wartungsmodus. Nachträglich erzeugte Belege sind als solche gekennzeichnet und im Rechnungseditor ausgewiesen: sie stimmen inhaltlich, entsprechen im Aussehen aber dem heutigen Stand und nicht dem, was der Kunde damals bekommen hat. Für Bestandsrechnungen ist das Original-Aussehen nicht wiederherstellbar (#181)

Fixed

  • Einzelpreise werden serverseitig aus der Eingabe berechnet und geprüft. Bisher rechnete allein der Browser und schickte die fertige Zahl. Dem Server war nicht anzusehen, ob 95 als 0,0095 € oder als 95 € gemeint war. Betrifft Rechnungspositionen und den Standardpreis im Produktkatalog (#180)
  • Ein Storno übernimmt den Steuerfall der Original-Rechnung statt der aktuellen Einstellungen. Sonst hätte die Gutschrift zu einer 19-%-Rechnung nach einem Wechsel der Besteuerungsform 0 % ausgewiesen (#181)

Abhängigkeiten und Infrastruktur

  • phpmailer auf 7.1.1 angehoben. Der Mailversand wurde damit real geprüft, der Anhang bleibt der eingefrorene Beleg
  • Frontend-Werkzeuge und Bibliotheken aktualisiert: vite 8, @nextcloud/l10n 3, vue-router 5, pinia 4, @nextcloud/vue 9.9. Der Sprung auf vue-router 5 war ohne pinia 4 nicht möglich und beseitigt zugleich eine doppelte Router-Version im Abhängigkeitsbaum
  • GitHub-Actions auf checkout 7, setup-node 7 und github-script 9
  • Dependabot zielt jetzt auf develop und gruppiert Minor- und Patch-Updates
  • Der Workflow, der Issues beim Merge nach develop schließt, wertet Code in PR-Texten nicht mehr als Anweisung
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
Signaturekg15ifuNkkeQMOsP5v3QthE3KZvAghdIGVoEUZ0WySHi9mshrzqNhdoAtHfS00ZCQlmKuN/VXvX/CjQP2OWwvMYQB91s4ts3theFM6fE7UNwnc4RfF8GSO9XJNofCvnjKoGBMgeFkJr3VyvtCGYKvWXxqoxcsDgit7r71AAXMlKGxFfXuZO8+czcs0nwKBpMKuY4hvKoB/ls7ZpxLafSHUmBUjjLmMq3cEEuVgMCr0UYPID1DxETu2PupVFQ61gh8FMzo8jG3Bc0BEswToJHZJi+XRpNMOlesg/tovaT2WZOXXBagyxXb69e4YHMFavgu0nSIeBySKac0hKLumO3Tg==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.3.1
Release Details
UpdatedAug. 7, 2026, 9:12 p.m.
Changelog

Fehlerbehebungen aus Rückmeldungen von Nutzern. Zwei der Fehler erzeugten stillschweigend falsche Werte auf Rechnungen, die an Kunden gehen.

Fixed

  • Kontakte aus dem Nextcloud-Adressbuch lassen sich wieder übernehmen. Das vCard-Feld für das Land enthält laut Standard einen frei geschriebenen Namen, iOS und Outlook tragen dort „Deutschland" oder „Germany" ein. Der Wert lief ungeprüft in eine Spalte für den zweistelligen Ländercode, wodurch das Speichern des Entwurfs mit einem Fehler 500 abbrach und keine Vorschau mehr erzeugt werden konnte. Ländernamen werden jetzt in beiden Sprachen erkannt und umgesetzt, inklusive Schreibvarianten wie „Oesterreich" (#167)
  • Mengen und Einzelpreise in deutscher Schreibweise werden korrekt gelesen. Bisher brach eine achtstellige Menge wie 99.999.999 mit einem Fehler 500 ab, und eine Eingabe von 1.000 wurde ohne jeden Hinweis als 1 gespeichert, was die Rechnung um den Faktor 1000 verfälschte. Dasselbe traf den Einzelpreis, dort ohne Fehlermeldung als Warnsignal. Nicht lesbare Eingaben werden jetzt mit einer verständlichen Meldung abgelehnt statt geraten (#157)
  • Die Spaltenbreiten der Positionstabelle passen wieder zum Inhalt. Seit 0.3.0 waren alle Spalten gleich breit, wodurch die Bezeichnung viel zu früh umbrach, während die USt-Spalte Platz verschwendete (#157)
  • Die Kopfzeile der Positionstabelle bleibt bei jeder Akzentfarbe lesbar. Die Schrift war fest weiß und verschwand auf hellen Firmenfarben; sie wechselt jetzt auf Schwarz, wenn Weiß nicht mehr trägt. Die gewählte Farbe selbst bleibt unverändert (#171)
  • Das Auswahlfeld für die Akzentfarbe öffnet nicht mehr den Farbdialog des Betriebssystems, der sich unter macOS nicht wieder schließen ließ (#171)
  • Das ausgelieferte JavaScript enthält keinen Entwicklungscode mehr. Das Bundle ist dadurch rund 100 KB kleiner und die Konsole bleibt frei von Hydrations- und Prop-Warnungen (#168)

Added

  • Ein Musterstreifen in den Einstellungen zeigt beim Wählen der Akzentfarbe, wie die Kopfzeile der Positionstabelle auf der Rechnung aussehen wird, inklusive der daraus folgenden Schriftfarbe (#171)
  • Die Spalte für die Bezeichnung heißt im PDF jetzt wie im Editor „Bezeichnung" statt „Beschreibung" (#157)

Security

  • dompdf auf 3.1.6 angehoben. Die Version schließt laut Release Notes gemeldete Sicherheitslücken; dompdf erzeugt das Rechnungs-PDF

Changed

  • Weitere Abhängigkeiten aktualisiert: dompurify, fast-xml-parser, immutable, postcss, fast-uri, brace-expansion, js-yaml
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureMfyGkAWLpC5IS7BOHlL1YVoOTLrh/IBR5gkLSv7hFwhB+0tQnp6uATLUlDD46Bf2dolSg5oeyL88GDPp/jOp9XIqn16w8PVMkhEVhjPZyo7K0GxFJNf1G8uhs/346/zOtyM3KQBFFt28JUns1p17OR2TyihOOa7cS9rP+A1ghML3L/DURiepOK8zNam0tPTvc3bJU6YShsSaOStdp6VEwcPR/dQqGuLggyzT5sXV3nWDOYGpHyPubgPgUmKQ5TvvdeD6lxQhhPQTX9WJNps1Qpi1xJRs8x78DUAKU5xg1gcNlLuWB9XCZUji9X1s5yiw6HBLcI3A++iNR4Rqkl1XSw==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.3.0
Release Details
UpdatedJuly 23, 2026, 12:36 p.m.
Changelog

Added

  • Textbausteine: eine verwaltete Bibliothek wiederverwendbarer Anrede-/ Einleitungs- und Schlusstexte, getrennt für Rechnungen und Angebote. Je Dokumenttyp und Textbereich gibt es genau einen Standard-Baustein, der neue Dokumente vorbefüllt; weitere Bausteine lassen sich im Editor per Klick einfügen. Neuer Menüpunkt „Textbausteine" (#126, #141)
  • Kleinunternehmer-Hinweis (§ 19 UStG): der Hinweistext auf der Rechnung ist jetzt frei konfigurierbar (#141)
  • Datums-Variablen {MM} (Monat) und {DD} (Tag) für die Rechnungs- und Angebotsnummer, zusätzlich zu {YYYY}/{YY}/{####} (#143)
  • Weitere Einheiten zur Auswahl: kWh, Liter, Meter, Kilometer, m², Gramm, Tonne (gültige UN/ECE-Codes, E-Rechnung bleibt valide) (#146)
  • Einzelpreise mit bis zu 4 Nachkommastellen (z. B. Energie 0,3456 €/kWh); die Rundung auf ganze Cent erfolgt einmal beim Zeilenbetrag, Summen bleiben zweistellig (#147)
  • Freitext-Einheiten: frei benannte Einheiten (z. B. „Personen", „Sitzung") für Editor und PDF; die eingebettete E-Rechnung nutzt weiterhin einen gültigen generischen Einheitencode (#153)

Changed

  • Kleinunternehmer (§ 19 UStG): Rechnungen und Angebote zeigen keine „0 %"-USt- Spalte und keine „Steuerfrei 0,00 €"-Zeile mehr; da netto = brutto erscheint nur der Gesamtbetrag mit dem § 19-Hinweis. Die eingebettete XML bleibt unverändert korrekt (Kategorie „E") (#144)
  • Bei einem Angebot ist der Leistungszeitraum nicht mehr als § 14-UStG- Pflichtangabe ausgewiesen, sondern als optionaler „Geplanter Leistungszeitraum"
  • Einheitliche Bedienung der Verwaltungslisten (Textbausteine, Kunden, Produkte): Zeile anklickbar zum Bearbeiten, direkte Icon-Aktionen statt „…"-Menü

Fixed

  • Lange Produktnamen und Beschreibungen sprengen die Positionstabelle im PDF nicht mehr; die Spalten bleiben stabil und die Einheit bricht nicht mehr in eine neue Zeile um (#145)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
Signatureiz4D936PYC2hirNT+Gu01alqM2CG00jSDepS0W3no3KGsYHNuzeIFkvWuJ5bvi+GS2dz/4L/76JnC+p/hULNXubNHJR181yt2yN/B4yK2HhK8QYJDjD0UAQjePNt/8424fT4nYw4hr6CsCrimhwb711WuoNE1lgGdQ6hgjeg2pf4uTturWl12ludMPseDlg/UBzejSx1gxDM1yy3RSVtNnE9KQqveRzMk7BUBtHBraVEEHFx4gpbVsVWvqaCKTEFsSb7HYPMKxFajdQhN5NX7BzilL0jtS+W2UHIEe+WWtbcmY55jfe9CkMxQeoreD4HcKdHfyaqU2kCXTcujnblGA==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.2.0
Release Details
UpdatedJuly 18, 2026, 7:55 a.m.
Changelog

Added

  • Angebote: Angebote mit eigenem Nummernkreis erstellen, festschreiben und als PDF versenden. Ein eigener Menüpunkt „Angebote" führt zu einer eigenen Liste mit Status (Offen, Abgelaufen, Angenommen, Abgelehnt, Übernommen, Revidiert). Angebote haben ein „Gültig bis"-Datum (§ 148 BGB) und eine optionale Freibleibend-Kennzeichnung (§ 145 BGB), die als Hinweis auf dem PDF erscheint. Der Angebots-Nummernkreis (Standard AN-{YYYY}-{####}) ist in den Einstellungen unabhängig von den Rechnungen konfigurierbar (#111)
  • In Rechnung übernehmen: ein festgeschriebenes Angebot lässt sich per Knopfdruck in einen neuen Rechnungs-Entwurf überführen – Positionen und Empfänger werden übernommen, die Rechnung referenziert die Angebotsnummer, das Angebot wird als „übernommen" markiert (#111)
  • Angebot revidieren: aus einem festgeschriebenen Angebot lässt sich eine überarbeitbare Revision erstellen. Sie erhält beim Festschreiben eine Revisionsnummer (AN-…-1, -2, …), das Ursprungsangebot wird als „revidiert" markiert (#111)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureSut+zU8cXNarPEIMOdjzO6Vyt3zPfCjSliR6aqSC+JHI+CIm8DlB/lyeDsWuCLaG9K6AQ/43KaiWW1I9f4kqWlUU6t2sBnkafY9FC1F4Sl8j8Ku63t9rBmi9jpLaV5S4Lu6R4Tu8QzRF4ozFDnw9bB2N3+gRl5YfuAzAQa49q67qe+C5wN9ietNZoHicl1l5q9tpNuAs+Q2t9lva8OBNToqR1sKLjVdb3saAG1U+4MrmPTPz0EsU8vGo7oD3agYndSw9RaeXbxMTuDMSHSbLCOZEVf5P9Ns594IwKZ5JsAbCEkvtMQl64vKY7+SWLojj7+p3b7e31Wkhc/XUVmvIgg==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.1.8
Release Details
UpdatedJuly 17, 2026, 8:28 a.m.
Changelog

Added

  • Zahlungsstatus verfolgen: Rechnungen lassen sich in der Liste als bezahlt markieren; der Status (offen, überfällig, bezahlt) ist auf einen Blick sichtbar – überfällige Rechnungen sind hervorgehoben, bezahlte gedämpft dargestellt. Eine Filterleiste (Alle/Offen/Überfällig/Bezahlt) zeigt zusätzlich die Summe der offenen Beträge. Ein Standard-Zahlungsziel in den Einstellungen belegt neue Rechnungen vor (#117)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignaturesXhEzBMcXpQoQRWbU5Ky7yfzsZEyH5Ll1kI7EJKXftrcsmh1YwvMGgtcbOfeFsPO6mrbq/jzFYuX2lWJazredJEeLSSspQeHTvcuCXSY4ne25hOpuVtTux7bD8fJLGAiyQSvuJzGWXfwp6TSlTM0wdlU1TyLdR8w/dWyVLsQf9367mbQE3yfefnI0CT1G0u+TTPQsDMiy0Ua5njgIJRhpl6giGwn9pjDzIJ5OmYDkdm70c7rFDS1VqUoXAvMo9oEjJthD2UQhoBQY0A+iHk4b8aRgsn6zbBTSxj+NcOA0Qk0ZeYspQJ4oRbSUT5DymHnREzSLMq9n0n17dM3R2TnVw==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.1.7
Release Details
UpdatedJuly 15, 2026, 7:51 p.m.
Changelog

Added

  • Rechnung duplizieren: eine bestehende Rechnung lässt sich per Knopfdruck in der Rechnungsliste als Vorlage für eine neue, bearbeitbare Rechnung übernehmen. Empfänger, Positionen, Referenzen, Notizen und Textbausteine werden kopiert; die neue Rechnung startet als Entwurf ohne Nummer. Stornobelege sind davon ausgenommen (#124)

Fixed

  • Kunde anlegen: Das Speichern schlug fehl, sobald ein Zahlungsziel gesetzt war (#122)
  • Das DATEV-„gesendet"-Symbol in der Rechnungsliste wird nur noch angezeigt, wenn die DATEV-/IMAP-Anbindung eingerichtet ist. Ohne IMAP-Konfiguration lief der automatische Abgleich ohnehin nie, sodass der Status sonst dauerhaft ohne Wirkung sichtbar blieb (#127)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureJELX2endgOdkGdfh2w6fY8wd4eys440C0bemzaAVBhxT4m0sRnRYECDZMoUSv69nz6V5VOe5hTgg3l2bGFh0bzBJ0ucovrtDhy9+XXeLJUHTIgw+f/6R8OG6t+GrsJAglZMCgr1adEUMfhBa+bh09eNyPgvVQ8Jxqj0J7a99PIFQdhimYN+K4MscgCf820b/wFX1zUhT+4WxzXor9rl1Iw07q+4EZiBlT1sESS3dPvNcPYM94uyijiCa3kC+EhA4XiKXr/HkIQmLk0Plor+mQv/Gh0V9M6OkFOdOzNAUwxuDa8X2eWYUIPbE9P4bV/83gogZpUZIDMDUj4grSfB3Aw==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.1.6
Release Details
UpdatedJuly 13, 2026, 8:39 a.m.
Changelog

Fixed

  • App-Installation auf Nextcloud 31 und 32 schlug fehl mit „Primary index name on 'oc_rechnungswerk_invoice_item' is too long". Die unterstützten Datenbanken (SQLite/MySQL/PostgreSQL) sind jetzt in der info.xml deklariert, wodurch Nextclouds Oracle-Namenslimit-Prüfung nicht mehr greift (#118)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignaturekXawEvTMN/MEksp8u2OB6KxiDpbGNZvPhivMAU2DbRzqmBrGxilRgMUJb6EExxAwJ6DU91Y/qU4iZy8FX1mqzd1ANjXFImD8bG43peKgDcAJwtQyFD/IQ1s9q9wNFNL2qjeTB9VcYDaGatAXLVE9W8zdFuJiqNNKGjcU190vB/S/i6SQgMryNKZrH87Pdd02ADgWcKIi3KyYjr3VvTruaiIrbRv3LgSns9UTXtUcpyvYKdWXQPsj1uc1tY5JpZGwKIOc4VHlxhSWXyTIPOvi5rZle2uVPsyBFT5iz48e+D8WIYidgyY5t2jaoLt7djJcYENcNAbcyz3s7BTmtC/84Q==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.1.5
Release Details
UpdatedJuly 11, 2026, 6:33 p.m.
Changelog

Added

  • Neue Referenzfelder auf der Rechnung: Vertragsnummer (BT-12) und Objekt-/Projektkennung (BT-18). Beide stehen strukturiert im E-Rechnungs-XML und als Meta-Zeilen im PDF (#41)
  • Notizen/Hinweise auf der Rechnung: frei formulierbare Textzeilen, sichtbar im PDF und als Notiz (BT-22) im E-Rechnungs-XML (#41)

Changed

  • Anrede/Einleitung und Schlusstext stehen jetzt auch im E-Rechnungs-XML (BT-22) und nicht mehr nur im PDF (#41)
  • Stornobelege übernehmen die Referenzen der Originalrechnung (Bestell-, Referenz-, Vertragsnummer, Leitweg-ID, Objektkennung)
  • Generische freie Felder (Key-Value) werden nicht weiterverfolgt; bestehende Einträge bleiben als Notizen lesbar (#41)

Fixed

  • Rechnungseditor übernimmt beim Wechsel von einer Rechnung zu „Neue Rechnung" keinen alten Formularzustand mehr (#109)
  • Esc schließt Modals auch dann, wenn der Fokus in einem Eingabefeld liegt (#107)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignaturefjPXXKL3vvb63vSpX/J8RT/tRxS0jbZyE8Sg8WN1xKKtQOZZxdQTFalX7Din8u8akVxvXup2V91d3GLfhB9x1yqNvZGRVa4kggAduDoCeO/IR6vVZxKweFw1X8KAo0Wt4ph1s7aQs8kMdsEQCfzBtwtORXG9hmmj4KUmvIWQpw9ipTvf14XvA60KEitNQf/VGSAxVIlowcq1bgvXf9CrOYMBRo7slEBcucL8fN9jfw3QgV0StjK5iemBpAJg/hMMnMhdgkSXkfEczisnVwe8u8vuz9bMXMIWhAQFWjT89IECY2UW4Lcv4Ai3A+7/tUk4b6W3pfOVggfOUTm54yeJ0w==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.1.4
Release Details
UpdatedJuly 11, 2026, 10:53 a.m.
Changelog

Added

  • Rechnungsvorschau für Entwürfe: Vorschau-Button im Editor zeigt das PDF vor dem Festschreiben. Deutlich als ENTWURF gekennzeichnet (Wasserzeichen, Banner, ohne E-Rechnungs-XML) (#94)
  • Konfigurierbares Dateinamen-Schema für erzeugte PDFs mit Platzhaltern {nummer}, {YYYY}/{MM}/{DD}, {kunde}, {typ}. Gilt einheitlich für Download, Kundenmail und DATEV-Mail, mit Live-Vorschau in den Einstellungen (#37)
  • Automatische Ablage festgeschriebener Rechnungen (inkl. Stornos) in einen Nextcloud-Ordner (auch Team-/Gruppenordner), optional mit Jahres-Unterordnern; Komfort-Ablage, kein revisionssicheres Archiv (#38)
  • Girocode: optionaler EPC-Bezahl-QR-Code (EPC069-12) neben der Bankverbindung. Banking-Apps übernehmen Empfänger, Betrag und Verwendungszweck automatisch; nie auf Stornos oder Entwurfs-Vorschauen (#79)

Changed

  • Neue Runtime-Abhängigkeit bacon/bacon-qr-code für das QR-Rendering
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureLZo7cCep3E7ce/8lmUohIZa6LI36+uaqF2y6wFukPeVjvCSxwqO84q3869FFhmq8QLYJUrysSHhVopd+5ULUtoeZ2CVUQwoKq09+BFTuxQPFRkeE9cwH94Rrp0tXCapDhEBgLaS3PEZYd4tMMzZw7Av7WwA89hH8Fy3b7JnVBk6LsZg5saPchA6ViX6Y+DW5wYHdYdp2wvZHhv9+FgMJrd19Q3n3n7dJ6XK89FUb5/Z/3K09+R0mkck7A0N2iR56C/sQr12tMPeEkyqlg+Bj3x7BVmDmawpSnwFI86TCTmvn5E5ehK0BrYufQlKuDkSgg48yRNRrldNnQ03M5Vtr/w==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.1.3
Release Details
UpdatedJuly 8, 2026, 7:11 a.m.
Changelog

Added

  • Nummernkreis-Modus: fortlaufend über Jahre vs. jährlicher Reset, umschaltbar in den Einstellungen (#39)
  • Persönlicher Bereich „Mein Kontakt": eigener Verkäufer-Ansprechpartner pro Nutzer, füllt neue Rechnungen automatisch vor (#47)
  • Einheit „Monat" für Rechnungspositionen (#76)

Fixed

  • Kontakt-E-Mail aus den Einstellungen wird auf Rechnung und E-Rechnung korrekt verwendet, statt der Nextcloud-Konto-Mail (#86)
  • Rechnungstexte: Einleitung erscheint wieder, Schlusstext steht genau einmal unten (keine Dopplung, korrekte Platzierung) (#76)

Security

  • Sicherheitsupdates der Frontend-Abhängigkeiten: dompurify, js-yaml, vite/esbuild (Advisories behoben, npm audit clean)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureGfdVd7F79t0qMXZuq31SJd3IWVykZfSbU5B9eC01Vga/lkUfdvctqYcBv3YR+xoJIr6Lpg9Ax9e+yiaf4kT3RlEJatRcezHnNUNn9+YNEionm8Wzt0y7/sJI2BlmR2aFOS9ConZWSUPO/pPyIPJwN5fWz9+k935pHNWM9eEzyEAoQ1P+xTI6kqyNu1g3I6X5mVgw6CkovFYMc3zm0Swlxvln6H/4QNQPWaJ1SY8vobqTEmkJjjKEDbZf3rvHaxUNOHoQPb1XzUio5YPZrDG8MoYCoRJEHt9oURYtAUzN+yPXN2PzmUUDqgcQ0sidv5buYMJqOTOZesQUmFQCAd+WMQ==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.1.2
Release Details
UpdatedJuly 6, 2026, 3:39 a.m.
Changelog

Added

  • Nextcloud 34 wird unterstützt (max-version auf 34 angehoben)
  • Kundenverwaltung: eigene Customer-Entität mit Erfassung, Bearbeitung und Übernahme in die Rechnung

Fixed

  • Storno als rechtssichere E-Rechnung: Korrekturrechnung mit typeCode 384 und negativen Beträgen (EN16931 / §14c UStG), Referenz auf die stornierte Rechnung (BT-25/BT-26); Beleg heißt „Stornorechnung" statt „Gutschrift" (#64, #65)
  • Storno-Dialog eindeutig beschriftet, doppeltes „Cancel" behoben (#64)
  • DATEV-Rückkanal (IMAP): RFC-2047-Q-Encoding wird versionsstabil dekodiert (PHP 8.2)

Changed

  • DATEV-Rückkanal nutzt einen eigenen schlanken IMAP-Client statt webklex/php-imap (deutlich kleineres Release, unter dem App-Store-Größenlimit) (#51)
  • Anzeigename und Marken-Strings durchgängig auf „RechnungsWerk" vereinheitlicht
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignaturemUXJDuNe+Tilo+dpUr+E737GyLaklc1NJcW9vzLpYYhWaLd+43FFRC5Cv9YyDKJsxPf0C12O19vw9sBfNxxv/UfPsEDc+ltMnmDebp0mCwsusHBF4M3CODsrB/NKrodV/oj8p0z/q43TZzYPdQZ3AzqryUrQVIGvAug2znoDd89J6uhroEDGsLoxDrj6cgpN8Y5e3MFy1wqvirArLewEDS7CmkOXhX4vLTNu/DddQvQmCWp6nlFUmG90koD05VwSCRw3FP+uuig71l4q+giN07sNEb/WqWx00y4aZ//6Svm+MbZcBEeZCvoBbl/gEAgBLSIND8hnPxkeJ61H2B9syQ==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.1.1
Release Details
UpdatedJune 25, 2026, 10:18 p.m.
Changelog

Added

  • Spendenlink (Ko-fi) in der App-Beschreibung / im App Store
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureTxuswNGbBYWD5c3Hb/XPAXczbWJGBIbZwCyLuvyWrf68iUvry5vpM98jxZ/HOO6UjERHUcOvR4mboa22aiL4gE18m4V9fEuH09pTmPQuZRCJfJNpDsERvpanhuiKB2G/vIFnVRPTnscKIQj9AEOBziIrhpmXehB/UDtvGfjg5GqRrV7OUu+I5fPztg/Mc1gHnZ7cdwpKY2ERscmXqNzXzfQND0yJKmVQ2mKMBRpspv/opYBqPvPdFcmirSMqkDu6MpjusT6o3Mr1oVzcMvByvz16YDF7lffgYRaYe8ZMLURRRfLYf349mIaZh02K6khJG41Kf6zU9745KXNYTkAnKA==
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.1.0
Release Details
UpdatedJune 25, 2026, 3:39 p.m.
Changelog

Erster öffentlicher Release im Nextcloud App Store. Rechnungen und E-Rechnungen (ZUGFeRD/EN16931) erstellen, an Kunden versenden und automatisch an DATEV übergeben.

Added

  • E-Rechnung (ZUGFeRD/EN16931): CII-XML + branded PDF/A-3 (ZugferdService), vollständiger Feldexport — Leistungsdatum/-zeitraum (BT-72/BG-14), Bestell-/Referenznummern (BT-13/14), Verkäufer-/Käufer-Ansprechpartner (BG-6/BG-9), USt-Sonderfälle (Reverse-Charge, innergemeinschaftlich, Ausfuhr)
  • DATEV-Übergabe: automatischer E-Mail-Versand der ZUGFeRD-PDF an die DATEV-Upload-Mail beim Festschreiben und beim Stornieren; optionales eigenes SMTP-Konto
  • DATEV-Rückkanal (IMAP): Background-Job wertet Empfangsbestätigungen aus (In-Reply-To-Matching), Status gesendet → bestätigt; optionaler Papierkorb-Cleanup bestätigter Quittungen (Admin-Einstellung, Default aus)
  • Verkäufer-Ansprechpartner pro Rechnung (Kaskade Rechnung → NC-Konto → Firmenkontakt)
  • Status-Anzeige als flache Icons + Legende in Liste und Editor; Einstellungen in der Navigation unten links (NC-Konvention)
  • Zahlungsbedingungen (It. 4a): Zahlungsziel (Tage), automatisch berechnetes Fälligkeitsdatum beim Festschreiben und Skonto-Hinweis — Migration v0.1.1 (payment_term_days, due_date, discount_terms) + Editor-Sektion
  • Rechnungs-Editor + Liste (It. 3): InvoicesView mit Status-Chips und InvoiceEditorView (Rechnungsdaten · Empfänger · Positionen · Steuer&Summen · Texte)
  • Editierbare Positionstabelle mit Live-Summen + USt-Aufschlüsselung (Client-Vorschau, Server autoritativ), Produkt-Übernahme aus dem Katalog, §19-konforme 0%-Erzwingung
  • Empfänger-Auswahl aus Nextcloud-Kontakten (ContactController + OCP\Contacts\IManager) mit Tipp-Vorschlägen und Auto-Befüllung
  • Lifecycle in der UI: Entwurf speichern → Festschreiben (Bestätigung, endgültige Nummer, read-only) → Stornieren (Stornobeleg)
  • l10n de/en erweitert (120 Keys)

Added (frühere Iterationen)

  • Stammdaten + Produktkatalog (It. 2): ProductService/ProductController (/api/v1/products CRUD) und SettingsController (/api/v1/settings)
  • Frontend ProductsView (Tabelle + Editor-Modal) und SettingsView (gegliedertes Formular: Firma/Bank/Branding/Nummernkreis/Steuer/Versand/Standardtexte) mit §19-Bestätigungsdialog und Live-Vorschau der Rechnungsnummer
  • Pinia-Stores, typisierter API-Client, Geld-Helfer (Cent↔€), l10n de/en
  • Unit-Tests für ProductService
  • (Logo-Auswahl via NC-Files-Picker bewusst auf It. 4 / PDF-Branding verschoben)
  • Initiale App-Grundstruktur (Vue 3 + Vite + @nextcloud/vue 9, PHP 8.2 OCP)
  • App-Navigation mit Platzhalter-Views: Rechnungen, Produkte, Einstellungen
  • Datenmodell + Persistenz-Schicht: Entities/Mapper für Invoice, InvoiceItem, Product, Settings (Geld in Cents, Steuer in Basispunkten, owner-scoped)
  • DB-Migration v0.1.0 (4 Tabellen)
  • InvoiceCalculator (Zeilensummen, Steueraufschlüsselung pro Satzgruppe, Rechnungsnummern-Formatierung) mit Unit-Tests
  • InvoiceService mit Lifecycle (Entwurf → Festschreiben → Storno) und SettingsService (per-Owner-Stammdaten, jahresbasierter Nummernkreis)
  • REST-API /api/v1/invoices (CRUD + /commit, /cancel)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureHSEU9FkRh3w5EkQS8knKf2Odr2rIzhq8NqjYmzgijhzpFtIDq3XM1Cs5+cUyKzgGJf1497jAmVwwUb9QS3aCURWoCPBWcoZy2HOqy5V9jdhNgF5r1+hzZrYZvwKkriR4gyZAtM4WnB1t9syVYBQ3E87/8kdHwNKK9hqbZh5Hf61ovhWn0A8Q9i5+A9FK79M1zP/JX+mHio4QAxIVIcbjmmG+MDPsugayfIGmBEYvQCxFqeruOoizXwnbCg2CSqtEK5PxtmJPklZI53+TuLvDaXHNuCQO7QYlCRNQHixoZzWWJj4ap0KKf3KF23UiiKG9ncPIbD7z1Z0tu2KizTX9Qw==
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0

Nextcloud 32

RechnungsWerk 0.5.2
Release Details
UpdatedAug. 27, 2026, 12:40 p.m.
Changelog

Zwei Verbesserungen aus Anwender-Feedback: der saubere Einstieg in eine bereits laufende Rechnungsnummern-Folge und ein leichter auffindbarer Weg, hinterlegte Produkte in eine Rechnung zu übernehmen.

Added

  • Die nächste Rechnungsnummer lässt sich setzen. In den Einstellungen kann der Startwert der laufenden Nummer vorgegeben werden, um an eine bestehende Nummernfolge anzuknüpfen (z. B. bei „RE-2026-0143" einsteigen). Nummern lassen sich nur vorwärts setzen, nie unter eine bereits vergebene — die gesetzliche Einmaligkeit nach §14 UStG bleibt gewahrt (#270)

Changed

  • Produkte lassen sich bei der Rechnungserstellung direkt suchen und einfügen. An die Stelle des unauffälligen „Aus Produkt"-Menüs tritt ein Suchfeld „Produkt suchen und einfügen …" in der Positions-Leiste: Tippen schlägt passende Produkte mit Preis und Einheit vor, die Auswahl fügt die Position ein. Frei getippte Positionen bleiben unverändert möglich (#273)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignaturejGh8TYPrOPy5WO3V5b6CX5tbqBO1rIOdSHPCG+5m2gmZu9J9gAbEUkckUBoYR956iYNOopuyZ4WvkfMwnkhmkLDJGDrd439NnB80xP7GWpG0Tx2LpVSEvGbIldp0YqryG3TWBeIuCwrAN7HKarAPImi8YPN0H1qFAB4zK/BKpvKiDGjXN211AQWFD7T5d9gLw7p1GADAdxD0xHUS51fZGGxpmBEau4EgeoBaLIrKnv7udUcYljpgpVrJjSUabx2onsPdB3BZz5TmgYJ+YVRxZQdkdyvBvLFj3xHujD9MQgAPJZVpktixXx2041PuD0Z/q+nQ7NPPxcIRyeBAeIHi1A==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.5.1
Release Details
UpdatedAug. 26, 2026, 9:04 a.m.
Changelog

Drei Verbesserungen aus der praktischen Nutzung: ein häufig gewünschter kleiner Komfort beim Bezahlt-Markieren, ein Anzeigefehler bei der DATEV-Spalte und — am wichtigsten — eine Speicher-Falle in den Einstellungen, die beim Einrichten wie Datenverlust wirken konnte.

Added

  • Das Zahldatum lässt sich nachträglich anpassen. Der Klick auf die Bezahlt-Checkbox setzt weiterhin sofort das heutige Datum. Neu: Die Anzeige „bezahlt am {Datum}" in der Rechnungsliste ist jetzt anklickbar und öffnet ein kleines Datumsfeld, vorbelegt mit dem gesetzten Datum — so lässt sich eine Zahlung, die an einem anderen Tag einging, ohne Umweg korrigieren (#257)

Fixed

  • Die DATEV-Spalte erscheint jetzt sofort beim Öffnen der Rechnungsliste. Bisher war sie an die asynchron nachgeladenen Einstellungen gebunden und fehlte beim Kaltstart, bis dieser Fetch durch war. Jetzt hängt die Anzeige an den mit der Liste gelieferten DATEV-Status, sodass die Icons zeitgleich mit den Rechnungen erscheinen (#237)
  • Speicherfehler in den Einstellungen sind nicht mehr unsichtbar. Der Server lehnt beim Speichern die gesamte Anfrage ab, wenn ein einziges Feld ungültig ist (z. B. eine unvollständige E-Mail-Adresse). Die Fehlermeldung stand oben, der Speichern-Button unten — wer unten klickte, sah nichts und hielt das Speichern für erfolgt. Jetzt scrollt jede Fehlermeldung in den sichtbaren Bereich, und die drei E-Mail-Felder werden schon vor dem Absenden geprüft und namentlich benannt (#265)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureIMysmv7wUbyl/PYiLs+mWYhMZB44jjzTfGNUDvqMAcFg8kYKa09j3FVhSZz/LUmA/g2mUFgDj0SqMcvnoszwH9hGX0aRJ/CdPGN27+SDuWb37gIJbVFeRkv1RsWW3h8wFftMqtzGlItXYYhvsxkh3DTEVW9SC5V+brxf3yfZJQYeTv6rmHTRrRWjXxgt7bU0FnEhcxF89epf6pFDezdDfyiqwcJFJMwgA4LlRyl2mHABqXpQ4UpUWZ/Z1rLvJVA+1YXBCjaowNE9Fv2zBQZjnDNtUZjObG/gGnsWn+j1/O5BGCoFOPsV25hV+z1jfL8b91zRWAozNwux/N2cZBlOXQ==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.5.0
Release Details
UpdatedAug. 14, 2026, 12:20 p.m.
Changelog

Ein Release für alle, die die App auf Englisch bedienen: Fehlermeldungen kamen bisher auf Deutsch zurück, und fünf Texte blieben trotz vorhandener Übersetzung deutsch. Dazu zwei Anzeigefehler, die von außen gemeldet wurden, und eine Integritätsmeldung, die seit der ersten PDF-Erzeugung auftrat.

Added

  • Fehlermeldungen aus dem Backend sind übersetzbar. IL10N wurde bisher an genau einer Stelle benutzt, die übrigen 48 benutzersichtbaren Meldungen waren hart deutsch. Die Zahlenprüfung (NumberInput) wirft dafür jetzt prosafrei: die Ausnahme trägt nur den Sachverhalt, den Satz formuliert eine eigene Klasse mit IL10N. Damit bleibt die Klasse statisch und deckungsgleich mit ihrem Frontend-Zwilling (#235)

Fixed

  • Das freie Einheitenfeld war neben der Einheitenauswahl nur noch als Strich zu sehen. Beide Elemente stehen mit voller Zellenbreite in einer Zelle, die nicht umbrechen kann — welches von beiden zusammenfällt, entschied der Browser. Das freie Feld sitzt jetzt in der zweiten Zeile neben der Beschreibung, wo der Platz ohnehin vorhanden ist; Spaltenbreiten und Zeilenhöhe bleiben unverändert. In der schreibgeschützten Ansicht erscheinen beide Felder nur noch, wenn sie einen Wert tragen. Gemeldet von @myssv (#238)
  • Die Integritätsprüfung meldete nach jeder PDF-Erzeugung zwei zusätzliche Dateien. dompdf legte seinen Font-Cache innerhalb des eigenen Pakets ab, also in einem signierten Verzeichnis. Der Cache liegt jetzt unter dem Nextcloud-Temp-Pfad; ist der gemeinsame Ordner nicht benutzbar, wird auf einen Ordner je Aufruf ausgewichen statt zurück in die Auslieferung (#241)
  • Fünf Texte erschienen in der englischen Oberfläche auf Deutsch, obwohl die Übersetzung vorhanden war: vor den Auslassungspunkten steht im Quellcode ein geschütztes Leerzeichen, in den Übersetzungsdateien ein normales. Beim Draufschauen sind beide Zeichenketten identisch, deshalb prüft das jetzt eine Maschine. Acht fehlende DATEV-Texte ergänzt, fünfzehn Altlasten entfernt (#234)
  • Ordner- und Logoauswahl in den Einstellungen liefen über OC.dialogs, das seit Nextcloud 30 veraltet ist und beim Klicken gebrochen wäre, nicht beim Bauen. Ersetzt durch den FilePicker aus @nextcloud/dialogs; ein Abbruch erzeugt keine Fehlermeldung mehr (#221)

Changed

  • Das JavaScript-Bundle wird als ES-Modul ausgeliefert statt als iife. Der FilePicker lädt seine Komponente per dynamischem Import, was Code-Splitting erzwingt — das iife-Format kann das nicht. Das alte Bundle wird beim Update entfernt (#221)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureM+2YdsR2Knq7wTHEjM3DBFiP+EB7ANJVAYlAN40R0gm/xh9gG9W9ugFL79xejoTiB+HRhCEQwWU/YSjOI8BnDdFvzqxlDcpCrlrU/bu3roGuG4fPDbdOGkWnnAOpRI7Y5fzh6Xqjs7uRPqbI9ETvThZIeX1nZAT54oVOB1wZjuV2jtMLoKjquwjCCVWuaKC0ifZ3x+g4Zb/vS0L2EvRg7Dl1XVS3RRnkSCrC5nnDS6UGDDCZs17jXJcnJPCs2YDt375pa6IMNTM2lCL775gBnkB8mqgH6Yzj1TYtlAtjsARI3yPhlW2lFT4Je/apOfZFB3tP/RyzHv3LXrJclr9EAQ==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.4.1
Release Details
UpdatedAug. 11, 2026, 1:04 p.m.
Changelog

Mengen und Preise blieben beim Speichern nicht zuverlässig stehen. Gemeldet von @yummiweb (#223), und beim Prüfen kam ein zweiter Fall derselben Ursache heraus, der Beträge schon beim ersten Speichern verfälschte.

Fixed

  • Mengen und Preise bleiben über Speichern und Wiederöffnen unverändert. Die Menge steht mit drei Nachkommastellen in der Datenbank, wird also als „1.000" geliefert, wobei der Punkt ein Dezimaltrennzeichen ist. Dieser Wert lief unverändert ins Eingabefeld, wo er seit 0.3.1 regelkonform als deutsche Tausendertrennung gelesen wurde: aus der Menge 1 wurde beim nächsten Speichern 1000, aus 10,00 € Zeilensumme 10.000,00 €. Gespeicherte Werte werden jetzt in die Schreibweise des Feldes gewandelt, statt ungewandelt hineinzulaufen. Nebenbei verschwindet damit die alte Anzeige-Merkwürdigkeit, dass die Menge 1 als „1.000" dastand (#223)
  • Preise mit drei Nachkommastellen wurden beim ersten Speichern um den Faktor 1000 verfälscht. Das Preisfeld war ein Zahlenfeld des Browsers und lieferte deshalb immer Maschinenformat mit Punkt: 1,234 € kam als „1.234" an und wurde serverseitig deutsch als 1.234,00 € gelesen. Preis und Menge sind jetzt beide Textfelder in deutscher Schreibweise und werden von derselben Regel ausgewertet. Wer die Regelung mit vier Nachkommastellen nutzt, sollte seine Standardpreise und offenen Entwürfe prüfen (#223)
  • Die Beschriftung des aktiven Filters über der Rechnungs- und Angebotsliste war praktisch unsichtbar: heller Text auf hellem Grund, gemessener Kontrast 1,00. Ursache war die Nextcloud-Variable --color-primary-element-text-dark, die nicht „dunkler Text" bedeutet, sondern „Text für das dunkle Primärelement", und auf Nextcloud 34 zu fast Weiß auflöst. Jetzt 13,63 (#217)

Changed

  • Zahleneingaben werden nur noch in deutscher Schreibweise gelesen: das Komma trennt die Nachkommastellen, der Punkt die Tausender. Englische und gemischte Schreibweisen wie „12.5" oder „1,234.5" werden jetzt mit einer erklärenden Meldung abgelehnt, statt anhand des letzten Trennzeichens gedeutet zu werden. Diese Deutung war die Ursache des Fehlers oben, denn sie lässt „1.234" zwischen 1234 und 1,234 offen. Im Preisfeld sind dadurch die Pfeiltasten des Browsers entfallen; ein negativer Preis wird weiterhin abgelehnt (#223)
  • Der Entwicklungs-Build verlangt jetzt Node ^22.14 || ^24 || >=26. Das betrifft nur, wer die App selbst baut; für den Betrieb ändert sich nichts. Nachtrag zu 0.4.0, wo die Anforderung mit angehoben wurde, ohne hier zu stehen
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureXjjN6OT1TGj43VVjBE499YLk0zjaHoIVVgzfalJ5OqRQeMf+sg8eSbV11ThHvtYUO9tJuYk1uWHFM835CQT+a3Gnsj9n77K1HjoEomDIIgT/2iAoBmeikAmMJjDu4Y/8nTqC4EHThr3WhIYjW0KPglFJyFfxVrbTcckt5AA0DZG1UHbbOErTHoW2jgeD/sLI3Xtt/sR3TjRw+o3iHiy8FFtsYvQnOB42Jx6G2U1D9o7eEp7xxOQdF6jNcZ5KsNev9nOIt8vOlfoV3GSNiEvbvl4LkoUPP0YjWZfSayKzfzy75LJtvh9AzVFPPC1k1g6PGJSvMoqazIWQQdEglwVRHA==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.4.0
Release Details
UpdatedAug. 8, 2026, 4:18 p.m.
Changelog

Festgeschriebene Rechnungen sind jetzt wirklich unveränderlich. Bisher entstand jedes PDF bei jedem Zugriff neu, aus den zu diesem Zeitpunkt gültigen Einstellungen. Eine bereits ausgestellte E-Rechnung konnte sich dadurch nachträglich ändern und ungültig werden.

Changed

  • Der Beleg einer festgeschriebenen Rechnung wird beim Festschreiben abgelegt und ab dann ausgeliefert, statt bei jedem Zugriff neu zu entstehen. Damit bekommen Download, Kundenversand, DATEV-Übergabe und die Ablage in Nextcloud Files garantiert dieselbe Datei; vorher konnten zu einer Rechnung drei verschiedene Dokumente existieren. Der Beleg ist nur einmal beschreibbar, seine Prüfsumme steht am Datensatz, und der Dateiname ist mit eingefroren. Die Ablage liegt im app-eigenen Speicher und damit in jeder Instanz-Sicherung, nicht im Dateibaum des Nutzers, wo sie versehentlich zu ändern wäre (#181)
  • Der Kleinunternehmer-Fall steht jetzt an der Rechnung statt in den Einstellungen. Ein Wechsel zwischen Kleinunternehmerregelung und Regelbesteuerung ist ein völlig normaler, einmaliger Vorgang. Er machte vorher aus jeder älteren 19-%-Rechnung rückwirkend eine steuerfreie: das eingebettete XML wies CategoryCode E und 0,00 % aus, bei weiterhin ausgewiesenen 19,00 € Steuer. Ein solches Dokument widerspricht sich selbst und verletzt EN 16931 (#181)
  • Bestandsrechnungen werden im Hintergrund nachgezogen, in Häppchen und ohne Wartungsmodus. Nachträglich erzeugte Belege sind als solche gekennzeichnet und im Rechnungseditor ausgewiesen: sie stimmen inhaltlich, entsprechen im Aussehen aber dem heutigen Stand und nicht dem, was der Kunde damals bekommen hat. Für Bestandsrechnungen ist das Original-Aussehen nicht wiederherstellbar (#181)

Fixed

  • Einzelpreise werden serverseitig aus der Eingabe berechnet und geprüft. Bisher rechnete allein der Browser und schickte die fertige Zahl. Dem Server war nicht anzusehen, ob 95 als 0,0095 € oder als 95 € gemeint war. Betrifft Rechnungspositionen und den Standardpreis im Produktkatalog (#180)
  • Ein Storno übernimmt den Steuerfall der Original-Rechnung statt der aktuellen Einstellungen. Sonst hätte die Gutschrift zu einer 19-%-Rechnung nach einem Wechsel der Besteuerungsform 0 % ausgewiesen (#181)

Abhängigkeiten und Infrastruktur

  • phpmailer auf 7.1.1 angehoben. Der Mailversand wurde damit real geprüft, der Anhang bleibt der eingefrorene Beleg
  • Frontend-Werkzeuge und Bibliotheken aktualisiert: vite 8, @nextcloud/l10n 3, vue-router 5, pinia 4, @nextcloud/vue 9.9. Der Sprung auf vue-router 5 war ohne pinia 4 nicht möglich und beseitigt zugleich eine doppelte Router-Version im Abhängigkeitsbaum
  • GitHub-Actions auf checkout 7, setup-node 7 und github-script 9
  • Dependabot zielt jetzt auf develop und gruppiert Minor- und Patch-Updates
  • Der Workflow, der Issues beim Merge nach develop schließt, wertet Code in PR-Texten nicht mehr als Anweisung
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
Signaturekg15ifuNkkeQMOsP5v3QthE3KZvAghdIGVoEUZ0WySHi9mshrzqNhdoAtHfS00ZCQlmKuN/VXvX/CjQP2OWwvMYQB91s4ts3theFM6fE7UNwnc4RfF8GSO9XJNofCvnjKoGBMgeFkJr3VyvtCGYKvWXxqoxcsDgit7r71AAXMlKGxFfXuZO8+czcs0nwKBpMKuY4hvKoB/ls7ZpxLafSHUmBUjjLmMq3cEEuVgMCr0UYPID1DxETu2PupVFQ61gh8FMzo8jG3Bc0BEswToJHZJi+XRpNMOlesg/tovaT2WZOXXBagyxXb69e4YHMFavgu0nSIeBySKac0hKLumO3Tg==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.3.1
Release Details
UpdatedAug. 7, 2026, 9:12 p.m.
Changelog

Fehlerbehebungen aus Rückmeldungen von Nutzern. Zwei der Fehler erzeugten stillschweigend falsche Werte auf Rechnungen, die an Kunden gehen.

Fixed

  • Kontakte aus dem Nextcloud-Adressbuch lassen sich wieder übernehmen. Das vCard-Feld für das Land enthält laut Standard einen frei geschriebenen Namen, iOS und Outlook tragen dort „Deutschland" oder „Germany" ein. Der Wert lief ungeprüft in eine Spalte für den zweistelligen Ländercode, wodurch das Speichern des Entwurfs mit einem Fehler 500 abbrach und keine Vorschau mehr erzeugt werden konnte. Ländernamen werden jetzt in beiden Sprachen erkannt und umgesetzt, inklusive Schreibvarianten wie „Oesterreich" (#167)
  • Mengen und Einzelpreise in deutscher Schreibweise werden korrekt gelesen. Bisher brach eine achtstellige Menge wie 99.999.999 mit einem Fehler 500 ab, und eine Eingabe von 1.000 wurde ohne jeden Hinweis als 1 gespeichert, was die Rechnung um den Faktor 1000 verfälschte. Dasselbe traf den Einzelpreis, dort ohne Fehlermeldung als Warnsignal. Nicht lesbare Eingaben werden jetzt mit einer verständlichen Meldung abgelehnt statt geraten (#157)
  • Die Spaltenbreiten der Positionstabelle passen wieder zum Inhalt. Seit 0.3.0 waren alle Spalten gleich breit, wodurch die Bezeichnung viel zu früh umbrach, während die USt-Spalte Platz verschwendete (#157)
  • Die Kopfzeile der Positionstabelle bleibt bei jeder Akzentfarbe lesbar. Die Schrift war fest weiß und verschwand auf hellen Firmenfarben; sie wechselt jetzt auf Schwarz, wenn Weiß nicht mehr trägt. Die gewählte Farbe selbst bleibt unverändert (#171)
  • Das Auswahlfeld für die Akzentfarbe öffnet nicht mehr den Farbdialog des Betriebssystems, der sich unter macOS nicht wieder schließen ließ (#171)
  • Das ausgelieferte JavaScript enthält keinen Entwicklungscode mehr. Das Bundle ist dadurch rund 100 KB kleiner und die Konsole bleibt frei von Hydrations- und Prop-Warnungen (#168)

Added

  • Ein Musterstreifen in den Einstellungen zeigt beim Wählen der Akzentfarbe, wie die Kopfzeile der Positionstabelle auf der Rechnung aussehen wird, inklusive der daraus folgenden Schriftfarbe (#171)
  • Die Spalte für die Bezeichnung heißt im PDF jetzt wie im Editor „Bezeichnung" statt „Beschreibung" (#157)

Security

  • dompdf auf 3.1.6 angehoben. Die Version schließt laut Release Notes gemeldete Sicherheitslücken; dompdf erzeugt das Rechnungs-PDF

Changed

  • Weitere Abhängigkeiten aktualisiert: dompurify, fast-xml-parser, immutable, postcss, fast-uri, brace-expansion, js-yaml
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureMfyGkAWLpC5IS7BOHlL1YVoOTLrh/IBR5gkLSv7hFwhB+0tQnp6uATLUlDD46Bf2dolSg5oeyL88GDPp/jOp9XIqn16w8PVMkhEVhjPZyo7K0GxFJNf1G8uhs/346/zOtyM3KQBFFt28JUns1p17OR2TyihOOa7cS9rP+A1ghML3L/DURiepOK8zNam0tPTvc3bJU6YShsSaOStdp6VEwcPR/dQqGuLggyzT5sXV3nWDOYGpHyPubgPgUmKQ5TvvdeD6lxQhhPQTX9WJNps1Qpi1xJRs8x78DUAKU5xg1gcNlLuWB9XCZUji9X1s5yiw6HBLcI3A++iNR4Rqkl1XSw==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.3.0
Release Details
UpdatedJuly 23, 2026, 12:36 p.m.
Changelog

Added

  • Textbausteine: eine verwaltete Bibliothek wiederverwendbarer Anrede-/ Einleitungs- und Schlusstexte, getrennt für Rechnungen und Angebote. Je Dokumenttyp und Textbereich gibt es genau einen Standard-Baustein, der neue Dokumente vorbefüllt; weitere Bausteine lassen sich im Editor per Klick einfügen. Neuer Menüpunkt „Textbausteine" (#126, #141)
  • Kleinunternehmer-Hinweis (§ 19 UStG): der Hinweistext auf der Rechnung ist jetzt frei konfigurierbar (#141)
  • Datums-Variablen {MM} (Monat) und {DD} (Tag) für die Rechnungs- und Angebotsnummer, zusätzlich zu {YYYY}/{YY}/{####} (#143)
  • Weitere Einheiten zur Auswahl: kWh, Liter, Meter, Kilometer, m², Gramm, Tonne (gültige UN/ECE-Codes, E-Rechnung bleibt valide) (#146)
  • Einzelpreise mit bis zu 4 Nachkommastellen (z. B. Energie 0,3456 €/kWh); die Rundung auf ganze Cent erfolgt einmal beim Zeilenbetrag, Summen bleiben zweistellig (#147)
  • Freitext-Einheiten: frei benannte Einheiten (z. B. „Personen", „Sitzung") für Editor und PDF; die eingebettete E-Rechnung nutzt weiterhin einen gültigen generischen Einheitencode (#153)

Changed

  • Kleinunternehmer (§ 19 UStG): Rechnungen und Angebote zeigen keine „0 %"-USt- Spalte und keine „Steuerfrei 0,00 €"-Zeile mehr; da netto = brutto erscheint nur der Gesamtbetrag mit dem § 19-Hinweis. Die eingebettete XML bleibt unverändert korrekt (Kategorie „E") (#144)
  • Bei einem Angebot ist der Leistungszeitraum nicht mehr als § 14-UStG- Pflichtangabe ausgewiesen, sondern als optionaler „Geplanter Leistungszeitraum"
  • Einheitliche Bedienung der Verwaltungslisten (Textbausteine, Kunden, Produkte): Zeile anklickbar zum Bearbeiten, direkte Icon-Aktionen statt „…"-Menü

Fixed

  • Lange Produktnamen und Beschreibungen sprengen die Positionstabelle im PDF nicht mehr; die Spalten bleiben stabil und die Einheit bricht nicht mehr in eine neue Zeile um (#145)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
Signatureiz4D936PYC2hirNT+Gu01alqM2CG00jSDepS0W3no3KGsYHNuzeIFkvWuJ5bvi+GS2dz/4L/76JnC+p/hULNXubNHJR181yt2yN/B4yK2HhK8QYJDjD0UAQjePNt/8424fT4nYw4hr6CsCrimhwb711WuoNE1lgGdQ6hgjeg2pf4uTturWl12ludMPseDlg/UBzejSx1gxDM1yy3RSVtNnE9KQqveRzMk7BUBtHBraVEEHFx4gpbVsVWvqaCKTEFsSb7HYPMKxFajdQhN5NX7BzilL0jtS+W2UHIEe+WWtbcmY55jfe9CkMxQeoreD4HcKdHfyaqU2kCXTcujnblGA==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.2.0
Release Details
UpdatedJuly 18, 2026, 7:55 a.m.
Changelog

Added

  • Angebote: Angebote mit eigenem Nummernkreis erstellen, festschreiben und als PDF versenden. Ein eigener Menüpunkt „Angebote" führt zu einer eigenen Liste mit Status (Offen, Abgelaufen, Angenommen, Abgelehnt, Übernommen, Revidiert). Angebote haben ein „Gültig bis"-Datum (§ 148 BGB) und eine optionale Freibleibend-Kennzeichnung (§ 145 BGB), die als Hinweis auf dem PDF erscheint. Der Angebots-Nummernkreis (Standard AN-{YYYY}-{####}) ist in den Einstellungen unabhängig von den Rechnungen konfigurierbar (#111)
  • In Rechnung übernehmen: ein festgeschriebenes Angebot lässt sich per Knopfdruck in einen neuen Rechnungs-Entwurf überführen – Positionen und Empfänger werden übernommen, die Rechnung referenziert die Angebotsnummer, das Angebot wird als „übernommen" markiert (#111)
  • Angebot revidieren: aus einem festgeschriebenen Angebot lässt sich eine überarbeitbare Revision erstellen. Sie erhält beim Festschreiben eine Revisionsnummer (AN-…-1, -2, …), das Ursprungsangebot wird als „revidiert" markiert (#111)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureSut+zU8cXNarPEIMOdjzO6Vyt3zPfCjSliR6aqSC+JHI+CIm8DlB/lyeDsWuCLaG9K6AQ/43KaiWW1I9f4kqWlUU6t2sBnkafY9FC1F4Sl8j8Ku63t9rBmi9jpLaV5S4Lu6R4Tu8QzRF4ozFDnw9bB2N3+gRl5YfuAzAQa49q67qe+C5wN9ietNZoHicl1l5q9tpNuAs+Q2t9lva8OBNToqR1sKLjVdb3saAG1U+4MrmPTPz0EsU8vGo7oD3agYndSw9RaeXbxMTuDMSHSbLCOZEVf5P9Ns594IwKZ5JsAbCEkvtMQl64vKY7+SWLojj7+p3b7e31Wkhc/XUVmvIgg==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.1.8
Release Details
UpdatedJuly 17, 2026, 8:28 a.m.
Changelog

Added

  • Zahlungsstatus verfolgen: Rechnungen lassen sich in der Liste als bezahlt markieren; der Status (offen, überfällig, bezahlt) ist auf einen Blick sichtbar – überfällige Rechnungen sind hervorgehoben, bezahlte gedämpft dargestellt. Eine Filterleiste (Alle/Offen/Überfällig/Bezahlt) zeigt zusätzlich die Summe der offenen Beträge. Ein Standard-Zahlungsziel in den Einstellungen belegt neue Rechnungen vor (#117)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignaturesXhEzBMcXpQoQRWbU5Ky7yfzsZEyH5Ll1kI7EJKXftrcsmh1YwvMGgtcbOfeFsPO6mrbq/jzFYuX2lWJazredJEeLSSspQeHTvcuCXSY4ne25hOpuVtTux7bD8fJLGAiyQSvuJzGWXfwp6TSlTM0wdlU1TyLdR8w/dWyVLsQf9367mbQE3yfefnI0CT1G0u+TTPQsDMiy0Ua5njgIJRhpl6giGwn9pjDzIJ5OmYDkdm70c7rFDS1VqUoXAvMo9oEjJthD2UQhoBQY0A+iHk4b8aRgsn6zbBTSxj+NcOA0Qk0ZeYspQJ4oRbSUT5DymHnREzSLMq9n0n17dM3R2TnVw==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.1.7
Release Details
UpdatedJuly 15, 2026, 7:51 p.m.
Changelog

Added

  • Rechnung duplizieren: eine bestehende Rechnung lässt sich per Knopfdruck in der Rechnungsliste als Vorlage für eine neue, bearbeitbare Rechnung übernehmen. Empfänger, Positionen, Referenzen, Notizen und Textbausteine werden kopiert; die neue Rechnung startet als Entwurf ohne Nummer. Stornobelege sind davon ausgenommen (#124)

Fixed

  • Kunde anlegen: Das Speichern schlug fehl, sobald ein Zahlungsziel gesetzt war (#122)
  • Das DATEV-„gesendet"-Symbol in der Rechnungsliste wird nur noch angezeigt, wenn die DATEV-/IMAP-Anbindung eingerichtet ist. Ohne IMAP-Konfiguration lief der automatische Abgleich ohnehin nie, sodass der Status sonst dauerhaft ohne Wirkung sichtbar blieb (#127)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureJELX2endgOdkGdfh2w6fY8wd4eys440C0bemzaAVBhxT4m0sRnRYECDZMoUSv69nz6V5VOe5hTgg3l2bGFh0bzBJ0ucovrtDhy9+XXeLJUHTIgw+f/6R8OG6t+GrsJAglZMCgr1adEUMfhBa+bh09eNyPgvVQ8Jxqj0J7a99PIFQdhimYN+K4MscgCf820b/wFX1zUhT+4WxzXor9rl1Iw07q+4EZiBlT1sESS3dPvNcPYM94uyijiCa3kC+EhA4XiKXr/HkIQmLk0Plor+mQv/Gh0V9M6OkFOdOzNAUwxuDa8X2eWYUIPbE9P4bV/83gogZpUZIDMDUj4grSfB3Aw==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.1.6
Release Details
UpdatedJuly 13, 2026, 8:39 a.m.
Changelog

Fixed

  • App-Installation auf Nextcloud 31 und 32 schlug fehl mit „Primary index name on 'oc_rechnungswerk_invoice_item' is too long". Die unterstützten Datenbanken (SQLite/MySQL/PostgreSQL) sind jetzt in der info.xml deklariert, wodurch Nextclouds Oracle-Namenslimit-Prüfung nicht mehr greift (#118)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignaturekXawEvTMN/MEksp8u2OB6KxiDpbGNZvPhivMAU2DbRzqmBrGxilRgMUJb6EExxAwJ6DU91Y/qU4iZy8FX1mqzd1ANjXFImD8bG43peKgDcAJwtQyFD/IQ1s9q9wNFNL2qjeTB9VcYDaGatAXLVE9W8zdFuJiqNNKGjcU190vB/S/i6SQgMryNKZrH87Pdd02ADgWcKIi3KyYjr3VvTruaiIrbRv3LgSns9UTXtUcpyvYKdWXQPsj1uc1tY5JpZGwKIOc4VHlxhSWXyTIPOvi5rZle2uVPsyBFT5iz48e+D8WIYidgyY5t2jaoLt7djJcYENcNAbcyz3s7BTmtC/84Q==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.1.5
Release Details
UpdatedJuly 11, 2026, 6:33 p.m.
Changelog

Added

  • Neue Referenzfelder auf der Rechnung: Vertragsnummer (BT-12) und Objekt-/Projektkennung (BT-18). Beide stehen strukturiert im E-Rechnungs-XML und als Meta-Zeilen im PDF (#41)
  • Notizen/Hinweise auf der Rechnung: frei formulierbare Textzeilen, sichtbar im PDF und als Notiz (BT-22) im E-Rechnungs-XML (#41)

Changed

  • Anrede/Einleitung und Schlusstext stehen jetzt auch im E-Rechnungs-XML (BT-22) und nicht mehr nur im PDF (#41)
  • Stornobelege übernehmen die Referenzen der Originalrechnung (Bestell-, Referenz-, Vertragsnummer, Leitweg-ID, Objektkennung)
  • Generische freie Felder (Key-Value) werden nicht weiterverfolgt; bestehende Einträge bleiben als Notizen lesbar (#41)

Fixed

  • Rechnungseditor übernimmt beim Wechsel von einer Rechnung zu „Neue Rechnung" keinen alten Formularzustand mehr (#109)
  • Esc schließt Modals auch dann, wenn der Fokus in einem Eingabefeld liegt (#107)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignaturefjPXXKL3vvb63vSpX/J8RT/tRxS0jbZyE8Sg8WN1xKKtQOZZxdQTFalX7Din8u8akVxvXup2V91d3GLfhB9x1yqNvZGRVa4kggAduDoCeO/IR6vVZxKweFw1X8KAo0Wt4ph1s7aQs8kMdsEQCfzBtwtORXG9hmmj4KUmvIWQpw9ipTvf14XvA60KEitNQf/VGSAxVIlowcq1bgvXf9CrOYMBRo7slEBcucL8fN9jfw3QgV0StjK5iemBpAJg/hMMnMhdgkSXkfEczisnVwe8u8vuz9bMXMIWhAQFWjT89IECY2UW4Lcv4Ai3A+7/tUk4b6W3pfOVggfOUTm54yeJ0w==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.1.4
Release Details
UpdatedJuly 11, 2026, 10:53 a.m.
Changelog

Added

  • Rechnungsvorschau für Entwürfe: Vorschau-Button im Editor zeigt das PDF vor dem Festschreiben. Deutlich als ENTWURF gekennzeichnet (Wasserzeichen, Banner, ohne E-Rechnungs-XML) (#94)
  • Konfigurierbares Dateinamen-Schema für erzeugte PDFs mit Platzhaltern {nummer}, {YYYY}/{MM}/{DD}, {kunde}, {typ}. Gilt einheitlich für Download, Kundenmail und DATEV-Mail, mit Live-Vorschau in den Einstellungen (#37)
  • Automatische Ablage festgeschriebener Rechnungen (inkl. Stornos) in einen Nextcloud-Ordner (auch Team-/Gruppenordner), optional mit Jahres-Unterordnern; Komfort-Ablage, kein revisionssicheres Archiv (#38)
  • Girocode: optionaler EPC-Bezahl-QR-Code (EPC069-12) neben der Bankverbindung. Banking-Apps übernehmen Empfänger, Betrag und Verwendungszweck automatisch; nie auf Stornos oder Entwurfs-Vorschauen (#79)

Changed

  • Neue Runtime-Abhängigkeit bacon/bacon-qr-code für das QR-Rendering
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureLZo7cCep3E7ce/8lmUohIZa6LI36+uaqF2y6wFukPeVjvCSxwqO84q3869FFhmq8QLYJUrysSHhVopd+5ULUtoeZ2CVUQwoKq09+BFTuxQPFRkeE9cwH94Rrp0tXCapDhEBgLaS3PEZYd4tMMzZw7Av7WwA89hH8Fy3b7JnVBk6LsZg5saPchA6ViX6Y+DW5wYHdYdp2wvZHhv9+FgMJrd19Q3n3n7dJ6XK89FUb5/Z/3K09+R0mkck7A0N2iR56C/sQr12tMPeEkyqlg+Bj3x7BVmDmawpSnwFI86TCTmvn5E5ehK0BrYufQlKuDkSgg48yRNRrldNnQ03M5Vtr/w==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.1.3
Release Details
UpdatedJuly 8, 2026, 7:11 a.m.
Changelog

Added

  • Nummernkreis-Modus: fortlaufend über Jahre vs. jährlicher Reset, umschaltbar in den Einstellungen (#39)
  • Persönlicher Bereich „Mein Kontakt": eigener Verkäufer-Ansprechpartner pro Nutzer, füllt neue Rechnungen automatisch vor (#47)
  • Einheit „Monat" für Rechnungspositionen (#76)

Fixed

  • Kontakt-E-Mail aus den Einstellungen wird auf Rechnung und E-Rechnung korrekt verwendet, statt der Nextcloud-Konto-Mail (#86)
  • Rechnungstexte: Einleitung erscheint wieder, Schlusstext steht genau einmal unten (keine Dopplung, korrekte Platzierung) (#76)

Security

  • Sicherheitsupdates der Frontend-Abhängigkeiten: dompurify, js-yaml, vite/esbuild (Advisories behoben, npm audit clean)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureGfdVd7F79t0qMXZuq31SJd3IWVykZfSbU5B9eC01Vga/lkUfdvctqYcBv3YR+xoJIr6Lpg9Ax9e+yiaf4kT3RlEJatRcezHnNUNn9+YNEionm8Wzt0y7/sJI2BlmR2aFOS9ConZWSUPO/pPyIPJwN5fWz9+k935pHNWM9eEzyEAoQ1P+xTI6kqyNu1g3I6X5mVgw6CkovFYMc3zm0Swlxvln6H/4QNQPWaJ1SY8vobqTEmkJjjKEDbZf3rvHaxUNOHoQPb1XzUio5YPZrDG8MoYCoRJEHt9oURYtAUzN+yPXN2PzmUUDqgcQ0sidv5buYMJqOTOZesQUmFQCAd+WMQ==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.1.2
Release Details
UpdatedJuly 6, 2026, 3:39 a.m.
Changelog

Added

  • Nextcloud 34 wird unterstützt (max-version auf 34 angehoben)
  • Kundenverwaltung: eigene Customer-Entität mit Erfassung, Bearbeitung und Übernahme in die Rechnung

Fixed

  • Storno als rechtssichere E-Rechnung: Korrekturrechnung mit typeCode 384 und negativen Beträgen (EN16931 / §14c UStG), Referenz auf die stornierte Rechnung (BT-25/BT-26); Beleg heißt „Stornorechnung" statt „Gutschrift" (#64, #65)
  • Storno-Dialog eindeutig beschriftet, doppeltes „Cancel" behoben (#64)
  • DATEV-Rückkanal (IMAP): RFC-2047-Q-Encoding wird versionsstabil dekodiert (PHP 8.2)

Changed

  • DATEV-Rückkanal nutzt einen eigenen schlanken IMAP-Client statt webklex/php-imap (deutlich kleineres Release, unter dem App-Store-Größenlimit) (#51)
  • Anzeigename und Marken-Strings durchgängig auf „RechnungsWerk" vereinheitlicht
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignaturemUXJDuNe+Tilo+dpUr+E737GyLaklc1NJcW9vzLpYYhWaLd+43FFRC5Cv9YyDKJsxPf0C12O19vw9sBfNxxv/UfPsEDc+ltMnmDebp0mCwsusHBF4M3CODsrB/NKrodV/oj8p0z/q43TZzYPdQZ3AzqryUrQVIGvAug2znoDd89J6uhroEDGsLoxDrj6cgpN8Y5e3MFy1wqvirArLewEDS7CmkOXhX4vLTNu/DddQvQmCWp6nlFUmG90koD05VwSCRw3FP+uuig71l4q+giN07sNEb/WqWx00y4aZ//6Svm+MbZcBEeZCvoBbl/gEAgBLSIND8hnPxkeJ61H2B9syQ==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.1.1
Release Details
UpdatedJune 25, 2026, 10:18 p.m.
Changelog

Added

  • Spendenlink (Ko-fi) in der App-Beschreibung / im App Store
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureTxuswNGbBYWD5c3Hb/XPAXczbWJGBIbZwCyLuvyWrf68iUvry5vpM98jxZ/HOO6UjERHUcOvR4mboa22aiL4gE18m4V9fEuH09pTmPQuZRCJfJNpDsERvpanhuiKB2G/vIFnVRPTnscKIQj9AEOBziIrhpmXehB/UDtvGfjg5GqRrV7OUu+I5fPztg/Mc1gHnZ7cdwpKY2ERscmXqNzXzfQND0yJKmVQ2mKMBRpspv/opYBqPvPdFcmirSMqkDu6MpjusT6o3Mr1oVzcMvByvz16YDF7lffgYRaYe8ZMLURRRfLYf349mIaZh02K6khJG41Kf6zU9745KXNYTkAnKA==
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.1.0
Release Details
UpdatedJune 25, 2026, 3:39 p.m.
Changelog

Erster öffentlicher Release im Nextcloud App Store. Rechnungen und E-Rechnungen (ZUGFeRD/EN16931) erstellen, an Kunden versenden und automatisch an DATEV übergeben.

Added

  • E-Rechnung (ZUGFeRD/EN16931): CII-XML + branded PDF/A-3 (ZugferdService), vollständiger Feldexport — Leistungsdatum/-zeitraum (BT-72/BG-14), Bestell-/Referenznummern (BT-13/14), Verkäufer-/Käufer-Ansprechpartner (BG-6/BG-9), USt-Sonderfälle (Reverse-Charge, innergemeinschaftlich, Ausfuhr)
  • DATEV-Übergabe: automatischer E-Mail-Versand der ZUGFeRD-PDF an die DATEV-Upload-Mail beim Festschreiben und beim Stornieren; optionales eigenes SMTP-Konto
  • DATEV-Rückkanal (IMAP): Background-Job wertet Empfangsbestätigungen aus (In-Reply-To-Matching), Status gesendet → bestätigt; optionaler Papierkorb-Cleanup bestätigter Quittungen (Admin-Einstellung, Default aus)
  • Verkäufer-Ansprechpartner pro Rechnung (Kaskade Rechnung → NC-Konto → Firmenkontakt)
  • Status-Anzeige als flache Icons + Legende in Liste und Editor; Einstellungen in der Navigation unten links (NC-Konvention)
  • Zahlungsbedingungen (It. 4a): Zahlungsziel (Tage), automatisch berechnetes Fälligkeitsdatum beim Festschreiben und Skonto-Hinweis — Migration v0.1.1 (payment_term_days, due_date, discount_terms) + Editor-Sektion
  • Rechnungs-Editor + Liste (It. 3): InvoicesView mit Status-Chips und InvoiceEditorView (Rechnungsdaten · Empfänger · Positionen · Steuer&Summen · Texte)
  • Editierbare Positionstabelle mit Live-Summen + USt-Aufschlüsselung (Client-Vorschau, Server autoritativ), Produkt-Übernahme aus dem Katalog, §19-konforme 0%-Erzwingung
  • Empfänger-Auswahl aus Nextcloud-Kontakten (ContactController + OCP\Contacts\IManager) mit Tipp-Vorschlägen und Auto-Befüllung
  • Lifecycle in der UI: Entwurf speichern → Festschreiben (Bestätigung, endgültige Nummer, read-only) → Stornieren (Stornobeleg)
  • l10n de/en erweitert (120 Keys)

Added (frühere Iterationen)

  • Stammdaten + Produktkatalog (It. 2): ProductService/ProductController (/api/v1/products CRUD) und SettingsController (/api/v1/settings)
  • Frontend ProductsView (Tabelle + Editor-Modal) und SettingsView (gegliedertes Formular: Firma/Bank/Branding/Nummernkreis/Steuer/Versand/Standardtexte) mit §19-Bestätigungsdialog und Live-Vorschau der Rechnungsnummer
  • Pinia-Stores, typisierter API-Client, Geld-Helfer (Cent↔€), l10n de/en
  • Unit-Tests für ProductService
  • (Logo-Auswahl via NC-Files-Picker bewusst auf It. 4 / PDF-Branding verschoben)
  • Initiale App-Grundstruktur (Vue 3 + Vite + @nextcloud/vue 9, PHP 8.2 OCP)
  • App-Navigation mit Platzhalter-Views: Rechnungen, Produkte, Einstellungen
  • Datenmodell + Persistenz-Schicht: Entities/Mapper für Invoice, InvoiceItem, Product, Settings (Geld in Cents, Steuer in Basispunkten, owner-scoped)
  • DB-Migration v0.1.0 (4 Tabellen)
  • InvoiceCalculator (Zeilensummen, Steueraufschlüsselung pro Satzgruppe, Rechnungsnummern-Formatierung) mit Unit-Tests
  • InvoiceService mit Lifecycle (Entwurf → Festschreiben → Storno) und SettingsService (per-Owner-Stammdaten, jahresbasierter Nummernkreis)
  • REST-API /api/v1/invoices (CRUD + /commit, /cancel)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureHSEU9FkRh3w5EkQS8knKf2Odr2rIzhq8NqjYmzgijhzpFtIDq3XM1Cs5+cUyKzgGJf1497jAmVwwUb9QS3aCURWoCPBWcoZy2HOqy5V9jdhNgF5r1+hzZrYZvwKkriR4gyZAtM4WnB1t9syVYBQ3E87/8kdHwNKK9hqbZh5Hf61ovhWn0A8Q9i5+A9FK79M1zP/JX+mHio4QAxIVIcbjmmG+MDPsugayfIGmBEYvQCxFqeruOoizXwnbCg2CSqtEK5PxtmJPklZI53+TuLvDaXHNuCQO7QYlCRNQHixoZzWWJj4ap0KKf3KF23UiiKG9ncPIbD7z1Z0tu2KizTX9Qw==
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0

Nextcloud 31

RechnungsWerk 0.5.2
Release Details
UpdatedAug. 27, 2026, 12:40 p.m.
Changelog

Zwei Verbesserungen aus Anwender-Feedback: der saubere Einstieg in eine bereits laufende Rechnungsnummern-Folge und ein leichter auffindbarer Weg, hinterlegte Produkte in eine Rechnung zu übernehmen.

Added

  • Die nächste Rechnungsnummer lässt sich setzen. In den Einstellungen kann der Startwert der laufenden Nummer vorgegeben werden, um an eine bestehende Nummernfolge anzuknüpfen (z. B. bei „RE-2026-0143" einsteigen). Nummern lassen sich nur vorwärts setzen, nie unter eine bereits vergebene — die gesetzliche Einmaligkeit nach §14 UStG bleibt gewahrt (#270)

Changed

  • Produkte lassen sich bei der Rechnungserstellung direkt suchen und einfügen. An die Stelle des unauffälligen „Aus Produkt"-Menüs tritt ein Suchfeld „Produkt suchen und einfügen …" in der Positions-Leiste: Tippen schlägt passende Produkte mit Preis und Einheit vor, die Auswahl fügt die Position ein. Frei getippte Positionen bleiben unverändert möglich (#273)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignaturejGh8TYPrOPy5WO3V5b6CX5tbqBO1rIOdSHPCG+5m2gmZu9J9gAbEUkckUBoYR956iYNOopuyZ4WvkfMwnkhmkLDJGDrd439NnB80xP7GWpG0Tx2LpVSEvGbIldp0YqryG3TWBeIuCwrAN7HKarAPImi8YPN0H1qFAB4zK/BKpvKiDGjXN211AQWFD7T5d9gLw7p1GADAdxD0xHUS51fZGGxpmBEau4EgeoBaLIrKnv7udUcYljpgpVrJjSUabx2onsPdB3BZz5TmgYJ+YVRxZQdkdyvBvLFj3xHujD9MQgAPJZVpktixXx2041PuD0Z/q+nQ7NPPxcIRyeBAeIHi1A==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.5.1
Release Details
UpdatedAug. 26, 2026, 9:04 a.m.
Changelog

Drei Verbesserungen aus der praktischen Nutzung: ein häufig gewünschter kleiner Komfort beim Bezahlt-Markieren, ein Anzeigefehler bei der DATEV-Spalte und — am wichtigsten — eine Speicher-Falle in den Einstellungen, die beim Einrichten wie Datenverlust wirken konnte.

Added

  • Das Zahldatum lässt sich nachträglich anpassen. Der Klick auf die Bezahlt-Checkbox setzt weiterhin sofort das heutige Datum. Neu: Die Anzeige „bezahlt am {Datum}" in der Rechnungsliste ist jetzt anklickbar und öffnet ein kleines Datumsfeld, vorbelegt mit dem gesetzten Datum — so lässt sich eine Zahlung, die an einem anderen Tag einging, ohne Umweg korrigieren (#257)

Fixed

  • Die DATEV-Spalte erscheint jetzt sofort beim Öffnen der Rechnungsliste. Bisher war sie an die asynchron nachgeladenen Einstellungen gebunden und fehlte beim Kaltstart, bis dieser Fetch durch war. Jetzt hängt die Anzeige an den mit der Liste gelieferten DATEV-Status, sodass die Icons zeitgleich mit den Rechnungen erscheinen (#237)
  • Speicherfehler in den Einstellungen sind nicht mehr unsichtbar. Der Server lehnt beim Speichern die gesamte Anfrage ab, wenn ein einziges Feld ungültig ist (z. B. eine unvollständige E-Mail-Adresse). Die Fehlermeldung stand oben, der Speichern-Button unten — wer unten klickte, sah nichts und hielt das Speichern für erfolgt. Jetzt scrollt jede Fehlermeldung in den sichtbaren Bereich, und die drei E-Mail-Felder werden schon vor dem Absenden geprüft und namentlich benannt (#265)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureIMysmv7wUbyl/PYiLs+mWYhMZB44jjzTfGNUDvqMAcFg8kYKa09j3FVhSZz/LUmA/g2mUFgDj0SqMcvnoszwH9hGX0aRJ/CdPGN27+SDuWb37gIJbVFeRkv1RsWW3h8wFftMqtzGlItXYYhvsxkh3DTEVW9SC5V+brxf3yfZJQYeTv6rmHTRrRWjXxgt7bU0FnEhcxF89epf6pFDezdDfyiqwcJFJMwgA4LlRyl2mHABqXpQ4UpUWZ/Z1rLvJVA+1YXBCjaowNE9Fv2zBQZjnDNtUZjObG/gGnsWn+j1/O5BGCoFOPsV25hV+z1jfL8b91zRWAozNwux/N2cZBlOXQ==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.5.0
Release Details
UpdatedAug. 14, 2026, 12:20 p.m.
Changelog

Ein Release für alle, die die App auf Englisch bedienen: Fehlermeldungen kamen bisher auf Deutsch zurück, und fünf Texte blieben trotz vorhandener Übersetzung deutsch. Dazu zwei Anzeigefehler, die von außen gemeldet wurden, und eine Integritätsmeldung, die seit der ersten PDF-Erzeugung auftrat.

Added

  • Fehlermeldungen aus dem Backend sind übersetzbar. IL10N wurde bisher an genau einer Stelle benutzt, die übrigen 48 benutzersichtbaren Meldungen waren hart deutsch. Die Zahlenprüfung (NumberInput) wirft dafür jetzt prosafrei: die Ausnahme trägt nur den Sachverhalt, den Satz formuliert eine eigene Klasse mit IL10N. Damit bleibt die Klasse statisch und deckungsgleich mit ihrem Frontend-Zwilling (#235)

Fixed

  • Das freie Einheitenfeld war neben der Einheitenauswahl nur noch als Strich zu sehen. Beide Elemente stehen mit voller Zellenbreite in einer Zelle, die nicht umbrechen kann — welches von beiden zusammenfällt, entschied der Browser. Das freie Feld sitzt jetzt in der zweiten Zeile neben der Beschreibung, wo der Platz ohnehin vorhanden ist; Spaltenbreiten und Zeilenhöhe bleiben unverändert. In der schreibgeschützten Ansicht erscheinen beide Felder nur noch, wenn sie einen Wert tragen. Gemeldet von @myssv (#238)
  • Die Integritätsprüfung meldete nach jeder PDF-Erzeugung zwei zusätzliche Dateien. dompdf legte seinen Font-Cache innerhalb des eigenen Pakets ab, also in einem signierten Verzeichnis. Der Cache liegt jetzt unter dem Nextcloud-Temp-Pfad; ist der gemeinsame Ordner nicht benutzbar, wird auf einen Ordner je Aufruf ausgewichen statt zurück in die Auslieferung (#241)
  • Fünf Texte erschienen in der englischen Oberfläche auf Deutsch, obwohl die Übersetzung vorhanden war: vor den Auslassungspunkten steht im Quellcode ein geschütztes Leerzeichen, in den Übersetzungsdateien ein normales. Beim Draufschauen sind beide Zeichenketten identisch, deshalb prüft das jetzt eine Maschine. Acht fehlende DATEV-Texte ergänzt, fünfzehn Altlasten entfernt (#234)
  • Ordner- und Logoauswahl in den Einstellungen liefen über OC.dialogs, das seit Nextcloud 30 veraltet ist und beim Klicken gebrochen wäre, nicht beim Bauen. Ersetzt durch den FilePicker aus @nextcloud/dialogs; ein Abbruch erzeugt keine Fehlermeldung mehr (#221)

Changed

  • Das JavaScript-Bundle wird als ES-Modul ausgeliefert statt als iife. Der FilePicker lädt seine Komponente per dynamischem Import, was Code-Splitting erzwingt — das iife-Format kann das nicht. Das alte Bundle wird beim Update entfernt (#221)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureM+2YdsR2Knq7wTHEjM3DBFiP+EB7ANJVAYlAN40R0gm/xh9gG9W9ugFL79xejoTiB+HRhCEQwWU/YSjOI8BnDdFvzqxlDcpCrlrU/bu3roGuG4fPDbdOGkWnnAOpRI7Y5fzh6Xqjs7uRPqbI9ETvThZIeX1nZAT54oVOB1wZjuV2jtMLoKjquwjCCVWuaKC0ifZ3x+g4Zb/vS0L2EvRg7Dl1XVS3RRnkSCrC5nnDS6UGDDCZs17jXJcnJPCs2YDt375pa6IMNTM2lCL775gBnkB8mqgH6Yzj1TYtlAtjsARI3yPhlW2lFT4Je/apOfZFB3tP/RyzHv3LXrJclr9EAQ==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.4.1
Release Details
UpdatedAug. 11, 2026, 1:04 p.m.
Changelog

Mengen und Preise blieben beim Speichern nicht zuverlässig stehen. Gemeldet von @yummiweb (#223), und beim Prüfen kam ein zweiter Fall derselben Ursache heraus, der Beträge schon beim ersten Speichern verfälschte.

Fixed

  • Mengen und Preise bleiben über Speichern und Wiederöffnen unverändert. Die Menge steht mit drei Nachkommastellen in der Datenbank, wird also als „1.000" geliefert, wobei der Punkt ein Dezimaltrennzeichen ist. Dieser Wert lief unverändert ins Eingabefeld, wo er seit 0.3.1 regelkonform als deutsche Tausendertrennung gelesen wurde: aus der Menge 1 wurde beim nächsten Speichern 1000, aus 10,00 € Zeilensumme 10.000,00 €. Gespeicherte Werte werden jetzt in die Schreibweise des Feldes gewandelt, statt ungewandelt hineinzulaufen. Nebenbei verschwindet damit die alte Anzeige-Merkwürdigkeit, dass die Menge 1 als „1.000" dastand (#223)
  • Preise mit drei Nachkommastellen wurden beim ersten Speichern um den Faktor 1000 verfälscht. Das Preisfeld war ein Zahlenfeld des Browsers und lieferte deshalb immer Maschinenformat mit Punkt: 1,234 € kam als „1.234" an und wurde serverseitig deutsch als 1.234,00 € gelesen. Preis und Menge sind jetzt beide Textfelder in deutscher Schreibweise und werden von derselben Regel ausgewertet. Wer die Regelung mit vier Nachkommastellen nutzt, sollte seine Standardpreise und offenen Entwürfe prüfen (#223)
  • Die Beschriftung des aktiven Filters über der Rechnungs- und Angebotsliste war praktisch unsichtbar: heller Text auf hellem Grund, gemessener Kontrast 1,00. Ursache war die Nextcloud-Variable --color-primary-element-text-dark, die nicht „dunkler Text" bedeutet, sondern „Text für das dunkle Primärelement", und auf Nextcloud 34 zu fast Weiß auflöst. Jetzt 13,63 (#217)

Changed

  • Zahleneingaben werden nur noch in deutscher Schreibweise gelesen: das Komma trennt die Nachkommastellen, der Punkt die Tausender. Englische und gemischte Schreibweisen wie „12.5" oder „1,234.5" werden jetzt mit einer erklärenden Meldung abgelehnt, statt anhand des letzten Trennzeichens gedeutet zu werden. Diese Deutung war die Ursache des Fehlers oben, denn sie lässt „1.234" zwischen 1234 und 1,234 offen. Im Preisfeld sind dadurch die Pfeiltasten des Browsers entfallen; ein negativer Preis wird weiterhin abgelehnt (#223)
  • Der Entwicklungs-Build verlangt jetzt Node ^22.14 || ^24 || >=26. Das betrifft nur, wer die App selbst baut; für den Betrieb ändert sich nichts. Nachtrag zu 0.4.0, wo die Anforderung mit angehoben wurde, ohne hier zu stehen
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureXjjN6OT1TGj43VVjBE499YLk0zjaHoIVVgzfalJ5OqRQeMf+sg8eSbV11ThHvtYUO9tJuYk1uWHFM835CQT+a3Gnsj9n77K1HjoEomDIIgT/2iAoBmeikAmMJjDu4Y/8nTqC4EHThr3WhIYjW0KPglFJyFfxVrbTcckt5AA0DZG1UHbbOErTHoW2jgeD/sLI3Xtt/sR3TjRw+o3iHiy8FFtsYvQnOB42Jx6G2U1D9o7eEp7xxOQdF6jNcZ5KsNev9nOIt8vOlfoV3GSNiEvbvl4LkoUPP0YjWZfSayKzfzy75LJtvh9AzVFPPC1k1g6PGJSvMoqazIWQQdEglwVRHA==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.4.0
Release Details
UpdatedAug. 8, 2026, 4:18 p.m.
Changelog

Festgeschriebene Rechnungen sind jetzt wirklich unveränderlich. Bisher entstand jedes PDF bei jedem Zugriff neu, aus den zu diesem Zeitpunkt gültigen Einstellungen. Eine bereits ausgestellte E-Rechnung konnte sich dadurch nachträglich ändern und ungültig werden.

Changed

  • Der Beleg einer festgeschriebenen Rechnung wird beim Festschreiben abgelegt und ab dann ausgeliefert, statt bei jedem Zugriff neu zu entstehen. Damit bekommen Download, Kundenversand, DATEV-Übergabe und die Ablage in Nextcloud Files garantiert dieselbe Datei; vorher konnten zu einer Rechnung drei verschiedene Dokumente existieren. Der Beleg ist nur einmal beschreibbar, seine Prüfsumme steht am Datensatz, und der Dateiname ist mit eingefroren. Die Ablage liegt im app-eigenen Speicher und damit in jeder Instanz-Sicherung, nicht im Dateibaum des Nutzers, wo sie versehentlich zu ändern wäre (#181)
  • Der Kleinunternehmer-Fall steht jetzt an der Rechnung statt in den Einstellungen. Ein Wechsel zwischen Kleinunternehmerregelung und Regelbesteuerung ist ein völlig normaler, einmaliger Vorgang. Er machte vorher aus jeder älteren 19-%-Rechnung rückwirkend eine steuerfreie: das eingebettete XML wies CategoryCode E und 0,00 % aus, bei weiterhin ausgewiesenen 19,00 € Steuer. Ein solches Dokument widerspricht sich selbst und verletzt EN 16931 (#181)
  • Bestandsrechnungen werden im Hintergrund nachgezogen, in Häppchen und ohne Wartungsmodus. Nachträglich erzeugte Belege sind als solche gekennzeichnet und im Rechnungseditor ausgewiesen: sie stimmen inhaltlich, entsprechen im Aussehen aber dem heutigen Stand und nicht dem, was der Kunde damals bekommen hat. Für Bestandsrechnungen ist das Original-Aussehen nicht wiederherstellbar (#181)

Fixed

  • Einzelpreise werden serverseitig aus der Eingabe berechnet und geprüft. Bisher rechnete allein der Browser und schickte die fertige Zahl. Dem Server war nicht anzusehen, ob 95 als 0,0095 € oder als 95 € gemeint war. Betrifft Rechnungspositionen und den Standardpreis im Produktkatalog (#180)
  • Ein Storno übernimmt den Steuerfall der Original-Rechnung statt der aktuellen Einstellungen. Sonst hätte die Gutschrift zu einer 19-%-Rechnung nach einem Wechsel der Besteuerungsform 0 % ausgewiesen (#181)

Abhängigkeiten und Infrastruktur

  • phpmailer auf 7.1.1 angehoben. Der Mailversand wurde damit real geprüft, der Anhang bleibt der eingefrorene Beleg
  • Frontend-Werkzeuge und Bibliotheken aktualisiert: vite 8, @nextcloud/l10n 3, vue-router 5, pinia 4, @nextcloud/vue 9.9. Der Sprung auf vue-router 5 war ohne pinia 4 nicht möglich und beseitigt zugleich eine doppelte Router-Version im Abhängigkeitsbaum
  • GitHub-Actions auf checkout 7, setup-node 7 und github-script 9
  • Dependabot zielt jetzt auf develop und gruppiert Minor- und Patch-Updates
  • Der Workflow, der Issues beim Merge nach develop schließt, wertet Code in PR-Texten nicht mehr als Anweisung
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
Signaturekg15ifuNkkeQMOsP5v3QthE3KZvAghdIGVoEUZ0WySHi9mshrzqNhdoAtHfS00ZCQlmKuN/VXvX/CjQP2OWwvMYQB91s4ts3theFM6fE7UNwnc4RfF8GSO9XJNofCvnjKoGBMgeFkJr3VyvtCGYKvWXxqoxcsDgit7r71AAXMlKGxFfXuZO8+czcs0nwKBpMKuY4hvKoB/ls7ZpxLafSHUmBUjjLmMq3cEEuVgMCr0UYPID1DxETu2PupVFQ61gh8FMzo8jG3Bc0BEswToJHZJi+XRpNMOlesg/tovaT2WZOXXBagyxXb69e4YHMFavgu0nSIeBySKac0hKLumO3Tg==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.3.1
Release Details
UpdatedAug. 7, 2026, 9:12 p.m.
Changelog

Fehlerbehebungen aus Rückmeldungen von Nutzern. Zwei der Fehler erzeugten stillschweigend falsche Werte auf Rechnungen, die an Kunden gehen.

Fixed

  • Kontakte aus dem Nextcloud-Adressbuch lassen sich wieder übernehmen. Das vCard-Feld für das Land enthält laut Standard einen frei geschriebenen Namen, iOS und Outlook tragen dort „Deutschland" oder „Germany" ein. Der Wert lief ungeprüft in eine Spalte für den zweistelligen Ländercode, wodurch das Speichern des Entwurfs mit einem Fehler 500 abbrach und keine Vorschau mehr erzeugt werden konnte. Ländernamen werden jetzt in beiden Sprachen erkannt und umgesetzt, inklusive Schreibvarianten wie „Oesterreich" (#167)
  • Mengen und Einzelpreise in deutscher Schreibweise werden korrekt gelesen. Bisher brach eine achtstellige Menge wie 99.999.999 mit einem Fehler 500 ab, und eine Eingabe von 1.000 wurde ohne jeden Hinweis als 1 gespeichert, was die Rechnung um den Faktor 1000 verfälschte. Dasselbe traf den Einzelpreis, dort ohne Fehlermeldung als Warnsignal. Nicht lesbare Eingaben werden jetzt mit einer verständlichen Meldung abgelehnt statt geraten (#157)
  • Die Spaltenbreiten der Positionstabelle passen wieder zum Inhalt. Seit 0.3.0 waren alle Spalten gleich breit, wodurch die Bezeichnung viel zu früh umbrach, während die USt-Spalte Platz verschwendete (#157)
  • Die Kopfzeile der Positionstabelle bleibt bei jeder Akzentfarbe lesbar. Die Schrift war fest weiß und verschwand auf hellen Firmenfarben; sie wechselt jetzt auf Schwarz, wenn Weiß nicht mehr trägt. Die gewählte Farbe selbst bleibt unverändert (#171)
  • Das Auswahlfeld für die Akzentfarbe öffnet nicht mehr den Farbdialog des Betriebssystems, der sich unter macOS nicht wieder schließen ließ (#171)
  • Das ausgelieferte JavaScript enthält keinen Entwicklungscode mehr. Das Bundle ist dadurch rund 100 KB kleiner und die Konsole bleibt frei von Hydrations- und Prop-Warnungen (#168)

Added

  • Ein Musterstreifen in den Einstellungen zeigt beim Wählen der Akzentfarbe, wie die Kopfzeile der Positionstabelle auf der Rechnung aussehen wird, inklusive der daraus folgenden Schriftfarbe (#171)
  • Die Spalte für die Bezeichnung heißt im PDF jetzt wie im Editor „Bezeichnung" statt „Beschreibung" (#157)

Security

  • dompdf auf 3.1.6 angehoben. Die Version schließt laut Release Notes gemeldete Sicherheitslücken; dompdf erzeugt das Rechnungs-PDF

Changed

  • Weitere Abhängigkeiten aktualisiert: dompurify, fast-xml-parser, immutable, postcss, fast-uri, brace-expansion, js-yaml
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureMfyGkAWLpC5IS7BOHlL1YVoOTLrh/IBR5gkLSv7hFwhB+0tQnp6uATLUlDD46Bf2dolSg5oeyL88GDPp/jOp9XIqn16w8PVMkhEVhjPZyo7K0GxFJNf1G8uhs/346/zOtyM3KQBFFt28JUns1p17OR2TyihOOa7cS9rP+A1ghML3L/DURiepOK8zNam0tPTvc3bJU6YShsSaOStdp6VEwcPR/dQqGuLggyzT5sXV3nWDOYGpHyPubgPgUmKQ5TvvdeD6lxQhhPQTX9WJNps1Qpi1xJRs8x78DUAKU5xg1gcNlLuWB9XCZUji9X1s5yiw6HBLcI3A++iNR4Rqkl1XSw==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.3.0
Release Details
UpdatedJuly 23, 2026, 12:36 p.m.
Changelog

Added

  • Textbausteine: eine verwaltete Bibliothek wiederverwendbarer Anrede-/ Einleitungs- und Schlusstexte, getrennt für Rechnungen und Angebote. Je Dokumenttyp und Textbereich gibt es genau einen Standard-Baustein, der neue Dokumente vorbefüllt; weitere Bausteine lassen sich im Editor per Klick einfügen. Neuer Menüpunkt „Textbausteine" (#126, #141)
  • Kleinunternehmer-Hinweis (§ 19 UStG): der Hinweistext auf der Rechnung ist jetzt frei konfigurierbar (#141)
  • Datums-Variablen {MM} (Monat) und {DD} (Tag) für die Rechnungs- und Angebotsnummer, zusätzlich zu {YYYY}/{YY}/{####} (#143)
  • Weitere Einheiten zur Auswahl: kWh, Liter, Meter, Kilometer, m², Gramm, Tonne (gültige UN/ECE-Codes, E-Rechnung bleibt valide) (#146)
  • Einzelpreise mit bis zu 4 Nachkommastellen (z. B. Energie 0,3456 €/kWh); die Rundung auf ganze Cent erfolgt einmal beim Zeilenbetrag, Summen bleiben zweistellig (#147)
  • Freitext-Einheiten: frei benannte Einheiten (z. B. „Personen", „Sitzung") für Editor und PDF; die eingebettete E-Rechnung nutzt weiterhin einen gültigen generischen Einheitencode (#153)

Changed

  • Kleinunternehmer (§ 19 UStG): Rechnungen und Angebote zeigen keine „0 %"-USt- Spalte und keine „Steuerfrei 0,00 €"-Zeile mehr; da netto = brutto erscheint nur der Gesamtbetrag mit dem § 19-Hinweis. Die eingebettete XML bleibt unverändert korrekt (Kategorie „E") (#144)
  • Bei einem Angebot ist der Leistungszeitraum nicht mehr als § 14-UStG- Pflichtangabe ausgewiesen, sondern als optionaler „Geplanter Leistungszeitraum"
  • Einheitliche Bedienung der Verwaltungslisten (Textbausteine, Kunden, Produkte): Zeile anklickbar zum Bearbeiten, direkte Icon-Aktionen statt „…"-Menü

Fixed

  • Lange Produktnamen und Beschreibungen sprengen die Positionstabelle im PDF nicht mehr; die Spalten bleiben stabil und die Einheit bricht nicht mehr in eine neue Zeile um (#145)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
Signatureiz4D936PYC2hirNT+Gu01alqM2CG00jSDepS0W3no3KGsYHNuzeIFkvWuJ5bvi+GS2dz/4L/76JnC+p/hULNXubNHJR181yt2yN/B4yK2HhK8QYJDjD0UAQjePNt/8424fT4nYw4hr6CsCrimhwb711WuoNE1lgGdQ6hgjeg2pf4uTturWl12ludMPseDlg/UBzejSx1gxDM1yy3RSVtNnE9KQqveRzMk7BUBtHBraVEEHFx4gpbVsVWvqaCKTEFsSb7HYPMKxFajdQhN5NX7BzilL0jtS+W2UHIEe+WWtbcmY55jfe9CkMxQeoreD4HcKdHfyaqU2kCXTcujnblGA==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.2.0
Release Details
UpdatedJuly 18, 2026, 7:55 a.m.
Changelog

Added

  • Angebote: Angebote mit eigenem Nummernkreis erstellen, festschreiben und als PDF versenden. Ein eigener Menüpunkt „Angebote" führt zu einer eigenen Liste mit Status (Offen, Abgelaufen, Angenommen, Abgelehnt, Übernommen, Revidiert). Angebote haben ein „Gültig bis"-Datum (§ 148 BGB) und eine optionale Freibleibend-Kennzeichnung (§ 145 BGB), die als Hinweis auf dem PDF erscheint. Der Angebots-Nummernkreis (Standard AN-{YYYY}-{####}) ist in den Einstellungen unabhängig von den Rechnungen konfigurierbar (#111)
  • In Rechnung übernehmen: ein festgeschriebenes Angebot lässt sich per Knopfdruck in einen neuen Rechnungs-Entwurf überführen – Positionen und Empfänger werden übernommen, die Rechnung referenziert die Angebotsnummer, das Angebot wird als „übernommen" markiert (#111)
  • Angebot revidieren: aus einem festgeschriebenen Angebot lässt sich eine überarbeitbare Revision erstellen. Sie erhält beim Festschreiben eine Revisionsnummer (AN-…-1, -2, …), das Ursprungsangebot wird als „revidiert" markiert (#111)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureSut+zU8cXNarPEIMOdjzO6Vyt3zPfCjSliR6aqSC+JHI+CIm8DlB/lyeDsWuCLaG9K6AQ/43KaiWW1I9f4kqWlUU6t2sBnkafY9FC1F4Sl8j8Ku63t9rBmi9jpLaV5S4Lu6R4Tu8QzRF4ozFDnw9bB2N3+gRl5YfuAzAQa49q67qe+C5wN9ietNZoHicl1l5q9tpNuAs+Q2t9lva8OBNToqR1sKLjVdb3saAG1U+4MrmPTPz0EsU8vGo7oD3agYndSw9RaeXbxMTuDMSHSbLCOZEVf5P9Ns594IwKZ5JsAbCEkvtMQl64vKY7+SWLojj7+p3b7e31Wkhc/XUVmvIgg==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.1.8
Release Details
UpdatedJuly 17, 2026, 8:28 a.m.
Changelog

Added

  • Zahlungsstatus verfolgen: Rechnungen lassen sich in der Liste als bezahlt markieren; der Status (offen, überfällig, bezahlt) ist auf einen Blick sichtbar – überfällige Rechnungen sind hervorgehoben, bezahlte gedämpft dargestellt. Eine Filterleiste (Alle/Offen/Überfällig/Bezahlt) zeigt zusätzlich die Summe der offenen Beträge. Ein Standard-Zahlungsziel in den Einstellungen belegt neue Rechnungen vor (#117)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignaturesXhEzBMcXpQoQRWbU5Ky7yfzsZEyH5Ll1kI7EJKXftrcsmh1YwvMGgtcbOfeFsPO6mrbq/jzFYuX2lWJazredJEeLSSspQeHTvcuCXSY4ne25hOpuVtTux7bD8fJLGAiyQSvuJzGWXfwp6TSlTM0wdlU1TyLdR8w/dWyVLsQf9367mbQE3yfefnI0CT1G0u+TTPQsDMiy0Ua5njgIJRhpl6giGwn9pjDzIJ5OmYDkdm70c7rFDS1VqUoXAvMo9oEjJthD2UQhoBQY0A+iHk4b8aRgsn6zbBTSxj+NcOA0Qk0ZeYspQJ4oRbSUT5DymHnREzSLMq9n0n17dM3R2TnVw==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.1.7
Release Details
UpdatedJuly 15, 2026, 7:51 p.m.
Changelog

Added

  • Rechnung duplizieren: eine bestehende Rechnung lässt sich per Knopfdruck in der Rechnungsliste als Vorlage für eine neue, bearbeitbare Rechnung übernehmen. Empfänger, Positionen, Referenzen, Notizen und Textbausteine werden kopiert; die neue Rechnung startet als Entwurf ohne Nummer. Stornobelege sind davon ausgenommen (#124)

Fixed

  • Kunde anlegen: Das Speichern schlug fehl, sobald ein Zahlungsziel gesetzt war (#122)
  • Das DATEV-„gesendet"-Symbol in der Rechnungsliste wird nur noch angezeigt, wenn die DATEV-/IMAP-Anbindung eingerichtet ist. Ohne IMAP-Konfiguration lief der automatische Abgleich ohnehin nie, sodass der Status sonst dauerhaft ohne Wirkung sichtbar blieb (#127)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureJELX2endgOdkGdfh2w6fY8wd4eys440C0bemzaAVBhxT4m0sRnRYECDZMoUSv69nz6V5VOe5hTgg3l2bGFh0bzBJ0ucovrtDhy9+XXeLJUHTIgw+f/6R8OG6t+GrsJAglZMCgr1adEUMfhBa+bh09eNyPgvVQ8Jxqj0J7a99PIFQdhimYN+K4MscgCf820b/wFX1zUhT+4WxzXor9rl1Iw07q+4EZiBlT1sESS3dPvNcPYM94uyijiCa3kC+EhA4XiKXr/HkIQmLk0Plor+mQv/Gh0V9M6OkFOdOzNAUwxuDa8X2eWYUIPbE9P4bV/83gogZpUZIDMDUj4grSfB3Aw==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.1.6
Release Details
UpdatedJuly 13, 2026, 8:39 a.m.
Changelog

Fixed

  • App-Installation auf Nextcloud 31 und 32 schlug fehl mit „Primary index name on 'oc_rechnungswerk_invoice_item' is too long". Die unterstützten Datenbanken (SQLite/MySQL/PostgreSQL) sind jetzt in der info.xml deklariert, wodurch Nextclouds Oracle-Namenslimit-Prüfung nicht mehr greift (#118)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignaturekXawEvTMN/MEksp8u2OB6KxiDpbGNZvPhivMAU2DbRzqmBrGxilRgMUJb6EExxAwJ6DU91Y/qU4iZy8FX1mqzd1ANjXFImD8bG43peKgDcAJwtQyFD/IQ1s9q9wNFNL2qjeTB9VcYDaGatAXLVE9W8zdFuJiqNNKGjcU190vB/S/i6SQgMryNKZrH87Pdd02ADgWcKIi3KyYjr3VvTruaiIrbRv3LgSns9UTXtUcpyvYKdWXQPsj1uc1tY5JpZGwKIOc4VHlxhSWXyTIPOvi5rZle2uVPsyBFT5iz48e+D8WIYidgyY5t2jaoLt7djJcYENcNAbcyz3s7BTmtC/84Q==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.1.5
Release Details
UpdatedJuly 11, 2026, 6:33 p.m.
Changelog

Added

  • Neue Referenzfelder auf der Rechnung: Vertragsnummer (BT-12) und Objekt-/Projektkennung (BT-18). Beide stehen strukturiert im E-Rechnungs-XML und als Meta-Zeilen im PDF (#41)
  • Notizen/Hinweise auf der Rechnung: frei formulierbare Textzeilen, sichtbar im PDF und als Notiz (BT-22) im E-Rechnungs-XML (#41)

Changed

  • Anrede/Einleitung und Schlusstext stehen jetzt auch im E-Rechnungs-XML (BT-22) und nicht mehr nur im PDF (#41)
  • Stornobelege übernehmen die Referenzen der Originalrechnung (Bestell-, Referenz-, Vertragsnummer, Leitweg-ID, Objektkennung)
  • Generische freie Felder (Key-Value) werden nicht weiterverfolgt; bestehende Einträge bleiben als Notizen lesbar (#41)

Fixed

  • Rechnungseditor übernimmt beim Wechsel von einer Rechnung zu „Neue Rechnung" keinen alten Formularzustand mehr (#109)
  • Esc schließt Modals auch dann, wenn der Fokus in einem Eingabefeld liegt (#107)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignaturefjPXXKL3vvb63vSpX/J8RT/tRxS0jbZyE8Sg8WN1xKKtQOZZxdQTFalX7Din8u8akVxvXup2V91d3GLfhB9x1yqNvZGRVa4kggAduDoCeO/IR6vVZxKweFw1X8KAo0Wt4ph1s7aQs8kMdsEQCfzBtwtORXG9hmmj4KUmvIWQpw9ipTvf14XvA60KEitNQf/VGSAxVIlowcq1bgvXf9CrOYMBRo7slEBcucL8fN9jfw3QgV0StjK5iemBpAJg/hMMnMhdgkSXkfEczisnVwe8u8vuz9bMXMIWhAQFWjT89IECY2UW4Lcv4Ai3A+7/tUk4b6W3pfOVggfOUTm54yeJ0w==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.1.4
Release Details
UpdatedJuly 11, 2026, 10:53 a.m.
Changelog

Added

  • Rechnungsvorschau für Entwürfe: Vorschau-Button im Editor zeigt das PDF vor dem Festschreiben. Deutlich als ENTWURF gekennzeichnet (Wasserzeichen, Banner, ohne E-Rechnungs-XML) (#94)
  • Konfigurierbares Dateinamen-Schema für erzeugte PDFs mit Platzhaltern {nummer}, {YYYY}/{MM}/{DD}, {kunde}, {typ}. Gilt einheitlich für Download, Kundenmail und DATEV-Mail, mit Live-Vorschau in den Einstellungen (#37)
  • Automatische Ablage festgeschriebener Rechnungen (inkl. Stornos) in einen Nextcloud-Ordner (auch Team-/Gruppenordner), optional mit Jahres-Unterordnern; Komfort-Ablage, kein revisionssicheres Archiv (#38)
  • Girocode: optionaler EPC-Bezahl-QR-Code (EPC069-12) neben der Bankverbindung. Banking-Apps übernehmen Empfänger, Betrag und Verwendungszweck automatisch; nie auf Stornos oder Entwurfs-Vorschauen (#79)

Changed

  • Neue Runtime-Abhängigkeit bacon/bacon-qr-code für das QR-Rendering
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureLZo7cCep3E7ce/8lmUohIZa6LI36+uaqF2y6wFukPeVjvCSxwqO84q3869FFhmq8QLYJUrysSHhVopd+5ULUtoeZ2CVUQwoKq09+BFTuxQPFRkeE9cwH94Rrp0tXCapDhEBgLaS3PEZYd4tMMzZw7Av7WwA89hH8Fy3b7JnVBk6LsZg5saPchA6ViX6Y+DW5wYHdYdp2wvZHhv9+FgMJrd19Q3n3n7dJ6XK89FUb5/Z/3K09+R0mkck7A0N2iR56C/sQr12tMPeEkyqlg+Bj3x7BVmDmawpSnwFI86TCTmvn5E5ehK0BrYufQlKuDkSgg48yRNRrldNnQ03M5Vtr/w==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.1.3
Release Details
UpdatedJuly 8, 2026, 7:11 a.m.
Changelog

Added

  • Nummernkreis-Modus: fortlaufend über Jahre vs. jährlicher Reset, umschaltbar in den Einstellungen (#39)
  • Persönlicher Bereich „Mein Kontakt": eigener Verkäufer-Ansprechpartner pro Nutzer, füllt neue Rechnungen automatisch vor (#47)
  • Einheit „Monat" für Rechnungspositionen (#76)

Fixed

  • Kontakt-E-Mail aus den Einstellungen wird auf Rechnung und E-Rechnung korrekt verwendet, statt der Nextcloud-Konto-Mail (#86)
  • Rechnungstexte: Einleitung erscheint wieder, Schlusstext steht genau einmal unten (keine Dopplung, korrekte Platzierung) (#76)

Security

  • Sicherheitsupdates der Frontend-Abhängigkeiten: dompurify, js-yaml, vite/esbuild (Advisories behoben, npm audit clean)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureGfdVd7F79t0qMXZuq31SJd3IWVykZfSbU5B9eC01Vga/lkUfdvctqYcBv3YR+xoJIr6Lpg9Ax9e+yiaf4kT3RlEJatRcezHnNUNn9+YNEionm8Wzt0y7/sJI2BlmR2aFOS9ConZWSUPO/pPyIPJwN5fWz9+k935pHNWM9eEzyEAoQ1P+xTI6kqyNu1g3I6X5mVgw6CkovFYMc3zm0Swlxvln6H/4QNQPWaJ1SY8vobqTEmkJjjKEDbZf3rvHaxUNOHoQPb1XzUio5YPZrDG8MoYCoRJEHt9oURYtAUzN+yPXN2PzmUUDqgcQ0sidv5buYMJqOTOZesQUmFQCAd+WMQ==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.1.2
Release Details
UpdatedJuly 6, 2026, 3:39 a.m.
Changelog

Added

  • Nextcloud 34 wird unterstützt (max-version auf 34 angehoben)
  • Kundenverwaltung: eigene Customer-Entität mit Erfassung, Bearbeitung und Übernahme in die Rechnung

Fixed

  • Storno als rechtssichere E-Rechnung: Korrekturrechnung mit typeCode 384 und negativen Beträgen (EN16931 / §14c UStG), Referenz auf die stornierte Rechnung (BT-25/BT-26); Beleg heißt „Stornorechnung" statt „Gutschrift" (#64, #65)
  • Storno-Dialog eindeutig beschriftet, doppeltes „Cancel" behoben (#64)
  • DATEV-Rückkanal (IMAP): RFC-2047-Q-Encoding wird versionsstabil dekodiert (PHP 8.2)

Changed

  • DATEV-Rückkanal nutzt einen eigenen schlanken IMAP-Client statt webklex/php-imap (deutlich kleineres Release, unter dem App-Store-Größenlimit) (#51)
  • Anzeigename und Marken-Strings durchgängig auf „RechnungsWerk" vereinheitlicht
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignaturemUXJDuNe+Tilo+dpUr+E737GyLaklc1NJcW9vzLpYYhWaLd+43FFRC5Cv9YyDKJsxPf0C12O19vw9sBfNxxv/UfPsEDc+ltMnmDebp0mCwsusHBF4M3CODsrB/NKrodV/oj8p0z/q43TZzYPdQZ3AzqryUrQVIGvAug2znoDd89J6uhroEDGsLoxDrj6cgpN8Y5e3MFy1wqvirArLewEDS7CmkOXhX4vLTNu/DddQvQmCWp6nlFUmG90koD05VwSCRw3FP+uuig71l4q+giN07sNEb/WqWx00y4aZ//6Svm+MbZcBEeZCvoBbl/gEAgBLSIND8hnPxkeJ61H2B9syQ==
Signature digestsha512
Dependencies
Required Nextcloud versions >=31.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.1.1
Release Details
UpdatedJune 25, 2026, 10:18 p.m.
Changelog

Added

  • Spendenlink (Ko-fi) in der App-Beschreibung / im App Store
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureTxuswNGbBYWD5c3Hb/XPAXczbWJGBIbZwCyLuvyWrf68iUvry5vpM98jxZ/HOO6UjERHUcOvR4mboa22aiL4gE18m4V9fEuH09pTmPQuZRCJfJNpDsERvpanhuiKB2G/vIFnVRPTnscKIQj9AEOBziIrhpmXehB/UDtvGfjg5GqRrV7OUu+I5fPztg/Mc1gHnZ7cdwpKY2ERscmXqNzXzfQND0yJKmVQ2mKMBRpspv/opYBqPvPdFcmirSMqkDu6MpjusT6o3Mr1oVzcMvByvz16YDF7lffgYRaYe8ZMLURRRfLYf349mIaZh02K6khJG41Kf6zU9745KXNYTkAnKA==
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.1.0
Release Details
UpdatedJune 25, 2026, 3:39 p.m.
Changelog

Erster öffentlicher Release im Nextcloud App Store. Rechnungen und E-Rechnungen (ZUGFeRD/EN16931) erstellen, an Kunden versenden und automatisch an DATEV übergeben.

Added

  • E-Rechnung (ZUGFeRD/EN16931): CII-XML + branded PDF/A-3 (ZugferdService), vollständiger Feldexport — Leistungsdatum/-zeitraum (BT-72/BG-14), Bestell-/Referenznummern (BT-13/14), Verkäufer-/Käufer-Ansprechpartner (BG-6/BG-9), USt-Sonderfälle (Reverse-Charge, innergemeinschaftlich, Ausfuhr)
  • DATEV-Übergabe: automatischer E-Mail-Versand der ZUGFeRD-PDF an die DATEV-Upload-Mail beim Festschreiben und beim Stornieren; optionales eigenes SMTP-Konto
  • DATEV-Rückkanal (IMAP): Background-Job wertet Empfangsbestätigungen aus (In-Reply-To-Matching), Status gesendet → bestätigt; optionaler Papierkorb-Cleanup bestätigter Quittungen (Admin-Einstellung, Default aus)
  • Verkäufer-Ansprechpartner pro Rechnung (Kaskade Rechnung → NC-Konto → Firmenkontakt)
  • Status-Anzeige als flache Icons + Legende in Liste und Editor; Einstellungen in der Navigation unten links (NC-Konvention)
  • Zahlungsbedingungen (It. 4a): Zahlungsziel (Tage), automatisch berechnetes Fälligkeitsdatum beim Festschreiben und Skonto-Hinweis — Migration v0.1.1 (payment_term_days, due_date, discount_terms) + Editor-Sektion
  • Rechnungs-Editor + Liste (It. 3): InvoicesView mit Status-Chips und InvoiceEditorView (Rechnungsdaten · Empfänger · Positionen · Steuer&Summen · Texte)
  • Editierbare Positionstabelle mit Live-Summen + USt-Aufschlüsselung (Client-Vorschau, Server autoritativ), Produkt-Übernahme aus dem Katalog, §19-konforme 0%-Erzwingung
  • Empfänger-Auswahl aus Nextcloud-Kontakten (ContactController + OCP\Contacts\IManager) mit Tipp-Vorschlägen und Auto-Befüllung
  • Lifecycle in der UI: Entwurf speichern → Festschreiben (Bestätigung, endgültige Nummer, read-only) → Stornieren (Stornobeleg)
  • l10n de/en erweitert (120 Keys)

Added (frühere Iterationen)

  • Stammdaten + Produktkatalog (It. 2): ProductService/ProductController (/api/v1/products CRUD) und SettingsController (/api/v1/settings)
  • Frontend ProductsView (Tabelle + Editor-Modal) und SettingsView (gegliedertes Formular: Firma/Bank/Branding/Nummernkreis/Steuer/Versand/Standardtexte) mit §19-Bestätigungsdialog und Live-Vorschau der Rechnungsnummer
  • Pinia-Stores, typisierter API-Client, Geld-Helfer (Cent↔€), l10n de/en
  • Unit-Tests für ProductService
  • (Logo-Auswahl via NC-Files-Picker bewusst auf It. 4 / PDF-Branding verschoben)
  • Initiale App-Grundstruktur (Vue 3 + Vite + @nextcloud/vue 9, PHP 8.2 OCP)
  • App-Navigation mit Platzhalter-Views: Rechnungen, Produkte, Einstellungen
  • Datenmodell + Persistenz-Schicht: Entities/Mapper für Invoice, InvoiceItem, Product, Settings (Geld in Cents, Steuer in Basispunkten, owner-scoped)
  • DB-Migration v0.1.0 (4 Tabellen)
  • InvoiceCalculator (Zeilensummen, Steueraufschlüsselung pro Satzgruppe, Rechnungsnummern-Formatierung) mit Unit-Tests
  • InvoiceService mit Lifecycle (Entwurf → Festschreiben → Storno) und SettingsService (per-Owner-Stammdaten, jahresbasierter Nummernkreis)
  • REST-API /api/v1/invoices (CRUD + /commit, /cancel)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureHSEU9FkRh3w5EkQS8knKf2Odr2rIzhq8NqjYmzgijhzpFtIDq3XM1Cs5+cUyKzgGJf1497jAmVwwUb9QS3aCURWoCPBWcoZy2HOqy5V9jdhNgF5r1+hzZrYZvwKkriR4gyZAtM4WnB1t9syVYBQ3E87/8kdHwNKK9hqbZh5Hf61ovhWn0A8Q9i5+A9FK79M1zP/JX+mHio4QAxIVIcbjmmG+MDPsugayfIGmBEYvQCxFqeruOoizXwnbCg2CSqtEK5PxtmJPklZI53+TuLvDaXHNuCQO7QYlCRNQHixoZzWWJj4ap0KKf3KF23UiiKG9ncPIbD7z1Z0tu2KizTX9Qw==
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0

Nextcloud 30

RechnungsWerk 0.1.1
Release Details
UpdatedJune 25, 2026, 10:18 p.m.
Changelog

Added

  • Spendenlink (Ko-fi) in der App-Beschreibung / im App Store
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureTxuswNGbBYWD5c3Hb/XPAXczbWJGBIbZwCyLuvyWrf68iUvry5vpM98jxZ/HOO6UjERHUcOvR4mboa22aiL4gE18m4V9fEuH09pTmPQuZRCJfJNpDsERvpanhuiKB2G/vIFnVRPTnscKIQj9AEOBziIrhpmXehB/UDtvGfjg5GqRrV7OUu+I5fPztg/Mc1gHnZ7cdwpKY2ERscmXqNzXzfQND0yJKmVQ2mKMBRpspv/opYBqPvPdFcmirSMqkDu6MpjusT6o3Mr1oVzcMvByvz16YDF7lffgYRaYe8ZMLURRRfLYf349mIaZh02K6khJG41Kf6zU9745KXNYTkAnKA==
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
RechnungsWerk 0.1.0
Release Details
UpdatedJune 25, 2026, 3:39 p.m.
Changelog

Erster öffentlicher Release im Nextcloud App Store. Rechnungen und E-Rechnungen (ZUGFeRD/EN16931) erstellen, an Kunden versenden und automatisch an DATEV übergeben.

Added

  • E-Rechnung (ZUGFeRD/EN16931): CII-XML + branded PDF/A-3 (ZugferdService), vollständiger Feldexport — Leistungsdatum/-zeitraum (BT-72/BG-14), Bestell-/Referenznummern (BT-13/14), Verkäufer-/Käufer-Ansprechpartner (BG-6/BG-9), USt-Sonderfälle (Reverse-Charge, innergemeinschaftlich, Ausfuhr)
  • DATEV-Übergabe: automatischer E-Mail-Versand der ZUGFeRD-PDF an die DATEV-Upload-Mail beim Festschreiben und beim Stornieren; optionales eigenes SMTP-Konto
  • DATEV-Rückkanal (IMAP): Background-Job wertet Empfangsbestätigungen aus (In-Reply-To-Matching), Status gesendet → bestätigt; optionaler Papierkorb-Cleanup bestätigter Quittungen (Admin-Einstellung, Default aus)
  • Verkäufer-Ansprechpartner pro Rechnung (Kaskade Rechnung → NC-Konto → Firmenkontakt)
  • Status-Anzeige als flache Icons + Legende in Liste und Editor; Einstellungen in der Navigation unten links (NC-Konvention)
  • Zahlungsbedingungen (It. 4a): Zahlungsziel (Tage), automatisch berechnetes Fälligkeitsdatum beim Festschreiben und Skonto-Hinweis — Migration v0.1.1 (payment_term_days, due_date, discount_terms) + Editor-Sektion
  • Rechnungs-Editor + Liste (It. 3): InvoicesView mit Status-Chips und InvoiceEditorView (Rechnungsdaten · Empfänger · Positionen · Steuer&Summen · Texte)
  • Editierbare Positionstabelle mit Live-Summen + USt-Aufschlüsselung (Client-Vorschau, Server autoritativ), Produkt-Übernahme aus dem Katalog, §19-konforme 0%-Erzwingung
  • Empfänger-Auswahl aus Nextcloud-Kontakten (ContactController + OCP\Contacts\IManager) mit Tipp-Vorschlägen und Auto-Befüllung
  • Lifecycle in der UI: Entwurf speichern → Festschreiben (Bestätigung, endgültige Nummer, read-only) → Stornieren (Stornobeleg)
  • l10n de/en erweitert (120 Keys)

Added (frühere Iterationen)

  • Stammdaten + Produktkatalog (It. 2): ProductService/ProductController (/api/v1/products CRUD) und SettingsController (/api/v1/settings)
  • Frontend ProductsView (Tabelle + Editor-Modal) und SettingsView (gegliedertes Formular: Firma/Bank/Branding/Nummernkreis/Steuer/Versand/Standardtexte) mit §19-Bestätigungsdialog und Live-Vorschau der Rechnungsnummer
  • Pinia-Stores, typisierter API-Client, Geld-Helfer (Cent↔€), l10n de/en
  • Unit-Tests für ProductService
  • (Logo-Auswahl via NC-Files-Picker bewusst auf It. 4 / PDF-Branding verschoben)
  • Initiale App-Grundstruktur (Vue 3 + Vite + @nextcloud/vue 9, PHP 8.2 OCP)
  • App-Navigation mit Platzhalter-Views: Rechnungen, Produkte, Einstellungen
  • Datenmodell + Persistenz-Schicht: Entities/Mapper für Invoice, InvoiceItem, Product, Settings (Geld in Cents, Steuer in Basispunkten, owner-scoped)
  • DB-Migration v0.1.0 (4 Tabellen)
  • InvoiceCalculator (Zeilensummen, Steueraufschlüsselung pro Satzgruppe, Rechnungsnummern-Formatierung) mit Unit-Tests
  • InvoiceService mit Lifecycle (Entwurf → Festschreiben → Storno) und SettingsService (per-Owner-Stammdaten, jahresbasierter Nummernkreis)
  • REST-API /api/v1/invoices (CRUD + /commit, /cancel)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIDCDCCAfACAhNyMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjIyMDcyMDE5WhcNMzYwOTI3MDcyMDE5WjAYMRYwFAYD
VQQDDA1yZWNobnVuZ3N3ZXJrMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAxwoS75lgcuMhZyoEXdTSGHtBaDVUXobuzzXLGIysuquaVwnAwdK+PJTqrPQh
UymsvwBOGiZNLhWL+b7YhvdAhmKdVSxX4X6IhnerumFnie+df8oqTO5+EhpRKAPr
B2uJngJDZI9iLzq752SDymW48EQRNotrNJzAIuOv6S+JjGQl6zF2AGqArPWtLg5b
qqL4hl4o8deNIDQYlc+jky9nDcAAze2U0bB8SQvLCl+kupThBG0FpWujgIeibiWU
1cR7M+YLOT8GDX021ixo6421BndkNqHKMCxZ+F6dDHa3aGq0qaH9AFyeVS8vkH84
eKkGfPEwZc4l/t5tiQ3rwYE7jwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQBfbkus
KxEo6U+jlkymaBgpz35CycwCNmTWwuuLGU287vzbKcaU9iBWSc+qFd8BtGXrE0kc
aQzX0quIryB+IQ42hIVYuSqTQ9HTlXT95o/bX9uKxSx0YDI6jkqt5HnTwVycLGWc
Vu741ETcaRn7zqRWrFk3L0RsgWC7gtq/W6yCQaj1iJYk47Di+b5qUCcIWcMbUNyR
stIdzJf6O2PQXQF8TDkv7xbQGCRizMVpnhSvGpCA/Pwr7XwN/XlNJPbzMt0T+DSA
gXnVu454raanP0asyRTBHZY/QrYleHT6JFvOZjxIXSku+ZHLFrDfaMAlKaoWGlD0
318qOb/IOCBSOiBa
-----END CERTIFICATE-----
SignatureHSEU9FkRh3w5EkQS8knKf2Odr2rIzhq8NqjYmzgijhzpFtIDq3XM1Cs5+cUyKzgGJf1497jAmVwwUb9QS3aCURWoCPBWcoZy2HOqy5V9jdhNgF5r1+hzZrYZvwKkriR4gyZAtM4WnB1t9syVYBQ3E87/8kdHwNKK9hqbZh5Hf61ovhWn0A8Q9i5+A9FK79M1zP/JX+mHio4QAxIVIcbjmmG+MDPsugayfIGmBEYvQCxFqeruOoizXwnbCg2CSqtEK5PxtmJPklZI53+TuLvDaXHNuCQO7QYlCRNQHixoZzWWJj4ap0KKf3KF23UiiKG9ncPIbD7z1Z0tu2KizTX9Qw==
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0