Skip to main content

Vereinsbuchhaltung - Releases

← App details

Nextcloud 34

Vereinsbuchhaltung 0.18.0
Release Details
UpdatedAug. 2, 2026, 4:11 p.m.
Changelog

Hinzugefügt

  • Weitere Mehrsprachigkeit im Backend. Kassenbericht und Kurzbericht (beide als druckfertige HTML-Seite) sowie das Änderungsprotokoll (Berichte → Protokoll) erscheinen jetzt in der Sprache des Nextcloud-Profils statt fest auf Deutsch.
  • Alle bisher noch deutschen Fehler- und Bestätigungsmeldungen der Controller sind übersetzt, ebenso die Prüfmeldungen beim Anlegen und Ändern von Buchungen (Soll-Haben-Kontrolle) und die Fehlermeldungen der CAMT-/MT940-/CSV-Kontoauszugs-Parser.

Technisch

  • Statische Prüfmethoden (JournalService::validateLines(), JournalService::reassignPlan(), BookingService::validateParts()), die auch direkt aus PHPUnit-Tests ohne laufende Nextcloud-Instanz aufgerufen werden, liefern jetzt stabile Fehlercodes statt fertigem Text; die Übersetzung passiert in einer begleitenden Instanzmethode mit Zugriff auf IL10N. Die Parser (CamtCsvParser, Camt053Parser, Mt940Parser, XbucParser) erhalten IL10N als optionalen, in Tests weglassbaren Konstruktorparameter mit deutschem Fallback-Text.

Bekannte Lücken

  • Der CSV-Export der Auswertungen ist noch vollständig Deutsch.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureyT7SVmIOpa+ZxIYuUUiftY1NmsPnETQbPKz5hXSyXYJ2fSqVm/OBPOJyoI2EpaGulf2AqkZr3w8jXrWuh4U3J1m4IuaAK8zGhD47WCAzxFGZxc8iy6ITh0OckjLneDWxMwoQHJO/IggRVjBEaZXKdD2wrFPMjkXDUTBvlMr/YKJFE6bd1qJJ5UKXQedO51aNuRQR/O9UrXJ8IR6F5SmyWzrEvr8F/hNdiQioDnTA2vk1iB2bTciuc9qnQd13m1i43ToUuZfYSYflxBhAq/kMOCrUsICqXo3wy88DNIVuwaiEIPrXuMUBDXsmjcnh0dtku/iVTiOpPtkDjucmJ5bhLcuylyC1sYFt6d5emJlqMUOWHmhzC4eoQc9nv2uSq/VgCVUJd0V4dihQivViVEot+acr/xuHinPVt7YikF5ejoWt9//f8huYVa7O1dR2mKoY+nyOscA1lF1kFo7OYZ30KnerD5qjLJo508MDMWtAb7Pfzw3P423Jssl1h0zAPk7e2UWu+5ImshK7nr5+07Owyt/h41ASF4FeW8ePiUbn1hHgf86avEjbtMrQXajpZJp1AddBYuGCa19+V6jgLory4k8mLyTdCOz3O0nFTjEEU3hhq+BPbaoaztKx3W0FOtBsFEO/FyhaAxffkGjbU88lQoDSP9rX3lgH8oKX++nUHSY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.17.0
Release Details
UpdatedAug. 2, 2026, 3:16 p.m.
Changelog

Der erste sichtbare Schritt zur Mehrsprachigkeit: wer Nextcloud auf Englisch eingestellt hat, sieht jetzt eine englische Oberfläche statt einer deutschen mit englischen Brocken drumherum.

Hinzugefügt

  • Englische Übersetzung. Alle Vue-Komponenten der Oberfläche – jeder Tab, jeder Dialog, jede Fehler- und Bestätigungsmeldung – sowie die häufigsten Fehlermeldungen des Backends sind jetzt ins Englische übersetzt (l10n/en.json). Einen eigenen Sprachschalter braucht die App dafür nicht: wer sein Nextcloud-Profil auf Englisch stellt, bekommt automatisch die englische Fassung. Die Quelltexte im Code bleiben bewusst Deutsch – der Herkunftssprache der App –, Deutsch ist also unverändert die Fallback-Sprache.
  • Video in der App-Store-Beschreibung verlinkt.

Technisch

  • Eigener Lademechanismus für Übersetzungen im Frontend (src/lib/l10n.js): die Bibliothek @nextcloud/l10n geht davon aus, dass Englisch die Quellsprache ist, und lädt dafür gar kein Übersetzungsbundle – bei einer deutschen Quellsprache wäre das genau die falsche Sprache.
  • IL10N ist jetzt per Konstruktor in die Controller und Services injiziert, die nutzerseitige Fehlermeldungen werfen.

Bekannte Lücken

  • Kassenbericht, Kurzbericht, Prüfleitfaden und die CSV-Exporte sind noch vollständig Deutsch.
  • Ein paar Backend-Prüfungen (u. a. die Soll-Haben-Kontrolle beim Buchen, die CAMT-/MT940-Parser) bleiben vorerst Deutsch – sie sind bewusst ohne Nextcloud-Abhängigkeit gehalten, damit sie sich ohne laufende Instanz testen lassen.
  • Das Änderungsprotokoll (Berichte → Protokoll) zeigt seine Einträge weiterhin auf Deutsch.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureroXOT9h02u08zVmBOEm4AgtrqTyByeTNHUynP/GLWlj1W/PSVXK7rwHxjWbw/fnoVsuvroo5FdxY6sTMKgwWfcCYW9WC49dJylKK1FX8oKws1LefX9HqQbZvFeJ9L3grLLht92mwMthzuRfrCaQDygDBmpv1o3PhbrqJpox0zfx1jWd6jJhDpBeBjIcfBf+CyKan8BSSdwFjRUzCoJBIz+cHAB27MY5PfvrDdFmUtjHLvU/MifISIkMiVhxKtY1CnQtJd58t0zJcFvN0qjB85+DAAV9nR6YCcZjNw8UbCdetu5CThcQBPHJLnRXIIf+WP88PgRYkxgRw9d8QKMf2zklGsVTPJdtvacI9V2F5JOIimelYg3V4WacqcpO2F2xOfs6jXVS2E8MFAloWofhNnfVuTINQiHz8Ckw49QlyEr8Up6yEZ28tgJh0AKpQWsLUZ+SUd4PA2obilUrsFjFkEhAUbAPtu0kdKD6l3NYa9oXB4a2Pun6gNpD1qvhmRudPvyIGoYCoAsOstLAehk+eAiF6lfFLe/o0V+RiOn4L2lPt5c96acCwesJD9yZQbZIfbYFM5ddheBSYaJRzyLYJWsK2IETagwH4XVvH/vClPytgMNHiOG/s6LALfsQSUTzz8ktLZqU+U1BHlmqXaR9M2lvlEu2G9O+5ueYM3D3kX5E=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.16.0
Release Details
UpdatedAug. 1, 2026, 9:03 a.m.
Changelog

Diese Version bringt kaum sichtbare Neuerungen: sie räumt den Programmcode auf und sichert ihn gegen Fehler ab, die bisher niemand bemerkt hätte. Ein solcher Fehler kam dabei ans Licht – und er betraf ausgerechnet die Kassenprüfung.

Behoben

  • Der Beleg-Export als ZIP brach ab, sobald ein Beleg im Zeitraum lag. Die Funktion rief eine Methode auf, die es in PHP gar nicht gibt (ZipArchive::addStream); der Download endete mit einem Serverfehler statt mit einem Archiv. Betroffen war genau die Funktion, die eine Kassenprüfung braucht, um alle Belege eines Jahres auf einmal zu bekommen. Die Belege werden jetzt blockweise ins Archiv geschrieben – der Speicherbedarf bleibt wie vorgesehen niedrig, auch bei einem Jahr voller PDFs.
  • Der Kassenbericht ignorierte die dunkle Darstellung. Wer ihn bei dunklem Systemdesign öffnete, bekam schwarze Schrift auf weißem Grund in einem sonst dunklen Fenster – der Kurzbericht konnte es längst. Beide Berichte teilen sich jetzt dieselbe Gestaltung. Am Ausdruck ändert sich nichts.
  • Beispieldaten konnten halb angelegt liegenbleiben. Fehlte ein Konto des Standard-Kontenrahmens, brach das Anlegen mitten in den Buchungen ab. Jetzt meldet die App vorher, welches Konto fehlt.

Geändert

  • Die Rechenregeln aller Auswertungen liegen jetzt an einer Stelle. Die Frage, welches Konto mit welchem Vorzeichen ins Ergebnis eingeht, war an acht Stellen einzeln ausgeschrieben – in den Exporten, in der Saldenliste und in den Berichten. Eine Änderung daran musste bisher überall nachgezogen werden. An den Zahlen ändert sich nichts; sie sind jetzt nur an einer Stelle festgelegt und erstmals automatisiert geprüft.
  • Der Sortier-Vergleich der Tabellen war dreifach vorhanden und ist es nun einmal. Sortierung und Sicherheitsabfragen sind damit in allen Ansichten garantiert gleich.

Technisch

  • Statische Analyse (PHPStan, Stufe 5) läuft jetzt bei jeder Änderung mit und fand die drei oben genannten Fehler.
  • Der 1149 Zeilen lange ExportController ist in Dienste aufgeteilt: CSV, Beleg-Archiv und die druckfertigen Berichte je für sich, der Controller behält nur die Auslieferung (158 Zeilen).
  • Frontend-Unit-Tests (Vitest) für die Rechen- und Anzeigehelfer; der Testbestand wächst von 118 auf 210 Tests.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureVJDiJR0wAF6OF052v41IlOKnSdqYFS+pI1+dFRngpf5U228GkukeyPqI033CH4Q3hummVmpRiAFGTi5n9g403rp88tFm8lw69XuqW2KKFwDkzc5EE0wVs3AVJgHeREn/NotbVAVvItr6+4wdPE4vKY4MnSVrwwPFWyQPhYMcy7ps0GEKQOKIIg8K5FiRvpgFF4M8/24xcDJSX9P6ySetzjjCUewbWBCq90qjAkf1dedOmwpk/WJ6EzDMuOpXjK866ruUFpU6UMHarVV5JY0IO97AJym3rJVUbtF7pkCI4gQVjVAFmcux+rnXm7vLN5EHGRF9cQCgy5REcQAKavKY0k2KS48L/zRjsvzEv0dY/IWAraVowHLkJUDonnUelUPZJ3J6S6CekKswO2oQdXnCc2jGNSY7QS8s2ck9NsnCSeX66hEMC4fI8cZUTeFM5sr4IP7ABKXq4f/DOZ2kl1klwKZjVeCSkD5SQvB4Lt5vq+kj2CzULsoM5EyrxLuvdYt/cOMluMhFdKg8H0Mubcc/TnIMEMGj2ODw7z7z1g5KQdGDPYEQ2JDgUKQ2gxW9exq98q0FmXq95K1ppLvC0c8sDezQF5leB2eVH/c0yDzc6xsDpWbkc9MQiNLofdqyXWHBvvrqKnl7x7qBn8U9BdefGUuFba3HekdHxLZFAm6OPsg=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.15.0
Release Details
UpdatedJuly 31, 2026, 6:56 p.m.
Changelog

Behoben

  • Gelöschte Buchung gab ihren Bankumsatz nicht wieder frei. Wurde ein Buchungssatz gelöscht, der durch das Zuordnen eines Bankumsatzes entstanden war, blieb der Umsatz auf „zugeordnet" stehen – mit einem Verweis auf einen Buchungssatz, den es nicht mehr gab. Er tauchte danach nirgends mehr auf: nicht unter Zuzuordnen (dort stehen nur offene Umsätze) und nicht in den Salden (die kennen nur Buchungen). Auch die Bank-Abstimmung führte ihn weder als gebucht noch als offen, sodass der Kontostand still vom Bankauszug abwich. Der Umsatz steht jetzt nach dem Löschen wieder unter Zuzuordnen und lässt sich neu zuordnen – derselbe Stand wie beim Aufheben einer Zuordnung.
  • Belege eines Jahres konnten beim xbuc-Import verloren gehen. Die Dublettenprüfung des Zusammenführ-Imports beschrieb eine Splittbuchung nur über eine ihrer Zeilen. Eine eingehende Buchung, die zufällig auf diesen Teilbetrag passte, galt dadurch als bereits vorhanden und wurde stillschweigend übersprungen. Der Vergleich betrachtet jetzt die ganze Buchung, und beide Seiten des Vergleichs bilden ihren Schlüssel an derselben Stelle.
  • Beleg löschen konnte einen Datensatz ohne Datei hinterlassen. Die Datei wurde vor dem Datensatz entfernt; schlug das Löschen des Datensatzes fehl, blieb ein Beleg zurück, der sich nicht mehr öffnen ließ. Jetzt gilt auch hier die Reihenfolge, die beim Löschen einer ganzen Buchung längst galt: erst der Datensatz, dann – nach erfolgreichem Abschluss – die Datei.

Geändert

  • Der Jahresabschluss schützt jetzt auch die Konten-Stammdaten. Bisher war ein festgeschriebenes Geschäftsjahr nur gegen Änderungen an den Buchungen gesichert. Über das Konto ließ sich sein Bericht trotzdem nachträglich verschieben: Ein Wechsel der Kontoart dreht das Vorzeichen, ein Wechsel des Geldkonto-Kennzeichens verschiebt das Konto zwischen Vermögensübersicht und Einnahmen-/Ausgaben-Rechnung – das archivierte Jahresergebnis änderte sich, ohne dass eine einzige Buchung angefasst wurde. Kontoart, Geldkonto- Kennzeichen, Sphäre, Rücklagen-Art und Kostenstelle lassen sich deshalb nicht mehr ändern, solange das Konto in einem abgeschlossenen Jahr bebucht ist; wer die Änderung braucht, eröffnet das Jahr wieder und schließt es danach erneut ab. Nummer, Name, Kategorie, Aktiv-Schalter und Überkonto bleiben frei änderbar – sie ändern nur Beschriftungen, keine Beträge.
  • Konten stehen jetzt im Änderungsprotokoll. Anlegen, Ändern und Löschen eines Kontos wurden bisher nicht protokolliert – ausgerechnet die Stammdaten, aus denen jede Auswertung gerechnet wird, waren für die Kassenprüfung unsichtbar. Bei einer Änderung vermerkt das Protokoll zusätzlich, ob ein auswertungsrelevantes Feld betroffen war.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureP7cVaIPv213NPHt6juPqCRD4S2odKrN+G8KhhxyDeKw7BKUxrWvSaOiQCEwBmvQzUCYWUDf0OacHyUlh6nmJEWFmuux3X6wIY3AuGQx/gg37EMyMCod8JA82iPNAMLXML1bEIeU9RGEIbmtdc6CmNEV+TlEBCp02kskc/V1FytAkCREPOCfCr7DodbD6FZtrjN+VloewQblps1KCCye9tm1v7mMDRDexPv2jiATXsKqS/D/ostXEh/SGTtX1saXxlFpMJss8WYgRNCMbzGMW6i+k2ND/iiEAzBFBKwFY0w4YunU4zo2x6Y3z7SCPeSLP0AagS4LI2vv5vKeq2jHyqtnXTS6Zi6tba2P6ObB0stmW6lzc6p58UW3Dvw9Irm58hAa7QqvqUheI2t0haws3Cah2/e95eOqk/+tFcGS1k6C1sPVQVlcEFjMyLN2a88YKW32okbQhzCEixkockVQQbWfY40Shqg64ZSfGGR6VAgHck6rioYnQJE2H5+3SexdzsYkJVY2jJ00tLIdCDpq2Z3M5AZSjxHpGcRyJ+w+6EIx10SbOdsqxQw0/FEnAC8Bk4d1vcodBZBwXFav/Ew6diriLx49vhFQZvlvmshNbREyFYiWskPUKE46NTOVHZVGZqLlkQD4vFbu61PWYR8swhuYhqMwPbsxkzbxIf2JQuQU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.13.0
Release Details
UpdatedJuly 31, 2026, 8:50 a.m.
Changelog

Hinzugefügt

  • Frei definierbare Kostenstellen. Bisher leitete die App die Kostenstelle aus dem Kontenrahmen ab – entweder aus der zweiten Zahlengruppe der Kontonummer oder „ein Konto = eine Kostenstelle". Beides setzt einen bestimmten Kontenaufbau voraus. Jetzt lassen sich Kostenstellen unter Einstellungen → Kostenstellen frei anlegen und Konten ihnen ausdrücklich zuordnen; beliebige Konten können so zu einem Projekt zusammengefasst werden. Der neue Modus heißt „Frei definierte Kostenstellen" (Einstellungen → Kostenstellen-Modus, nur Verwalter). Die beiden bisherigen Modi bleiben unverändert Standard – bestehende Auswertungen ändern sich nicht. Die Zuordnung geht einzeln im Konto-Dialog oder für viele Konten auf einmal. Angelegte Kostenstellen erscheinen im Bericht auch ohne zugeordnetes Konto, damit eine fehlende Zuordnung sichtbar ist.
  • Umbuchen direkt im Kontoauszug. Wer beim Durchblättern eines Kontos (Tab Konten) eine falsch zugeordnete Buchung findet, bucht sie an Ort und Stelle auf ein anderes Konto um – der Umweg über das Journal entfällt. Umbuchen lässt sich jede Seite der Buchung, also auch das Gegenkonto. Geändert wird ausschließlich die Kontozuordnung; Betrag, Datum, Beschreibung und die Gegenseite bleiben, sodass Soll und Haben nicht auseinanderlaufen können. Abgeschlossene Geschäftsjahre bleiben gesperrt, jede Umbuchung steht im Änderungsprotokoll, und eine zwischenzeitliche Änderung durch jemand anderen wird erkannt.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignaturerYLg9/W+aZy3UR2gm/vOTWoLkk4IZrBuLDSsMcqIA1ezxdDhM4DCie+hHnru5bowZ4ZqOE8XmhrBYJCF9F8Wg3zyklma7eMmTKWMHy0mlys+/SYrmnPOfrzUyA/3PvFLNztuRJgyVeL/bI/0fp4QQ5YUTHG6oQHcY9NZXeB1Yy9AJAOP/oBHHdA9RDSONWvDJKgpLAgKBHcpj8J9SPCeVOviwHla4B2fbLKjpJu185Ee7SsvjXQJYatX0SV1/Hy65I0o5xfst63HfBj8vMYkiu6vxz3bU8kp5jUJKWWmDiB9qQHByk5srK1Wu/R/gZKgfxp+EtU1SWYaZFIU5ZlynNgtZpx63083sBz/UgryqKitjmOvD1Qw1UAi4sP5BMm8IKjZCCHY1mBImO/sIQqa7MjpcLulmnOmAXorbAgfG9ZaXFrk0AafHeQRzemtQ5nvlYpl8Z58F11ZuVKudYhsciBek7SHIhHTbs99aOsb934bzlaN+lZelZfm5J0OyCJaBv7zCKPQqMuBUNioV/w2ntAY/CyY2TK2gfJb2wMjJmNNR5s7hRcWVIPpklXxE/o44NSsckDDnzA4FemD7tswK8tTftO/v+Qk04kzjHi984idYXoHWSwFAYYiZxmL2oB6OOs+MXh9dGQUbpctC2pOAeSdO0J0dO/7D+MkKtaBrYA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.12.0
Release Details
UpdatedJuly 30, 2026, 4:01 p.m.
Changelog

Hinzugefügt

  • Kontoauszüge in zwei weiteren Formaten: neben der bisherigen CSV liest die App jetzt auch CAMT.053 (XML) und MT940. Welches Format vorliegt, erkennt sie am Inhalt der Datei – die Endung spielt keine Rolle. CAMT.053 ist die bessere Wahl, wo die Bank es anbietet: Vorzeichen, Datum und Zahlungsbeteiligte stehen dort eindeutig drin, statt aus Spaltenüberschriften erraten zu werden.
  • Wachordner: Auf Wunsch liest die App Kontoauszüge selbstständig aus einem Nextcloud-Ordner ein (Einstellungen → Kontoauszüge automatisch einlesen). Den heruntergeladenen Auszug dort ablegen genügt; stündlich sieht ein Hintergrundjob nach. Verarbeitete Dateien wandern nach verarbeitet/, nicht lesbare mit Begründung nach fehler/ – gelöscht wird nichts. Setzt System-Cron voraus. Das ersetzt das Hochladen von Hand, nicht das Herunterladen bei der Bank.
  • Vorgemerkte Umsätze aus CAMT.053 werden übersprungen. Sie ändern sich beim endgültigen Buchen häufig noch und kämen sonst ein zweites Mal herein.
  • Mehrere Bankkonten werden unterschieden. Am Geldkonto lässt sich die IBAN hinterlegen (Tab Konten → Konto bearbeiten, nur bei Geldkonten); beim Zuordnen einer Bankbuchung wählt die App daraufhin das Geldkonto, auf dem der Umsatz tatsächlich gebucht wurde. Bisher landete alles auf dem ersten Bankkonto des Kontenrahmens. Ohne hinterlegte IBAN – oder wenn der Auszug keine mitbringt – bleibt es beim bisherigen Verhalten. Wer mehrere Konten führt, sollte CAMT.053 oder MT940 exportieren: dort steht die IBAN verlässlich, in der CSV mancher Bank nur eine Kontonummer.

Behoben

  • Derselbe Umsatz landet nicht mehr doppelt, wenn das Exportformat wechselt. Die Dublettenerkennung hing am eigenen Konto, und das schreiben die Formate verschieden: die CSV mancher Bank führt dort nur eine Kontonummer, CAMT.053 immer die volle IBAN. Zusätzlich zum bisherigen Vergleich prüft die App Umsätze jetzt über Datum, Betrag und Text gegen die bereits vorhandenen Bankbuchungen.

Sonstiges

  • Die Umsatzquellen liegen hinter einer gemeinsamen Schnittstelle (lib/Service/Statement/); Dublettenerkennung, Regeln und Import-Protokoll sind für alle Formate dieselben. Der MT940-Parser ist zugleich die Vorarbeit für einen späteren FinTS-Abruf, der genau dieses Format liefert.
  • Das Import-Protokoll hält fest, aus welchem Format ein Import stammt; Geldkonten können ihre IBAN tragen (Migration 122).
  • Unit-Tests für beide neuen Parser sowie ein Kreuztest, der denselben Kontoauszug in allen drei Formaten vergleicht (61 Tests).
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureYrd0NVVBI48qEcLJqlW2g3q/DsCa4M/I4Dap6Y7XZoLqHbFQtEHZiGe5WGYmrRZxZaiS38aXU62p6tx2uqB+V5cYI7xSomdVQtN/PlHS0hXRjO5OunZIpXdSaplQn0BiBhuN9iP+Vdrwc395yav9MegQE1opuH5kj2xPgKQyUbUehBedJ4rV+ePyXm2KFXsfv3DFeYjp9R16i41D+fD912hJskD3BNwIgqh0NRalj4KkwrIES46Ym7TZoZ14Jx0NJdh99l4/EXgdRicoSWEUT3aRxhbN+4qfAwa8MsDhL4K+jv4OhqDFxlD5yQKRqr6YsU9wxJ1HmMH8rutukusf18IQsgQjjl4zuwtwNFjrx18LhnUuozOQgRtVVZrQNXGneZ8ZLa7h6iZLUIkoiGtrrSyl0rXJFcg4LRmCz62Q9BaXCO9N8LhgxLa9TPKKJtoSroEbbFAHNewd5ir03uudK/UA6hr6n3GXNAtlTdyMAle9r7JY2DuvIJe+ftEHNqMC9prT2M1E2qb/nSgYk+RziNaqt4Yd5POjG65TCNEQOKIQ/aUpixnKXUFwzS+fJpFmGA1b+eULBKo0r5Q17xAluMjlw3lBsGcwozKXHc1KeCKIiZfjx9x+y1XMNuzeDaWG1g8kd2sjVTwY2vW+lS/d/R/K1GE2My5qoMILXPZ8+ko=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.11.2
Release Details
UpdatedJuly 29, 2026, 3:43 p.m.
Changelog

Behoben

  • Beträge werden nicht mehr abgeschnitten. In Tabellen hatte die Betragsspalte eine feste Breite von 100 px; längere Werte wie „28.798,68 €" wurden mit „…" gekürzt und ließen sich falsch lesen. Die Spalte wächst jetzt mit.
  • Mobil: „Buchungen" in der unteren Leiste war gekürzt („Buchun…"). Die Einträge teilen sich die Breite jetzt nach Inhalt statt zu gleichen Teilen.
  • Mobil: zu kleine Tippziele. Schaltflächen, Auswahlfelder und Eingabefelder waren teils nur 24–36 px hoch. Sie sind jetzt mindestens 44 px – auch auf Tablets, die per Finger bedient werden, aber das Desktop-Layout bekommen.
  • Mobil: lange Kontonamen im Kontenbaum wurden gekürzt und waren damit nicht mehr unterscheidbar; sie brechen jetzt um.
  • Mobil: das Ende langer Listen lag unter dem schwebenden Buchungs-Knopf und war nicht lesbar.

Sonstiges

  • Ausführliche Beschreibung und Screenshots für den Nextcloud App Store.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureDikykvZ2qeSFgT2rqRn1/K6d7txbP7OEC32gKuFsiCeigdGhCtrIHnVWHhA4ddYVzD+A5w+jgbYrYMzkgZcFS/cJE69wPzosrfHtsfrR1AXnFJprlr1fEU7gM2imvESCrjGS0s8KEeOczNzOTrhw6vtaWm4zbpYth5MLdMZmYFFTxtCQ67VIKIDNZhSVBS+dlbgKma5HobySt4IwUZeR+6qhMtZQZbmMCJ1LSuwPs6QCVTfAxXRlEBkuIdS0VYiBn3jDaoCfBV8tGZjpAG63npnwXIfJJd4HeCyDpMzDx0h/z6JpXKEcJuujT2vnrbjgCgqPOQX6qqCFru7djJ8o1BLR1pO8qNiTn194HAgOH/2cKzaJ/RbYAUXds7qW8aQgxvviJ9adZGRf3zC3jyYB49EGdYB/rKG8Lnn8mhDFkF7iXej4kwz/myXK8MTldP/xctXSC/zinorrnHaRo28XNtFDq5GazeVXpK7/9nvyt3SE49zoABnAEKDw6SYZrVCLX4+J8bbM6yk/ohFE3g1KL2/wXL1GnE1spwuz/OamTPJUqgVNJyV3MyzxG5aHpGxdj3lmctGt8eO34tXvHzofVmHvrhnEbEIcyMlphbOWD2mCiGkmltuGjJqvMJpLbSyZIe/oAXkJ7IiY3KGIRpiKlGUueiQlo0UbI1L+ubF/Uak=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.11.1
Release Details
UpdatedJuly 29, 2026, 3:03 p.m.
Changelog

Erste im Nextcloud App Store veröffentlichte Fassung. Am Programm selbst ändert sich gegenüber 0.11.0 nichts.

Sonstiges

  • Die App wird jetzt mit dem von Nextcloud ausgestellten Zertifikat signiert (appinfo/signature.json) und im App Store veröffentlicht. Das Paket zu 0.11.0 war noch unsigniert und ist deshalb nur über ein direktes Deployment aus dem GitHub-Release installierbar.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureRqufs3+r1UDzVeNY47cnz/w6ATGHouz8ape7ZHM3P5KFdQNcJ6RYVIO+epIwjLtAeVJdMgfEDJwafg1dx757MvkBsfr4fO9yBiP0yNmKeVwdm3G/7vM+WTHYg9CpRNYN2AivshD6OdD5axADiNnBU0jk+qw5szzQ77+pYkxHFMrTC1pbM8VWuTD/F+PrU0V7617dl2nDG7ZWwzjFgP65k6y3lr7hFi46LDiIvwWNv8leoggPU3YoB4YywRdXqhIHImtdBs/fauWamzU49TY22hPqSTPFsAVqyW/RI7Jw599oTCozx0W92XQilBZOGdUQb1Lr8nS+DJs6fGz6eJXbJQd2K81qqSyyIN06UcBudD6zCu5DdLuPLg0kWs7vwq5wI/4AXpBb5xadncHFtJOaNNoCJ2v7+C7d1ZaJ3kfv6ZNnVcuEYYQsNfuitHmmNzATyWSH2+hzXj/fZfpZA0vyHDLa4XkCPMwOi55IaPuvCdEaKE+RTf6hEdnul7MhU8C8BUFHKp3HlkdzJLPmffyf3vTDFoRnvtA2isMEXrkE2u9Usk9X1DlOXxn4PjmCYGNEm54YfVpTGRiY8i972c9XIjwmlpUIaqYARzgSad2kT23TXEMmzsPp7/kM2DjAqmEJbe+Lgl87Z7ZseXBHSnJXd1JjtxYJCm4og7lA2zSagvY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0

Nextcloud 33

Vereinsbuchhaltung 0.18.0
Release Details
UpdatedAug. 2, 2026, 4:11 p.m.
Changelog

Hinzugefügt

  • Weitere Mehrsprachigkeit im Backend. Kassenbericht und Kurzbericht (beide als druckfertige HTML-Seite) sowie das Änderungsprotokoll (Berichte → Protokoll) erscheinen jetzt in der Sprache des Nextcloud-Profils statt fest auf Deutsch.
  • Alle bisher noch deutschen Fehler- und Bestätigungsmeldungen der Controller sind übersetzt, ebenso die Prüfmeldungen beim Anlegen und Ändern von Buchungen (Soll-Haben-Kontrolle) und die Fehlermeldungen der CAMT-/MT940-/CSV-Kontoauszugs-Parser.

Technisch

  • Statische Prüfmethoden (JournalService::validateLines(), JournalService::reassignPlan(), BookingService::validateParts()), die auch direkt aus PHPUnit-Tests ohne laufende Nextcloud-Instanz aufgerufen werden, liefern jetzt stabile Fehlercodes statt fertigem Text; die Übersetzung passiert in einer begleitenden Instanzmethode mit Zugriff auf IL10N. Die Parser (CamtCsvParser, Camt053Parser, Mt940Parser, XbucParser) erhalten IL10N als optionalen, in Tests weglassbaren Konstruktorparameter mit deutschem Fallback-Text.

Bekannte Lücken

  • Der CSV-Export der Auswertungen ist noch vollständig Deutsch.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureyT7SVmIOpa+ZxIYuUUiftY1NmsPnETQbPKz5hXSyXYJ2fSqVm/OBPOJyoI2EpaGulf2AqkZr3w8jXrWuh4U3J1m4IuaAK8zGhD47WCAzxFGZxc8iy6ITh0OckjLneDWxMwoQHJO/IggRVjBEaZXKdD2wrFPMjkXDUTBvlMr/YKJFE6bd1qJJ5UKXQedO51aNuRQR/O9UrXJ8IR6F5SmyWzrEvr8F/hNdiQioDnTA2vk1iB2bTciuc9qnQd13m1i43ToUuZfYSYflxBhAq/kMOCrUsICqXo3wy88DNIVuwaiEIPrXuMUBDXsmjcnh0dtku/iVTiOpPtkDjucmJ5bhLcuylyC1sYFt6d5emJlqMUOWHmhzC4eoQc9nv2uSq/VgCVUJd0V4dihQivViVEot+acr/xuHinPVt7YikF5ejoWt9//f8huYVa7O1dR2mKoY+nyOscA1lF1kFo7OYZ30KnerD5qjLJo508MDMWtAb7Pfzw3P423Jssl1h0zAPk7e2UWu+5ImshK7nr5+07Owyt/h41ASF4FeW8ePiUbn1hHgf86avEjbtMrQXajpZJp1AddBYuGCa19+V6jgLory4k8mLyTdCOz3O0nFTjEEU3hhq+BPbaoaztKx3W0FOtBsFEO/FyhaAxffkGjbU88lQoDSP9rX3lgH8oKX++nUHSY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.17.0
Release Details
UpdatedAug. 2, 2026, 3:16 p.m.
Changelog

Der erste sichtbare Schritt zur Mehrsprachigkeit: wer Nextcloud auf Englisch eingestellt hat, sieht jetzt eine englische Oberfläche statt einer deutschen mit englischen Brocken drumherum.

Hinzugefügt

  • Englische Übersetzung. Alle Vue-Komponenten der Oberfläche – jeder Tab, jeder Dialog, jede Fehler- und Bestätigungsmeldung – sowie die häufigsten Fehlermeldungen des Backends sind jetzt ins Englische übersetzt (l10n/en.json). Einen eigenen Sprachschalter braucht die App dafür nicht: wer sein Nextcloud-Profil auf Englisch stellt, bekommt automatisch die englische Fassung. Die Quelltexte im Code bleiben bewusst Deutsch – der Herkunftssprache der App –, Deutsch ist also unverändert die Fallback-Sprache.
  • Video in der App-Store-Beschreibung verlinkt.

Technisch

  • Eigener Lademechanismus für Übersetzungen im Frontend (src/lib/l10n.js): die Bibliothek @nextcloud/l10n geht davon aus, dass Englisch die Quellsprache ist, und lädt dafür gar kein Übersetzungsbundle – bei einer deutschen Quellsprache wäre das genau die falsche Sprache.
  • IL10N ist jetzt per Konstruktor in die Controller und Services injiziert, die nutzerseitige Fehlermeldungen werfen.

Bekannte Lücken

  • Kassenbericht, Kurzbericht, Prüfleitfaden und die CSV-Exporte sind noch vollständig Deutsch.
  • Ein paar Backend-Prüfungen (u. a. die Soll-Haben-Kontrolle beim Buchen, die CAMT-/MT940-Parser) bleiben vorerst Deutsch – sie sind bewusst ohne Nextcloud-Abhängigkeit gehalten, damit sie sich ohne laufende Instanz testen lassen.
  • Das Änderungsprotokoll (Berichte → Protokoll) zeigt seine Einträge weiterhin auf Deutsch.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureroXOT9h02u08zVmBOEm4AgtrqTyByeTNHUynP/GLWlj1W/PSVXK7rwHxjWbw/fnoVsuvroo5FdxY6sTMKgwWfcCYW9WC49dJylKK1FX8oKws1LefX9HqQbZvFeJ9L3grLLht92mwMthzuRfrCaQDygDBmpv1o3PhbrqJpox0zfx1jWd6jJhDpBeBjIcfBf+CyKan8BSSdwFjRUzCoJBIz+cHAB27MY5PfvrDdFmUtjHLvU/MifISIkMiVhxKtY1CnQtJd58t0zJcFvN0qjB85+DAAV9nR6YCcZjNw8UbCdetu5CThcQBPHJLnRXIIf+WP88PgRYkxgRw9d8QKMf2zklGsVTPJdtvacI9V2F5JOIimelYg3V4WacqcpO2F2xOfs6jXVS2E8MFAloWofhNnfVuTINQiHz8Ckw49QlyEr8Up6yEZ28tgJh0AKpQWsLUZ+SUd4PA2obilUrsFjFkEhAUbAPtu0kdKD6l3NYa9oXB4a2Pun6gNpD1qvhmRudPvyIGoYCoAsOstLAehk+eAiF6lfFLe/o0V+RiOn4L2lPt5c96acCwesJD9yZQbZIfbYFM5ddheBSYaJRzyLYJWsK2IETagwH4XVvH/vClPytgMNHiOG/s6LALfsQSUTzz8ktLZqU+U1BHlmqXaR9M2lvlEu2G9O+5ueYM3D3kX5E=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.16.0
Release Details
UpdatedAug. 1, 2026, 9:03 a.m.
Changelog

Diese Version bringt kaum sichtbare Neuerungen: sie räumt den Programmcode auf und sichert ihn gegen Fehler ab, die bisher niemand bemerkt hätte. Ein solcher Fehler kam dabei ans Licht – und er betraf ausgerechnet die Kassenprüfung.

Behoben

  • Der Beleg-Export als ZIP brach ab, sobald ein Beleg im Zeitraum lag. Die Funktion rief eine Methode auf, die es in PHP gar nicht gibt (ZipArchive::addStream); der Download endete mit einem Serverfehler statt mit einem Archiv. Betroffen war genau die Funktion, die eine Kassenprüfung braucht, um alle Belege eines Jahres auf einmal zu bekommen. Die Belege werden jetzt blockweise ins Archiv geschrieben – der Speicherbedarf bleibt wie vorgesehen niedrig, auch bei einem Jahr voller PDFs.
  • Der Kassenbericht ignorierte die dunkle Darstellung. Wer ihn bei dunklem Systemdesign öffnete, bekam schwarze Schrift auf weißem Grund in einem sonst dunklen Fenster – der Kurzbericht konnte es längst. Beide Berichte teilen sich jetzt dieselbe Gestaltung. Am Ausdruck ändert sich nichts.
  • Beispieldaten konnten halb angelegt liegenbleiben. Fehlte ein Konto des Standard-Kontenrahmens, brach das Anlegen mitten in den Buchungen ab. Jetzt meldet die App vorher, welches Konto fehlt.

Geändert

  • Die Rechenregeln aller Auswertungen liegen jetzt an einer Stelle. Die Frage, welches Konto mit welchem Vorzeichen ins Ergebnis eingeht, war an acht Stellen einzeln ausgeschrieben – in den Exporten, in der Saldenliste und in den Berichten. Eine Änderung daran musste bisher überall nachgezogen werden. An den Zahlen ändert sich nichts; sie sind jetzt nur an einer Stelle festgelegt und erstmals automatisiert geprüft.
  • Der Sortier-Vergleich der Tabellen war dreifach vorhanden und ist es nun einmal. Sortierung und Sicherheitsabfragen sind damit in allen Ansichten garantiert gleich.

Technisch

  • Statische Analyse (PHPStan, Stufe 5) läuft jetzt bei jeder Änderung mit und fand die drei oben genannten Fehler.
  • Der 1149 Zeilen lange ExportController ist in Dienste aufgeteilt: CSV, Beleg-Archiv und die druckfertigen Berichte je für sich, der Controller behält nur die Auslieferung (158 Zeilen).
  • Frontend-Unit-Tests (Vitest) für die Rechen- und Anzeigehelfer; der Testbestand wächst von 118 auf 210 Tests.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureVJDiJR0wAF6OF052v41IlOKnSdqYFS+pI1+dFRngpf5U228GkukeyPqI033CH4Q3hummVmpRiAFGTi5n9g403rp88tFm8lw69XuqW2KKFwDkzc5EE0wVs3AVJgHeREn/NotbVAVvItr6+4wdPE4vKY4MnSVrwwPFWyQPhYMcy7ps0GEKQOKIIg8K5FiRvpgFF4M8/24xcDJSX9P6ySetzjjCUewbWBCq90qjAkf1dedOmwpk/WJ6EzDMuOpXjK866ruUFpU6UMHarVV5JY0IO97AJym3rJVUbtF7pkCI4gQVjVAFmcux+rnXm7vLN5EHGRF9cQCgy5REcQAKavKY0k2KS48L/zRjsvzEv0dY/IWAraVowHLkJUDonnUelUPZJ3J6S6CekKswO2oQdXnCc2jGNSY7QS8s2ck9NsnCSeX66hEMC4fI8cZUTeFM5sr4IP7ABKXq4f/DOZ2kl1klwKZjVeCSkD5SQvB4Lt5vq+kj2CzULsoM5EyrxLuvdYt/cOMluMhFdKg8H0Mubcc/TnIMEMGj2ODw7z7z1g5KQdGDPYEQ2JDgUKQ2gxW9exq98q0FmXq95K1ppLvC0c8sDezQF5leB2eVH/c0yDzc6xsDpWbkc9MQiNLofdqyXWHBvvrqKnl7x7qBn8U9BdefGUuFba3HekdHxLZFAm6OPsg=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.15.0
Release Details
UpdatedJuly 31, 2026, 6:56 p.m.
Changelog

Behoben

  • Gelöschte Buchung gab ihren Bankumsatz nicht wieder frei. Wurde ein Buchungssatz gelöscht, der durch das Zuordnen eines Bankumsatzes entstanden war, blieb der Umsatz auf „zugeordnet" stehen – mit einem Verweis auf einen Buchungssatz, den es nicht mehr gab. Er tauchte danach nirgends mehr auf: nicht unter Zuzuordnen (dort stehen nur offene Umsätze) und nicht in den Salden (die kennen nur Buchungen). Auch die Bank-Abstimmung führte ihn weder als gebucht noch als offen, sodass der Kontostand still vom Bankauszug abwich. Der Umsatz steht jetzt nach dem Löschen wieder unter Zuzuordnen und lässt sich neu zuordnen – derselbe Stand wie beim Aufheben einer Zuordnung.
  • Belege eines Jahres konnten beim xbuc-Import verloren gehen. Die Dublettenprüfung des Zusammenführ-Imports beschrieb eine Splittbuchung nur über eine ihrer Zeilen. Eine eingehende Buchung, die zufällig auf diesen Teilbetrag passte, galt dadurch als bereits vorhanden und wurde stillschweigend übersprungen. Der Vergleich betrachtet jetzt die ganze Buchung, und beide Seiten des Vergleichs bilden ihren Schlüssel an derselben Stelle.
  • Beleg löschen konnte einen Datensatz ohne Datei hinterlassen. Die Datei wurde vor dem Datensatz entfernt; schlug das Löschen des Datensatzes fehl, blieb ein Beleg zurück, der sich nicht mehr öffnen ließ. Jetzt gilt auch hier die Reihenfolge, die beim Löschen einer ganzen Buchung längst galt: erst der Datensatz, dann – nach erfolgreichem Abschluss – die Datei.

Geändert

  • Der Jahresabschluss schützt jetzt auch die Konten-Stammdaten. Bisher war ein festgeschriebenes Geschäftsjahr nur gegen Änderungen an den Buchungen gesichert. Über das Konto ließ sich sein Bericht trotzdem nachträglich verschieben: Ein Wechsel der Kontoart dreht das Vorzeichen, ein Wechsel des Geldkonto-Kennzeichens verschiebt das Konto zwischen Vermögensübersicht und Einnahmen-/Ausgaben-Rechnung – das archivierte Jahresergebnis änderte sich, ohne dass eine einzige Buchung angefasst wurde. Kontoart, Geldkonto- Kennzeichen, Sphäre, Rücklagen-Art und Kostenstelle lassen sich deshalb nicht mehr ändern, solange das Konto in einem abgeschlossenen Jahr bebucht ist; wer die Änderung braucht, eröffnet das Jahr wieder und schließt es danach erneut ab. Nummer, Name, Kategorie, Aktiv-Schalter und Überkonto bleiben frei änderbar – sie ändern nur Beschriftungen, keine Beträge.
  • Konten stehen jetzt im Änderungsprotokoll. Anlegen, Ändern und Löschen eines Kontos wurden bisher nicht protokolliert – ausgerechnet die Stammdaten, aus denen jede Auswertung gerechnet wird, waren für die Kassenprüfung unsichtbar. Bei einer Änderung vermerkt das Protokoll zusätzlich, ob ein auswertungsrelevantes Feld betroffen war.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureP7cVaIPv213NPHt6juPqCRD4S2odKrN+G8KhhxyDeKw7BKUxrWvSaOiQCEwBmvQzUCYWUDf0OacHyUlh6nmJEWFmuux3X6wIY3AuGQx/gg37EMyMCod8JA82iPNAMLXML1bEIeU9RGEIbmtdc6CmNEV+TlEBCp02kskc/V1FytAkCREPOCfCr7DodbD6FZtrjN+VloewQblps1KCCye9tm1v7mMDRDexPv2jiATXsKqS/D/ostXEh/SGTtX1saXxlFpMJss8WYgRNCMbzGMW6i+k2ND/iiEAzBFBKwFY0w4YunU4zo2x6Y3z7SCPeSLP0AagS4LI2vv5vKeq2jHyqtnXTS6Zi6tba2P6ObB0stmW6lzc6p58UW3Dvw9Irm58hAa7QqvqUheI2t0haws3Cah2/e95eOqk/+tFcGS1k6C1sPVQVlcEFjMyLN2a88YKW32okbQhzCEixkockVQQbWfY40Shqg64ZSfGGR6VAgHck6rioYnQJE2H5+3SexdzsYkJVY2jJ00tLIdCDpq2Z3M5AZSjxHpGcRyJ+w+6EIx10SbOdsqxQw0/FEnAC8Bk4d1vcodBZBwXFav/Ew6diriLx49vhFQZvlvmshNbREyFYiWskPUKE46NTOVHZVGZqLlkQD4vFbu61PWYR8swhuYhqMwPbsxkzbxIf2JQuQU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.13.0
Release Details
UpdatedJuly 31, 2026, 8:50 a.m.
Changelog

Hinzugefügt

  • Frei definierbare Kostenstellen. Bisher leitete die App die Kostenstelle aus dem Kontenrahmen ab – entweder aus der zweiten Zahlengruppe der Kontonummer oder „ein Konto = eine Kostenstelle". Beides setzt einen bestimmten Kontenaufbau voraus. Jetzt lassen sich Kostenstellen unter Einstellungen → Kostenstellen frei anlegen und Konten ihnen ausdrücklich zuordnen; beliebige Konten können so zu einem Projekt zusammengefasst werden. Der neue Modus heißt „Frei definierte Kostenstellen" (Einstellungen → Kostenstellen-Modus, nur Verwalter). Die beiden bisherigen Modi bleiben unverändert Standard – bestehende Auswertungen ändern sich nicht. Die Zuordnung geht einzeln im Konto-Dialog oder für viele Konten auf einmal. Angelegte Kostenstellen erscheinen im Bericht auch ohne zugeordnetes Konto, damit eine fehlende Zuordnung sichtbar ist.
  • Umbuchen direkt im Kontoauszug. Wer beim Durchblättern eines Kontos (Tab Konten) eine falsch zugeordnete Buchung findet, bucht sie an Ort und Stelle auf ein anderes Konto um – der Umweg über das Journal entfällt. Umbuchen lässt sich jede Seite der Buchung, also auch das Gegenkonto. Geändert wird ausschließlich die Kontozuordnung; Betrag, Datum, Beschreibung und die Gegenseite bleiben, sodass Soll und Haben nicht auseinanderlaufen können. Abgeschlossene Geschäftsjahre bleiben gesperrt, jede Umbuchung steht im Änderungsprotokoll, und eine zwischenzeitliche Änderung durch jemand anderen wird erkannt.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignaturerYLg9/W+aZy3UR2gm/vOTWoLkk4IZrBuLDSsMcqIA1ezxdDhM4DCie+hHnru5bowZ4ZqOE8XmhrBYJCF9F8Wg3zyklma7eMmTKWMHy0mlys+/SYrmnPOfrzUyA/3PvFLNztuRJgyVeL/bI/0fp4QQ5YUTHG6oQHcY9NZXeB1Yy9AJAOP/oBHHdA9RDSONWvDJKgpLAgKBHcpj8J9SPCeVOviwHla4B2fbLKjpJu185Ee7SsvjXQJYatX0SV1/Hy65I0o5xfst63HfBj8vMYkiu6vxz3bU8kp5jUJKWWmDiB9qQHByk5srK1Wu/R/gZKgfxp+EtU1SWYaZFIU5ZlynNgtZpx63083sBz/UgryqKitjmOvD1Qw1UAi4sP5BMm8IKjZCCHY1mBImO/sIQqa7MjpcLulmnOmAXorbAgfG9ZaXFrk0AafHeQRzemtQ5nvlYpl8Z58F11ZuVKudYhsciBek7SHIhHTbs99aOsb934bzlaN+lZelZfm5J0OyCJaBv7zCKPQqMuBUNioV/w2ntAY/CyY2TK2gfJb2wMjJmNNR5s7hRcWVIPpklXxE/o44NSsckDDnzA4FemD7tswK8tTftO/v+Qk04kzjHi984idYXoHWSwFAYYiZxmL2oB6OOs+MXh9dGQUbpctC2pOAeSdO0J0dO/7D+MkKtaBrYA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.12.0
Release Details
UpdatedJuly 30, 2026, 4:01 p.m.
Changelog

Hinzugefügt

  • Kontoauszüge in zwei weiteren Formaten: neben der bisherigen CSV liest die App jetzt auch CAMT.053 (XML) und MT940. Welches Format vorliegt, erkennt sie am Inhalt der Datei – die Endung spielt keine Rolle. CAMT.053 ist die bessere Wahl, wo die Bank es anbietet: Vorzeichen, Datum und Zahlungsbeteiligte stehen dort eindeutig drin, statt aus Spaltenüberschriften erraten zu werden.
  • Wachordner: Auf Wunsch liest die App Kontoauszüge selbstständig aus einem Nextcloud-Ordner ein (Einstellungen → Kontoauszüge automatisch einlesen). Den heruntergeladenen Auszug dort ablegen genügt; stündlich sieht ein Hintergrundjob nach. Verarbeitete Dateien wandern nach verarbeitet/, nicht lesbare mit Begründung nach fehler/ – gelöscht wird nichts. Setzt System-Cron voraus. Das ersetzt das Hochladen von Hand, nicht das Herunterladen bei der Bank.
  • Vorgemerkte Umsätze aus CAMT.053 werden übersprungen. Sie ändern sich beim endgültigen Buchen häufig noch und kämen sonst ein zweites Mal herein.
  • Mehrere Bankkonten werden unterschieden. Am Geldkonto lässt sich die IBAN hinterlegen (Tab Konten → Konto bearbeiten, nur bei Geldkonten); beim Zuordnen einer Bankbuchung wählt die App daraufhin das Geldkonto, auf dem der Umsatz tatsächlich gebucht wurde. Bisher landete alles auf dem ersten Bankkonto des Kontenrahmens. Ohne hinterlegte IBAN – oder wenn der Auszug keine mitbringt – bleibt es beim bisherigen Verhalten. Wer mehrere Konten führt, sollte CAMT.053 oder MT940 exportieren: dort steht die IBAN verlässlich, in der CSV mancher Bank nur eine Kontonummer.

Behoben

  • Derselbe Umsatz landet nicht mehr doppelt, wenn das Exportformat wechselt. Die Dublettenerkennung hing am eigenen Konto, und das schreiben die Formate verschieden: die CSV mancher Bank führt dort nur eine Kontonummer, CAMT.053 immer die volle IBAN. Zusätzlich zum bisherigen Vergleich prüft die App Umsätze jetzt über Datum, Betrag und Text gegen die bereits vorhandenen Bankbuchungen.

Sonstiges

  • Die Umsatzquellen liegen hinter einer gemeinsamen Schnittstelle (lib/Service/Statement/); Dublettenerkennung, Regeln und Import-Protokoll sind für alle Formate dieselben. Der MT940-Parser ist zugleich die Vorarbeit für einen späteren FinTS-Abruf, der genau dieses Format liefert.
  • Das Import-Protokoll hält fest, aus welchem Format ein Import stammt; Geldkonten können ihre IBAN tragen (Migration 122).
  • Unit-Tests für beide neuen Parser sowie ein Kreuztest, der denselben Kontoauszug in allen drei Formaten vergleicht (61 Tests).
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureYrd0NVVBI48qEcLJqlW2g3q/DsCa4M/I4Dap6Y7XZoLqHbFQtEHZiGe5WGYmrRZxZaiS38aXU62p6tx2uqB+V5cYI7xSomdVQtN/PlHS0hXRjO5OunZIpXdSaplQn0BiBhuN9iP+Vdrwc395yav9MegQE1opuH5kj2xPgKQyUbUehBedJ4rV+ePyXm2KFXsfv3DFeYjp9R16i41D+fD912hJskD3BNwIgqh0NRalj4KkwrIES46Ym7TZoZ14Jx0NJdh99l4/EXgdRicoSWEUT3aRxhbN+4qfAwa8MsDhL4K+jv4OhqDFxlD5yQKRqr6YsU9wxJ1HmMH8rutukusf18IQsgQjjl4zuwtwNFjrx18LhnUuozOQgRtVVZrQNXGneZ8ZLa7h6iZLUIkoiGtrrSyl0rXJFcg4LRmCz62Q9BaXCO9N8LhgxLa9TPKKJtoSroEbbFAHNewd5ir03uudK/UA6hr6n3GXNAtlTdyMAle9r7JY2DuvIJe+ftEHNqMC9prT2M1E2qb/nSgYk+RziNaqt4Yd5POjG65TCNEQOKIQ/aUpixnKXUFwzS+fJpFmGA1b+eULBKo0r5Q17xAluMjlw3lBsGcwozKXHc1KeCKIiZfjx9x+y1XMNuzeDaWG1g8kd2sjVTwY2vW+lS/d/R/K1GE2My5qoMILXPZ8+ko=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.11.2
Release Details
UpdatedJuly 29, 2026, 3:43 p.m.
Changelog

Behoben

  • Beträge werden nicht mehr abgeschnitten. In Tabellen hatte die Betragsspalte eine feste Breite von 100 px; längere Werte wie „28.798,68 €" wurden mit „…" gekürzt und ließen sich falsch lesen. Die Spalte wächst jetzt mit.
  • Mobil: „Buchungen" in der unteren Leiste war gekürzt („Buchun…"). Die Einträge teilen sich die Breite jetzt nach Inhalt statt zu gleichen Teilen.
  • Mobil: zu kleine Tippziele. Schaltflächen, Auswahlfelder und Eingabefelder waren teils nur 24–36 px hoch. Sie sind jetzt mindestens 44 px – auch auf Tablets, die per Finger bedient werden, aber das Desktop-Layout bekommen.
  • Mobil: lange Kontonamen im Kontenbaum wurden gekürzt und waren damit nicht mehr unterscheidbar; sie brechen jetzt um.
  • Mobil: das Ende langer Listen lag unter dem schwebenden Buchungs-Knopf und war nicht lesbar.

Sonstiges

  • Ausführliche Beschreibung und Screenshots für den Nextcloud App Store.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureDikykvZ2qeSFgT2rqRn1/K6d7txbP7OEC32gKuFsiCeigdGhCtrIHnVWHhA4ddYVzD+A5w+jgbYrYMzkgZcFS/cJE69wPzosrfHtsfrR1AXnFJprlr1fEU7gM2imvESCrjGS0s8KEeOczNzOTrhw6vtaWm4zbpYth5MLdMZmYFFTxtCQ67VIKIDNZhSVBS+dlbgKma5HobySt4IwUZeR+6qhMtZQZbmMCJ1LSuwPs6QCVTfAxXRlEBkuIdS0VYiBn3jDaoCfBV8tGZjpAG63npnwXIfJJd4HeCyDpMzDx0h/z6JpXKEcJuujT2vnrbjgCgqPOQX6qqCFru7djJ8o1BLR1pO8qNiTn194HAgOH/2cKzaJ/RbYAUXds7qW8aQgxvviJ9adZGRf3zC3jyYB49EGdYB/rKG8Lnn8mhDFkF7iXej4kwz/myXK8MTldP/xctXSC/zinorrnHaRo28XNtFDq5GazeVXpK7/9nvyt3SE49zoABnAEKDw6SYZrVCLX4+J8bbM6yk/ohFE3g1KL2/wXL1GnE1spwuz/OamTPJUqgVNJyV3MyzxG5aHpGxdj3lmctGt8eO34tXvHzofVmHvrhnEbEIcyMlphbOWD2mCiGkmltuGjJqvMJpLbSyZIe/oAXkJ7IiY3KGIRpiKlGUueiQlo0UbI1L+ubF/Uak=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.11.1
Release Details
UpdatedJuly 29, 2026, 3:03 p.m.
Changelog

Erste im Nextcloud App Store veröffentlichte Fassung. Am Programm selbst ändert sich gegenüber 0.11.0 nichts.

Sonstiges

  • Die App wird jetzt mit dem von Nextcloud ausgestellten Zertifikat signiert (appinfo/signature.json) und im App Store veröffentlicht. Das Paket zu 0.11.0 war noch unsigniert und ist deshalb nur über ein direktes Deployment aus dem GitHub-Release installierbar.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureRqufs3+r1UDzVeNY47cnz/w6ATGHouz8ape7ZHM3P5KFdQNcJ6RYVIO+epIwjLtAeVJdMgfEDJwafg1dx757MvkBsfr4fO9yBiP0yNmKeVwdm3G/7vM+WTHYg9CpRNYN2AivshD6OdD5axADiNnBU0jk+qw5szzQ77+pYkxHFMrTC1pbM8VWuTD/F+PrU0V7617dl2nDG7ZWwzjFgP65k6y3lr7hFi46LDiIvwWNv8leoggPU3YoB4YywRdXqhIHImtdBs/fauWamzU49TY22hPqSTPFsAVqyW/RI7Jw599oTCozx0W92XQilBZOGdUQb1Lr8nS+DJs6fGz6eJXbJQd2K81qqSyyIN06UcBudD6zCu5DdLuPLg0kWs7vwq5wI/4AXpBb5xadncHFtJOaNNoCJ2v7+C7d1ZaJ3kfv6ZNnVcuEYYQsNfuitHmmNzATyWSH2+hzXj/fZfpZA0vyHDLa4XkCPMwOi55IaPuvCdEaKE+RTf6hEdnul7MhU8C8BUFHKp3HlkdzJLPmffyf3vTDFoRnvtA2isMEXrkE2u9Usk9X1DlOXxn4PjmCYGNEm54YfVpTGRiY8i972c9XIjwmlpUIaqYARzgSad2kT23TXEMmzsPp7/kM2DjAqmEJbe+Lgl87Z7ZseXBHSnJXd1JjtxYJCm4og7lA2zSagvY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0

Nextcloud 32

Vereinsbuchhaltung 0.18.0
Release Details
UpdatedAug. 2, 2026, 4:11 p.m.
Changelog

Hinzugefügt

  • Weitere Mehrsprachigkeit im Backend. Kassenbericht und Kurzbericht (beide als druckfertige HTML-Seite) sowie das Änderungsprotokoll (Berichte → Protokoll) erscheinen jetzt in der Sprache des Nextcloud-Profils statt fest auf Deutsch.
  • Alle bisher noch deutschen Fehler- und Bestätigungsmeldungen der Controller sind übersetzt, ebenso die Prüfmeldungen beim Anlegen und Ändern von Buchungen (Soll-Haben-Kontrolle) und die Fehlermeldungen der CAMT-/MT940-/CSV-Kontoauszugs-Parser.

Technisch

  • Statische Prüfmethoden (JournalService::validateLines(), JournalService::reassignPlan(), BookingService::validateParts()), die auch direkt aus PHPUnit-Tests ohne laufende Nextcloud-Instanz aufgerufen werden, liefern jetzt stabile Fehlercodes statt fertigem Text; die Übersetzung passiert in einer begleitenden Instanzmethode mit Zugriff auf IL10N. Die Parser (CamtCsvParser, Camt053Parser, Mt940Parser, XbucParser) erhalten IL10N als optionalen, in Tests weglassbaren Konstruktorparameter mit deutschem Fallback-Text.

Bekannte Lücken

  • Der CSV-Export der Auswertungen ist noch vollständig Deutsch.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureyT7SVmIOpa+ZxIYuUUiftY1NmsPnETQbPKz5hXSyXYJ2fSqVm/OBPOJyoI2EpaGulf2AqkZr3w8jXrWuh4U3J1m4IuaAK8zGhD47WCAzxFGZxc8iy6ITh0OckjLneDWxMwoQHJO/IggRVjBEaZXKdD2wrFPMjkXDUTBvlMr/YKJFE6bd1qJJ5UKXQedO51aNuRQR/O9UrXJ8IR6F5SmyWzrEvr8F/hNdiQioDnTA2vk1iB2bTciuc9qnQd13m1i43ToUuZfYSYflxBhAq/kMOCrUsICqXo3wy88DNIVuwaiEIPrXuMUBDXsmjcnh0dtku/iVTiOpPtkDjucmJ5bhLcuylyC1sYFt6d5emJlqMUOWHmhzC4eoQc9nv2uSq/VgCVUJd0V4dihQivViVEot+acr/xuHinPVt7YikF5ejoWt9//f8huYVa7O1dR2mKoY+nyOscA1lF1kFo7OYZ30KnerD5qjLJo508MDMWtAb7Pfzw3P423Jssl1h0zAPk7e2UWu+5ImshK7nr5+07Owyt/h41ASF4FeW8ePiUbn1hHgf86avEjbtMrQXajpZJp1AddBYuGCa19+V6jgLory4k8mLyTdCOz3O0nFTjEEU3hhq+BPbaoaztKx3W0FOtBsFEO/FyhaAxffkGjbU88lQoDSP9rX3lgH8oKX++nUHSY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.17.0
Release Details
UpdatedAug. 2, 2026, 3:16 p.m.
Changelog

Der erste sichtbare Schritt zur Mehrsprachigkeit: wer Nextcloud auf Englisch eingestellt hat, sieht jetzt eine englische Oberfläche statt einer deutschen mit englischen Brocken drumherum.

Hinzugefügt

  • Englische Übersetzung. Alle Vue-Komponenten der Oberfläche – jeder Tab, jeder Dialog, jede Fehler- und Bestätigungsmeldung – sowie die häufigsten Fehlermeldungen des Backends sind jetzt ins Englische übersetzt (l10n/en.json). Einen eigenen Sprachschalter braucht die App dafür nicht: wer sein Nextcloud-Profil auf Englisch stellt, bekommt automatisch die englische Fassung. Die Quelltexte im Code bleiben bewusst Deutsch – der Herkunftssprache der App –, Deutsch ist also unverändert die Fallback-Sprache.
  • Video in der App-Store-Beschreibung verlinkt.

Technisch

  • Eigener Lademechanismus für Übersetzungen im Frontend (src/lib/l10n.js): die Bibliothek @nextcloud/l10n geht davon aus, dass Englisch die Quellsprache ist, und lädt dafür gar kein Übersetzungsbundle – bei einer deutschen Quellsprache wäre das genau die falsche Sprache.
  • IL10N ist jetzt per Konstruktor in die Controller und Services injiziert, die nutzerseitige Fehlermeldungen werfen.

Bekannte Lücken

  • Kassenbericht, Kurzbericht, Prüfleitfaden und die CSV-Exporte sind noch vollständig Deutsch.
  • Ein paar Backend-Prüfungen (u. a. die Soll-Haben-Kontrolle beim Buchen, die CAMT-/MT940-Parser) bleiben vorerst Deutsch – sie sind bewusst ohne Nextcloud-Abhängigkeit gehalten, damit sie sich ohne laufende Instanz testen lassen.
  • Das Änderungsprotokoll (Berichte → Protokoll) zeigt seine Einträge weiterhin auf Deutsch.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureroXOT9h02u08zVmBOEm4AgtrqTyByeTNHUynP/GLWlj1W/PSVXK7rwHxjWbw/fnoVsuvroo5FdxY6sTMKgwWfcCYW9WC49dJylKK1FX8oKws1LefX9HqQbZvFeJ9L3grLLht92mwMthzuRfrCaQDygDBmpv1o3PhbrqJpox0zfx1jWd6jJhDpBeBjIcfBf+CyKan8BSSdwFjRUzCoJBIz+cHAB27MY5PfvrDdFmUtjHLvU/MifISIkMiVhxKtY1CnQtJd58t0zJcFvN0qjB85+DAAV9nR6YCcZjNw8UbCdetu5CThcQBPHJLnRXIIf+WP88PgRYkxgRw9d8QKMf2zklGsVTPJdtvacI9V2F5JOIimelYg3V4WacqcpO2F2xOfs6jXVS2E8MFAloWofhNnfVuTINQiHz8Ckw49QlyEr8Up6yEZ28tgJh0AKpQWsLUZ+SUd4PA2obilUrsFjFkEhAUbAPtu0kdKD6l3NYa9oXB4a2Pun6gNpD1qvhmRudPvyIGoYCoAsOstLAehk+eAiF6lfFLe/o0V+RiOn4L2lPt5c96acCwesJD9yZQbZIfbYFM5ddheBSYaJRzyLYJWsK2IETagwH4XVvH/vClPytgMNHiOG/s6LALfsQSUTzz8ktLZqU+U1BHlmqXaR9M2lvlEu2G9O+5ueYM3D3kX5E=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.16.0
Release Details
UpdatedAug. 1, 2026, 9:03 a.m.
Changelog

Diese Version bringt kaum sichtbare Neuerungen: sie räumt den Programmcode auf und sichert ihn gegen Fehler ab, die bisher niemand bemerkt hätte. Ein solcher Fehler kam dabei ans Licht – und er betraf ausgerechnet die Kassenprüfung.

Behoben

  • Der Beleg-Export als ZIP brach ab, sobald ein Beleg im Zeitraum lag. Die Funktion rief eine Methode auf, die es in PHP gar nicht gibt (ZipArchive::addStream); der Download endete mit einem Serverfehler statt mit einem Archiv. Betroffen war genau die Funktion, die eine Kassenprüfung braucht, um alle Belege eines Jahres auf einmal zu bekommen. Die Belege werden jetzt blockweise ins Archiv geschrieben – der Speicherbedarf bleibt wie vorgesehen niedrig, auch bei einem Jahr voller PDFs.
  • Der Kassenbericht ignorierte die dunkle Darstellung. Wer ihn bei dunklem Systemdesign öffnete, bekam schwarze Schrift auf weißem Grund in einem sonst dunklen Fenster – der Kurzbericht konnte es längst. Beide Berichte teilen sich jetzt dieselbe Gestaltung. Am Ausdruck ändert sich nichts.
  • Beispieldaten konnten halb angelegt liegenbleiben. Fehlte ein Konto des Standard-Kontenrahmens, brach das Anlegen mitten in den Buchungen ab. Jetzt meldet die App vorher, welches Konto fehlt.

Geändert

  • Die Rechenregeln aller Auswertungen liegen jetzt an einer Stelle. Die Frage, welches Konto mit welchem Vorzeichen ins Ergebnis eingeht, war an acht Stellen einzeln ausgeschrieben – in den Exporten, in der Saldenliste und in den Berichten. Eine Änderung daran musste bisher überall nachgezogen werden. An den Zahlen ändert sich nichts; sie sind jetzt nur an einer Stelle festgelegt und erstmals automatisiert geprüft.
  • Der Sortier-Vergleich der Tabellen war dreifach vorhanden und ist es nun einmal. Sortierung und Sicherheitsabfragen sind damit in allen Ansichten garantiert gleich.

Technisch

  • Statische Analyse (PHPStan, Stufe 5) läuft jetzt bei jeder Änderung mit und fand die drei oben genannten Fehler.
  • Der 1149 Zeilen lange ExportController ist in Dienste aufgeteilt: CSV, Beleg-Archiv und die druckfertigen Berichte je für sich, der Controller behält nur die Auslieferung (158 Zeilen).
  • Frontend-Unit-Tests (Vitest) für die Rechen- und Anzeigehelfer; der Testbestand wächst von 118 auf 210 Tests.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureVJDiJR0wAF6OF052v41IlOKnSdqYFS+pI1+dFRngpf5U228GkukeyPqI033CH4Q3hummVmpRiAFGTi5n9g403rp88tFm8lw69XuqW2KKFwDkzc5EE0wVs3AVJgHeREn/NotbVAVvItr6+4wdPE4vKY4MnSVrwwPFWyQPhYMcy7ps0GEKQOKIIg8K5FiRvpgFF4M8/24xcDJSX9P6ySetzjjCUewbWBCq90qjAkf1dedOmwpk/WJ6EzDMuOpXjK866ruUFpU6UMHarVV5JY0IO97AJym3rJVUbtF7pkCI4gQVjVAFmcux+rnXm7vLN5EHGRF9cQCgy5REcQAKavKY0k2KS48L/zRjsvzEv0dY/IWAraVowHLkJUDonnUelUPZJ3J6S6CekKswO2oQdXnCc2jGNSY7QS8s2ck9NsnCSeX66hEMC4fI8cZUTeFM5sr4IP7ABKXq4f/DOZ2kl1klwKZjVeCSkD5SQvB4Lt5vq+kj2CzULsoM5EyrxLuvdYt/cOMluMhFdKg8H0Mubcc/TnIMEMGj2ODw7z7z1g5KQdGDPYEQ2JDgUKQ2gxW9exq98q0FmXq95K1ppLvC0c8sDezQF5leB2eVH/c0yDzc6xsDpWbkc9MQiNLofdqyXWHBvvrqKnl7x7qBn8U9BdefGUuFba3HekdHxLZFAm6OPsg=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.15.0
Release Details
UpdatedJuly 31, 2026, 6:56 p.m.
Changelog

Behoben

  • Gelöschte Buchung gab ihren Bankumsatz nicht wieder frei. Wurde ein Buchungssatz gelöscht, der durch das Zuordnen eines Bankumsatzes entstanden war, blieb der Umsatz auf „zugeordnet" stehen – mit einem Verweis auf einen Buchungssatz, den es nicht mehr gab. Er tauchte danach nirgends mehr auf: nicht unter Zuzuordnen (dort stehen nur offene Umsätze) und nicht in den Salden (die kennen nur Buchungen). Auch die Bank-Abstimmung führte ihn weder als gebucht noch als offen, sodass der Kontostand still vom Bankauszug abwich. Der Umsatz steht jetzt nach dem Löschen wieder unter Zuzuordnen und lässt sich neu zuordnen – derselbe Stand wie beim Aufheben einer Zuordnung.
  • Belege eines Jahres konnten beim xbuc-Import verloren gehen. Die Dublettenprüfung des Zusammenführ-Imports beschrieb eine Splittbuchung nur über eine ihrer Zeilen. Eine eingehende Buchung, die zufällig auf diesen Teilbetrag passte, galt dadurch als bereits vorhanden und wurde stillschweigend übersprungen. Der Vergleich betrachtet jetzt die ganze Buchung, und beide Seiten des Vergleichs bilden ihren Schlüssel an derselben Stelle.
  • Beleg löschen konnte einen Datensatz ohne Datei hinterlassen. Die Datei wurde vor dem Datensatz entfernt; schlug das Löschen des Datensatzes fehl, blieb ein Beleg zurück, der sich nicht mehr öffnen ließ. Jetzt gilt auch hier die Reihenfolge, die beim Löschen einer ganzen Buchung längst galt: erst der Datensatz, dann – nach erfolgreichem Abschluss – die Datei.

Geändert

  • Der Jahresabschluss schützt jetzt auch die Konten-Stammdaten. Bisher war ein festgeschriebenes Geschäftsjahr nur gegen Änderungen an den Buchungen gesichert. Über das Konto ließ sich sein Bericht trotzdem nachträglich verschieben: Ein Wechsel der Kontoart dreht das Vorzeichen, ein Wechsel des Geldkonto-Kennzeichens verschiebt das Konto zwischen Vermögensübersicht und Einnahmen-/Ausgaben-Rechnung – das archivierte Jahresergebnis änderte sich, ohne dass eine einzige Buchung angefasst wurde. Kontoart, Geldkonto- Kennzeichen, Sphäre, Rücklagen-Art und Kostenstelle lassen sich deshalb nicht mehr ändern, solange das Konto in einem abgeschlossenen Jahr bebucht ist; wer die Änderung braucht, eröffnet das Jahr wieder und schließt es danach erneut ab. Nummer, Name, Kategorie, Aktiv-Schalter und Überkonto bleiben frei änderbar – sie ändern nur Beschriftungen, keine Beträge.
  • Konten stehen jetzt im Änderungsprotokoll. Anlegen, Ändern und Löschen eines Kontos wurden bisher nicht protokolliert – ausgerechnet die Stammdaten, aus denen jede Auswertung gerechnet wird, waren für die Kassenprüfung unsichtbar. Bei einer Änderung vermerkt das Protokoll zusätzlich, ob ein auswertungsrelevantes Feld betroffen war.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureP7cVaIPv213NPHt6juPqCRD4S2odKrN+G8KhhxyDeKw7BKUxrWvSaOiQCEwBmvQzUCYWUDf0OacHyUlh6nmJEWFmuux3X6wIY3AuGQx/gg37EMyMCod8JA82iPNAMLXML1bEIeU9RGEIbmtdc6CmNEV+TlEBCp02kskc/V1FytAkCREPOCfCr7DodbD6FZtrjN+VloewQblps1KCCye9tm1v7mMDRDexPv2jiATXsKqS/D/ostXEh/SGTtX1saXxlFpMJss8WYgRNCMbzGMW6i+k2ND/iiEAzBFBKwFY0w4YunU4zo2x6Y3z7SCPeSLP0AagS4LI2vv5vKeq2jHyqtnXTS6Zi6tba2P6ObB0stmW6lzc6p58UW3Dvw9Irm58hAa7QqvqUheI2t0haws3Cah2/e95eOqk/+tFcGS1k6C1sPVQVlcEFjMyLN2a88YKW32okbQhzCEixkockVQQbWfY40Shqg64ZSfGGR6VAgHck6rioYnQJE2H5+3SexdzsYkJVY2jJ00tLIdCDpq2Z3M5AZSjxHpGcRyJ+w+6EIx10SbOdsqxQw0/FEnAC8Bk4d1vcodBZBwXFav/Ew6diriLx49vhFQZvlvmshNbREyFYiWskPUKE46NTOVHZVGZqLlkQD4vFbu61PWYR8swhuYhqMwPbsxkzbxIf2JQuQU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.13.0
Release Details
UpdatedJuly 31, 2026, 8:50 a.m.
Changelog

Hinzugefügt

  • Frei definierbare Kostenstellen. Bisher leitete die App die Kostenstelle aus dem Kontenrahmen ab – entweder aus der zweiten Zahlengruppe der Kontonummer oder „ein Konto = eine Kostenstelle". Beides setzt einen bestimmten Kontenaufbau voraus. Jetzt lassen sich Kostenstellen unter Einstellungen → Kostenstellen frei anlegen und Konten ihnen ausdrücklich zuordnen; beliebige Konten können so zu einem Projekt zusammengefasst werden. Der neue Modus heißt „Frei definierte Kostenstellen" (Einstellungen → Kostenstellen-Modus, nur Verwalter). Die beiden bisherigen Modi bleiben unverändert Standard – bestehende Auswertungen ändern sich nicht. Die Zuordnung geht einzeln im Konto-Dialog oder für viele Konten auf einmal. Angelegte Kostenstellen erscheinen im Bericht auch ohne zugeordnetes Konto, damit eine fehlende Zuordnung sichtbar ist.
  • Umbuchen direkt im Kontoauszug. Wer beim Durchblättern eines Kontos (Tab Konten) eine falsch zugeordnete Buchung findet, bucht sie an Ort und Stelle auf ein anderes Konto um – der Umweg über das Journal entfällt. Umbuchen lässt sich jede Seite der Buchung, also auch das Gegenkonto. Geändert wird ausschließlich die Kontozuordnung; Betrag, Datum, Beschreibung und die Gegenseite bleiben, sodass Soll und Haben nicht auseinanderlaufen können. Abgeschlossene Geschäftsjahre bleiben gesperrt, jede Umbuchung steht im Änderungsprotokoll, und eine zwischenzeitliche Änderung durch jemand anderen wird erkannt.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignaturerYLg9/W+aZy3UR2gm/vOTWoLkk4IZrBuLDSsMcqIA1ezxdDhM4DCie+hHnru5bowZ4ZqOE8XmhrBYJCF9F8Wg3zyklma7eMmTKWMHy0mlys+/SYrmnPOfrzUyA/3PvFLNztuRJgyVeL/bI/0fp4QQ5YUTHG6oQHcY9NZXeB1Yy9AJAOP/oBHHdA9RDSONWvDJKgpLAgKBHcpj8J9SPCeVOviwHla4B2fbLKjpJu185Ee7SsvjXQJYatX0SV1/Hy65I0o5xfst63HfBj8vMYkiu6vxz3bU8kp5jUJKWWmDiB9qQHByk5srK1Wu/R/gZKgfxp+EtU1SWYaZFIU5ZlynNgtZpx63083sBz/UgryqKitjmOvD1Qw1UAi4sP5BMm8IKjZCCHY1mBImO/sIQqa7MjpcLulmnOmAXorbAgfG9ZaXFrk0AafHeQRzemtQ5nvlYpl8Z58F11ZuVKudYhsciBek7SHIhHTbs99aOsb934bzlaN+lZelZfm5J0OyCJaBv7zCKPQqMuBUNioV/w2ntAY/CyY2TK2gfJb2wMjJmNNR5s7hRcWVIPpklXxE/o44NSsckDDnzA4FemD7tswK8tTftO/v+Qk04kzjHi984idYXoHWSwFAYYiZxmL2oB6OOs+MXh9dGQUbpctC2pOAeSdO0J0dO/7D+MkKtaBrYA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.12.0
Release Details
UpdatedJuly 30, 2026, 4:01 p.m.
Changelog

Hinzugefügt

  • Kontoauszüge in zwei weiteren Formaten: neben der bisherigen CSV liest die App jetzt auch CAMT.053 (XML) und MT940. Welches Format vorliegt, erkennt sie am Inhalt der Datei – die Endung spielt keine Rolle. CAMT.053 ist die bessere Wahl, wo die Bank es anbietet: Vorzeichen, Datum und Zahlungsbeteiligte stehen dort eindeutig drin, statt aus Spaltenüberschriften erraten zu werden.
  • Wachordner: Auf Wunsch liest die App Kontoauszüge selbstständig aus einem Nextcloud-Ordner ein (Einstellungen → Kontoauszüge automatisch einlesen). Den heruntergeladenen Auszug dort ablegen genügt; stündlich sieht ein Hintergrundjob nach. Verarbeitete Dateien wandern nach verarbeitet/, nicht lesbare mit Begründung nach fehler/ – gelöscht wird nichts. Setzt System-Cron voraus. Das ersetzt das Hochladen von Hand, nicht das Herunterladen bei der Bank.
  • Vorgemerkte Umsätze aus CAMT.053 werden übersprungen. Sie ändern sich beim endgültigen Buchen häufig noch und kämen sonst ein zweites Mal herein.
  • Mehrere Bankkonten werden unterschieden. Am Geldkonto lässt sich die IBAN hinterlegen (Tab Konten → Konto bearbeiten, nur bei Geldkonten); beim Zuordnen einer Bankbuchung wählt die App daraufhin das Geldkonto, auf dem der Umsatz tatsächlich gebucht wurde. Bisher landete alles auf dem ersten Bankkonto des Kontenrahmens. Ohne hinterlegte IBAN – oder wenn der Auszug keine mitbringt – bleibt es beim bisherigen Verhalten. Wer mehrere Konten führt, sollte CAMT.053 oder MT940 exportieren: dort steht die IBAN verlässlich, in der CSV mancher Bank nur eine Kontonummer.

Behoben

  • Derselbe Umsatz landet nicht mehr doppelt, wenn das Exportformat wechselt. Die Dublettenerkennung hing am eigenen Konto, und das schreiben die Formate verschieden: die CSV mancher Bank führt dort nur eine Kontonummer, CAMT.053 immer die volle IBAN. Zusätzlich zum bisherigen Vergleich prüft die App Umsätze jetzt über Datum, Betrag und Text gegen die bereits vorhandenen Bankbuchungen.

Sonstiges

  • Die Umsatzquellen liegen hinter einer gemeinsamen Schnittstelle (lib/Service/Statement/); Dublettenerkennung, Regeln und Import-Protokoll sind für alle Formate dieselben. Der MT940-Parser ist zugleich die Vorarbeit für einen späteren FinTS-Abruf, der genau dieses Format liefert.
  • Das Import-Protokoll hält fest, aus welchem Format ein Import stammt; Geldkonten können ihre IBAN tragen (Migration 122).
  • Unit-Tests für beide neuen Parser sowie ein Kreuztest, der denselben Kontoauszug in allen drei Formaten vergleicht (61 Tests).
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureYrd0NVVBI48qEcLJqlW2g3q/DsCa4M/I4Dap6Y7XZoLqHbFQtEHZiGe5WGYmrRZxZaiS38aXU62p6tx2uqB+V5cYI7xSomdVQtN/PlHS0hXRjO5OunZIpXdSaplQn0BiBhuN9iP+Vdrwc395yav9MegQE1opuH5kj2xPgKQyUbUehBedJ4rV+ePyXm2KFXsfv3DFeYjp9R16i41D+fD912hJskD3BNwIgqh0NRalj4KkwrIES46Ym7TZoZ14Jx0NJdh99l4/EXgdRicoSWEUT3aRxhbN+4qfAwa8MsDhL4K+jv4OhqDFxlD5yQKRqr6YsU9wxJ1HmMH8rutukusf18IQsgQjjl4zuwtwNFjrx18LhnUuozOQgRtVVZrQNXGneZ8ZLa7h6iZLUIkoiGtrrSyl0rXJFcg4LRmCz62Q9BaXCO9N8LhgxLa9TPKKJtoSroEbbFAHNewd5ir03uudK/UA6hr6n3GXNAtlTdyMAle9r7JY2DuvIJe+ftEHNqMC9prT2M1E2qb/nSgYk+RziNaqt4Yd5POjG65TCNEQOKIQ/aUpixnKXUFwzS+fJpFmGA1b+eULBKo0r5Q17xAluMjlw3lBsGcwozKXHc1KeCKIiZfjx9x+y1XMNuzeDaWG1g8kd2sjVTwY2vW+lS/d/R/K1GE2My5qoMILXPZ8+ko=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.11.2
Release Details
UpdatedJuly 29, 2026, 3:43 p.m.
Changelog

Behoben

  • Beträge werden nicht mehr abgeschnitten. In Tabellen hatte die Betragsspalte eine feste Breite von 100 px; längere Werte wie „28.798,68 €" wurden mit „…" gekürzt und ließen sich falsch lesen. Die Spalte wächst jetzt mit.
  • Mobil: „Buchungen" in der unteren Leiste war gekürzt („Buchun…"). Die Einträge teilen sich die Breite jetzt nach Inhalt statt zu gleichen Teilen.
  • Mobil: zu kleine Tippziele. Schaltflächen, Auswahlfelder und Eingabefelder waren teils nur 24–36 px hoch. Sie sind jetzt mindestens 44 px – auch auf Tablets, die per Finger bedient werden, aber das Desktop-Layout bekommen.
  • Mobil: lange Kontonamen im Kontenbaum wurden gekürzt und waren damit nicht mehr unterscheidbar; sie brechen jetzt um.
  • Mobil: das Ende langer Listen lag unter dem schwebenden Buchungs-Knopf und war nicht lesbar.

Sonstiges

  • Ausführliche Beschreibung und Screenshots für den Nextcloud App Store.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureDikykvZ2qeSFgT2rqRn1/K6d7txbP7OEC32gKuFsiCeigdGhCtrIHnVWHhA4ddYVzD+A5w+jgbYrYMzkgZcFS/cJE69wPzosrfHtsfrR1AXnFJprlr1fEU7gM2imvESCrjGS0s8KEeOczNzOTrhw6vtaWm4zbpYth5MLdMZmYFFTxtCQ67VIKIDNZhSVBS+dlbgKma5HobySt4IwUZeR+6qhMtZQZbmMCJ1LSuwPs6QCVTfAxXRlEBkuIdS0VYiBn3jDaoCfBV8tGZjpAG63npnwXIfJJd4HeCyDpMzDx0h/z6JpXKEcJuujT2vnrbjgCgqPOQX6qqCFru7djJ8o1BLR1pO8qNiTn194HAgOH/2cKzaJ/RbYAUXds7qW8aQgxvviJ9adZGRf3zC3jyYB49EGdYB/rKG8Lnn8mhDFkF7iXej4kwz/myXK8MTldP/xctXSC/zinorrnHaRo28XNtFDq5GazeVXpK7/9nvyt3SE49zoABnAEKDw6SYZrVCLX4+J8bbM6yk/ohFE3g1KL2/wXL1GnE1spwuz/OamTPJUqgVNJyV3MyzxG5aHpGxdj3lmctGt8eO34tXvHzofVmHvrhnEbEIcyMlphbOWD2mCiGkmltuGjJqvMJpLbSyZIe/oAXkJ7IiY3KGIRpiKlGUueiQlo0UbI1L+ubF/Uak=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.11.1
Release Details
UpdatedJuly 29, 2026, 3:03 p.m.
Changelog

Erste im Nextcloud App Store veröffentlichte Fassung. Am Programm selbst ändert sich gegenüber 0.11.0 nichts.

Sonstiges

  • Die App wird jetzt mit dem von Nextcloud ausgestellten Zertifikat signiert (appinfo/signature.json) und im App Store veröffentlicht. Das Paket zu 0.11.0 war noch unsigniert und ist deshalb nur über ein direktes Deployment aus dem GitHub-Release installierbar.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureRqufs3+r1UDzVeNY47cnz/w6ATGHouz8ape7ZHM3P5KFdQNcJ6RYVIO+epIwjLtAeVJdMgfEDJwafg1dx757MvkBsfr4fO9yBiP0yNmKeVwdm3G/7vM+WTHYg9CpRNYN2AivshD6OdD5axADiNnBU0jk+qw5szzQ77+pYkxHFMrTC1pbM8VWuTD/F+PrU0V7617dl2nDG7ZWwzjFgP65k6y3lr7hFi46LDiIvwWNv8leoggPU3YoB4YywRdXqhIHImtdBs/fauWamzU49TY22hPqSTPFsAVqyW/RI7Jw599oTCozx0W92XQilBZOGdUQb1Lr8nS+DJs6fGz6eJXbJQd2K81qqSyyIN06UcBudD6zCu5DdLuPLg0kWs7vwq5wI/4AXpBb5xadncHFtJOaNNoCJ2v7+C7d1ZaJ3kfv6ZNnVcuEYYQsNfuitHmmNzATyWSH2+hzXj/fZfpZA0vyHDLa4XkCPMwOi55IaPuvCdEaKE+RTf6hEdnul7MhU8C8BUFHKp3HlkdzJLPmffyf3vTDFoRnvtA2isMEXrkE2u9Usk9X1DlOXxn4PjmCYGNEm54YfVpTGRiY8i972c9XIjwmlpUIaqYARzgSad2kT23TXEMmzsPp7/kM2DjAqmEJbe+Lgl87Z7ZseXBHSnJXd1JjtxYJCm4og7lA2zSagvY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0

Nextcloud 31

Vereinsbuchhaltung 0.18.0
Release Details
UpdatedAug. 2, 2026, 4:11 p.m.
Changelog

Hinzugefügt

  • Weitere Mehrsprachigkeit im Backend. Kassenbericht und Kurzbericht (beide als druckfertige HTML-Seite) sowie das Änderungsprotokoll (Berichte → Protokoll) erscheinen jetzt in der Sprache des Nextcloud-Profils statt fest auf Deutsch.
  • Alle bisher noch deutschen Fehler- und Bestätigungsmeldungen der Controller sind übersetzt, ebenso die Prüfmeldungen beim Anlegen und Ändern von Buchungen (Soll-Haben-Kontrolle) und die Fehlermeldungen der CAMT-/MT940-/CSV-Kontoauszugs-Parser.

Technisch

  • Statische Prüfmethoden (JournalService::validateLines(), JournalService::reassignPlan(), BookingService::validateParts()), die auch direkt aus PHPUnit-Tests ohne laufende Nextcloud-Instanz aufgerufen werden, liefern jetzt stabile Fehlercodes statt fertigem Text; die Übersetzung passiert in einer begleitenden Instanzmethode mit Zugriff auf IL10N. Die Parser (CamtCsvParser, Camt053Parser, Mt940Parser, XbucParser) erhalten IL10N als optionalen, in Tests weglassbaren Konstruktorparameter mit deutschem Fallback-Text.

Bekannte Lücken

  • Der CSV-Export der Auswertungen ist noch vollständig Deutsch.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureyT7SVmIOpa+ZxIYuUUiftY1NmsPnETQbPKz5hXSyXYJ2fSqVm/OBPOJyoI2EpaGulf2AqkZr3w8jXrWuh4U3J1m4IuaAK8zGhD47WCAzxFGZxc8iy6ITh0OckjLneDWxMwoQHJO/IggRVjBEaZXKdD2wrFPMjkXDUTBvlMr/YKJFE6bd1qJJ5UKXQedO51aNuRQR/O9UrXJ8IR6F5SmyWzrEvr8F/hNdiQioDnTA2vk1iB2bTciuc9qnQd13m1i43ToUuZfYSYflxBhAq/kMOCrUsICqXo3wy88DNIVuwaiEIPrXuMUBDXsmjcnh0dtku/iVTiOpPtkDjucmJ5bhLcuylyC1sYFt6d5emJlqMUOWHmhzC4eoQc9nv2uSq/VgCVUJd0V4dihQivViVEot+acr/xuHinPVt7YikF5ejoWt9//f8huYVa7O1dR2mKoY+nyOscA1lF1kFo7OYZ30KnerD5qjLJo508MDMWtAb7Pfzw3P423Jssl1h0zAPk7e2UWu+5ImshK7nr5+07Owyt/h41ASF4FeW8ePiUbn1hHgf86avEjbtMrQXajpZJp1AddBYuGCa19+V6jgLory4k8mLyTdCOz3O0nFTjEEU3hhq+BPbaoaztKx3W0FOtBsFEO/FyhaAxffkGjbU88lQoDSP9rX3lgH8oKX++nUHSY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.17.0
Release Details
UpdatedAug. 2, 2026, 3:16 p.m.
Changelog

Der erste sichtbare Schritt zur Mehrsprachigkeit: wer Nextcloud auf Englisch eingestellt hat, sieht jetzt eine englische Oberfläche statt einer deutschen mit englischen Brocken drumherum.

Hinzugefügt

  • Englische Übersetzung. Alle Vue-Komponenten der Oberfläche – jeder Tab, jeder Dialog, jede Fehler- und Bestätigungsmeldung – sowie die häufigsten Fehlermeldungen des Backends sind jetzt ins Englische übersetzt (l10n/en.json). Einen eigenen Sprachschalter braucht die App dafür nicht: wer sein Nextcloud-Profil auf Englisch stellt, bekommt automatisch die englische Fassung. Die Quelltexte im Code bleiben bewusst Deutsch – der Herkunftssprache der App –, Deutsch ist also unverändert die Fallback-Sprache.
  • Video in der App-Store-Beschreibung verlinkt.

Technisch

  • Eigener Lademechanismus für Übersetzungen im Frontend (src/lib/l10n.js): die Bibliothek @nextcloud/l10n geht davon aus, dass Englisch die Quellsprache ist, und lädt dafür gar kein Übersetzungsbundle – bei einer deutschen Quellsprache wäre das genau die falsche Sprache.
  • IL10N ist jetzt per Konstruktor in die Controller und Services injiziert, die nutzerseitige Fehlermeldungen werfen.

Bekannte Lücken

  • Kassenbericht, Kurzbericht, Prüfleitfaden und die CSV-Exporte sind noch vollständig Deutsch.
  • Ein paar Backend-Prüfungen (u. a. die Soll-Haben-Kontrolle beim Buchen, die CAMT-/MT940-Parser) bleiben vorerst Deutsch – sie sind bewusst ohne Nextcloud-Abhängigkeit gehalten, damit sie sich ohne laufende Instanz testen lassen.
  • Das Änderungsprotokoll (Berichte → Protokoll) zeigt seine Einträge weiterhin auf Deutsch.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureroXOT9h02u08zVmBOEm4AgtrqTyByeTNHUynP/GLWlj1W/PSVXK7rwHxjWbw/fnoVsuvroo5FdxY6sTMKgwWfcCYW9WC49dJylKK1FX8oKws1LefX9HqQbZvFeJ9L3grLLht92mwMthzuRfrCaQDygDBmpv1o3PhbrqJpox0zfx1jWd6jJhDpBeBjIcfBf+CyKan8BSSdwFjRUzCoJBIz+cHAB27MY5PfvrDdFmUtjHLvU/MifISIkMiVhxKtY1CnQtJd58t0zJcFvN0qjB85+DAAV9nR6YCcZjNw8UbCdetu5CThcQBPHJLnRXIIf+WP88PgRYkxgRw9d8QKMf2zklGsVTPJdtvacI9V2F5JOIimelYg3V4WacqcpO2F2xOfs6jXVS2E8MFAloWofhNnfVuTINQiHz8Ckw49QlyEr8Up6yEZ28tgJh0AKpQWsLUZ+SUd4PA2obilUrsFjFkEhAUbAPtu0kdKD6l3NYa9oXB4a2Pun6gNpD1qvhmRudPvyIGoYCoAsOstLAehk+eAiF6lfFLe/o0V+RiOn4L2lPt5c96acCwesJD9yZQbZIfbYFM5ddheBSYaJRzyLYJWsK2IETagwH4XVvH/vClPytgMNHiOG/s6LALfsQSUTzz8ktLZqU+U1BHlmqXaR9M2lvlEu2G9O+5ueYM3D3kX5E=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.16.0
Release Details
UpdatedAug. 1, 2026, 9:03 a.m.
Changelog

Diese Version bringt kaum sichtbare Neuerungen: sie räumt den Programmcode auf und sichert ihn gegen Fehler ab, die bisher niemand bemerkt hätte. Ein solcher Fehler kam dabei ans Licht – und er betraf ausgerechnet die Kassenprüfung.

Behoben

  • Der Beleg-Export als ZIP brach ab, sobald ein Beleg im Zeitraum lag. Die Funktion rief eine Methode auf, die es in PHP gar nicht gibt (ZipArchive::addStream); der Download endete mit einem Serverfehler statt mit einem Archiv. Betroffen war genau die Funktion, die eine Kassenprüfung braucht, um alle Belege eines Jahres auf einmal zu bekommen. Die Belege werden jetzt blockweise ins Archiv geschrieben – der Speicherbedarf bleibt wie vorgesehen niedrig, auch bei einem Jahr voller PDFs.
  • Der Kassenbericht ignorierte die dunkle Darstellung. Wer ihn bei dunklem Systemdesign öffnete, bekam schwarze Schrift auf weißem Grund in einem sonst dunklen Fenster – der Kurzbericht konnte es längst. Beide Berichte teilen sich jetzt dieselbe Gestaltung. Am Ausdruck ändert sich nichts.
  • Beispieldaten konnten halb angelegt liegenbleiben. Fehlte ein Konto des Standard-Kontenrahmens, brach das Anlegen mitten in den Buchungen ab. Jetzt meldet die App vorher, welches Konto fehlt.

Geändert

  • Die Rechenregeln aller Auswertungen liegen jetzt an einer Stelle. Die Frage, welches Konto mit welchem Vorzeichen ins Ergebnis eingeht, war an acht Stellen einzeln ausgeschrieben – in den Exporten, in der Saldenliste und in den Berichten. Eine Änderung daran musste bisher überall nachgezogen werden. An den Zahlen ändert sich nichts; sie sind jetzt nur an einer Stelle festgelegt und erstmals automatisiert geprüft.
  • Der Sortier-Vergleich der Tabellen war dreifach vorhanden und ist es nun einmal. Sortierung und Sicherheitsabfragen sind damit in allen Ansichten garantiert gleich.

Technisch

  • Statische Analyse (PHPStan, Stufe 5) läuft jetzt bei jeder Änderung mit und fand die drei oben genannten Fehler.
  • Der 1149 Zeilen lange ExportController ist in Dienste aufgeteilt: CSV, Beleg-Archiv und die druckfertigen Berichte je für sich, der Controller behält nur die Auslieferung (158 Zeilen).
  • Frontend-Unit-Tests (Vitest) für die Rechen- und Anzeigehelfer; der Testbestand wächst von 118 auf 210 Tests.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureVJDiJR0wAF6OF052v41IlOKnSdqYFS+pI1+dFRngpf5U228GkukeyPqI033CH4Q3hummVmpRiAFGTi5n9g403rp88tFm8lw69XuqW2KKFwDkzc5EE0wVs3AVJgHeREn/NotbVAVvItr6+4wdPE4vKY4MnSVrwwPFWyQPhYMcy7ps0GEKQOKIIg8K5FiRvpgFF4M8/24xcDJSX9P6ySetzjjCUewbWBCq90qjAkf1dedOmwpk/WJ6EzDMuOpXjK866ruUFpU6UMHarVV5JY0IO97AJym3rJVUbtF7pkCI4gQVjVAFmcux+rnXm7vLN5EHGRF9cQCgy5REcQAKavKY0k2KS48L/zRjsvzEv0dY/IWAraVowHLkJUDonnUelUPZJ3J6S6CekKswO2oQdXnCc2jGNSY7QS8s2ck9NsnCSeX66hEMC4fI8cZUTeFM5sr4IP7ABKXq4f/DOZ2kl1klwKZjVeCSkD5SQvB4Lt5vq+kj2CzULsoM5EyrxLuvdYt/cOMluMhFdKg8H0Mubcc/TnIMEMGj2ODw7z7z1g5KQdGDPYEQ2JDgUKQ2gxW9exq98q0FmXq95K1ppLvC0c8sDezQF5leB2eVH/c0yDzc6xsDpWbkc9MQiNLofdqyXWHBvvrqKnl7x7qBn8U9BdefGUuFba3HekdHxLZFAm6OPsg=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.15.0
Release Details
UpdatedJuly 31, 2026, 6:56 p.m.
Changelog

Behoben

  • Gelöschte Buchung gab ihren Bankumsatz nicht wieder frei. Wurde ein Buchungssatz gelöscht, der durch das Zuordnen eines Bankumsatzes entstanden war, blieb der Umsatz auf „zugeordnet" stehen – mit einem Verweis auf einen Buchungssatz, den es nicht mehr gab. Er tauchte danach nirgends mehr auf: nicht unter Zuzuordnen (dort stehen nur offene Umsätze) und nicht in den Salden (die kennen nur Buchungen). Auch die Bank-Abstimmung führte ihn weder als gebucht noch als offen, sodass der Kontostand still vom Bankauszug abwich. Der Umsatz steht jetzt nach dem Löschen wieder unter Zuzuordnen und lässt sich neu zuordnen – derselbe Stand wie beim Aufheben einer Zuordnung.
  • Belege eines Jahres konnten beim xbuc-Import verloren gehen. Die Dublettenprüfung des Zusammenführ-Imports beschrieb eine Splittbuchung nur über eine ihrer Zeilen. Eine eingehende Buchung, die zufällig auf diesen Teilbetrag passte, galt dadurch als bereits vorhanden und wurde stillschweigend übersprungen. Der Vergleich betrachtet jetzt die ganze Buchung, und beide Seiten des Vergleichs bilden ihren Schlüssel an derselben Stelle.
  • Beleg löschen konnte einen Datensatz ohne Datei hinterlassen. Die Datei wurde vor dem Datensatz entfernt; schlug das Löschen des Datensatzes fehl, blieb ein Beleg zurück, der sich nicht mehr öffnen ließ. Jetzt gilt auch hier die Reihenfolge, die beim Löschen einer ganzen Buchung längst galt: erst der Datensatz, dann – nach erfolgreichem Abschluss – die Datei.

Geändert

  • Der Jahresabschluss schützt jetzt auch die Konten-Stammdaten. Bisher war ein festgeschriebenes Geschäftsjahr nur gegen Änderungen an den Buchungen gesichert. Über das Konto ließ sich sein Bericht trotzdem nachträglich verschieben: Ein Wechsel der Kontoart dreht das Vorzeichen, ein Wechsel des Geldkonto-Kennzeichens verschiebt das Konto zwischen Vermögensübersicht und Einnahmen-/Ausgaben-Rechnung – das archivierte Jahresergebnis änderte sich, ohne dass eine einzige Buchung angefasst wurde. Kontoart, Geldkonto- Kennzeichen, Sphäre, Rücklagen-Art und Kostenstelle lassen sich deshalb nicht mehr ändern, solange das Konto in einem abgeschlossenen Jahr bebucht ist; wer die Änderung braucht, eröffnet das Jahr wieder und schließt es danach erneut ab. Nummer, Name, Kategorie, Aktiv-Schalter und Überkonto bleiben frei änderbar – sie ändern nur Beschriftungen, keine Beträge.
  • Konten stehen jetzt im Änderungsprotokoll. Anlegen, Ändern und Löschen eines Kontos wurden bisher nicht protokolliert – ausgerechnet die Stammdaten, aus denen jede Auswertung gerechnet wird, waren für die Kassenprüfung unsichtbar. Bei einer Änderung vermerkt das Protokoll zusätzlich, ob ein auswertungsrelevantes Feld betroffen war.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureP7cVaIPv213NPHt6juPqCRD4S2odKrN+G8KhhxyDeKw7BKUxrWvSaOiQCEwBmvQzUCYWUDf0OacHyUlh6nmJEWFmuux3X6wIY3AuGQx/gg37EMyMCod8JA82iPNAMLXML1bEIeU9RGEIbmtdc6CmNEV+TlEBCp02kskc/V1FytAkCREPOCfCr7DodbD6FZtrjN+VloewQblps1KCCye9tm1v7mMDRDexPv2jiATXsKqS/D/ostXEh/SGTtX1saXxlFpMJss8WYgRNCMbzGMW6i+k2ND/iiEAzBFBKwFY0w4YunU4zo2x6Y3z7SCPeSLP0AagS4LI2vv5vKeq2jHyqtnXTS6Zi6tba2P6ObB0stmW6lzc6p58UW3Dvw9Irm58hAa7QqvqUheI2t0haws3Cah2/e95eOqk/+tFcGS1k6C1sPVQVlcEFjMyLN2a88YKW32okbQhzCEixkockVQQbWfY40Shqg64ZSfGGR6VAgHck6rioYnQJE2H5+3SexdzsYkJVY2jJ00tLIdCDpq2Z3M5AZSjxHpGcRyJ+w+6EIx10SbOdsqxQw0/FEnAC8Bk4d1vcodBZBwXFav/Ew6diriLx49vhFQZvlvmshNbREyFYiWskPUKE46NTOVHZVGZqLlkQD4vFbu61PWYR8swhuYhqMwPbsxkzbxIf2JQuQU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.13.0
Release Details
UpdatedJuly 31, 2026, 8:50 a.m.
Changelog

Hinzugefügt

  • Frei definierbare Kostenstellen. Bisher leitete die App die Kostenstelle aus dem Kontenrahmen ab – entweder aus der zweiten Zahlengruppe der Kontonummer oder „ein Konto = eine Kostenstelle". Beides setzt einen bestimmten Kontenaufbau voraus. Jetzt lassen sich Kostenstellen unter Einstellungen → Kostenstellen frei anlegen und Konten ihnen ausdrücklich zuordnen; beliebige Konten können so zu einem Projekt zusammengefasst werden. Der neue Modus heißt „Frei definierte Kostenstellen" (Einstellungen → Kostenstellen-Modus, nur Verwalter). Die beiden bisherigen Modi bleiben unverändert Standard – bestehende Auswertungen ändern sich nicht. Die Zuordnung geht einzeln im Konto-Dialog oder für viele Konten auf einmal. Angelegte Kostenstellen erscheinen im Bericht auch ohne zugeordnetes Konto, damit eine fehlende Zuordnung sichtbar ist.
  • Umbuchen direkt im Kontoauszug. Wer beim Durchblättern eines Kontos (Tab Konten) eine falsch zugeordnete Buchung findet, bucht sie an Ort und Stelle auf ein anderes Konto um – der Umweg über das Journal entfällt. Umbuchen lässt sich jede Seite der Buchung, also auch das Gegenkonto. Geändert wird ausschließlich die Kontozuordnung; Betrag, Datum, Beschreibung und die Gegenseite bleiben, sodass Soll und Haben nicht auseinanderlaufen können. Abgeschlossene Geschäftsjahre bleiben gesperrt, jede Umbuchung steht im Änderungsprotokoll, und eine zwischenzeitliche Änderung durch jemand anderen wird erkannt.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignaturerYLg9/W+aZy3UR2gm/vOTWoLkk4IZrBuLDSsMcqIA1ezxdDhM4DCie+hHnru5bowZ4ZqOE8XmhrBYJCF9F8Wg3zyklma7eMmTKWMHy0mlys+/SYrmnPOfrzUyA/3PvFLNztuRJgyVeL/bI/0fp4QQ5YUTHG6oQHcY9NZXeB1Yy9AJAOP/oBHHdA9RDSONWvDJKgpLAgKBHcpj8J9SPCeVOviwHla4B2fbLKjpJu185Ee7SsvjXQJYatX0SV1/Hy65I0o5xfst63HfBj8vMYkiu6vxz3bU8kp5jUJKWWmDiB9qQHByk5srK1Wu/R/gZKgfxp+EtU1SWYaZFIU5ZlynNgtZpx63083sBz/UgryqKitjmOvD1Qw1UAi4sP5BMm8IKjZCCHY1mBImO/sIQqa7MjpcLulmnOmAXorbAgfG9ZaXFrk0AafHeQRzemtQ5nvlYpl8Z58F11ZuVKudYhsciBek7SHIhHTbs99aOsb934bzlaN+lZelZfm5J0OyCJaBv7zCKPQqMuBUNioV/w2ntAY/CyY2TK2gfJb2wMjJmNNR5s7hRcWVIPpklXxE/o44NSsckDDnzA4FemD7tswK8tTftO/v+Qk04kzjHi984idYXoHWSwFAYYiZxmL2oB6OOs+MXh9dGQUbpctC2pOAeSdO0J0dO/7D+MkKtaBrYA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.12.0
Release Details
UpdatedJuly 30, 2026, 4:01 p.m.
Changelog

Hinzugefügt

  • Kontoauszüge in zwei weiteren Formaten: neben der bisherigen CSV liest die App jetzt auch CAMT.053 (XML) und MT940. Welches Format vorliegt, erkennt sie am Inhalt der Datei – die Endung spielt keine Rolle. CAMT.053 ist die bessere Wahl, wo die Bank es anbietet: Vorzeichen, Datum und Zahlungsbeteiligte stehen dort eindeutig drin, statt aus Spaltenüberschriften erraten zu werden.
  • Wachordner: Auf Wunsch liest die App Kontoauszüge selbstständig aus einem Nextcloud-Ordner ein (Einstellungen → Kontoauszüge automatisch einlesen). Den heruntergeladenen Auszug dort ablegen genügt; stündlich sieht ein Hintergrundjob nach. Verarbeitete Dateien wandern nach verarbeitet/, nicht lesbare mit Begründung nach fehler/ – gelöscht wird nichts. Setzt System-Cron voraus. Das ersetzt das Hochladen von Hand, nicht das Herunterladen bei der Bank.
  • Vorgemerkte Umsätze aus CAMT.053 werden übersprungen. Sie ändern sich beim endgültigen Buchen häufig noch und kämen sonst ein zweites Mal herein.
  • Mehrere Bankkonten werden unterschieden. Am Geldkonto lässt sich die IBAN hinterlegen (Tab Konten → Konto bearbeiten, nur bei Geldkonten); beim Zuordnen einer Bankbuchung wählt die App daraufhin das Geldkonto, auf dem der Umsatz tatsächlich gebucht wurde. Bisher landete alles auf dem ersten Bankkonto des Kontenrahmens. Ohne hinterlegte IBAN – oder wenn der Auszug keine mitbringt – bleibt es beim bisherigen Verhalten. Wer mehrere Konten führt, sollte CAMT.053 oder MT940 exportieren: dort steht die IBAN verlässlich, in der CSV mancher Bank nur eine Kontonummer.

Behoben

  • Derselbe Umsatz landet nicht mehr doppelt, wenn das Exportformat wechselt. Die Dublettenerkennung hing am eigenen Konto, und das schreiben die Formate verschieden: die CSV mancher Bank führt dort nur eine Kontonummer, CAMT.053 immer die volle IBAN. Zusätzlich zum bisherigen Vergleich prüft die App Umsätze jetzt über Datum, Betrag und Text gegen die bereits vorhandenen Bankbuchungen.

Sonstiges

  • Die Umsatzquellen liegen hinter einer gemeinsamen Schnittstelle (lib/Service/Statement/); Dublettenerkennung, Regeln und Import-Protokoll sind für alle Formate dieselben. Der MT940-Parser ist zugleich die Vorarbeit für einen späteren FinTS-Abruf, der genau dieses Format liefert.
  • Das Import-Protokoll hält fest, aus welchem Format ein Import stammt; Geldkonten können ihre IBAN tragen (Migration 122).
  • Unit-Tests für beide neuen Parser sowie ein Kreuztest, der denselben Kontoauszug in allen drei Formaten vergleicht (61 Tests).
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureYrd0NVVBI48qEcLJqlW2g3q/DsCa4M/I4Dap6Y7XZoLqHbFQtEHZiGe5WGYmrRZxZaiS38aXU62p6tx2uqB+V5cYI7xSomdVQtN/PlHS0hXRjO5OunZIpXdSaplQn0BiBhuN9iP+Vdrwc395yav9MegQE1opuH5kj2xPgKQyUbUehBedJ4rV+ePyXm2KFXsfv3DFeYjp9R16i41D+fD912hJskD3BNwIgqh0NRalj4KkwrIES46Ym7TZoZ14Jx0NJdh99l4/EXgdRicoSWEUT3aRxhbN+4qfAwa8MsDhL4K+jv4OhqDFxlD5yQKRqr6YsU9wxJ1HmMH8rutukusf18IQsgQjjl4zuwtwNFjrx18LhnUuozOQgRtVVZrQNXGneZ8ZLa7h6iZLUIkoiGtrrSyl0rXJFcg4LRmCz62Q9BaXCO9N8LhgxLa9TPKKJtoSroEbbFAHNewd5ir03uudK/UA6hr6n3GXNAtlTdyMAle9r7JY2DuvIJe+ftEHNqMC9prT2M1E2qb/nSgYk+RziNaqt4Yd5POjG65TCNEQOKIQ/aUpixnKXUFwzS+fJpFmGA1b+eULBKo0r5Q17xAluMjlw3lBsGcwozKXHc1KeCKIiZfjx9x+y1XMNuzeDaWG1g8kd2sjVTwY2vW+lS/d/R/K1GE2My5qoMILXPZ8+ko=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.11.2
Release Details
UpdatedJuly 29, 2026, 3:43 p.m.
Changelog

Behoben

  • Beträge werden nicht mehr abgeschnitten. In Tabellen hatte die Betragsspalte eine feste Breite von 100 px; längere Werte wie „28.798,68 €" wurden mit „…" gekürzt und ließen sich falsch lesen. Die Spalte wächst jetzt mit.
  • Mobil: „Buchungen" in der unteren Leiste war gekürzt („Buchun…"). Die Einträge teilen sich die Breite jetzt nach Inhalt statt zu gleichen Teilen.
  • Mobil: zu kleine Tippziele. Schaltflächen, Auswahlfelder und Eingabefelder waren teils nur 24–36 px hoch. Sie sind jetzt mindestens 44 px – auch auf Tablets, die per Finger bedient werden, aber das Desktop-Layout bekommen.
  • Mobil: lange Kontonamen im Kontenbaum wurden gekürzt und waren damit nicht mehr unterscheidbar; sie brechen jetzt um.
  • Mobil: das Ende langer Listen lag unter dem schwebenden Buchungs-Knopf und war nicht lesbar.

Sonstiges

  • Ausführliche Beschreibung und Screenshots für den Nextcloud App Store.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureDikykvZ2qeSFgT2rqRn1/K6d7txbP7OEC32gKuFsiCeigdGhCtrIHnVWHhA4ddYVzD+A5w+jgbYrYMzkgZcFS/cJE69wPzosrfHtsfrR1AXnFJprlr1fEU7gM2imvESCrjGS0s8KEeOczNzOTrhw6vtaWm4zbpYth5MLdMZmYFFTxtCQ67VIKIDNZhSVBS+dlbgKma5HobySt4IwUZeR+6qhMtZQZbmMCJ1LSuwPs6QCVTfAxXRlEBkuIdS0VYiBn3jDaoCfBV8tGZjpAG63npnwXIfJJd4HeCyDpMzDx0h/z6JpXKEcJuujT2vnrbjgCgqPOQX6qqCFru7djJ8o1BLR1pO8qNiTn194HAgOH/2cKzaJ/RbYAUXds7qW8aQgxvviJ9adZGRf3zC3jyYB49EGdYB/rKG8Lnn8mhDFkF7iXej4kwz/myXK8MTldP/xctXSC/zinorrnHaRo28XNtFDq5GazeVXpK7/9nvyt3SE49zoABnAEKDw6SYZrVCLX4+J8bbM6yk/ohFE3g1KL2/wXL1GnE1spwuz/OamTPJUqgVNJyV3MyzxG5aHpGxdj3lmctGt8eO34tXvHzofVmHvrhnEbEIcyMlphbOWD2mCiGkmltuGjJqvMJpLbSyZIe/oAXkJ7IiY3KGIRpiKlGUueiQlo0UbI1L+ubF/Uak=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.11.1
Release Details
UpdatedJuly 29, 2026, 3:03 p.m.
Changelog

Erste im Nextcloud App Store veröffentlichte Fassung. Am Programm selbst ändert sich gegenüber 0.11.0 nichts.

Sonstiges

  • Die App wird jetzt mit dem von Nextcloud ausgestellten Zertifikat signiert (appinfo/signature.json) und im App Store veröffentlicht. Das Paket zu 0.11.0 war noch unsigniert und ist deshalb nur über ein direktes Deployment aus dem GitHub-Release installierbar.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureRqufs3+r1UDzVeNY47cnz/w6ATGHouz8ape7ZHM3P5KFdQNcJ6RYVIO+epIwjLtAeVJdMgfEDJwafg1dx757MvkBsfr4fO9yBiP0yNmKeVwdm3G/7vM+WTHYg9CpRNYN2AivshD6OdD5axADiNnBU0jk+qw5szzQ77+pYkxHFMrTC1pbM8VWuTD/F+PrU0V7617dl2nDG7ZWwzjFgP65k6y3lr7hFi46LDiIvwWNv8leoggPU3YoB4YywRdXqhIHImtdBs/fauWamzU49TY22hPqSTPFsAVqyW/RI7Jw599oTCozx0W92XQilBZOGdUQb1Lr8nS+DJs6fGz6eJXbJQd2K81qqSyyIN06UcBudD6zCu5DdLuPLg0kWs7vwq5wI/4AXpBb5xadncHFtJOaNNoCJ2v7+C7d1ZaJ3kfv6ZNnVcuEYYQsNfuitHmmNzATyWSH2+hzXj/fZfpZA0vyHDLa4XkCPMwOi55IaPuvCdEaKE+RTf6hEdnul7MhU8C8BUFHKp3HlkdzJLPmffyf3vTDFoRnvtA2isMEXrkE2u9Usk9X1DlOXxn4PjmCYGNEm54YfVpTGRiY8i972c9XIjwmlpUIaqYARzgSad2kT23TXEMmzsPp7/kM2DjAqmEJbe+Lgl87Z7ZseXBHSnJXd1JjtxYJCm4og7lA2zSagvY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0

Nextcloud 30

Vereinsbuchhaltung 0.18.0
Release Details
UpdatedAug. 2, 2026, 4:11 p.m.
Changelog

Hinzugefügt

  • Weitere Mehrsprachigkeit im Backend. Kassenbericht und Kurzbericht (beide als druckfertige HTML-Seite) sowie das Änderungsprotokoll (Berichte → Protokoll) erscheinen jetzt in der Sprache des Nextcloud-Profils statt fest auf Deutsch.
  • Alle bisher noch deutschen Fehler- und Bestätigungsmeldungen der Controller sind übersetzt, ebenso die Prüfmeldungen beim Anlegen und Ändern von Buchungen (Soll-Haben-Kontrolle) und die Fehlermeldungen der CAMT-/MT940-/CSV-Kontoauszugs-Parser.

Technisch

  • Statische Prüfmethoden (JournalService::validateLines(), JournalService::reassignPlan(), BookingService::validateParts()), die auch direkt aus PHPUnit-Tests ohne laufende Nextcloud-Instanz aufgerufen werden, liefern jetzt stabile Fehlercodes statt fertigem Text; die Übersetzung passiert in einer begleitenden Instanzmethode mit Zugriff auf IL10N. Die Parser (CamtCsvParser, Camt053Parser, Mt940Parser, XbucParser) erhalten IL10N als optionalen, in Tests weglassbaren Konstruktorparameter mit deutschem Fallback-Text.

Bekannte Lücken

  • Der CSV-Export der Auswertungen ist noch vollständig Deutsch.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureyT7SVmIOpa+ZxIYuUUiftY1NmsPnETQbPKz5hXSyXYJ2fSqVm/OBPOJyoI2EpaGulf2AqkZr3w8jXrWuh4U3J1m4IuaAK8zGhD47WCAzxFGZxc8iy6ITh0OckjLneDWxMwoQHJO/IggRVjBEaZXKdD2wrFPMjkXDUTBvlMr/YKJFE6bd1qJJ5UKXQedO51aNuRQR/O9UrXJ8IR6F5SmyWzrEvr8F/hNdiQioDnTA2vk1iB2bTciuc9qnQd13m1i43ToUuZfYSYflxBhAq/kMOCrUsICqXo3wy88DNIVuwaiEIPrXuMUBDXsmjcnh0dtku/iVTiOpPtkDjucmJ5bhLcuylyC1sYFt6d5emJlqMUOWHmhzC4eoQc9nv2uSq/VgCVUJd0V4dihQivViVEot+acr/xuHinPVt7YikF5ejoWt9//f8huYVa7O1dR2mKoY+nyOscA1lF1kFo7OYZ30KnerD5qjLJo508MDMWtAb7Pfzw3P423Jssl1h0zAPk7e2UWu+5ImshK7nr5+07Owyt/h41ASF4FeW8ePiUbn1hHgf86avEjbtMrQXajpZJp1AddBYuGCa19+V6jgLory4k8mLyTdCOz3O0nFTjEEU3hhq+BPbaoaztKx3W0FOtBsFEO/FyhaAxffkGjbU88lQoDSP9rX3lgH8oKX++nUHSY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.17.0
Release Details
UpdatedAug. 2, 2026, 3:16 p.m.
Changelog

Der erste sichtbare Schritt zur Mehrsprachigkeit: wer Nextcloud auf Englisch eingestellt hat, sieht jetzt eine englische Oberfläche statt einer deutschen mit englischen Brocken drumherum.

Hinzugefügt

  • Englische Übersetzung. Alle Vue-Komponenten der Oberfläche – jeder Tab, jeder Dialog, jede Fehler- und Bestätigungsmeldung – sowie die häufigsten Fehlermeldungen des Backends sind jetzt ins Englische übersetzt (l10n/en.json). Einen eigenen Sprachschalter braucht die App dafür nicht: wer sein Nextcloud-Profil auf Englisch stellt, bekommt automatisch die englische Fassung. Die Quelltexte im Code bleiben bewusst Deutsch – der Herkunftssprache der App –, Deutsch ist also unverändert die Fallback-Sprache.
  • Video in der App-Store-Beschreibung verlinkt.

Technisch

  • Eigener Lademechanismus für Übersetzungen im Frontend (src/lib/l10n.js): die Bibliothek @nextcloud/l10n geht davon aus, dass Englisch die Quellsprache ist, und lädt dafür gar kein Übersetzungsbundle – bei einer deutschen Quellsprache wäre das genau die falsche Sprache.
  • IL10N ist jetzt per Konstruktor in die Controller und Services injiziert, die nutzerseitige Fehlermeldungen werfen.

Bekannte Lücken

  • Kassenbericht, Kurzbericht, Prüfleitfaden und die CSV-Exporte sind noch vollständig Deutsch.
  • Ein paar Backend-Prüfungen (u. a. die Soll-Haben-Kontrolle beim Buchen, die CAMT-/MT940-Parser) bleiben vorerst Deutsch – sie sind bewusst ohne Nextcloud-Abhängigkeit gehalten, damit sie sich ohne laufende Instanz testen lassen.
  • Das Änderungsprotokoll (Berichte → Protokoll) zeigt seine Einträge weiterhin auf Deutsch.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureroXOT9h02u08zVmBOEm4AgtrqTyByeTNHUynP/GLWlj1W/PSVXK7rwHxjWbw/fnoVsuvroo5FdxY6sTMKgwWfcCYW9WC49dJylKK1FX8oKws1LefX9HqQbZvFeJ9L3grLLht92mwMthzuRfrCaQDygDBmpv1o3PhbrqJpox0zfx1jWd6jJhDpBeBjIcfBf+CyKan8BSSdwFjRUzCoJBIz+cHAB27MY5PfvrDdFmUtjHLvU/MifISIkMiVhxKtY1CnQtJd58t0zJcFvN0qjB85+DAAV9nR6YCcZjNw8UbCdetu5CThcQBPHJLnRXIIf+WP88PgRYkxgRw9d8QKMf2zklGsVTPJdtvacI9V2F5JOIimelYg3V4WacqcpO2F2xOfs6jXVS2E8MFAloWofhNnfVuTINQiHz8Ckw49QlyEr8Up6yEZ28tgJh0AKpQWsLUZ+SUd4PA2obilUrsFjFkEhAUbAPtu0kdKD6l3NYa9oXB4a2Pun6gNpD1qvhmRudPvyIGoYCoAsOstLAehk+eAiF6lfFLe/o0V+RiOn4L2lPt5c96acCwesJD9yZQbZIfbYFM5ddheBSYaJRzyLYJWsK2IETagwH4XVvH/vClPytgMNHiOG/s6LALfsQSUTzz8ktLZqU+U1BHlmqXaR9M2lvlEu2G9O+5ueYM3D3kX5E=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.16.0
Release Details
UpdatedAug. 1, 2026, 9:03 a.m.
Changelog

Diese Version bringt kaum sichtbare Neuerungen: sie räumt den Programmcode auf und sichert ihn gegen Fehler ab, die bisher niemand bemerkt hätte. Ein solcher Fehler kam dabei ans Licht – und er betraf ausgerechnet die Kassenprüfung.

Behoben

  • Der Beleg-Export als ZIP brach ab, sobald ein Beleg im Zeitraum lag. Die Funktion rief eine Methode auf, die es in PHP gar nicht gibt (ZipArchive::addStream); der Download endete mit einem Serverfehler statt mit einem Archiv. Betroffen war genau die Funktion, die eine Kassenprüfung braucht, um alle Belege eines Jahres auf einmal zu bekommen. Die Belege werden jetzt blockweise ins Archiv geschrieben – der Speicherbedarf bleibt wie vorgesehen niedrig, auch bei einem Jahr voller PDFs.
  • Der Kassenbericht ignorierte die dunkle Darstellung. Wer ihn bei dunklem Systemdesign öffnete, bekam schwarze Schrift auf weißem Grund in einem sonst dunklen Fenster – der Kurzbericht konnte es längst. Beide Berichte teilen sich jetzt dieselbe Gestaltung. Am Ausdruck ändert sich nichts.
  • Beispieldaten konnten halb angelegt liegenbleiben. Fehlte ein Konto des Standard-Kontenrahmens, brach das Anlegen mitten in den Buchungen ab. Jetzt meldet die App vorher, welches Konto fehlt.

Geändert

  • Die Rechenregeln aller Auswertungen liegen jetzt an einer Stelle. Die Frage, welches Konto mit welchem Vorzeichen ins Ergebnis eingeht, war an acht Stellen einzeln ausgeschrieben – in den Exporten, in der Saldenliste und in den Berichten. Eine Änderung daran musste bisher überall nachgezogen werden. An den Zahlen ändert sich nichts; sie sind jetzt nur an einer Stelle festgelegt und erstmals automatisiert geprüft.
  • Der Sortier-Vergleich der Tabellen war dreifach vorhanden und ist es nun einmal. Sortierung und Sicherheitsabfragen sind damit in allen Ansichten garantiert gleich.

Technisch

  • Statische Analyse (PHPStan, Stufe 5) läuft jetzt bei jeder Änderung mit und fand die drei oben genannten Fehler.
  • Der 1149 Zeilen lange ExportController ist in Dienste aufgeteilt: CSV, Beleg-Archiv und die druckfertigen Berichte je für sich, der Controller behält nur die Auslieferung (158 Zeilen).
  • Frontend-Unit-Tests (Vitest) für die Rechen- und Anzeigehelfer; der Testbestand wächst von 118 auf 210 Tests.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureVJDiJR0wAF6OF052v41IlOKnSdqYFS+pI1+dFRngpf5U228GkukeyPqI033CH4Q3hummVmpRiAFGTi5n9g403rp88tFm8lw69XuqW2KKFwDkzc5EE0wVs3AVJgHeREn/NotbVAVvItr6+4wdPE4vKY4MnSVrwwPFWyQPhYMcy7ps0GEKQOKIIg8K5FiRvpgFF4M8/24xcDJSX9P6ySetzjjCUewbWBCq90qjAkf1dedOmwpk/WJ6EzDMuOpXjK866ruUFpU6UMHarVV5JY0IO97AJym3rJVUbtF7pkCI4gQVjVAFmcux+rnXm7vLN5EHGRF9cQCgy5REcQAKavKY0k2KS48L/zRjsvzEv0dY/IWAraVowHLkJUDonnUelUPZJ3J6S6CekKswO2oQdXnCc2jGNSY7QS8s2ck9NsnCSeX66hEMC4fI8cZUTeFM5sr4IP7ABKXq4f/DOZ2kl1klwKZjVeCSkD5SQvB4Lt5vq+kj2CzULsoM5EyrxLuvdYt/cOMluMhFdKg8H0Mubcc/TnIMEMGj2ODw7z7z1g5KQdGDPYEQ2JDgUKQ2gxW9exq98q0FmXq95K1ppLvC0c8sDezQF5leB2eVH/c0yDzc6xsDpWbkc9MQiNLofdqyXWHBvvrqKnl7x7qBn8U9BdefGUuFba3HekdHxLZFAm6OPsg=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.15.0
Release Details
UpdatedJuly 31, 2026, 6:56 p.m.
Changelog

Behoben

  • Gelöschte Buchung gab ihren Bankumsatz nicht wieder frei. Wurde ein Buchungssatz gelöscht, der durch das Zuordnen eines Bankumsatzes entstanden war, blieb der Umsatz auf „zugeordnet" stehen – mit einem Verweis auf einen Buchungssatz, den es nicht mehr gab. Er tauchte danach nirgends mehr auf: nicht unter Zuzuordnen (dort stehen nur offene Umsätze) und nicht in den Salden (die kennen nur Buchungen). Auch die Bank-Abstimmung führte ihn weder als gebucht noch als offen, sodass der Kontostand still vom Bankauszug abwich. Der Umsatz steht jetzt nach dem Löschen wieder unter Zuzuordnen und lässt sich neu zuordnen – derselbe Stand wie beim Aufheben einer Zuordnung.
  • Belege eines Jahres konnten beim xbuc-Import verloren gehen. Die Dublettenprüfung des Zusammenführ-Imports beschrieb eine Splittbuchung nur über eine ihrer Zeilen. Eine eingehende Buchung, die zufällig auf diesen Teilbetrag passte, galt dadurch als bereits vorhanden und wurde stillschweigend übersprungen. Der Vergleich betrachtet jetzt die ganze Buchung, und beide Seiten des Vergleichs bilden ihren Schlüssel an derselben Stelle.
  • Beleg löschen konnte einen Datensatz ohne Datei hinterlassen. Die Datei wurde vor dem Datensatz entfernt; schlug das Löschen des Datensatzes fehl, blieb ein Beleg zurück, der sich nicht mehr öffnen ließ. Jetzt gilt auch hier die Reihenfolge, die beim Löschen einer ganzen Buchung längst galt: erst der Datensatz, dann – nach erfolgreichem Abschluss – die Datei.

Geändert

  • Der Jahresabschluss schützt jetzt auch die Konten-Stammdaten. Bisher war ein festgeschriebenes Geschäftsjahr nur gegen Änderungen an den Buchungen gesichert. Über das Konto ließ sich sein Bericht trotzdem nachträglich verschieben: Ein Wechsel der Kontoart dreht das Vorzeichen, ein Wechsel des Geldkonto-Kennzeichens verschiebt das Konto zwischen Vermögensübersicht und Einnahmen-/Ausgaben-Rechnung – das archivierte Jahresergebnis änderte sich, ohne dass eine einzige Buchung angefasst wurde. Kontoart, Geldkonto- Kennzeichen, Sphäre, Rücklagen-Art und Kostenstelle lassen sich deshalb nicht mehr ändern, solange das Konto in einem abgeschlossenen Jahr bebucht ist; wer die Änderung braucht, eröffnet das Jahr wieder und schließt es danach erneut ab. Nummer, Name, Kategorie, Aktiv-Schalter und Überkonto bleiben frei änderbar – sie ändern nur Beschriftungen, keine Beträge.
  • Konten stehen jetzt im Änderungsprotokoll. Anlegen, Ändern und Löschen eines Kontos wurden bisher nicht protokolliert – ausgerechnet die Stammdaten, aus denen jede Auswertung gerechnet wird, waren für die Kassenprüfung unsichtbar. Bei einer Änderung vermerkt das Protokoll zusätzlich, ob ein auswertungsrelevantes Feld betroffen war.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureP7cVaIPv213NPHt6juPqCRD4S2odKrN+G8KhhxyDeKw7BKUxrWvSaOiQCEwBmvQzUCYWUDf0OacHyUlh6nmJEWFmuux3X6wIY3AuGQx/gg37EMyMCod8JA82iPNAMLXML1bEIeU9RGEIbmtdc6CmNEV+TlEBCp02kskc/V1FytAkCREPOCfCr7DodbD6FZtrjN+VloewQblps1KCCye9tm1v7mMDRDexPv2jiATXsKqS/D/ostXEh/SGTtX1saXxlFpMJss8WYgRNCMbzGMW6i+k2ND/iiEAzBFBKwFY0w4YunU4zo2x6Y3z7SCPeSLP0AagS4LI2vv5vKeq2jHyqtnXTS6Zi6tba2P6ObB0stmW6lzc6p58UW3Dvw9Irm58hAa7QqvqUheI2t0haws3Cah2/e95eOqk/+tFcGS1k6C1sPVQVlcEFjMyLN2a88YKW32okbQhzCEixkockVQQbWfY40Shqg64ZSfGGR6VAgHck6rioYnQJE2H5+3SexdzsYkJVY2jJ00tLIdCDpq2Z3M5AZSjxHpGcRyJ+w+6EIx10SbOdsqxQw0/FEnAC8Bk4d1vcodBZBwXFav/Ew6diriLx49vhFQZvlvmshNbREyFYiWskPUKE46NTOVHZVGZqLlkQD4vFbu61PWYR8swhuYhqMwPbsxkzbxIf2JQuQU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.13.0
Release Details
UpdatedJuly 31, 2026, 8:50 a.m.
Changelog

Hinzugefügt

  • Frei definierbare Kostenstellen. Bisher leitete die App die Kostenstelle aus dem Kontenrahmen ab – entweder aus der zweiten Zahlengruppe der Kontonummer oder „ein Konto = eine Kostenstelle". Beides setzt einen bestimmten Kontenaufbau voraus. Jetzt lassen sich Kostenstellen unter Einstellungen → Kostenstellen frei anlegen und Konten ihnen ausdrücklich zuordnen; beliebige Konten können so zu einem Projekt zusammengefasst werden. Der neue Modus heißt „Frei definierte Kostenstellen" (Einstellungen → Kostenstellen-Modus, nur Verwalter). Die beiden bisherigen Modi bleiben unverändert Standard – bestehende Auswertungen ändern sich nicht. Die Zuordnung geht einzeln im Konto-Dialog oder für viele Konten auf einmal. Angelegte Kostenstellen erscheinen im Bericht auch ohne zugeordnetes Konto, damit eine fehlende Zuordnung sichtbar ist.
  • Umbuchen direkt im Kontoauszug. Wer beim Durchblättern eines Kontos (Tab Konten) eine falsch zugeordnete Buchung findet, bucht sie an Ort und Stelle auf ein anderes Konto um – der Umweg über das Journal entfällt. Umbuchen lässt sich jede Seite der Buchung, also auch das Gegenkonto. Geändert wird ausschließlich die Kontozuordnung; Betrag, Datum, Beschreibung und die Gegenseite bleiben, sodass Soll und Haben nicht auseinanderlaufen können. Abgeschlossene Geschäftsjahre bleiben gesperrt, jede Umbuchung steht im Änderungsprotokoll, und eine zwischenzeitliche Änderung durch jemand anderen wird erkannt.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignaturerYLg9/W+aZy3UR2gm/vOTWoLkk4IZrBuLDSsMcqIA1ezxdDhM4DCie+hHnru5bowZ4ZqOE8XmhrBYJCF9F8Wg3zyklma7eMmTKWMHy0mlys+/SYrmnPOfrzUyA/3PvFLNztuRJgyVeL/bI/0fp4QQ5YUTHG6oQHcY9NZXeB1Yy9AJAOP/oBHHdA9RDSONWvDJKgpLAgKBHcpj8J9SPCeVOviwHla4B2fbLKjpJu185Ee7SsvjXQJYatX0SV1/Hy65I0o5xfst63HfBj8vMYkiu6vxz3bU8kp5jUJKWWmDiB9qQHByk5srK1Wu/R/gZKgfxp+EtU1SWYaZFIU5ZlynNgtZpx63083sBz/UgryqKitjmOvD1Qw1UAi4sP5BMm8IKjZCCHY1mBImO/sIQqa7MjpcLulmnOmAXorbAgfG9ZaXFrk0AafHeQRzemtQ5nvlYpl8Z58F11ZuVKudYhsciBek7SHIhHTbs99aOsb934bzlaN+lZelZfm5J0OyCJaBv7zCKPQqMuBUNioV/w2ntAY/CyY2TK2gfJb2wMjJmNNR5s7hRcWVIPpklXxE/o44NSsckDDnzA4FemD7tswK8tTftO/v+Qk04kzjHi984idYXoHWSwFAYYiZxmL2oB6OOs+MXh9dGQUbpctC2pOAeSdO0J0dO/7D+MkKtaBrYA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.12.0
Release Details
UpdatedJuly 30, 2026, 4:01 p.m.
Changelog

Hinzugefügt

  • Kontoauszüge in zwei weiteren Formaten: neben der bisherigen CSV liest die App jetzt auch CAMT.053 (XML) und MT940. Welches Format vorliegt, erkennt sie am Inhalt der Datei – die Endung spielt keine Rolle. CAMT.053 ist die bessere Wahl, wo die Bank es anbietet: Vorzeichen, Datum und Zahlungsbeteiligte stehen dort eindeutig drin, statt aus Spaltenüberschriften erraten zu werden.
  • Wachordner: Auf Wunsch liest die App Kontoauszüge selbstständig aus einem Nextcloud-Ordner ein (Einstellungen → Kontoauszüge automatisch einlesen). Den heruntergeladenen Auszug dort ablegen genügt; stündlich sieht ein Hintergrundjob nach. Verarbeitete Dateien wandern nach verarbeitet/, nicht lesbare mit Begründung nach fehler/ – gelöscht wird nichts. Setzt System-Cron voraus. Das ersetzt das Hochladen von Hand, nicht das Herunterladen bei der Bank.
  • Vorgemerkte Umsätze aus CAMT.053 werden übersprungen. Sie ändern sich beim endgültigen Buchen häufig noch und kämen sonst ein zweites Mal herein.
  • Mehrere Bankkonten werden unterschieden. Am Geldkonto lässt sich die IBAN hinterlegen (Tab Konten → Konto bearbeiten, nur bei Geldkonten); beim Zuordnen einer Bankbuchung wählt die App daraufhin das Geldkonto, auf dem der Umsatz tatsächlich gebucht wurde. Bisher landete alles auf dem ersten Bankkonto des Kontenrahmens. Ohne hinterlegte IBAN – oder wenn der Auszug keine mitbringt – bleibt es beim bisherigen Verhalten. Wer mehrere Konten führt, sollte CAMT.053 oder MT940 exportieren: dort steht die IBAN verlässlich, in der CSV mancher Bank nur eine Kontonummer.

Behoben

  • Derselbe Umsatz landet nicht mehr doppelt, wenn das Exportformat wechselt. Die Dublettenerkennung hing am eigenen Konto, und das schreiben die Formate verschieden: die CSV mancher Bank führt dort nur eine Kontonummer, CAMT.053 immer die volle IBAN. Zusätzlich zum bisherigen Vergleich prüft die App Umsätze jetzt über Datum, Betrag und Text gegen die bereits vorhandenen Bankbuchungen.

Sonstiges

  • Die Umsatzquellen liegen hinter einer gemeinsamen Schnittstelle (lib/Service/Statement/); Dublettenerkennung, Regeln und Import-Protokoll sind für alle Formate dieselben. Der MT940-Parser ist zugleich die Vorarbeit für einen späteren FinTS-Abruf, der genau dieses Format liefert.
  • Das Import-Protokoll hält fest, aus welchem Format ein Import stammt; Geldkonten können ihre IBAN tragen (Migration 122).
  • Unit-Tests für beide neuen Parser sowie ein Kreuztest, der denselben Kontoauszug in allen drei Formaten vergleicht (61 Tests).
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureYrd0NVVBI48qEcLJqlW2g3q/DsCa4M/I4Dap6Y7XZoLqHbFQtEHZiGe5WGYmrRZxZaiS38aXU62p6tx2uqB+V5cYI7xSomdVQtN/PlHS0hXRjO5OunZIpXdSaplQn0BiBhuN9iP+Vdrwc395yav9MegQE1opuH5kj2xPgKQyUbUehBedJ4rV+ePyXm2KFXsfv3DFeYjp9R16i41D+fD912hJskD3BNwIgqh0NRalj4KkwrIES46Ym7TZoZ14Jx0NJdh99l4/EXgdRicoSWEUT3aRxhbN+4qfAwa8MsDhL4K+jv4OhqDFxlD5yQKRqr6YsU9wxJ1HmMH8rutukusf18IQsgQjjl4zuwtwNFjrx18LhnUuozOQgRtVVZrQNXGneZ8ZLa7h6iZLUIkoiGtrrSyl0rXJFcg4LRmCz62Q9BaXCO9N8LhgxLa9TPKKJtoSroEbbFAHNewd5ir03uudK/UA6hr6n3GXNAtlTdyMAle9r7JY2DuvIJe+ftEHNqMC9prT2M1E2qb/nSgYk+RziNaqt4Yd5POjG65TCNEQOKIQ/aUpixnKXUFwzS+fJpFmGA1b+eULBKo0r5Q17xAluMjlw3lBsGcwozKXHc1KeCKIiZfjx9x+y1XMNuzeDaWG1g8kd2sjVTwY2vW+lS/d/R/K1GE2My5qoMILXPZ8+ko=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.11.2
Release Details
UpdatedJuly 29, 2026, 3:43 p.m.
Changelog

Behoben

  • Beträge werden nicht mehr abgeschnitten. In Tabellen hatte die Betragsspalte eine feste Breite von 100 px; längere Werte wie „28.798,68 €" wurden mit „…" gekürzt und ließen sich falsch lesen. Die Spalte wächst jetzt mit.
  • Mobil: „Buchungen" in der unteren Leiste war gekürzt („Buchun…"). Die Einträge teilen sich die Breite jetzt nach Inhalt statt zu gleichen Teilen.
  • Mobil: zu kleine Tippziele. Schaltflächen, Auswahlfelder und Eingabefelder waren teils nur 24–36 px hoch. Sie sind jetzt mindestens 44 px – auch auf Tablets, die per Finger bedient werden, aber das Desktop-Layout bekommen.
  • Mobil: lange Kontonamen im Kontenbaum wurden gekürzt und waren damit nicht mehr unterscheidbar; sie brechen jetzt um.
  • Mobil: das Ende langer Listen lag unter dem schwebenden Buchungs-Knopf und war nicht lesbar.

Sonstiges

  • Ausführliche Beschreibung und Screenshots für den Nextcloud App Store.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureDikykvZ2qeSFgT2rqRn1/K6d7txbP7OEC32gKuFsiCeigdGhCtrIHnVWHhA4ddYVzD+A5w+jgbYrYMzkgZcFS/cJE69wPzosrfHtsfrR1AXnFJprlr1fEU7gM2imvESCrjGS0s8KEeOczNzOTrhw6vtaWm4zbpYth5MLdMZmYFFTxtCQ67VIKIDNZhSVBS+dlbgKma5HobySt4IwUZeR+6qhMtZQZbmMCJ1LSuwPs6QCVTfAxXRlEBkuIdS0VYiBn3jDaoCfBV8tGZjpAG63npnwXIfJJd4HeCyDpMzDx0h/z6JpXKEcJuujT2vnrbjgCgqPOQX6qqCFru7djJ8o1BLR1pO8qNiTn194HAgOH/2cKzaJ/RbYAUXds7qW8aQgxvviJ9adZGRf3zC3jyYB49EGdYB/rKG8Lnn8mhDFkF7iXej4kwz/myXK8MTldP/xctXSC/zinorrnHaRo28XNtFDq5GazeVXpK7/9nvyt3SE49zoABnAEKDw6SYZrVCLX4+J8bbM6yk/ohFE3g1KL2/wXL1GnE1spwuz/OamTPJUqgVNJyV3MyzxG5aHpGxdj3lmctGt8eO34tXvHzofVmHvrhnEbEIcyMlphbOWD2mCiGkmltuGjJqvMJpLbSyZIe/oAXkJ7IiY3KGIRpiKlGUueiQlo0UbI1L+ubF/Uak=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.11.1
Release Details
UpdatedJuly 29, 2026, 3:03 p.m.
Changelog

Erste im Nextcloud App Store veröffentlichte Fassung. Am Programm selbst ändert sich gegenüber 0.11.0 nichts.

Sonstiges

  • Die App wird jetzt mit dem von Nextcloud ausgestellten Zertifikat signiert (appinfo/signature.json) und im App Store veröffentlicht. Das Paket zu 0.11.0 war noch unsigniert und ist deshalb nur über ein direktes Deployment aus dem GitHub-Release installierbar.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureRqufs3+r1UDzVeNY47cnz/w6ATGHouz8ape7ZHM3P5KFdQNcJ6RYVIO+epIwjLtAeVJdMgfEDJwafg1dx757MvkBsfr4fO9yBiP0yNmKeVwdm3G/7vM+WTHYg9CpRNYN2AivshD6OdD5axADiNnBU0jk+qw5szzQ77+pYkxHFMrTC1pbM8VWuTD/F+PrU0V7617dl2nDG7ZWwzjFgP65k6y3lr7hFi46LDiIvwWNv8leoggPU3YoB4YywRdXqhIHImtdBs/fauWamzU49TY22hPqSTPFsAVqyW/RI7Jw599oTCozx0W92XQilBZOGdUQb1Lr8nS+DJs6fGz6eJXbJQd2K81qqSyyIN06UcBudD6zCu5DdLuPLg0kWs7vwq5wI/4AXpBb5xadncHFtJOaNNoCJ2v7+C7d1ZaJ3kfv6ZNnVcuEYYQsNfuitHmmNzATyWSH2+hzXj/fZfpZA0vyHDLa4XkCPMwOi55IaPuvCdEaKE+RTf6hEdnul7MhU8C8BUFHKp3HlkdzJLPmffyf3vTDFoRnvtA2isMEXrkE2u9Usk9X1DlOXxn4PjmCYGNEm54YfVpTGRiY8i972c9XIjwmlpUIaqYARzgSad2kT23TXEMmzsPp7/kM2DjAqmEJbe+Lgl87Z7ZseXBHSnJXd1JjtxYJCm4og7lA2zSagvY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0

Nextcloud 29

Vereinsbuchhaltung 0.18.0
Release Details
UpdatedAug. 2, 2026, 4:11 p.m.
Changelog

Hinzugefügt

  • Weitere Mehrsprachigkeit im Backend. Kassenbericht und Kurzbericht (beide als druckfertige HTML-Seite) sowie das Änderungsprotokoll (Berichte → Protokoll) erscheinen jetzt in der Sprache des Nextcloud-Profils statt fest auf Deutsch.
  • Alle bisher noch deutschen Fehler- und Bestätigungsmeldungen der Controller sind übersetzt, ebenso die Prüfmeldungen beim Anlegen und Ändern von Buchungen (Soll-Haben-Kontrolle) und die Fehlermeldungen der CAMT-/MT940-/CSV-Kontoauszugs-Parser.

Technisch

  • Statische Prüfmethoden (JournalService::validateLines(), JournalService::reassignPlan(), BookingService::validateParts()), die auch direkt aus PHPUnit-Tests ohne laufende Nextcloud-Instanz aufgerufen werden, liefern jetzt stabile Fehlercodes statt fertigem Text; die Übersetzung passiert in einer begleitenden Instanzmethode mit Zugriff auf IL10N. Die Parser (CamtCsvParser, Camt053Parser, Mt940Parser, XbucParser) erhalten IL10N als optionalen, in Tests weglassbaren Konstruktorparameter mit deutschem Fallback-Text.

Bekannte Lücken

  • Der CSV-Export der Auswertungen ist noch vollständig Deutsch.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureyT7SVmIOpa+ZxIYuUUiftY1NmsPnETQbPKz5hXSyXYJ2fSqVm/OBPOJyoI2EpaGulf2AqkZr3w8jXrWuh4U3J1m4IuaAK8zGhD47WCAzxFGZxc8iy6ITh0OckjLneDWxMwoQHJO/IggRVjBEaZXKdD2wrFPMjkXDUTBvlMr/YKJFE6bd1qJJ5UKXQedO51aNuRQR/O9UrXJ8IR6F5SmyWzrEvr8F/hNdiQioDnTA2vk1iB2bTciuc9qnQd13m1i43ToUuZfYSYflxBhAq/kMOCrUsICqXo3wy88DNIVuwaiEIPrXuMUBDXsmjcnh0dtku/iVTiOpPtkDjucmJ5bhLcuylyC1sYFt6d5emJlqMUOWHmhzC4eoQc9nv2uSq/VgCVUJd0V4dihQivViVEot+acr/xuHinPVt7YikF5ejoWt9//f8huYVa7O1dR2mKoY+nyOscA1lF1kFo7OYZ30KnerD5qjLJo508MDMWtAb7Pfzw3P423Jssl1h0zAPk7e2UWu+5ImshK7nr5+07Owyt/h41ASF4FeW8ePiUbn1hHgf86avEjbtMrQXajpZJp1AddBYuGCa19+V6jgLory4k8mLyTdCOz3O0nFTjEEU3hhq+BPbaoaztKx3W0FOtBsFEO/FyhaAxffkGjbU88lQoDSP9rX3lgH8oKX++nUHSY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.17.0
Release Details
UpdatedAug. 2, 2026, 3:16 p.m.
Changelog

Der erste sichtbare Schritt zur Mehrsprachigkeit: wer Nextcloud auf Englisch eingestellt hat, sieht jetzt eine englische Oberfläche statt einer deutschen mit englischen Brocken drumherum.

Hinzugefügt

  • Englische Übersetzung. Alle Vue-Komponenten der Oberfläche – jeder Tab, jeder Dialog, jede Fehler- und Bestätigungsmeldung – sowie die häufigsten Fehlermeldungen des Backends sind jetzt ins Englische übersetzt (l10n/en.json). Einen eigenen Sprachschalter braucht die App dafür nicht: wer sein Nextcloud-Profil auf Englisch stellt, bekommt automatisch die englische Fassung. Die Quelltexte im Code bleiben bewusst Deutsch – der Herkunftssprache der App –, Deutsch ist also unverändert die Fallback-Sprache.
  • Video in der App-Store-Beschreibung verlinkt.

Technisch

  • Eigener Lademechanismus für Übersetzungen im Frontend (src/lib/l10n.js): die Bibliothek @nextcloud/l10n geht davon aus, dass Englisch die Quellsprache ist, und lädt dafür gar kein Übersetzungsbundle – bei einer deutschen Quellsprache wäre das genau die falsche Sprache.
  • IL10N ist jetzt per Konstruktor in die Controller und Services injiziert, die nutzerseitige Fehlermeldungen werfen.

Bekannte Lücken

  • Kassenbericht, Kurzbericht, Prüfleitfaden und die CSV-Exporte sind noch vollständig Deutsch.
  • Ein paar Backend-Prüfungen (u. a. die Soll-Haben-Kontrolle beim Buchen, die CAMT-/MT940-Parser) bleiben vorerst Deutsch – sie sind bewusst ohne Nextcloud-Abhängigkeit gehalten, damit sie sich ohne laufende Instanz testen lassen.
  • Das Änderungsprotokoll (Berichte → Protokoll) zeigt seine Einträge weiterhin auf Deutsch.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureroXOT9h02u08zVmBOEm4AgtrqTyByeTNHUynP/GLWlj1W/PSVXK7rwHxjWbw/fnoVsuvroo5FdxY6sTMKgwWfcCYW9WC49dJylKK1FX8oKws1LefX9HqQbZvFeJ9L3grLLht92mwMthzuRfrCaQDygDBmpv1o3PhbrqJpox0zfx1jWd6jJhDpBeBjIcfBf+CyKan8BSSdwFjRUzCoJBIz+cHAB27MY5PfvrDdFmUtjHLvU/MifISIkMiVhxKtY1CnQtJd58t0zJcFvN0qjB85+DAAV9nR6YCcZjNw8UbCdetu5CThcQBPHJLnRXIIf+WP88PgRYkxgRw9d8QKMf2zklGsVTPJdtvacI9V2F5JOIimelYg3V4WacqcpO2F2xOfs6jXVS2E8MFAloWofhNnfVuTINQiHz8Ckw49QlyEr8Up6yEZ28tgJh0AKpQWsLUZ+SUd4PA2obilUrsFjFkEhAUbAPtu0kdKD6l3NYa9oXB4a2Pun6gNpD1qvhmRudPvyIGoYCoAsOstLAehk+eAiF6lfFLe/o0V+RiOn4L2lPt5c96acCwesJD9yZQbZIfbYFM5ddheBSYaJRzyLYJWsK2IETagwH4XVvH/vClPytgMNHiOG/s6LALfsQSUTzz8ktLZqU+U1BHlmqXaR9M2lvlEu2G9O+5ueYM3D3kX5E=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.16.0
Release Details
UpdatedAug. 1, 2026, 9:03 a.m.
Changelog

Diese Version bringt kaum sichtbare Neuerungen: sie räumt den Programmcode auf und sichert ihn gegen Fehler ab, die bisher niemand bemerkt hätte. Ein solcher Fehler kam dabei ans Licht – und er betraf ausgerechnet die Kassenprüfung.

Behoben

  • Der Beleg-Export als ZIP brach ab, sobald ein Beleg im Zeitraum lag. Die Funktion rief eine Methode auf, die es in PHP gar nicht gibt (ZipArchive::addStream); der Download endete mit einem Serverfehler statt mit einem Archiv. Betroffen war genau die Funktion, die eine Kassenprüfung braucht, um alle Belege eines Jahres auf einmal zu bekommen. Die Belege werden jetzt blockweise ins Archiv geschrieben – der Speicherbedarf bleibt wie vorgesehen niedrig, auch bei einem Jahr voller PDFs.
  • Der Kassenbericht ignorierte die dunkle Darstellung. Wer ihn bei dunklem Systemdesign öffnete, bekam schwarze Schrift auf weißem Grund in einem sonst dunklen Fenster – der Kurzbericht konnte es längst. Beide Berichte teilen sich jetzt dieselbe Gestaltung. Am Ausdruck ändert sich nichts.
  • Beispieldaten konnten halb angelegt liegenbleiben. Fehlte ein Konto des Standard-Kontenrahmens, brach das Anlegen mitten in den Buchungen ab. Jetzt meldet die App vorher, welches Konto fehlt.

Geändert

  • Die Rechenregeln aller Auswertungen liegen jetzt an einer Stelle. Die Frage, welches Konto mit welchem Vorzeichen ins Ergebnis eingeht, war an acht Stellen einzeln ausgeschrieben – in den Exporten, in der Saldenliste und in den Berichten. Eine Änderung daran musste bisher überall nachgezogen werden. An den Zahlen ändert sich nichts; sie sind jetzt nur an einer Stelle festgelegt und erstmals automatisiert geprüft.
  • Der Sortier-Vergleich der Tabellen war dreifach vorhanden und ist es nun einmal. Sortierung und Sicherheitsabfragen sind damit in allen Ansichten garantiert gleich.

Technisch

  • Statische Analyse (PHPStan, Stufe 5) läuft jetzt bei jeder Änderung mit und fand die drei oben genannten Fehler.
  • Der 1149 Zeilen lange ExportController ist in Dienste aufgeteilt: CSV, Beleg-Archiv und die druckfertigen Berichte je für sich, der Controller behält nur die Auslieferung (158 Zeilen).
  • Frontend-Unit-Tests (Vitest) für die Rechen- und Anzeigehelfer; der Testbestand wächst von 118 auf 210 Tests.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureVJDiJR0wAF6OF052v41IlOKnSdqYFS+pI1+dFRngpf5U228GkukeyPqI033CH4Q3hummVmpRiAFGTi5n9g403rp88tFm8lw69XuqW2KKFwDkzc5EE0wVs3AVJgHeREn/NotbVAVvItr6+4wdPE4vKY4MnSVrwwPFWyQPhYMcy7ps0GEKQOKIIg8K5FiRvpgFF4M8/24xcDJSX9P6ySetzjjCUewbWBCq90qjAkf1dedOmwpk/WJ6EzDMuOpXjK866ruUFpU6UMHarVV5JY0IO97AJym3rJVUbtF7pkCI4gQVjVAFmcux+rnXm7vLN5EHGRF9cQCgy5REcQAKavKY0k2KS48L/zRjsvzEv0dY/IWAraVowHLkJUDonnUelUPZJ3J6S6CekKswO2oQdXnCc2jGNSY7QS8s2ck9NsnCSeX66hEMC4fI8cZUTeFM5sr4IP7ABKXq4f/DOZ2kl1klwKZjVeCSkD5SQvB4Lt5vq+kj2CzULsoM5EyrxLuvdYt/cOMluMhFdKg8H0Mubcc/TnIMEMGj2ODw7z7z1g5KQdGDPYEQ2JDgUKQ2gxW9exq98q0FmXq95K1ppLvC0c8sDezQF5leB2eVH/c0yDzc6xsDpWbkc9MQiNLofdqyXWHBvvrqKnl7x7qBn8U9BdefGUuFba3HekdHxLZFAm6OPsg=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.15.0
Release Details
UpdatedJuly 31, 2026, 6:56 p.m.
Changelog

Behoben

  • Gelöschte Buchung gab ihren Bankumsatz nicht wieder frei. Wurde ein Buchungssatz gelöscht, der durch das Zuordnen eines Bankumsatzes entstanden war, blieb der Umsatz auf „zugeordnet" stehen – mit einem Verweis auf einen Buchungssatz, den es nicht mehr gab. Er tauchte danach nirgends mehr auf: nicht unter Zuzuordnen (dort stehen nur offene Umsätze) und nicht in den Salden (die kennen nur Buchungen). Auch die Bank-Abstimmung führte ihn weder als gebucht noch als offen, sodass der Kontostand still vom Bankauszug abwich. Der Umsatz steht jetzt nach dem Löschen wieder unter Zuzuordnen und lässt sich neu zuordnen – derselbe Stand wie beim Aufheben einer Zuordnung.
  • Belege eines Jahres konnten beim xbuc-Import verloren gehen. Die Dublettenprüfung des Zusammenführ-Imports beschrieb eine Splittbuchung nur über eine ihrer Zeilen. Eine eingehende Buchung, die zufällig auf diesen Teilbetrag passte, galt dadurch als bereits vorhanden und wurde stillschweigend übersprungen. Der Vergleich betrachtet jetzt die ganze Buchung, und beide Seiten des Vergleichs bilden ihren Schlüssel an derselben Stelle.
  • Beleg löschen konnte einen Datensatz ohne Datei hinterlassen. Die Datei wurde vor dem Datensatz entfernt; schlug das Löschen des Datensatzes fehl, blieb ein Beleg zurück, der sich nicht mehr öffnen ließ. Jetzt gilt auch hier die Reihenfolge, die beim Löschen einer ganzen Buchung längst galt: erst der Datensatz, dann – nach erfolgreichem Abschluss – die Datei.

Geändert

  • Der Jahresabschluss schützt jetzt auch die Konten-Stammdaten. Bisher war ein festgeschriebenes Geschäftsjahr nur gegen Änderungen an den Buchungen gesichert. Über das Konto ließ sich sein Bericht trotzdem nachträglich verschieben: Ein Wechsel der Kontoart dreht das Vorzeichen, ein Wechsel des Geldkonto-Kennzeichens verschiebt das Konto zwischen Vermögensübersicht und Einnahmen-/Ausgaben-Rechnung – das archivierte Jahresergebnis änderte sich, ohne dass eine einzige Buchung angefasst wurde. Kontoart, Geldkonto- Kennzeichen, Sphäre, Rücklagen-Art und Kostenstelle lassen sich deshalb nicht mehr ändern, solange das Konto in einem abgeschlossenen Jahr bebucht ist; wer die Änderung braucht, eröffnet das Jahr wieder und schließt es danach erneut ab. Nummer, Name, Kategorie, Aktiv-Schalter und Überkonto bleiben frei änderbar – sie ändern nur Beschriftungen, keine Beträge.
  • Konten stehen jetzt im Änderungsprotokoll. Anlegen, Ändern und Löschen eines Kontos wurden bisher nicht protokolliert – ausgerechnet die Stammdaten, aus denen jede Auswertung gerechnet wird, waren für die Kassenprüfung unsichtbar. Bei einer Änderung vermerkt das Protokoll zusätzlich, ob ein auswertungsrelevantes Feld betroffen war.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureP7cVaIPv213NPHt6juPqCRD4S2odKrN+G8KhhxyDeKw7BKUxrWvSaOiQCEwBmvQzUCYWUDf0OacHyUlh6nmJEWFmuux3X6wIY3AuGQx/gg37EMyMCod8JA82iPNAMLXML1bEIeU9RGEIbmtdc6CmNEV+TlEBCp02kskc/V1FytAkCREPOCfCr7DodbD6FZtrjN+VloewQblps1KCCye9tm1v7mMDRDexPv2jiATXsKqS/D/ostXEh/SGTtX1saXxlFpMJss8WYgRNCMbzGMW6i+k2ND/iiEAzBFBKwFY0w4YunU4zo2x6Y3z7SCPeSLP0AagS4LI2vv5vKeq2jHyqtnXTS6Zi6tba2P6ObB0stmW6lzc6p58UW3Dvw9Irm58hAa7QqvqUheI2t0haws3Cah2/e95eOqk/+tFcGS1k6C1sPVQVlcEFjMyLN2a88YKW32okbQhzCEixkockVQQbWfY40Shqg64ZSfGGR6VAgHck6rioYnQJE2H5+3SexdzsYkJVY2jJ00tLIdCDpq2Z3M5AZSjxHpGcRyJ+w+6EIx10SbOdsqxQw0/FEnAC8Bk4d1vcodBZBwXFav/Ew6diriLx49vhFQZvlvmshNbREyFYiWskPUKE46NTOVHZVGZqLlkQD4vFbu61PWYR8swhuYhqMwPbsxkzbxIf2JQuQU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.13.0
Release Details
UpdatedJuly 31, 2026, 8:50 a.m.
Changelog

Hinzugefügt

  • Frei definierbare Kostenstellen. Bisher leitete die App die Kostenstelle aus dem Kontenrahmen ab – entweder aus der zweiten Zahlengruppe der Kontonummer oder „ein Konto = eine Kostenstelle". Beides setzt einen bestimmten Kontenaufbau voraus. Jetzt lassen sich Kostenstellen unter Einstellungen → Kostenstellen frei anlegen und Konten ihnen ausdrücklich zuordnen; beliebige Konten können so zu einem Projekt zusammengefasst werden. Der neue Modus heißt „Frei definierte Kostenstellen" (Einstellungen → Kostenstellen-Modus, nur Verwalter). Die beiden bisherigen Modi bleiben unverändert Standard – bestehende Auswertungen ändern sich nicht. Die Zuordnung geht einzeln im Konto-Dialog oder für viele Konten auf einmal. Angelegte Kostenstellen erscheinen im Bericht auch ohne zugeordnetes Konto, damit eine fehlende Zuordnung sichtbar ist.
  • Umbuchen direkt im Kontoauszug. Wer beim Durchblättern eines Kontos (Tab Konten) eine falsch zugeordnete Buchung findet, bucht sie an Ort und Stelle auf ein anderes Konto um – der Umweg über das Journal entfällt. Umbuchen lässt sich jede Seite der Buchung, also auch das Gegenkonto. Geändert wird ausschließlich die Kontozuordnung; Betrag, Datum, Beschreibung und die Gegenseite bleiben, sodass Soll und Haben nicht auseinanderlaufen können. Abgeschlossene Geschäftsjahre bleiben gesperrt, jede Umbuchung steht im Änderungsprotokoll, und eine zwischenzeitliche Änderung durch jemand anderen wird erkannt.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignaturerYLg9/W+aZy3UR2gm/vOTWoLkk4IZrBuLDSsMcqIA1ezxdDhM4DCie+hHnru5bowZ4ZqOE8XmhrBYJCF9F8Wg3zyklma7eMmTKWMHy0mlys+/SYrmnPOfrzUyA/3PvFLNztuRJgyVeL/bI/0fp4QQ5YUTHG6oQHcY9NZXeB1Yy9AJAOP/oBHHdA9RDSONWvDJKgpLAgKBHcpj8J9SPCeVOviwHla4B2fbLKjpJu185Ee7SsvjXQJYatX0SV1/Hy65I0o5xfst63HfBj8vMYkiu6vxz3bU8kp5jUJKWWmDiB9qQHByk5srK1Wu/R/gZKgfxp+EtU1SWYaZFIU5ZlynNgtZpx63083sBz/UgryqKitjmOvD1Qw1UAi4sP5BMm8IKjZCCHY1mBImO/sIQqa7MjpcLulmnOmAXorbAgfG9ZaXFrk0AafHeQRzemtQ5nvlYpl8Z58F11ZuVKudYhsciBek7SHIhHTbs99aOsb934bzlaN+lZelZfm5J0OyCJaBv7zCKPQqMuBUNioV/w2ntAY/CyY2TK2gfJb2wMjJmNNR5s7hRcWVIPpklXxE/o44NSsckDDnzA4FemD7tswK8tTftO/v+Qk04kzjHi984idYXoHWSwFAYYiZxmL2oB6OOs+MXh9dGQUbpctC2pOAeSdO0J0dO/7D+MkKtaBrYA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.12.0
Release Details
UpdatedJuly 30, 2026, 4:01 p.m.
Changelog

Hinzugefügt

  • Kontoauszüge in zwei weiteren Formaten: neben der bisherigen CSV liest die App jetzt auch CAMT.053 (XML) und MT940. Welches Format vorliegt, erkennt sie am Inhalt der Datei – die Endung spielt keine Rolle. CAMT.053 ist die bessere Wahl, wo die Bank es anbietet: Vorzeichen, Datum und Zahlungsbeteiligte stehen dort eindeutig drin, statt aus Spaltenüberschriften erraten zu werden.
  • Wachordner: Auf Wunsch liest die App Kontoauszüge selbstständig aus einem Nextcloud-Ordner ein (Einstellungen → Kontoauszüge automatisch einlesen). Den heruntergeladenen Auszug dort ablegen genügt; stündlich sieht ein Hintergrundjob nach. Verarbeitete Dateien wandern nach verarbeitet/, nicht lesbare mit Begründung nach fehler/ – gelöscht wird nichts. Setzt System-Cron voraus. Das ersetzt das Hochladen von Hand, nicht das Herunterladen bei der Bank.
  • Vorgemerkte Umsätze aus CAMT.053 werden übersprungen. Sie ändern sich beim endgültigen Buchen häufig noch und kämen sonst ein zweites Mal herein.
  • Mehrere Bankkonten werden unterschieden. Am Geldkonto lässt sich die IBAN hinterlegen (Tab Konten → Konto bearbeiten, nur bei Geldkonten); beim Zuordnen einer Bankbuchung wählt die App daraufhin das Geldkonto, auf dem der Umsatz tatsächlich gebucht wurde. Bisher landete alles auf dem ersten Bankkonto des Kontenrahmens. Ohne hinterlegte IBAN – oder wenn der Auszug keine mitbringt – bleibt es beim bisherigen Verhalten. Wer mehrere Konten führt, sollte CAMT.053 oder MT940 exportieren: dort steht die IBAN verlässlich, in der CSV mancher Bank nur eine Kontonummer.

Behoben

  • Derselbe Umsatz landet nicht mehr doppelt, wenn das Exportformat wechselt. Die Dublettenerkennung hing am eigenen Konto, und das schreiben die Formate verschieden: die CSV mancher Bank führt dort nur eine Kontonummer, CAMT.053 immer die volle IBAN. Zusätzlich zum bisherigen Vergleich prüft die App Umsätze jetzt über Datum, Betrag und Text gegen die bereits vorhandenen Bankbuchungen.

Sonstiges

  • Die Umsatzquellen liegen hinter einer gemeinsamen Schnittstelle (lib/Service/Statement/); Dublettenerkennung, Regeln und Import-Protokoll sind für alle Formate dieselben. Der MT940-Parser ist zugleich die Vorarbeit für einen späteren FinTS-Abruf, der genau dieses Format liefert.
  • Das Import-Protokoll hält fest, aus welchem Format ein Import stammt; Geldkonten können ihre IBAN tragen (Migration 122).
  • Unit-Tests für beide neuen Parser sowie ein Kreuztest, der denselben Kontoauszug in allen drei Formaten vergleicht (61 Tests).
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureYrd0NVVBI48qEcLJqlW2g3q/DsCa4M/I4Dap6Y7XZoLqHbFQtEHZiGe5WGYmrRZxZaiS38aXU62p6tx2uqB+V5cYI7xSomdVQtN/PlHS0hXRjO5OunZIpXdSaplQn0BiBhuN9iP+Vdrwc395yav9MegQE1opuH5kj2xPgKQyUbUehBedJ4rV+ePyXm2KFXsfv3DFeYjp9R16i41D+fD912hJskD3BNwIgqh0NRalj4KkwrIES46Ym7TZoZ14Jx0NJdh99l4/EXgdRicoSWEUT3aRxhbN+4qfAwa8MsDhL4K+jv4OhqDFxlD5yQKRqr6YsU9wxJ1HmMH8rutukusf18IQsgQjjl4zuwtwNFjrx18LhnUuozOQgRtVVZrQNXGneZ8ZLa7h6iZLUIkoiGtrrSyl0rXJFcg4LRmCz62Q9BaXCO9N8LhgxLa9TPKKJtoSroEbbFAHNewd5ir03uudK/UA6hr6n3GXNAtlTdyMAle9r7JY2DuvIJe+ftEHNqMC9prT2M1E2qb/nSgYk+RziNaqt4Yd5POjG65TCNEQOKIQ/aUpixnKXUFwzS+fJpFmGA1b+eULBKo0r5Q17xAluMjlw3lBsGcwozKXHc1KeCKIiZfjx9x+y1XMNuzeDaWG1g8kd2sjVTwY2vW+lS/d/R/K1GE2My5qoMILXPZ8+ko=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.11.2
Release Details
UpdatedJuly 29, 2026, 3:43 p.m.
Changelog

Behoben

  • Beträge werden nicht mehr abgeschnitten. In Tabellen hatte die Betragsspalte eine feste Breite von 100 px; längere Werte wie „28.798,68 €" wurden mit „…" gekürzt und ließen sich falsch lesen. Die Spalte wächst jetzt mit.
  • Mobil: „Buchungen" in der unteren Leiste war gekürzt („Buchun…"). Die Einträge teilen sich die Breite jetzt nach Inhalt statt zu gleichen Teilen.
  • Mobil: zu kleine Tippziele. Schaltflächen, Auswahlfelder und Eingabefelder waren teils nur 24–36 px hoch. Sie sind jetzt mindestens 44 px – auch auf Tablets, die per Finger bedient werden, aber das Desktop-Layout bekommen.
  • Mobil: lange Kontonamen im Kontenbaum wurden gekürzt und waren damit nicht mehr unterscheidbar; sie brechen jetzt um.
  • Mobil: das Ende langer Listen lag unter dem schwebenden Buchungs-Knopf und war nicht lesbar.

Sonstiges

  • Ausführliche Beschreibung und Screenshots für den Nextcloud App Store.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureDikykvZ2qeSFgT2rqRn1/K6d7txbP7OEC32gKuFsiCeigdGhCtrIHnVWHhA4ddYVzD+A5w+jgbYrYMzkgZcFS/cJE69wPzosrfHtsfrR1AXnFJprlr1fEU7gM2imvESCrjGS0s8KEeOczNzOTrhw6vtaWm4zbpYth5MLdMZmYFFTxtCQ67VIKIDNZhSVBS+dlbgKma5HobySt4IwUZeR+6qhMtZQZbmMCJ1LSuwPs6QCVTfAxXRlEBkuIdS0VYiBn3jDaoCfBV8tGZjpAG63npnwXIfJJd4HeCyDpMzDx0h/z6JpXKEcJuujT2vnrbjgCgqPOQX6qqCFru7djJ8o1BLR1pO8qNiTn194HAgOH/2cKzaJ/RbYAUXds7qW8aQgxvviJ9adZGRf3zC3jyYB49EGdYB/rKG8Lnn8mhDFkF7iXej4kwz/myXK8MTldP/xctXSC/zinorrnHaRo28XNtFDq5GazeVXpK7/9nvyt3SE49zoABnAEKDw6SYZrVCLX4+J8bbM6yk/ohFE3g1KL2/wXL1GnE1spwuz/OamTPJUqgVNJyV3MyzxG5aHpGxdj3lmctGt8eO34tXvHzofVmHvrhnEbEIcyMlphbOWD2mCiGkmltuGjJqvMJpLbSyZIe/oAXkJ7IiY3KGIRpiKlGUueiQlo0UbI1L+ubF/Uak=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.11.1
Release Details
UpdatedJuly 29, 2026, 3:03 p.m.
Changelog

Erste im Nextcloud App Store veröffentlichte Fassung. Am Programm selbst ändert sich gegenüber 0.11.0 nichts.

Sonstiges

  • Die App wird jetzt mit dem von Nextcloud ausgestellten Zertifikat signiert (appinfo/signature.json) und im App Store veröffentlicht. Das Paket zu 0.11.0 war noch unsigniert und ist deshalb nur über ein direktes Deployment aus dem GitHub-Release installierbar.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureRqufs3+r1UDzVeNY47cnz/w6ATGHouz8ape7ZHM3P5KFdQNcJ6RYVIO+epIwjLtAeVJdMgfEDJwafg1dx757MvkBsfr4fO9yBiP0yNmKeVwdm3G/7vM+WTHYg9CpRNYN2AivshD6OdD5axADiNnBU0jk+qw5szzQ77+pYkxHFMrTC1pbM8VWuTD/F+PrU0V7617dl2nDG7ZWwzjFgP65k6y3lr7hFi46LDiIvwWNv8leoggPU3YoB4YywRdXqhIHImtdBs/fauWamzU49TY22hPqSTPFsAVqyW/RI7Jw599oTCozx0W92XQilBZOGdUQb1Lr8nS+DJs6fGz6eJXbJQd2K81qqSyyIN06UcBudD6zCu5DdLuPLg0kWs7vwq5wI/4AXpBb5xadncHFtJOaNNoCJ2v7+C7d1ZaJ3kfv6ZNnVcuEYYQsNfuitHmmNzATyWSH2+hzXj/fZfpZA0vyHDLa4XkCPMwOi55IaPuvCdEaKE+RTf6hEdnul7MhU8C8BUFHKp3HlkdzJLPmffyf3vTDFoRnvtA2isMEXrkE2u9Usk9X1DlOXxn4PjmCYGNEm54YfVpTGRiY8i972c9XIjwmlpUIaqYARzgSad2kT23TXEMmzsPp7/kM2DjAqmEJbe+Lgl87Z7ZseXBHSnJXd1JjtxYJCm4og7lA2zSagvY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0

Nextcloud 28

Vereinsbuchhaltung 0.18.0
Release Details
UpdatedAug. 2, 2026, 4:11 p.m.
Changelog

Hinzugefügt

  • Weitere Mehrsprachigkeit im Backend. Kassenbericht und Kurzbericht (beide als druckfertige HTML-Seite) sowie das Änderungsprotokoll (Berichte → Protokoll) erscheinen jetzt in der Sprache des Nextcloud-Profils statt fest auf Deutsch.
  • Alle bisher noch deutschen Fehler- und Bestätigungsmeldungen der Controller sind übersetzt, ebenso die Prüfmeldungen beim Anlegen und Ändern von Buchungen (Soll-Haben-Kontrolle) und die Fehlermeldungen der CAMT-/MT940-/CSV-Kontoauszugs-Parser.

Technisch

  • Statische Prüfmethoden (JournalService::validateLines(), JournalService::reassignPlan(), BookingService::validateParts()), die auch direkt aus PHPUnit-Tests ohne laufende Nextcloud-Instanz aufgerufen werden, liefern jetzt stabile Fehlercodes statt fertigem Text; die Übersetzung passiert in einer begleitenden Instanzmethode mit Zugriff auf IL10N. Die Parser (CamtCsvParser, Camt053Parser, Mt940Parser, XbucParser) erhalten IL10N als optionalen, in Tests weglassbaren Konstruktorparameter mit deutschem Fallback-Text.

Bekannte Lücken

  • Der CSV-Export der Auswertungen ist noch vollständig Deutsch.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureyT7SVmIOpa+ZxIYuUUiftY1NmsPnETQbPKz5hXSyXYJ2fSqVm/OBPOJyoI2EpaGulf2AqkZr3w8jXrWuh4U3J1m4IuaAK8zGhD47WCAzxFGZxc8iy6ITh0OckjLneDWxMwoQHJO/IggRVjBEaZXKdD2wrFPMjkXDUTBvlMr/YKJFE6bd1qJJ5UKXQedO51aNuRQR/O9UrXJ8IR6F5SmyWzrEvr8F/hNdiQioDnTA2vk1iB2bTciuc9qnQd13m1i43ToUuZfYSYflxBhAq/kMOCrUsICqXo3wy88DNIVuwaiEIPrXuMUBDXsmjcnh0dtku/iVTiOpPtkDjucmJ5bhLcuylyC1sYFt6d5emJlqMUOWHmhzC4eoQc9nv2uSq/VgCVUJd0V4dihQivViVEot+acr/xuHinPVt7YikF5ejoWt9//f8huYVa7O1dR2mKoY+nyOscA1lF1kFo7OYZ30KnerD5qjLJo508MDMWtAb7Pfzw3P423Jssl1h0zAPk7e2UWu+5ImshK7nr5+07Owyt/h41ASF4FeW8ePiUbn1hHgf86avEjbtMrQXajpZJp1AddBYuGCa19+V6jgLory4k8mLyTdCOz3O0nFTjEEU3hhq+BPbaoaztKx3W0FOtBsFEO/FyhaAxffkGjbU88lQoDSP9rX3lgH8oKX++nUHSY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.17.0
Release Details
UpdatedAug. 2, 2026, 3:16 p.m.
Changelog

Der erste sichtbare Schritt zur Mehrsprachigkeit: wer Nextcloud auf Englisch eingestellt hat, sieht jetzt eine englische Oberfläche statt einer deutschen mit englischen Brocken drumherum.

Hinzugefügt

  • Englische Übersetzung. Alle Vue-Komponenten der Oberfläche – jeder Tab, jeder Dialog, jede Fehler- und Bestätigungsmeldung – sowie die häufigsten Fehlermeldungen des Backends sind jetzt ins Englische übersetzt (l10n/en.json). Einen eigenen Sprachschalter braucht die App dafür nicht: wer sein Nextcloud-Profil auf Englisch stellt, bekommt automatisch die englische Fassung. Die Quelltexte im Code bleiben bewusst Deutsch – der Herkunftssprache der App –, Deutsch ist also unverändert die Fallback-Sprache.
  • Video in der App-Store-Beschreibung verlinkt.

Technisch

  • Eigener Lademechanismus für Übersetzungen im Frontend (src/lib/l10n.js): die Bibliothek @nextcloud/l10n geht davon aus, dass Englisch die Quellsprache ist, und lädt dafür gar kein Übersetzungsbundle – bei einer deutschen Quellsprache wäre das genau die falsche Sprache.
  • IL10N ist jetzt per Konstruktor in die Controller und Services injiziert, die nutzerseitige Fehlermeldungen werfen.

Bekannte Lücken

  • Kassenbericht, Kurzbericht, Prüfleitfaden und die CSV-Exporte sind noch vollständig Deutsch.
  • Ein paar Backend-Prüfungen (u. a. die Soll-Haben-Kontrolle beim Buchen, die CAMT-/MT940-Parser) bleiben vorerst Deutsch – sie sind bewusst ohne Nextcloud-Abhängigkeit gehalten, damit sie sich ohne laufende Instanz testen lassen.
  • Das Änderungsprotokoll (Berichte → Protokoll) zeigt seine Einträge weiterhin auf Deutsch.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureroXOT9h02u08zVmBOEm4AgtrqTyByeTNHUynP/GLWlj1W/PSVXK7rwHxjWbw/fnoVsuvroo5FdxY6sTMKgwWfcCYW9WC49dJylKK1FX8oKws1LefX9HqQbZvFeJ9L3grLLht92mwMthzuRfrCaQDygDBmpv1o3PhbrqJpox0zfx1jWd6jJhDpBeBjIcfBf+CyKan8BSSdwFjRUzCoJBIz+cHAB27MY5PfvrDdFmUtjHLvU/MifISIkMiVhxKtY1CnQtJd58t0zJcFvN0qjB85+DAAV9nR6YCcZjNw8UbCdetu5CThcQBPHJLnRXIIf+WP88PgRYkxgRw9d8QKMf2zklGsVTPJdtvacI9V2F5JOIimelYg3V4WacqcpO2F2xOfs6jXVS2E8MFAloWofhNnfVuTINQiHz8Ckw49QlyEr8Up6yEZ28tgJh0AKpQWsLUZ+SUd4PA2obilUrsFjFkEhAUbAPtu0kdKD6l3NYa9oXB4a2Pun6gNpD1qvhmRudPvyIGoYCoAsOstLAehk+eAiF6lfFLe/o0V+RiOn4L2lPt5c96acCwesJD9yZQbZIfbYFM5ddheBSYaJRzyLYJWsK2IETagwH4XVvH/vClPytgMNHiOG/s6LALfsQSUTzz8ktLZqU+U1BHlmqXaR9M2lvlEu2G9O+5ueYM3D3kX5E=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.16.0
Release Details
UpdatedAug. 1, 2026, 9:03 a.m.
Changelog

Diese Version bringt kaum sichtbare Neuerungen: sie räumt den Programmcode auf und sichert ihn gegen Fehler ab, die bisher niemand bemerkt hätte. Ein solcher Fehler kam dabei ans Licht – und er betraf ausgerechnet die Kassenprüfung.

Behoben

  • Der Beleg-Export als ZIP brach ab, sobald ein Beleg im Zeitraum lag. Die Funktion rief eine Methode auf, die es in PHP gar nicht gibt (ZipArchive::addStream); der Download endete mit einem Serverfehler statt mit einem Archiv. Betroffen war genau die Funktion, die eine Kassenprüfung braucht, um alle Belege eines Jahres auf einmal zu bekommen. Die Belege werden jetzt blockweise ins Archiv geschrieben – der Speicherbedarf bleibt wie vorgesehen niedrig, auch bei einem Jahr voller PDFs.
  • Der Kassenbericht ignorierte die dunkle Darstellung. Wer ihn bei dunklem Systemdesign öffnete, bekam schwarze Schrift auf weißem Grund in einem sonst dunklen Fenster – der Kurzbericht konnte es längst. Beide Berichte teilen sich jetzt dieselbe Gestaltung. Am Ausdruck ändert sich nichts.
  • Beispieldaten konnten halb angelegt liegenbleiben. Fehlte ein Konto des Standard-Kontenrahmens, brach das Anlegen mitten in den Buchungen ab. Jetzt meldet die App vorher, welches Konto fehlt.

Geändert

  • Die Rechenregeln aller Auswertungen liegen jetzt an einer Stelle. Die Frage, welches Konto mit welchem Vorzeichen ins Ergebnis eingeht, war an acht Stellen einzeln ausgeschrieben – in den Exporten, in der Saldenliste und in den Berichten. Eine Änderung daran musste bisher überall nachgezogen werden. An den Zahlen ändert sich nichts; sie sind jetzt nur an einer Stelle festgelegt und erstmals automatisiert geprüft.
  • Der Sortier-Vergleich der Tabellen war dreifach vorhanden und ist es nun einmal. Sortierung und Sicherheitsabfragen sind damit in allen Ansichten garantiert gleich.

Technisch

  • Statische Analyse (PHPStan, Stufe 5) läuft jetzt bei jeder Änderung mit und fand die drei oben genannten Fehler.
  • Der 1149 Zeilen lange ExportController ist in Dienste aufgeteilt: CSV, Beleg-Archiv und die druckfertigen Berichte je für sich, der Controller behält nur die Auslieferung (158 Zeilen).
  • Frontend-Unit-Tests (Vitest) für die Rechen- und Anzeigehelfer; der Testbestand wächst von 118 auf 210 Tests.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureVJDiJR0wAF6OF052v41IlOKnSdqYFS+pI1+dFRngpf5U228GkukeyPqI033CH4Q3hummVmpRiAFGTi5n9g403rp88tFm8lw69XuqW2KKFwDkzc5EE0wVs3AVJgHeREn/NotbVAVvItr6+4wdPE4vKY4MnSVrwwPFWyQPhYMcy7ps0GEKQOKIIg8K5FiRvpgFF4M8/24xcDJSX9P6ySetzjjCUewbWBCq90qjAkf1dedOmwpk/WJ6EzDMuOpXjK866ruUFpU6UMHarVV5JY0IO97AJym3rJVUbtF7pkCI4gQVjVAFmcux+rnXm7vLN5EHGRF9cQCgy5REcQAKavKY0k2KS48L/zRjsvzEv0dY/IWAraVowHLkJUDonnUelUPZJ3J6S6CekKswO2oQdXnCc2jGNSY7QS8s2ck9NsnCSeX66hEMC4fI8cZUTeFM5sr4IP7ABKXq4f/DOZ2kl1klwKZjVeCSkD5SQvB4Lt5vq+kj2CzULsoM5EyrxLuvdYt/cOMluMhFdKg8H0Mubcc/TnIMEMGj2ODw7z7z1g5KQdGDPYEQ2JDgUKQ2gxW9exq98q0FmXq95K1ppLvC0c8sDezQF5leB2eVH/c0yDzc6xsDpWbkc9MQiNLofdqyXWHBvvrqKnl7x7qBn8U9BdefGUuFba3HekdHxLZFAm6OPsg=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.15.0
Release Details
UpdatedJuly 31, 2026, 6:56 p.m.
Changelog

Behoben

  • Gelöschte Buchung gab ihren Bankumsatz nicht wieder frei. Wurde ein Buchungssatz gelöscht, der durch das Zuordnen eines Bankumsatzes entstanden war, blieb der Umsatz auf „zugeordnet" stehen – mit einem Verweis auf einen Buchungssatz, den es nicht mehr gab. Er tauchte danach nirgends mehr auf: nicht unter Zuzuordnen (dort stehen nur offene Umsätze) und nicht in den Salden (die kennen nur Buchungen). Auch die Bank-Abstimmung führte ihn weder als gebucht noch als offen, sodass der Kontostand still vom Bankauszug abwich. Der Umsatz steht jetzt nach dem Löschen wieder unter Zuzuordnen und lässt sich neu zuordnen – derselbe Stand wie beim Aufheben einer Zuordnung.
  • Belege eines Jahres konnten beim xbuc-Import verloren gehen. Die Dublettenprüfung des Zusammenführ-Imports beschrieb eine Splittbuchung nur über eine ihrer Zeilen. Eine eingehende Buchung, die zufällig auf diesen Teilbetrag passte, galt dadurch als bereits vorhanden und wurde stillschweigend übersprungen. Der Vergleich betrachtet jetzt die ganze Buchung, und beide Seiten des Vergleichs bilden ihren Schlüssel an derselben Stelle.
  • Beleg löschen konnte einen Datensatz ohne Datei hinterlassen. Die Datei wurde vor dem Datensatz entfernt; schlug das Löschen des Datensatzes fehl, blieb ein Beleg zurück, der sich nicht mehr öffnen ließ. Jetzt gilt auch hier die Reihenfolge, die beim Löschen einer ganzen Buchung längst galt: erst der Datensatz, dann – nach erfolgreichem Abschluss – die Datei.

Geändert

  • Der Jahresabschluss schützt jetzt auch die Konten-Stammdaten. Bisher war ein festgeschriebenes Geschäftsjahr nur gegen Änderungen an den Buchungen gesichert. Über das Konto ließ sich sein Bericht trotzdem nachträglich verschieben: Ein Wechsel der Kontoart dreht das Vorzeichen, ein Wechsel des Geldkonto-Kennzeichens verschiebt das Konto zwischen Vermögensübersicht und Einnahmen-/Ausgaben-Rechnung – das archivierte Jahresergebnis änderte sich, ohne dass eine einzige Buchung angefasst wurde. Kontoart, Geldkonto- Kennzeichen, Sphäre, Rücklagen-Art und Kostenstelle lassen sich deshalb nicht mehr ändern, solange das Konto in einem abgeschlossenen Jahr bebucht ist; wer die Änderung braucht, eröffnet das Jahr wieder und schließt es danach erneut ab. Nummer, Name, Kategorie, Aktiv-Schalter und Überkonto bleiben frei änderbar – sie ändern nur Beschriftungen, keine Beträge.
  • Konten stehen jetzt im Änderungsprotokoll. Anlegen, Ändern und Löschen eines Kontos wurden bisher nicht protokolliert – ausgerechnet die Stammdaten, aus denen jede Auswertung gerechnet wird, waren für die Kassenprüfung unsichtbar. Bei einer Änderung vermerkt das Protokoll zusätzlich, ob ein auswertungsrelevantes Feld betroffen war.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureP7cVaIPv213NPHt6juPqCRD4S2odKrN+G8KhhxyDeKw7BKUxrWvSaOiQCEwBmvQzUCYWUDf0OacHyUlh6nmJEWFmuux3X6wIY3AuGQx/gg37EMyMCod8JA82iPNAMLXML1bEIeU9RGEIbmtdc6CmNEV+TlEBCp02kskc/V1FytAkCREPOCfCr7DodbD6FZtrjN+VloewQblps1KCCye9tm1v7mMDRDexPv2jiATXsKqS/D/ostXEh/SGTtX1saXxlFpMJss8WYgRNCMbzGMW6i+k2ND/iiEAzBFBKwFY0w4YunU4zo2x6Y3z7SCPeSLP0AagS4LI2vv5vKeq2jHyqtnXTS6Zi6tba2P6ObB0stmW6lzc6p58UW3Dvw9Irm58hAa7QqvqUheI2t0haws3Cah2/e95eOqk/+tFcGS1k6C1sPVQVlcEFjMyLN2a88YKW32okbQhzCEixkockVQQbWfY40Shqg64ZSfGGR6VAgHck6rioYnQJE2H5+3SexdzsYkJVY2jJ00tLIdCDpq2Z3M5AZSjxHpGcRyJ+w+6EIx10SbOdsqxQw0/FEnAC8Bk4d1vcodBZBwXFav/Ew6diriLx49vhFQZvlvmshNbREyFYiWskPUKE46NTOVHZVGZqLlkQD4vFbu61PWYR8swhuYhqMwPbsxkzbxIf2JQuQU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.13.0
Release Details
UpdatedJuly 31, 2026, 8:50 a.m.
Changelog

Hinzugefügt

  • Frei definierbare Kostenstellen. Bisher leitete die App die Kostenstelle aus dem Kontenrahmen ab – entweder aus der zweiten Zahlengruppe der Kontonummer oder „ein Konto = eine Kostenstelle". Beides setzt einen bestimmten Kontenaufbau voraus. Jetzt lassen sich Kostenstellen unter Einstellungen → Kostenstellen frei anlegen und Konten ihnen ausdrücklich zuordnen; beliebige Konten können so zu einem Projekt zusammengefasst werden. Der neue Modus heißt „Frei definierte Kostenstellen" (Einstellungen → Kostenstellen-Modus, nur Verwalter). Die beiden bisherigen Modi bleiben unverändert Standard – bestehende Auswertungen ändern sich nicht. Die Zuordnung geht einzeln im Konto-Dialog oder für viele Konten auf einmal. Angelegte Kostenstellen erscheinen im Bericht auch ohne zugeordnetes Konto, damit eine fehlende Zuordnung sichtbar ist.
  • Umbuchen direkt im Kontoauszug. Wer beim Durchblättern eines Kontos (Tab Konten) eine falsch zugeordnete Buchung findet, bucht sie an Ort und Stelle auf ein anderes Konto um – der Umweg über das Journal entfällt. Umbuchen lässt sich jede Seite der Buchung, also auch das Gegenkonto. Geändert wird ausschließlich die Kontozuordnung; Betrag, Datum, Beschreibung und die Gegenseite bleiben, sodass Soll und Haben nicht auseinanderlaufen können. Abgeschlossene Geschäftsjahre bleiben gesperrt, jede Umbuchung steht im Änderungsprotokoll, und eine zwischenzeitliche Änderung durch jemand anderen wird erkannt.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignaturerYLg9/W+aZy3UR2gm/vOTWoLkk4IZrBuLDSsMcqIA1ezxdDhM4DCie+hHnru5bowZ4ZqOE8XmhrBYJCF9F8Wg3zyklma7eMmTKWMHy0mlys+/SYrmnPOfrzUyA/3PvFLNztuRJgyVeL/bI/0fp4QQ5YUTHG6oQHcY9NZXeB1Yy9AJAOP/oBHHdA9RDSONWvDJKgpLAgKBHcpj8J9SPCeVOviwHla4B2fbLKjpJu185Ee7SsvjXQJYatX0SV1/Hy65I0o5xfst63HfBj8vMYkiu6vxz3bU8kp5jUJKWWmDiB9qQHByk5srK1Wu/R/gZKgfxp+EtU1SWYaZFIU5ZlynNgtZpx63083sBz/UgryqKitjmOvD1Qw1UAi4sP5BMm8IKjZCCHY1mBImO/sIQqa7MjpcLulmnOmAXorbAgfG9ZaXFrk0AafHeQRzemtQ5nvlYpl8Z58F11ZuVKudYhsciBek7SHIhHTbs99aOsb934bzlaN+lZelZfm5J0OyCJaBv7zCKPQqMuBUNioV/w2ntAY/CyY2TK2gfJb2wMjJmNNR5s7hRcWVIPpklXxE/o44NSsckDDnzA4FemD7tswK8tTftO/v+Qk04kzjHi984idYXoHWSwFAYYiZxmL2oB6OOs+MXh9dGQUbpctC2pOAeSdO0J0dO/7D+MkKtaBrYA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.12.0
Release Details
UpdatedJuly 30, 2026, 4:01 p.m.
Changelog

Hinzugefügt

  • Kontoauszüge in zwei weiteren Formaten: neben der bisherigen CSV liest die App jetzt auch CAMT.053 (XML) und MT940. Welches Format vorliegt, erkennt sie am Inhalt der Datei – die Endung spielt keine Rolle. CAMT.053 ist die bessere Wahl, wo die Bank es anbietet: Vorzeichen, Datum und Zahlungsbeteiligte stehen dort eindeutig drin, statt aus Spaltenüberschriften erraten zu werden.
  • Wachordner: Auf Wunsch liest die App Kontoauszüge selbstständig aus einem Nextcloud-Ordner ein (Einstellungen → Kontoauszüge automatisch einlesen). Den heruntergeladenen Auszug dort ablegen genügt; stündlich sieht ein Hintergrundjob nach. Verarbeitete Dateien wandern nach verarbeitet/, nicht lesbare mit Begründung nach fehler/ – gelöscht wird nichts. Setzt System-Cron voraus. Das ersetzt das Hochladen von Hand, nicht das Herunterladen bei der Bank.
  • Vorgemerkte Umsätze aus CAMT.053 werden übersprungen. Sie ändern sich beim endgültigen Buchen häufig noch und kämen sonst ein zweites Mal herein.
  • Mehrere Bankkonten werden unterschieden. Am Geldkonto lässt sich die IBAN hinterlegen (Tab Konten → Konto bearbeiten, nur bei Geldkonten); beim Zuordnen einer Bankbuchung wählt die App daraufhin das Geldkonto, auf dem der Umsatz tatsächlich gebucht wurde. Bisher landete alles auf dem ersten Bankkonto des Kontenrahmens. Ohne hinterlegte IBAN – oder wenn der Auszug keine mitbringt – bleibt es beim bisherigen Verhalten. Wer mehrere Konten führt, sollte CAMT.053 oder MT940 exportieren: dort steht die IBAN verlässlich, in der CSV mancher Bank nur eine Kontonummer.

Behoben

  • Derselbe Umsatz landet nicht mehr doppelt, wenn das Exportformat wechselt. Die Dublettenerkennung hing am eigenen Konto, und das schreiben die Formate verschieden: die CSV mancher Bank führt dort nur eine Kontonummer, CAMT.053 immer die volle IBAN. Zusätzlich zum bisherigen Vergleich prüft die App Umsätze jetzt über Datum, Betrag und Text gegen die bereits vorhandenen Bankbuchungen.

Sonstiges

  • Die Umsatzquellen liegen hinter einer gemeinsamen Schnittstelle (lib/Service/Statement/); Dublettenerkennung, Regeln und Import-Protokoll sind für alle Formate dieselben. Der MT940-Parser ist zugleich die Vorarbeit für einen späteren FinTS-Abruf, der genau dieses Format liefert.
  • Das Import-Protokoll hält fest, aus welchem Format ein Import stammt; Geldkonten können ihre IBAN tragen (Migration 122).
  • Unit-Tests für beide neuen Parser sowie ein Kreuztest, der denselben Kontoauszug in allen drei Formaten vergleicht (61 Tests).
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureYrd0NVVBI48qEcLJqlW2g3q/DsCa4M/I4Dap6Y7XZoLqHbFQtEHZiGe5WGYmrRZxZaiS38aXU62p6tx2uqB+V5cYI7xSomdVQtN/PlHS0hXRjO5OunZIpXdSaplQn0BiBhuN9iP+Vdrwc395yav9MegQE1opuH5kj2xPgKQyUbUehBedJ4rV+ePyXm2KFXsfv3DFeYjp9R16i41D+fD912hJskD3BNwIgqh0NRalj4KkwrIES46Ym7TZoZ14Jx0NJdh99l4/EXgdRicoSWEUT3aRxhbN+4qfAwa8MsDhL4K+jv4OhqDFxlD5yQKRqr6YsU9wxJ1HmMH8rutukusf18IQsgQjjl4zuwtwNFjrx18LhnUuozOQgRtVVZrQNXGneZ8ZLa7h6iZLUIkoiGtrrSyl0rXJFcg4LRmCz62Q9BaXCO9N8LhgxLa9TPKKJtoSroEbbFAHNewd5ir03uudK/UA6hr6n3GXNAtlTdyMAle9r7JY2DuvIJe+ftEHNqMC9prT2M1E2qb/nSgYk+RziNaqt4Yd5POjG65TCNEQOKIQ/aUpixnKXUFwzS+fJpFmGA1b+eULBKo0r5Q17xAluMjlw3lBsGcwozKXHc1KeCKIiZfjx9x+y1XMNuzeDaWG1g8kd2sjVTwY2vW+lS/d/R/K1GE2My5qoMILXPZ8+ko=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.11.2
Release Details
UpdatedJuly 29, 2026, 3:43 p.m.
Changelog

Behoben

  • Beträge werden nicht mehr abgeschnitten. In Tabellen hatte die Betragsspalte eine feste Breite von 100 px; längere Werte wie „28.798,68 €" wurden mit „…" gekürzt und ließen sich falsch lesen. Die Spalte wächst jetzt mit.
  • Mobil: „Buchungen" in der unteren Leiste war gekürzt („Buchun…"). Die Einträge teilen sich die Breite jetzt nach Inhalt statt zu gleichen Teilen.
  • Mobil: zu kleine Tippziele. Schaltflächen, Auswahlfelder und Eingabefelder waren teils nur 24–36 px hoch. Sie sind jetzt mindestens 44 px – auch auf Tablets, die per Finger bedient werden, aber das Desktop-Layout bekommen.
  • Mobil: lange Kontonamen im Kontenbaum wurden gekürzt und waren damit nicht mehr unterscheidbar; sie brechen jetzt um.
  • Mobil: das Ende langer Listen lag unter dem schwebenden Buchungs-Knopf und war nicht lesbar.

Sonstiges

  • Ausführliche Beschreibung und Screenshots für den Nextcloud App Store.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureDikykvZ2qeSFgT2rqRn1/K6d7txbP7OEC32gKuFsiCeigdGhCtrIHnVWHhA4ddYVzD+A5w+jgbYrYMzkgZcFS/cJE69wPzosrfHtsfrR1AXnFJprlr1fEU7gM2imvESCrjGS0s8KEeOczNzOTrhw6vtaWm4zbpYth5MLdMZmYFFTxtCQ67VIKIDNZhSVBS+dlbgKma5HobySt4IwUZeR+6qhMtZQZbmMCJ1LSuwPs6QCVTfAxXRlEBkuIdS0VYiBn3jDaoCfBV8tGZjpAG63npnwXIfJJd4HeCyDpMzDx0h/z6JpXKEcJuujT2vnrbjgCgqPOQX6qqCFru7djJ8o1BLR1pO8qNiTn194HAgOH/2cKzaJ/RbYAUXds7qW8aQgxvviJ9adZGRf3zC3jyYB49EGdYB/rKG8Lnn8mhDFkF7iXej4kwz/myXK8MTldP/xctXSC/zinorrnHaRo28XNtFDq5GazeVXpK7/9nvyt3SE49zoABnAEKDw6SYZrVCLX4+J8bbM6yk/ohFE3g1KL2/wXL1GnE1spwuz/OamTPJUqgVNJyV3MyzxG5aHpGxdj3lmctGt8eO34tXvHzofVmHvrhnEbEIcyMlphbOWD2mCiGkmltuGjJqvMJpLbSyZIe/oAXkJ7IiY3KGIRpiKlGUueiQlo0UbI1L+ubF/Uak=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0
Vereinsbuchhaltung 0.11.1
Release Details
UpdatedJuly 29, 2026, 3:03 p.m.
Changelog

Erste im Nextcloud App Store veröffentlichte Fassung. Am Programm selbst ändert sich gegenüber 0.11.0 nichts.

Sonstiges

  • Die App wird jetzt mit dem von Nextcloud ausgestellten Zertifikat signiert (appinfo/signature.json) und im App Store veröffentlicht. Das Paket zu 0.11.0 war noch unsigniert und ist deshalb nur über ein direktes Deployment aus dem GitHub-Release installierbar.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhOxMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI5MTAzOTU2WhcNMzYxMTAzMTAzOTU2WjAdMRswGQYD
VQQDDBJ2ZXJlaW5zYnVjaGhhbHR1bmcwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDnC/z9FvEUX/wgGOdmuaUe8vO5EAPHkINpfnPaGDYp9iD4NO88j/fM
0C4WJPoBIVDCDDKKIz3gniWp8Iz3vAVKRhmWui9f64EsCpY9Y/K2bhHJfCekqq8C
ggtQ1x0JHXL/IxF+brJ802IgXMEyNGf6TBl64aQFNTAwnT5Jx8z+d3iTtgbJ7qA1
VXvOzsKEz+fawmfPNKLZK+oDEAvsrAe0tWTLe33D32pQS4RbrAGV0C8ppB3abgYB
8OcX2MXa+YwTa3KbWUA8M4kyhR6xZ2Xrnm12cGtjyquIpyEx2vTw2MCr9XkABsRw
Zw7PT4Bm74kXtPMPfxXFKyk63WfZvlsuEtuNNXyPqpToQg1jCify+Yn8SLqsvLDW
1WXqvkSevMJrIVPLnRFfiVFt3PR6SUG+qrojGDX7RLElUGvrNZUm7W4PLiRp/X5w
MOnCRnnyudYMnj3mbk76AQhNt5W9TRhR41jZQMQEHXne6mlk7lkCMpueo1O9izHb
78pPXQqQhnkWdnjBGo28mnGbh/neMZW50VVqqVzQt40iAlGTYgfW/V78DGzlaMzC
6QnbHn2accDqSZliUXxIf7aoxmSSSGuDR3y6pKqnX6ylPG2wgf1sHhkcDhUsWsQ2
IwCsO9CylNwrjtIly+STDf/Ujkaa/hRRBW4wK5mJKwd+BERWavDiAQIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQASNkp9pAJnt5DSnFqQgx+wrC8G87hAqU0DWP/8QJaU
NPmEm5AqsYU/9ToTCmBUxjmolv4ZJDqGblCwd4Ty7XnxNp13ZpF+bGAAd3AW335w
WZjUDspa9nCRpKJuZorOygUeH1prUeNmW7OO8SDJRtLSQy/Y9vjxnCpkCCIv/b1Z
fuQS8euREjkChXnFD+K634IgV4kgXqlln7U0G2fDsG5vQLvoklqj+gdWdF7lzuxl
lP94vf8ax8KASgfBPdnvYLV+f0D+Lysj+vLFGS/OEkZIuaxpLfEbNsIuilxF13G3
KBr4npCULzMgKC2Oyjl46q7oiGjQN9Pdw+MXPqfSRRnc
-----END CERTIFICATE-----
SignatureRqufs3+r1UDzVeNY47cnz/w6ATGHouz8ape7ZHM3P5KFdQNcJ6RYVIO+epIwjLtAeVJdMgfEDJwafg1dx757MvkBsfr4fO9yBiP0yNmKeVwdm3G/7vM+WTHYg9CpRNYN2AivshD6OdD5axADiNnBU0jk+qw5szzQ77+pYkxHFMrTC1pbM8VWuTD/F+PrU0V7617dl2nDG7ZWwzjFgP65k6y3lr7hFi46LDiIvwWNv8leoggPU3YoB4YywRdXqhIHImtdBs/fauWamzU49TY22hPqSTPFsAVqyW/RI7Jw599oTCozx0W92XQilBZOGdUQb1Lr8nS+DJs6fGz6eJXbJQd2K81qqSyyIN06UcBudD6zCu5DdLuPLg0kWs7vwq5wI/4AXpBb5xadncHFtJOaNNoCJ2v7+C7d1ZaJ3kfv6ZNnVcuEYYQsNfuitHmmNzATyWSH2+hzXj/fZfpZA0vyHDLa4XkCPMwOi55IaPuvCdEaKE+RTf6hEdnul7MhU8C8BUFHKp3HlkdzJLPmffyf3vTDFoRnvtA2isMEXrkE2u9Usk9X1DlOXxn4PjmCYGNEm54YfVpTGRiY8i972c9XIjwmlpUIaqYARzgSad2kT23TXEMmzsPp7/kM2DjAqmEJbe+Lgl87Z7ZseXBHSnJXd1JjtxYJCm4og7lA2zSagvY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=28.0.0,<35.0.0
Databases SQLite
MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.1.0,<8.5.0