Skip to main content

Budget - Releases

← App details

Nextcloud 34

Budget 2.39.1
Release Details
UpdatedJuly 11, 2026, 10:22 p.m.
Changelog

Fixed

  • Share recipients saw wrong dashboard totals. For a user whose accounts are all shared from someone else, the Income/Expenses This Month cards counted transactions in the owner's "Exclude from reports" categories — the exclusion list was built only from the viewer's own categories, so the owner's internal-transfer legs inflated the recipient's income and expenses while the owner's own dashboard was correct. Shared categories now keep their owner's exclusion for every viewer, and per-viewer "Hide from my reports" mutes are honored by these totals as well (#326)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignaturePTjw+Z1r+sKWQmZSlNfYPSTl5PFejqjMEgNyvQR1FXSKor9zNXxtxcAM0eYYthPn9YEprCKS9V6NC699ZbeWK6WbdRtprmP+rsvCifpjQyVtPDGLJ11LWzLVgw84pTHcolsdY756JO6KWW8hxp63bq3s4QE4rs3RTCEyHSpzpZ1pXSydTCTvheL1M/rtg3XyKpzBkoOqGh39Dnh9TH7JQt+cCB8VD84aeHcsvnxUkQJU3AmZwYGcP8wSNeLmDjt1S9yCv2h8NAReLQeTMbmdzNJtioLLiifkedz5bEgjVximgqI99mmV+8uhRBY0keT1hWXR6En4IrRkiJwlEyNZRHkukMa9jNmoNVvoRYCuQOVZ1wWGtkS8MCz5Ig63yPijEMh1bqnoi3+WA1g8s23dJVIziAHSKl0F+V7DKThsw2jBouMZeZ7bG0nMS9bFLcndAm1MbpWyuZATotUExNeYhEZEIwUOuF+esV5lnDoHTf0i/q6OJGa4hPPiNTE/rH4PS3Z4pdEZ4V9YhxYfsSs/9y+Y7xg/ZQWnLq2YVsTR7V8FgQwU4Bi8OGLsfbYZhSaUnHv60ObUB2U4WkD1mZZqDHKJXAIgVGulvHFAkXQVeGpRqbUCQNvgiVU8hfRaRmEr/y9Usub/3srDJn7qybeAxfOxA7rL+AlakEZBECHPJlY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.39.0
Release Details
UpdatedJuly 11, 2026, 12:57 a.m.
Changelog

Added

  • The Bills page now flags payments without a recorded transaction. A warning card lists bills that were marked paid in the last 60 days without a transaction being created or linked — the situation where the app balance silently detaches from the bank. Each entry has a one-click Record transaction repair that books the missing payment (dated the day it was marked paid, both legs for transfers, splits applied). Deliberate skips via the Skip button are not flagged (#274)
  • QAR (Qatari Riyal) and JOD (Jordanian Dinar) are now available as account currencies. JOD amounts use the currency's native 3 decimal places. Automatic exchange rates cover both. Requested in #321

Fixed

  • Editing a monthly recurring income never saved the changes — the app showed "Income saved successfully" but the Expected Day (and every other field) kept its old value. Any update whose payload contained an empty field (a monthly income always sends its yearly-only "expected month" as empty) reloaded the entity mid-save and threw away the edits. Thanks to @redsteadz for the fix (#324, #325)
  • The "Exclude from forecast" checkbox on a transaction appeared unticked whenever the edit dialog was reopened, and saving the transaction again then really did reset the flag. The flag was stored correctly (including when set by an import rule) but the transaction list never sent it back to the browser, so the dialog always showed — and re-saved — it as off (#326)
  • Income/Expenses This Month (and the other report summary totals) deducted transactions in "Exclude from reports" categories without converting them to the base currency, so on multi-currency setups the deduction was applied at the wrong rate — and for a single selected account the deduction wrongly included every other account's excluded transactions too (#326)
  • Imports no longer bring in flagged duplicates by default. The preview's "Show duplicates" checkbox — on by default — secretly doubled as the skip-duplicates switch, so every import ran with duplicate-skipping off and rows flagged Duplicate were imported anyway. It is now purely a display filter; a new explicit "Import flagged duplicates too" option (off by default, resets each import) covers the deliberate re-import case. The preview's per-row checkboxes, which were never actually read by the import, are gone, and the New Transactions count no longer includes flagged duplicates (#327)
  • Marking a bill paid no longer suggests unrelated transactions as "existing" matches. The Existing Transaction Found dialog offered any unlinked same-day debit as a candidate — cigarettes could be presented as a "match" for a mortgage — steering people into marking bills paid without recording the payment, the classic source of app-vs-bank balance drift. Candidates now must match the bill by amount or name, a weak match is never pre-selected (the safe default is creating the transaction), and the "Don't create any transaction" option now states — and warns after — that the account balance will not reflect the payment (#274)
  • Overdue bills no longer double-book when marked paid. The scheduled placeholder pre-created for the next occurrence was written as an ordinary cleared transaction whenever the advanced due date was not in the future, so it counted toward the balance immediately — alongside the actual payment. Next-occurrence placeholders are now always scheduled, regardless of date
  • Restoring a backup preserves every bill setting. The data import dropped most bill fields: custom recurrence patterns (restored bills then advanced one day at a time instead of quarterly/etc.), transfer destination and description pattern, auto-pay, reminder days, tags, split templates, start/end dates, remaining payments, forecast exclusion and the future-transaction opt-out

Changed

  • The Match transfer dialog now also lists candidates from accounts in a different currency (any amount, within the date window), so cross-currency transfer pairs — e.g. imported from CSV — can finally be linked by hand. Automatic matching after imports is unchanged and still only links exact same-currency amounts (#326)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignaturegJm3RDjkvl1EBICN6Us5TsX5SdQbSGnRHvRIZmLsYaclkDVqW/mYCBjVgwjU50ifkv72zl3kxf5a8S3yxpo2WX6cnhkyyibLhs5Uzdrj9Egw47yYgMun8WH4647Y0uGP7QrX3Yf51SO7Ve+JWgdMRX+hWvG4K9hxUgAwWR3AmTYRsRXpmsNrOr97q2SPC3V0g9bAARDeSeWDGQ8SR05+OMIrQRj0Ct56fC1cTNWzHpPT+Qs17SJJcUUnK3tJWsM3wvGiwk62YMBy1cv1jx3JkOXnYvsa8bpSG3sL7aqr05QkAkvL9sSGxka6mDrC3CN1LHlwwQjPjWwoX9YDtOI04j0JPd0SzlhMYILaZNyouhoNTuY5YhDIG4aLjg737AAEBHgU3jvpWxaM8Oz2+9he9LkAJW6qA9DuzB/FmDNKxyJTmQ6S0LZ21d+Hkr0LD/2uKRSywlRBld+UNCWby8YrgIkyGomPH1rjDG28y1ApiqSozetcjSvDYwqULM2mLXU9OjD9a8UJk8B1R4Xd0TqgMmDCaAZrTdRLYYdTZEEaFbnDkbm8p4z2q+UGfn/UCNEOkg5pbu1WAsRubIKkPzNTz7gTSLI9u+qJfvoZg9c3Ae1OhXWDD9k/2Z+pCrbJhu8yDX+2JukXoAxNS+bnxaDxdoxRzIM+9jcbb0eyG3wJuLk=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.38.0
Release Details
UpdatedJuly 7, 2026, 1:07 a.m.
Changelog

Fixed

  • The account selector saved in the gear settings of insight tiles (Monthly Comparison, Large Transactions, Weekly Spending, Year-over-Year) was silently ignored — the tiles always showed all-accounts data. The saved account now actually scopes the tile's numbers
  • Importing transactions that trigger the Auto-Link as Transfer rule action no longer shows "Cannot use object of type Transaction as array" on the import screen. The import itself always completed — the error came from the transfer-linking step afterwards, which also means those transfers were never actually linked (#314)
  • The Recent Transactions dashboard tile now honors its "Rows to show" setting above 8 — the display respected the setting but the data fetch was hardcoded to 8 rows, so values of 9–20 silently showed only 8

Added

  • Edit auto-categorization rules as JSON. The rule editor gains a Builder / JSON toggle. The JSON view shows the raw rule structure — editable and paste-friendly — checked when you save, and switching back to Builder repopulates the visual widgets. A Copy JSON button makes it easy to move a rule between instances (category/account IDs are instance-specific, as noted in the view). Requested in #318

  • Hide shared categories from your own reports. Categories shared with you gain a per-viewer "Hide from my reports" toggle on the Categories page. Unlike the owner's "Exclude from reports" flag — which stays owner-only because it changes every viewer's reports at once — this only affects your own reports and dashboards; the owner and other viewers see no difference. Applied at the SQL layer through the same choke points as the owner flag, so every report and insight tile honors it consistently

  • "Exclude shared accounts" on the remaining dashboard tiles. The per-tile toggle added in v2.37 now also covers Budget Progress, Monthly Comparison, Large Transactions, Weekly Spending, Category Trends, Cash Flow Forecast and Year-over-Year (shown in the gear menu when you have shared accounts). Bills, income and pension tiles are deliberately not included — they show entity data, not account aggregates

  • Clickable spending charts. Clicking a slice (or bar) on the Spending by Category dashboard tile or the Reports page pie chart jumps to the transaction list filtered to that category, scoped to the chart's date range and account. Tiles set to "top-level only" include the subcategories in the filter so the listed transactions match the clicked amount (#317)

  • Per-bill opt-out of pre-created transactions. The "Create future transaction for this bill" checkbox is now a persistent bill setting instead of a one-shot option at creation. Bills with it unticked never get a scheduled placeholder — not at creation, not after marking paid, not after skipping — and toggling it on an existing bill adds or removes the pending placeholder immediately. Previously the checkbox only affected the moment a bill was created, while every payment re-enabled pre-booking unconditionally, so unticking it never actually opted a bill out (#311)

  • Convert a transaction into a transfer. The Match transfer dialog gains a "No match? Create the other side" section: pick one of your accounts and the app creates the opposite transaction there and links the pair as a transfer. Until now the dialog could only link two existing transactions, which left no way to correctly book payments to accounts that have nothing to import — e.g. a loan tracked as its own account (#313)

Changed

  • Scheduled (future-dated) transactions now show a Scheduled badge in the main transaction list, with a tooltip explaining they are not counted until they occur. Previously only the account detail view had the badge and the main list showed scheduled rows in italics alone, which made a bill's pre-created next occurrence easy to mistake for a duplicate booking (#311)
  • The transaction list Total no longer includes scheduled transactions — they are placeholders for money that has not moved yet (#311)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
Signatures/wP/jWqAxqTStZPLKWl/5nyJk/xpeAom+Kp7KakVOdJmzhNv/Z6KM/CUUOrGem4Qj5G1OEZ2tNrPkTneCVvfFU2S5aoayMDgcRaGquqwZisM/4a0KV9Husjq8mV0RVoqco16HBH8PUY+kYsbeWRcSp2q38Zq99L04zb1x5XY1rGe5YdP4/IydUoMpyzTtsGF00Tj6OUAMvlDTnJqCcetscuXX8yo33xm0dUfLxjZD2f9hsn8UTCwNN7v1+yBhwNN4jJsfyGTN+92XV2YDhRCfVWq/3bGqphHo+nYQvbyjndJRcaAwybOquX6MH7+wpDa5wpvNw9xzc2sYNm2FM08SYep3cX7uoXngifGZu2FBqyNHQ198dqEwqJbEVv2DrK5cAnQkbSS1glYYney/uXAlsqLEinHirrShNYRoq+ZEkxUhpdung3zSWwPe0Fd/mWh2chHiTV20A2tCrv7FRuRadpf75bq+y0xuIglVZQy5E1dT2nk3lPUUwB01w/ggmwrJ91hOchPoyoRoDhoBNxZJs903bQejWR/MdZ9pbXVmwxj1EOq8oWfWeQ5B+OEz/LbcplibODsNv6IUIYU++gxK8d2XCVzBgV2ayMqsRxFDxItgluqDcu4oTW8mh3A4z33PvbeCFFMsj2bKFbOslmuT2ZiVl58oTaQRTh61xeKEA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.37.0
Release Details
UpdatedJune 27, 2026, 11:16 p.m.
Changelog

Added

  • Exclude shared accounts from reports. When other people have shared accounts with you, the Reports page gains an "Exclude shared accounts" toggle so you can see just your own accounts' figures. The same option is available per-tile (in the gear menu) on the account-based dashboard cards — Income vs Expenses, Spending by Category, Top Spending Categories and Recent Transactions. It's off by default (shared accounts are included, as before) and only appears when you actually have shared accounts. Note: a transfer between one of your accounts and a shared account can only be partly seen when shared accounts are excluded, so income/expense totals may be slightly overstated in that case.

Fixed

  • Saving share settings failed with "Some entities do not belong to you" (HTTP 400) when the "Auto-share new" toggle was enabled for a type, or after using Select All — the auto-share toggle (which shares the same data-type as the entity checkboxes) was being collected as a phantom entity and sent as a null id. Entity selection is now scoped precisely, so share settings save correctly with auto-share on (#306)

Changed

  • The Categories page now also lists categories that have been shared with you, shown read-only with a "Shared · <owner>" badge. Previously it showed only your own categories, so anyone using a budget made up entirely of shared categories saw an empty page even though the categories worked everywhere else (#306)
  • Categories shared with you at Edit permission are now editable — rename them and change their colour straight from the Categories page (they carry a "Shared (editable) · <owner>" badge). Read-only shares stay read-only, and a category's type, parent, budget, report visibility and deletion all remain owner-only (#306)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureFqJ17XG/szTfkAMsF+oCODYGClVjdeGArgFi3SrgeGhg4CFFzIVO98XEnYhxeCnwOcYGivzy0uhe60/Vv7kgml+lIVvRL1EZOxvjOES2KksQ50fqxGZSNz3EL54EA6R3Yvo6uLFBM9cbK0mmY5H+4i3UozKhKwzRa6PJLIZzpBsjtprJXHojWsQMR5KY7WDDbb9yD32uYzMnrXMxOiQ2PZGtG7aIhLS6DzC7Mtp/oLUgyRqBWoYMUWWLLi1qyeOr4/8Tdm9H5I36oxeoX2ZQlVuprpRjDPW5EITrljbyuIPy3CdAFn5tvvt8rkurEgCtPAaMv7gSXRZto6rJJqS4woUqX310+J0re9qa53Ls0J7Kezo5WpENoaFsvT6McjVG/4k6k4YN1/l74p97fFfR+1T2kC5VptpwVz4GZ2aSF9t226Sdkft7sv72aC3oQpa4PN3PIWj113aN2X5nnCGiD+NUW282/yAdacvMWVgB+t+Rbm0FIyWtGnbw0dKAlY3CAmQoBvqX9f2vqn1OFDxJhejg/i7+FAWQD83LIk6u2kNg/N4e2+hgLtO45wd5MU6TLXXTrb1mlikbbiP80Rla1p50fScosYTCqjJfz2lh5U6D2h/nquGHHvhf4R9q7eSkykmELHZUKiUyYlrLrOfiuxGRqaWSQWp9hm0CUog1HBE=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.36.0
Release Details
UpdatedJune 27, 2026, 1:15 p.m.
Changelog

Added

  • Auto-share new entities. Each person you share with now has an "Auto-share new" toggle per entity type (accounts, categories, bills, recurring income, savings goals) in their sharing settings. Turn it on and anything you create from then on is shared with them automatically, at the permission you choose — no more sharing each new bill or category by hand (#306)

Fixed

  • Code-integrity "Some files have not passed the integrity check" errors reporting FILE_MISSING for js/.htaccess and vendor/tecnickcom/tcpdf/tools/.htaccess. The app no longer ships any .htaccess files — the Nextcloud App Store strips them from the published archive, which left the signature expecting files that were no longer present. Neither file was needed (the JS one only set a redundant cache header) (#307)
  • Deprecation warning in the Nextcloud log — the notifier now throws UnknownNotificationException instead of InvalidArgumentException for unrecognised notifications, as required by Nextcloud 30+ (#308)
  • Reports and the dashboard summary were empty when a single account flagged "Exclude from reports" was the only account selected. Accounts flagged out of reports are now only dropped from the all-accounts views; explicitly selecting one shows its data as normal (#309)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureYxqf1NnAucAiXFVdwVmQJPaPUyuExQ8t/dwv4tDVpFb1kXDtGcIWoAdspiDz+HwdyPe+ul+/2GcDWiLPTF3TvIHwIaV+h+guDRYBEHMY95+Hy5W0BSuwBC7gto5dfsZEhL5xj5OsRIYrY/Fo8Tqj99kVzDK560o9NgI6Bp6ZkQpbwPRbTnbxUX27oF0oDjrg1ArS4IiE4ghZW1ct74Mlv4uoeg5zaVQlucrZK+rBJXixtpDnImHLPMkTvd+1bmkQTFtvArS1A37YkXkLKrKn4pzWvwv/q46ddih1NXBC7o6UoBwP1pWB1OxgNq3/98OdWyPs4GLumMmRdg+7PbY95Go97lBbNc/1mrBB9qQPXirFxYHMZWVDSRHSNRJ9cSMnZA/YzsVeOZOVkIwJWXhC5YGAEN8nq8HKIMBHzmi6UYdGM2VvGPmNZ+K3wlGMIkKlVfWfIJ7XIOCe6OLvQbwR/ATZ7pUyOE+AR21uu27zWGJ4iB4y/eCfCSE8vIxyPW7L0dwkzxU13iNNNxAUQgbNrs8EiQBLQlTCaBWCWp296Dds5nEGMEilQKX9vEXAhY9KRG5dzJjoZhZ14tWA3Hjp+5/Gs2AM4Bh3Rp1OGdhfQhFDmt/2GXcL16lfDcX28K1ub4FPYE8MEz6qDmLhqqwv9FeXQQbT/ZKdQn8NwuOlGFE=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.35.1
Release Details
UpdatedJune 25, 2026, 3:28 p.m.
Changelog

Fixed

  • Categories marked "Exclude from reports" are now consistently excluded everywhere, including the Income vs Expenses trend, Category Trends, Top Spending Categories and the monthly spending chart — not just the dashboard summary. Exclusion is now applied in the database query itself, so reports and dashboard insight tiles can no longer disagree about which categories count (#219)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignaturebX/9kwpiVjwDj0f2eU5xNE7zUpt8T/nkGCFg9HnDQoKynM7c1KaXhbh4isVQBbgy5kPGXSDP7DRfuSTYY5/M3PSv1JE8gOk/9lz2AGmTqlXrf4Kgq9oARAGcVHXB955dLvDkj6Vrk7zZ9cwrjq4aMBu02dW8ZgyAHStXybiWmkAbIxK768MHM4n5FXTRFw3P/ELVlDjCxgIpxVxD5EZaaA+n7RrjN9MRY2R8/GN7Og7yijcmnutMWtna4K19B9c3ShcfUkrwotvCUz3c+K10VQSfzUpN6RoindDB0j716jUZQ6IKzXBNNRiOjQ6N6s1MlmKwjyFyw0PY509hJY+dtjBEQBbFjK0pw7ZElfW4zDWteDzWRm7M1VjzUlRgPLsg7CJ980Rg8suZAMh3UH251vymCH0ykpMYqK1qiWDurz5GWdaDov6Z0YkQPQLnszzPa60kbO9VUHrYnG+6+KA6GoPW0EHFEqaUxXv+mRLr8Pm8BhjCiDghO7mlHZFN95hN5gkNyBdIPA9JmXAdnkrJBSQaDvZdejDwFJL+T+PgA2f9JomB8BQ/WkZ4uukyKUUFYToOhntQTe7dfE+I4VsD6BycbY7smaY/xGx6EvyXfntpYkgR7Fe2rYKaxBrcRcnhTmQBeLLz85M7fLKVjME72niQdRIZRaMZ+OmpCxKK2qU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.35.0
Release Details
UpdatedJune 25, 2026, 12:36 a.m.
Changelog

Added

  • Pensions revamp. You can now record a contribution as a transfer from a bank account — the matching withdrawal is created automatically and kept out of your spending — and record withdrawals/drawdown back into an account (#304). Scheduled (recurring) contributions (monthly/quarterly/yearly) can post automatically or on demand (#251). DC pensions gained a configurable projection target with a progress indicator and a "today's money" (inflation-adjusted) view on the growth chart, plus an optional Pension Projection dashboard card. Bank legs that fund a pension show a Pension badge in the transaction list.

Fixed

  • Background-job "class does not exist" log spam that could appear after updating PHP/Nextcloud/the app: the app's autoloader is no longer "authoritative", so it falls back to PSR-4 and self-heals if PHP's cached class map is stale after an update (#305)
  • Newly-added dashboard widgets now load their data immediately instead of staying empty until the page is refreshed.
  • The pension detail panel's balance history and activity are no longer broken — those views called endpoints that didn't exist; they now show a proper balance chart and a merged timeline of contributions, withdrawals and balance updates, each removable (#251)
  • Editing a split transaction with three or more parts no longer zeroes or overwrites the other splits. The last split row is now a read-only "remaining" amount (transaction total minus the other parts), and the dialog blocks saving until the parts add up (#303)
  • Spending-anomaly notifications no longer crash with "The arguments array must contain 1 items, 0 given" — a stray % in the notification text made Nextcloud's translation layer fail, spamming the log every time notifications were rendered (#305)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureF/7pZ4sNzjJuqXXZoHmO+9OmUzkQz6ZDke3vkONfZ2uGfzBpwpDSIiGlfNv6gt40Ho8NTPNd0JuM+ESRohLlPAAftFoF+L4h+asH5s/lncoxgTZevEFl7NE14s+sPVdGdZqXGi0b3mohB+f1jOudpVbgB0bmCDvnZMEKiMSjB7XwH9iQqzu/8WyQNd28w+Bz2TbyAfu2PCtdD6jsmVCbvtCkmEdKOVJzRWuExH+vwvZ0ltX3mtorPl6HEzqKJWoDYG3tdbpSwml6w9F3qj8naVZ3tZYBrfvwABHoMD1LYpYwRss5C9UpJvu6UFfKQ4Xso1tBu5U+tYlAPKLbQ5J70o0C1aP66R+FvL8RlMHpY93duR32qZkT/6xV0NYQpd9xzXoLbB5YkZJuBLV8m3oP9k/pNEy8vwF5Kkb+/6zrJt4aSH/iiAqBoqvuT1itwScYsNpGHXWOrGHioCKiGkcMvamfr7her1fQ42wNiVIVWKaxNtjeYrVjmHCtWA2awjv3XRfcXdcL/4stuDpXxQ0Dnv2S/Ey9ZbGbqpc0DNyPZfKie5/QK5OnHPW9F8nHUsEhxDLbNezo11fKm1ykE0ja4nTZFKL3ml2D4aRDMYQe35MWJvW/fLcNW7dYOV969ZI52G8jTIUI/YphcNfCNK24fVkljrcBSybr8WavbELxVR0=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.34.0
Release Details
UpdatedJune 24, 2026, 12:34 p.m.
Changelog

Added

  • The transaction list filters now include a Reconciled filter (All / Reconciled / Not reconciled), so you can quickly see which transactions still need reconciling (#301)
  • A Budget alert threshold setting controls when a category appears on the Budget Alerts tile (default 80% of budget). Set it to 100% to be alerted only when a category actually goes over budget, rather than when it's merely approaching or fully used (#293)

Fixed

  • Creating a category (or account) no longer fails with "Unknown column 'excluded_from_reports'" on instances where an earlier upgrade was interrupted or restored from a mid-upgrade backup. A self-healing migration re-adds the affected columns automatically on update (#302)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
Signaturey+Qi2+U6CexZu8i+0DGrbLXwFbp+cHLVW62WRSfrovEAuJrnZy8paqAacEaE570GoHVd1b23Yihz4oDfOYStLASDVFk7xhVrarnlIqv4EH+Jyw0IR2iaLR+IvhJmSZc9N5nQ42i2z8UYetvQo0znzzNPmpT2FEJB1Sty9kCfHL7HiisG4hYwJp528McMVXgCYfn/XOZUQzOVY6rvis1hP8CiFbE4UMUQj/SgDpRjimcRCZy8fsRLgZHcfO2+BKYCSt5lqLDJSzsmewBFNMVWDdtZwPUxqyK8xaTwSnwWNBNXBRg5ZcDLJhhIJtk9cEezVTdJBZTw3wx7iCztR9RFQi9CZsRz9U9S4jLEdcV8m6OTa8XG22s2ZHt+I+hisGtlC1TOQ5fpPfSe9onWdA8jgC68RAFeOLJ+KmSkLQN1bbr9gUw47oB09Yd9sEtUDcFapfv+x9Zl3/s4ExwO6xDS/bwmRyZ/fq1z2jhVu/lMFd//+9ciOrCdty1p7440JVs/sx71Qcc0mRhZsMtIRYyBD2EFceUHx8cQCtOLL99+JtGkTakCMCwIxghuGoXnrq+9mRWjgROn1ysGEHDUyC8ZKCJ5f8TXOllqX2g+2fyOpFzHR66oP7lPwI5y3eW4VYJGT/lQzTavAtU148X2XaBUz+XA8Djuco3CCuGJuT9FhSU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.33.1
Release Details
UpdatedJune 18, 2026, 3:03 p.m.
Changelog

Fixed

  • On some installs an earlier update was recorded as applied but didn't fully run (an interrupted upgrade, or a database restored from a backup taken mid-upgrade), leaving the excluded_from_forecast column missing — so every new transaction failed with "Unknown column 'excluded_from_forecast'". A migration now re-adds the column automatically on update. (Also surfaced by the new database-error detail field added in 2.32.0.) (#289)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignaturewGNDwrdOGHhLxiEiJQDsZrcL4BFQbGBTjeDU/3VJql8bIeDBHITKzJ3HH47kV1bFmsZ35q0o7xh/r4q6Kj9/SXM8gQCTxEtQ0q80MS85LGy5+9dUtJ0yBvrLfE6kwpNPDH+kqwBVcAGxmLr9vYau5uTFGdeB0WZ3gmesUvT5kuZfdREwJDQ19QWR40pJjHRcWqM5KnXCT1/wq7btWj9s/Vf9GVQvo85g9R7adODG1PVBr4gM6R9nTgsrn+60BJvNNO5f3W3wbuzvqaJhtVdknB9Z8fc7Vbq6mh6TgSPBmXgiK2VdCAWPaW2EmpVL8iwgOGazPGSajPkMZNNZDhzDNEpLcveJl61g/x5dVAxOevwFnN4CaX5c/YYppjcqtoWyYgoTNMv3enF3///tD0wS68iQzcU5UNmsOOKsAUVvRnf/oOX2b13NfsKPONAxcu4Q/UG8ybPqYwXT+T6Vs+IRmoLJLnOs/BUgbqmmRIG1Wfs2BusDFKNHHWoW1Z5t+GDLGx2cyNci7+rKPRh2seML8iPrt9lNv2M5NjzIJ9Wm0Xt0FKpIetR4gDpLSRvBtINaQ0jVuYVixt1yDKMUfE6GH4sNW9rNi2ZoKptz2MIxouBmLNXezA5Y0gvIlgA11Bi0YBrKPUAtmxNl8Jyxhle2Ll5bZbsupMy1otRB/+NGEOs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.33.0
Release Details
UpdatedJune 18, 2026, 12:52 a.m.
Changelog

Added

  • Run reports on multiple accounts at once: the report Account filter is now a checklist — pick any set of accounts (e.g. all your credit cards, or all your checking accounts) or "All Accounts". Applies across the summary, spending, income, cash-flow, category-by-month and year-over-year reports and their CSV/PDF exports (#299)
  • Saved reports: save a report's settings (type, period, selected accounts, tags and options) under a name and re-run it later from the "Saved Reports" picker in the Reports view. The period is stored as the chosen preset (e.g. "Last 3 months") so a saved report always shows up-to-date data (#299)
  • Dashboard tiles that can be scoped to a specific account (Spending by Category, Income vs Expenses, Net Worth History, Recent Transactions, and the other account-aware widgets) now show a small label in their header naming the account they're analyzing — the account you picked in the tile's settings, or "All accounts" (#296)

Fixed

  • The Reports period selector didn't drive the report on reopen: the dropdown kept your last choice (e.g. "Last Year") but the report always reverted to "Last 3 Months", and clicking "Generate Report" used the reverted range instead of the shown period — you had to switch the dropdown away and back. The report now always matches the period shown in the selector (custom ranges are preserved) (#300)
  • The Quick Add Transaction dashboard widget couldn't be used on mobile — the lower fields and the "Add Transaction" button were clipped off the bottom of the tile, so a transaction could never be submitted. Its form is now condensed (each label sits beside its field with tighter spacing) so the whole form fits the tile, and it falls back to scrolling within the tile if it's resized very small (#298)
  • Editing a split transaction's amount (e.g. inline in the transaction list) left its splits at the old amounts, so they no longer summed to the transaction total. The splits are now rescaled proportionally to the new amount (the last split absorbs any rounding remainder)
  • In the edit-transaction dialog, changing one split amount now adjusts another split so the parts keep summing to the transaction total, instead of silently drifting out of balance
  • Split transactions weren't counted toward category budgets or spending. When a single transaction was split across categories (e.g. one $1,000 payment split into rent, parking and a deposit), each of those categories showed $0 spent. Split allocations now count toward category spending everywhere it's shown — the Budget view, the Spending by Category chart, and reports (#297)
  • Large amounts (e.g. values over 100,000) on the dashboard hero tiles (Net Worth, Income/Expenses This Month, Net Savings, Cash Flow) wrapped onto a second line, splitting the number mid-digits. The amount now stays on one line and its font scales down to fit narrow tiles instead of wrapping (#295)
  • The "Asset Value History" dashboard tile (and "Net Worth History") showed its empty-state message anchored near the bottom of the tile instead of vertically centered. When there's no data the message now fills and centers within the chart area (#294)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
Signaturejj+nUiPNSYYgtQ/7XYIkJNFo8vWIHaX28Q0XTtpN6RWmrW8qrJBIs2jTaaHwebC7SB5f7GP6vQxghh9+nCWfA+KlTKbm8YJg6yzah9xdTLo/JcUhTOinlH9yYoXxMiIY9EVwQLsPmef4sprTsS9oqBeSgZ7S8WRJYnxjAuljee9q0Sfai9AK+RQzBk6kgENhCAVt95ooZ3H5ukfFBSb/kyXa3IU+ngu6g5B9DgiJfBduecdkLEfc0dhYKelUyNaZa61qoG865podTGJFCFqzoSnlCXgRcJqJHjhdTERIeu/nHQAL/PhaPy0OSWK8l+kyrGveMEKDM6LvQ0Eo6B9Ul0ORobundabEat67f/hqaTmnDldOkkEm5a0WAYeQvYeeZCNLtiF26pWk66v6eQhXsrT6IwcJ/gxaC6oS8URm5yYub2iW9nVq6uZXRMJavJr8CmYl7MSqQRVvFKGlwHvD7X+YfEs+htKGYM017iWdICfQv/wbGi5JzIxqdm7QKrV9EGxgl4GFWvY/cyGZt4awfhoy4RljlFtsfJ02askgVFUloVGKOWeqZ5NbqXMDC+UonPONQ/RPM64u0L3NdVvmcXOwA8RBHCg1qgEiVkDBSsJyhK55+1J7Yn5fIC2emSU0BXOdzSFgg3BgUbYJQHgH30AwNf1iagO/WBOYDSu4jqs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.32.0
Release Details
UpdatedJune 17, 2026, 3:02 p.m.
Changelog

Added

  • Category by Month report: a new report (Reports → Category by Month) showing income and expenses per category broken down by month, with a column per month and an overall total. Categories are listed alphabetically with sub-categories grouped under their parents, and parent rows include the totals of their sub-categories; a toggle switches to sorting by total instead. Defaults to year-to-date, follows the report date-range and account filters, and exports to CSV and PDF (#288)

Changed

  • API errors caused by the database now include the underlying driver message (e.g. a missing column) in a separate detail field of the error response, visible in the browser's network tab. The user-facing message is unchanged; this makes problems diagnosable on managed Nextcloud instances where admins can't read the server log. The executed SQL and any bound values are stripped from the detail (#289)

Fixed

  • The dashboard "Budget Alerts" tile showed a red "exceeded" alert (with "0% over") for a category whose spending exactly equalled its budget. Spending that fully uses the budget without going over is now treated as a "100% used" warning, not an over-budget alert; only spending that actually exceeds the budget shows as exceeded (#293)
  • PDF reports rendered non-Latin characters (Polish, Cyrillic, etc.) in account/category names as "?". The PDF exports used a built-in font limited to Western European characters; they now use an embedded Unicode font (DejaVu Sans), so names display correctly. Applies to the budget report, bills-calendar and year-over-year PDFs (#292)
  • Marking a recurring transfer as paid showed a success message but created no account entries. The Transfers screen was only updating the transfer's "last paid" date instead of calling the mark-paid action, so no transactions were recorded; it now creates the paired transfer transactions like the Bills screen does (#291)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureNKgPUY81JziKewMWFs4QeLNIwZ8JqGBZ6wvFlsItL4R47yoDLAn4+I1T/pwgEOi7KR2lCUFBckiAdI78FONIy+JyCFhY0w4WcGEltsQdsytRMQYAggOWw+OlYvlDMPI6zoMoRfVcIvC3d+4pUrP91cJIVwi+bu5OIYO0C7ErDFCyvMlHK+ifsGvBluQJ377z8wnBUQIWSfudOuXewIyBHCF1QXsRXsVe0CIGWPNnT3ibuwxjm92a4vzwqdTEYy2qQwzPgYWPhgZofSdEN6j08iuwUzM0i9yXWd0IVpRNLb8RIo9lTzhJsjolrNFGZd0iiQk5A/4NQ6VOLKItVhwXJKOZk7KzyYTZmEki+PaeHKSEjEzwYNqv2tL4VPrBjyq5Y3bRTnYS3uBBCOnkWwn6ozQ4PitvSgPpcqciCtrP1hYAa0oQ7FsP8+BVsepO8gn8+lIcVjx7mW+YvufESAyFRXgAy61QBNjcd34vtoEfLqhdP4f37gZ/jdmCicDQ3sLw/eUIL98BylXmNvOge43vnYuRgGl9gBO11ENaP3EhqhqsrVr5Gyu07MGlMhCRlBn21fRN5sMORHFNx6pL/DcpwC0xtpfWEtHTCcEcLvArqfSiQSMrJaDvqftcQNMWYt4hGZKMVR7SYZsAragHUiMfvWDu1mW7HLNsW8PwySZDrHA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.31.0
Release Details
UpdatedJune 14, 2026, 7:05 p.m.
Changelog

Added

  • Exclude an account from totals: a per-account "Exclude from reports, dashboard & forecast" option (in the account's edit dialog) keeps the account fully tracked but leaves its transactions and balance out of every "all accounts" aggregation — reports, the dashboard, forecast, net worth, total balance and category budgets. The account still appears in your accounts list (with an "Excluded" badge) and on its own detail page, and selecting it explicitly in a report still works (#286)

Fixed

  • The account detail page's overview tiles only counted the transactions on the visible page (e.g. "50" for an account with 1,603). "Total Transactions", "This Month Income", "This Month Expenses" and "Avg. Transaction" are now aggregated server-side over the whole account, so they're correct regardless of paging (#285)
  • The dashboard spending chart's "Total Spending" figure (and each category's percentage) only summed the top 10 categories shown in the chart. It now reflects spending across all categories
  • The CSV import preview's "Auto-categorized" count was estimated from a 50-row sample and could be wrong for larger imports; it's now counted over the full file on the server
  • Editing an existing bill failed with "Failed to update bill" — saving the edit dialog (whether or not anything changed) returned a 400 error. The bill's start-date column, added with the limited-term bills feature, was missing from the list of updatable columns, so the always-sent start date was rejected before the save could run. Bills now save correctly, with a test guarding every persisted column (#284)
  • Opening an account's detail page returned a 500 error (the reconciliation-history request failed). The reconciliation controller was missing a trait it relied on, so it couldn't be constructed and every reconciliation endpoint failed; the account page surfaced it via the history sidebar. Now fixed and covered by tests (#283)
  • Starting an account reconciliation failed with a confusing "The string did not match the expected pattern" message (most visibly on Safari). The root cause was the reconciliation controller failing to construct (the #283 fix above resolves it); on top of that, the reconciliation screens now read error responses defensively, so any failure shows a clear message with the HTTP status instead of an opaque JSON-parsing error (#287)
  • The Budget Overview dashboard widget (and the digest, spending-anomaly and bill-reminder notifications) always showed amounts in US dollars regardless of your configured currency. The server-side amount formatter was reading the wrong settings key and falling back to USD; it now uses your default currency
  • The Budget Overview dashboard widget's "Total balance" now converts multi-currency accounts to your base currency instead of summing different currencies under one symbol (currencies without an exchange rate are excluded from the total and named)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureCseRrf2b0tfseaK8cBqqPjA8lhMT1C+aq6xVuP6vO3E6sRzawwkPNHdfK7CDaOro2TYW+agvm4g873WzOGVLIVa3FHEyFlnGRkFSwMz334bq1/Rcbw2WXdMbNUliZwdK76DNCauZ0JPz8FYIXr5cqkqbw80oHD/SWhWD5dTKRKJ2gpSvbNtXJfq32Sn04UVxrJq4StY11b5rJfCXR7P7RQxmFboIYJvhoVIfcebR+vighFLC9adkKVaF/xJ8tm1MVG6oJHJ4zKU87SV3+D8vB1xpxeWo2xRwseYSwg8Nk3ik6iXkcf4cHTACrCGyHhOXgCmltGkJ441alZ8kzOQCDe6Vw3Rx+zzgducfZGOQJPuIYcrpyZAAgN51xtDQJTWJNoT9jBrUmEv0r/ftZWj8QYnesnl8HgXUQPdLCsCaloLpISXkt7KzlHYlt4PgdMphbDBnuMROrXZtTeIwDCzwGAkatsK+l8HnM+FbMlpfszT7Ki1z2HYX/d+74aLRxkNUClx3fsQsxOtd0RxK9+/JPHW+W5Sv5kWbRSfiUrslL+pT7R15L9x4t3nFK8VUUEZSDcNynhSHxCVqrqOsV3mZ12eutyvQEPpN56qyLkaZmcoxOlOD2v4BKba8pBAL6YW05jx8hBWg9m0zAg4h3/qoA6zLDRrVfHi+LvUiiE1YDWs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.30.2
Release Details
UpdatedJune 13, 2026, 6:03 p.m.
Changelog

Fixed

  • Dropdowns in the transaction list (the column-configuration gear menu and the in-cell category/tag/account editors) were cut off when the table had only a few rows, because the table area was shorter than the dropdowns. The transaction table now fills the available height, so every dropdown has room to open in full (#280)
  • The Tags column couldn't be shown/hidden — the Show/Hide Columns menu was missing a Tags entry, and the column wasn't wired into the visibility logic. Tags can now be toggled like the other columns (#281)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureRXpaKwi4ViRdeYM6mjC3JtrlDOFrm03LMBFc2gQMktdYfBEoyMrW3YBp+DPKezxnLOmETNnqjXAI+oswcQLQMkRbAcjuD1dpBBZi7x8kmvtc0lZUcrKRw2QKUzDD5luZaN7JE14o393XlPFxdqkaUbJvWTltA5xK/XO2H72GyvEO7/7de7HCcP2G4XTK5kGSeP3PHRNQ5MjiB49QlM7D95p7Od374Fbr0k52h0sWFHSA14LgJSyPXCgHxxJMqVy7O76LlS1Iedg8B4TFBbTJZVol/8emaHjBHvEwVVzSIIkr9wdtZ60aqrEhJfTqaRwdGS0ks53VE2ROoE829Jnc3Xkz4Xxc0WEqH5a4vxbUWnA8NbuaFNAsUcfXW+0TDTUeLT34IV8c6GZkwn0z4a1parjkif0yyEolfPhNomKX/JMl74aSG5i2BkKyDH3OXMg9oC0/czhOIxluUuFCwWJyd6cBOGd6r/R382SMMe+mCHDpuBxIY12gRo4bzcAfmYMQ3e6rrtgpFwxBllUaK8lC+yPy9x9502QHhZem922Tz7HokfuXuFxh1x9Z6doBSvoZOe2H2PIKRupmFf4I9epoRYdDQZjatpZpN3+oZnz6DmY7f9+g3gaZ7Dl9dkPydm96203Pox5SGz9vhOQaXeOIw+l+rLnXnbodzB3eyqz11Ig=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.28.3
Release Details
UpdatedJune 12, 2026, 1:14 a.m.
Changelog

Security

  • The recurring-income update endpoint no longer passes the raw request body through to the entity layer — a crafted payload could previously set internal fields such as the owning user (mass assignment, integrity only — no data disclosure). Update keys are now allowlisted like the other endpoints

Fixed

  • Auto-derived recurring budgets (#269) are now consistent across all surfaces: the dashboard "Budget Remaining" hero, Budget Progress/Breakdown widgets, Budget Health score, and budget alerts now apply the same recurring fallback as the Budget view — a category funded only by recurring bills can now trigger alerts and is counted in headline totals
  • Auto-derived budgets now respect bill start/end dates: a bill that hasn't started (or has ended) no longer counts toward today's budget, avoiding double-counting during a planned cost change (#268)
  • Recurring income summaries (Income view header, dashboard Income Tracking widget): semi-monthly income was counted at half its value, and a one-time income at full value every month until received
  • Transfers page monthly total: semi-monthly and semi-annual transfers were converted incorrectly
  • Live forecast cache: cache invalidation never matched the stored key (changes such as toggling "exclude from forecast" appeared to do nothing for up to 5 minutes), and the cache key ignored shared-account visibility, letting a share-restricted viewer briefly see the owner's totals
  • Editing a bill's amount without updating its split template is now rejected when the stored splits no longer match (the payment would have silently imported unsplit and uncategorized); setting a split template via the API now clears the bill-level category, matching creation
  • Multi-account import partial failures (e.g. a deleted destination account) are now reported in the UI instead of masquerading as a full success
  • Import preview now also flags repeated bank transaction IDs for accounts that will be created by the import
  • Long OFX FITID hashing threshold raised so every previously-imported FITID keeps its exact ID (re-import dedup continuity)
  • Auto-derived category budgets (#269) now handle every supported frequency correctly: semi-annual bills were over-counted 6×, semi-monthly halved, custom-schedule bills counted every month, and one-time bills inflated the budget monthly until marked paid (now excluded). Frequency math is delegated to the shared calculator, which also gained the missing semi-monthly conversion
  • Auto-derived budgets no longer apply to past months — they reflect today's recurring bills/income and were rewriting history (including overriding explicitly-zeroed snapshot budgets)
  • Multi-account import: an invalid destination account mid-import no longer aborts the batch, and deferred balance recomputes now always run for already-imported rows
  • Bank sync: the post-import balance recompute now keys on transaction creation, not the import counter, so a row persisted just before a non-fatal error still gets its balance update
  • The scheduled-transactions background job now recomputes balances from the ledger (it was the last remaining hand-computed balance delta, and could race concurrent imports)
  • Import preview now flags a repeated bank transaction ID (OFX FITID) within one file as the duplicate it is, matching what import actually does; per-account preview counts include rows that will import with skip-duplicates off
  • Marking a bill paid by linking an existing transaction now warns if the link silently failed (no money movement recorded)
  • Extremely long OFX FITIDs are hashed to stay within the import-ID column
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
Signaturefa7u8mWcwya82OCYZOh+XZFPRJH94oqiBM5WUtEtvU3Dh6Lq+pMs8A7e2aCOa0Y6AbwWH7TF6ZRtwanfSh2PjQMwAaDFlR5anBdAvr89L/fn3eK0uSrZetqNGmAT7Itlc0mT5KowbTvtWDRdK46oR4jjqgXKay6JeO7caGbAcKmyfhJARbfTXsb5etz/yhMX72X33ayUYtCo8nQrtxLTGO5AAPIcFbq1pa3W3d1SHuQ7Ibksv3WXrZe79ngT4pQpGp6xtz3ervqo86vrI8qH8DDg6g9IJE8D1iseOiVzRv/KI/N06LnY0OvUHNZwGrJph5Jh3BrYg2/5rSYzEP5VzaGyZm+AS0DO1bXf9BC5OqbRl3s/FsM+4UgowriYD0S2Zwc4/2j/W3mDRjOdGf0MJxd8SOxv7uW2P5JL0TImjA7mTgppSipw1ShGTl8BU7q11cCtFmuCmwGfvPlRLQtMqEdr93gNkY84rAja08K9Ro1/ySZtrEWVRh/lYzQqmpazsjlw1V4x+KYtn65LHr9Zxd46ToleV5kv1tEZJ1u7nFXeNnrfThyz78EqvLbVxzcqphrfrImGOD9/VhUwryM58KtVz7+tXmLjn3SsSmM8sz9DEljbEKK4zTV9mQgIxviGwzNuIGEFD+HaW6HRIsAzRNtXow5oT7Kgpqa3BnJ3HxM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.28.2
Release Details
UpdatedJune 11, 2026, 6:33 p.m.
Changelog

Fixed

  • Dashboard could render half-empty (hero tiles only, widget grid invisible): a Chart.js resize on a hidden tile's detached canvas threw during initialization, and the widget grid was never revealed. Chart resizing now skips detached canvases and the grid is revealed before the resize pass. Likely also behind "nothing happens" reports after certain actions (#273)
  • Dashboard tiles with a saved account selection pointing at a deleted account (e.g. after factory reset + import re-numbered accounts) no longer error with 404s and stay empty — stale selections fall back to all accounts
  • Account balances are now derived from the ledger instead of running deltas — the root cause behind every historical balance-discrepancy report (#3, #89, #124, #163, #187, #194, #274). The stored balance was a running total that each transaction code path adjusted by hand; any missed or mis-signed delta corrupted it permanently. Every transaction create/update/delete (and retroactive rule run, repair action, import and bank sync) now recomputes balance = opening balance + net of non-scheduled transactions, making drift impossible and self-healing past inconsistencies on the next write. A one-time migration backfills the opening balance so displayed balances do not change on upgrade (#274)
  • Marking a bill as paid now warns loudly when no transaction was recorded (bill without an account, or transaction creation failed) — previously the bill was advanced silently and the account balance never reflected the payment, drifting from the real bank balance every cycle (#89, #274)
  • The app's own export→import now preserves transaction status (scheduled transactions no longer silently become balance-affecting after a migration) and restores the opening-balance invariant for imported accounts
  • "Skip Duplicate Transactions" off is now honored: previously rows whose import ID already existed were still rejected deeper in the stack (duplicate-ID guard + unique index), so parts of the batch silently failed to import. Intentional duplicates now get a uniquified import ID and the entire batch imports (#275)
  • Import duplicate detection no longer gives false positives for legitimately identical rows — e.g. two same-priced purchases on the same day with the same description. Identical rows within one file now import as distinct transactions (occurrence-aware import IDs), while re-importing the same statement still skips everything it already imported. Re-importing an older statement also recovers transactions the previous logic wrongly skipped (#276)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
Signaturekx2VkgWxozCE2LPp/nzgQQiqFxk/83sOdycv738Ly/uEwn/MhxF/kNtBlP4DMQbhmtkcHdt+kDIlQK1S5q1WHJWZQxjLc/ZCkj/ZEPkNBrDhHwdQCRh4TsRVJyfrIxXUTOCAKJLYk+0DXlnJB3kMhR81adns3wWNH9RkC4b62k3gXtzMR4n+jz/QJDGEAOXRpDUzxEm2TKqFot6sGRt3u0+rVo0bng6nogDJha0APeFI5Ujt+3mECw9MlxNt9nKbQlIGjAnraLVUFz0bXNLK7dbBS3PSzjLsUxhoNhAqMivfHEfLViOvIlCFNHzoWGxFnHK0flI2zJXUlOnaidOEyfhZWbqNpHZL4RZLIZWYQaztJgATNsK+L5aO0Md+Np1hgE8jkdY90gugiV06JqoPEWqCo/qSyaO9N3xYpeXrwfiL37JJqkigwg69RZN3OD1DfBT8ue7QlhT93dfg+39ERzbVY9QBu0gT+bwIs8tyE1MVXOaSjHKUkHab5dpGU3NQhvu/E1CO1BWA3dYvUUqvrvXKB96gm7IqNQEAkRi4JJHDPGtgzjERM+k8z/JA2xeJmPp7V3TZ/1WiKOoKMPz88soCJBMuj/LWnSpekLAGo4RJDy1JBlOm835e3ieJFVHwIwqG9YP7oRB/puFvYV6aaEXCnSkUcZV+z+2NXmHB8KM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.28.1
Release Details
UpdatedJune 8, 2026, 12:13 p.m.
Changelog

Fixed

  • Install/upgrade aborted on Nextcloud 32 and earlier with "Primary index name on oc_budget_import_templates is too long". The budget_import_templates migration created its primary key without an explicit name, so Nextcloud derived a default name and hit the Oracle-compatibility identifier limit (the unprefixed table name is exactly 23 characters). The primary key now has an explicit short name. Thanks to @TheUnderdev for the report and fix (#272)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureXdUz/Pc10uA7L3R+vTa/cI52W9X8nDyH33zElCWeS/xWeYgonfr0GwLhn4ywE7rtUQF8e1Y8GhETbSd60otnPduP+4rXp7+5+b+iMTa3qfYi6gAd3Y1YJJrZqK0yx2Fdqld/nhQLfFpVkUSQl/JQ78RZanEh779Af5RejNl7lolRlJYg7ZNrLrFasWrpyrLNsg4+Tf74/vMpKWDXf0FEIqjnXZ0LKJm7Yjig4uazy+a5vDcDOrfq6fLU56d9ML/jBJK+9A2loT3I5HP7H2cngdLpwk6+MNLiYQDsdNzLGJJK9TK4hn0Cj+AV80mAQ45beagh4H0SmEoDTPvR/hC7LLlU5rtioE1Rg1tCvlZfHBuPcH9LZMq11Q3HVbZnvzkTdG3lKQlKeFhP86QOIjiAg1Frm0yuOt4nMSdG36N+k1C5szF7HrCoH+u1XgdY6fKI6WW71RkqXJ2IhwOorxcijLVQc2l3wyDLqoQrHtJA2yWGsI9NXlq+d5ZLJ03T7xvcLBPgSDTz91KqBABqJYRdCGhzAuQPe9M814mDu5XgdoCJNUKNrAl6YGvLvJXyj5j8I09qImqsQx09AmEBxi8YTZDbxuO8U/g3yKO14aBgGu3Z+v8+h6xyqJyNsPEbHHxpjfSbwAF/9FlvjA64nOTqPam3fPOjZAdqne5bgf05gFY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.28.0
Release Details
UpdatedJune 7, 2026, 9:59 p.m.
Changelog

Added

  • Shared savings goals — share a savings goal with another Nextcloud user. Recipients see a "Shared" badge and can view progress; with write permission they can edit the goal and add money, while only the owner can delete it (#255)
  • Auto-derived budgets from recurring items — a (sub-)category with no manually-set budget now shows its committed recurring total (active recurring bills + recurring income, normalized to the budget period) as an automatic budget limit, marked "auto". Typing a value always overrides it (#269)
  • Exclude extraordinary/one-time items from the forecast — a per-transaction "exclude from forecast" flag (with a "No forecast" list badge), the same flag on recurring bills/income (propagated to generated transactions), and a matching import-rule action. Flagged amounts still affect your balance but are kept out of the projection averages (#270)
  • Reusable CSV import templates — save column mappings and import options and reapply them to future imports (#247)
  • OFX/QIF import account routing — route multi-account OFX/QIF files to the right Budget accounts, remembered across subsequent imports
  • Bank sync: pending transactions — option to import not-yet-posted (pending) transactions, automatically reconciled when they clear (#257)
  • Bill start dates — a bill only occurs on or after its start date, making it easy to change a recurring cost mid-year by ending one bill and starting another (#268)
  • "Shared with me" expenses view — recipients can now see expenses that have been shared with them (#248)
  • Dashboard period indicator — chart tiles now show a read-only indicator of the period they cover (#250)

Fixed

  • Dashboard now collapses to a single full-width column on phones, independent of your configured desktop column count (#249)
  • "Excluded from reports" categories no longer appear in the Budget view (#266, #267)
  • Category spending chart shows income as positive with the correct label (#265)
  • Tag-linked savings goals now sum net realized contributions (credits minus debits, excluding scheduled) (#264)
  • Recurring income description is now persisted on create (#263)
  • Transfers are now excluded from dashboard income/expense totals (#262)
  • Account Breakdown report now uses each account's own currency instead of a single assumed one (#256)
  • Fixed a PageController crash (TypeError) on unauthenticated requests (#259)
  • Quick Add date field normalization on iOS (#235)

Docs

  • Documented the standalone Quick Add page and the iOS home-screen workaround
  • Noted that GoCardless no longer accepts new bank-sync sign-ups; EU/UK self-hosters without an existing account are pointed to manual import (#271)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureiQMjVEdG/FWcc56MAPwvDd04E0ERl5pUWkrRWtdYdgbboBj0+7YAo+rDODFz5qC3EPqWBr7XRkjXOfvn9+m61v0w88Qy8SZQIZRHTAwRJuK5jDQbpfce5dropQgKW8btEIzI3BPE+DFBIDeV+qLNQEYT25ApMkUAz44PumVV0sJMibCGo0JBgIxHCPyem1NNjYaX3qQDt41eg8I5rH8wLCWGa7lNTtGyp8vaJ4ck0sh4J9sPuVzMdJoXQDHfGe5S8YY3GTwgvwyloNJQAFO+SQzm5WX6mC/IKAfpxwG82cQAEMm6B4geyHwaYGSFDEgrBuHOZj2fQmvQgzoarRN+U76bOhjQI0IqU76Pno3qM17eF+UKW8peDiqFBXpepGYfDoeyjQsF2GqxIK3C0bNUR5bp9RjNxkWckwvS2ihvP/2rg4lr05MuDDmIdBYG9Ny+PT9dEWBssQkXzIVX28Ox6P8xkorH0n5EoSRl3j+KMXbM34QteNMt1+jgsHAxcS8H57CwV3MC0uqZnhxUu/LbwIGHzvKbC6vN3F/3l6F+35rWM7UaQhdvr2W/1q5Swj5F2sp2Bq5jgrxbWIuUB9+pzftASgVUEmtd6blOUlJuuJj1wmaIrA9jx21+Bg8t/OmrQqB97ZHzint0WTdo7KTOviKZGnoZVXeoQthPmSyW7Wc=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath

Nextcloud 33

Budget 2.39.1
Release Details
UpdatedJuly 11, 2026, 10:22 p.m.
Changelog

Fixed

  • Share recipients saw wrong dashboard totals. For a user whose accounts are all shared from someone else, the Income/Expenses This Month cards counted transactions in the owner's "Exclude from reports" categories — the exclusion list was built only from the viewer's own categories, so the owner's internal-transfer legs inflated the recipient's income and expenses while the owner's own dashboard was correct. Shared categories now keep their owner's exclusion for every viewer, and per-viewer "Hide from my reports" mutes are honored by these totals as well (#326)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignaturePTjw+Z1r+sKWQmZSlNfYPSTl5PFejqjMEgNyvQR1FXSKor9zNXxtxcAM0eYYthPn9YEprCKS9V6NC699ZbeWK6WbdRtprmP+rsvCifpjQyVtPDGLJ11LWzLVgw84pTHcolsdY756JO6KWW8hxp63bq3s4QE4rs3RTCEyHSpzpZ1pXSydTCTvheL1M/rtg3XyKpzBkoOqGh39Dnh9TH7JQt+cCB8VD84aeHcsvnxUkQJU3AmZwYGcP8wSNeLmDjt1S9yCv2h8NAReLQeTMbmdzNJtioLLiifkedz5bEgjVximgqI99mmV+8uhRBY0keT1hWXR6En4IrRkiJwlEyNZRHkukMa9jNmoNVvoRYCuQOVZ1wWGtkS8MCz5Ig63yPijEMh1bqnoi3+WA1g8s23dJVIziAHSKl0F+V7DKThsw2jBouMZeZ7bG0nMS9bFLcndAm1MbpWyuZATotUExNeYhEZEIwUOuF+esV5lnDoHTf0i/q6OJGa4hPPiNTE/rH4PS3Z4pdEZ4V9YhxYfsSs/9y+Y7xg/ZQWnLq2YVsTR7V8FgQwU4Bi8OGLsfbYZhSaUnHv60ObUB2U4WkD1mZZqDHKJXAIgVGulvHFAkXQVeGpRqbUCQNvgiVU8hfRaRmEr/y9Usub/3srDJn7qybeAxfOxA7rL+AlakEZBECHPJlY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.39.0
Release Details
UpdatedJuly 11, 2026, 12:57 a.m.
Changelog

Added

  • The Bills page now flags payments without a recorded transaction. A warning card lists bills that were marked paid in the last 60 days without a transaction being created or linked — the situation where the app balance silently detaches from the bank. Each entry has a one-click Record transaction repair that books the missing payment (dated the day it was marked paid, both legs for transfers, splits applied). Deliberate skips via the Skip button are not flagged (#274)
  • QAR (Qatari Riyal) and JOD (Jordanian Dinar) are now available as account currencies. JOD amounts use the currency's native 3 decimal places. Automatic exchange rates cover both. Requested in #321

Fixed

  • Editing a monthly recurring income never saved the changes — the app showed "Income saved successfully" but the Expected Day (and every other field) kept its old value. Any update whose payload contained an empty field (a monthly income always sends its yearly-only "expected month" as empty) reloaded the entity mid-save and threw away the edits. Thanks to @redsteadz for the fix (#324, #325)
  • The "Exclude from forecast" checkbox on a transaction appeared unticked whenever the edit dialog was reopened, and saving the transaction again then really did reset the flag. The flag was stored correctly (including when set by an import rule) but the transaction list never sent it back to the browser, so the dialog always showed — and re-saved — it as off (#326)
  • Income/Expenses This Month (and the other report summary totals) deducted transactions in "Exclude from reports" categories without converting them to the base currency, so on multi-currency setups the deduction was applied at the wrong rate — and for a single selected account the deduction wrongly included every other account's excluded transactions too (#326)
  • Imports no longer bring in flagged duplicates by default. The preview's "Show duplicates" checkbox — on by default — secretly doubled as the skip-duplicates switch, so every import ran with duplicate-skipping off and rows flagged Duplicate were imported anyway. It is now purely a display filter; a new explicit "Import flagged duplicates too" option (off by default, resets each import) covers the deliberate re-import case. The preview's per-row checkboxes, which were never actually read by the import, are gone, and the New Transactions count no longer includes flagged duplicates (#327)
  • Marking a bill paid no longer suggests unrelated transactions as "existing" matches. The Existing Transaction Found dialog offered any unlinked same-day debit as a candidate — cigarettes could be presented as a "match" for a mortgage — steering people into marking bills paid without recording the payment, the classic source of app-vs-bank balance drift. Candidates now must match the bill by amount or name, a weak match is never pre-selected (the safe default is creating the transaction), and the "Don't create any transaction" option now states — and warns after — that the account balance will not reflect the payment (#274)
  • Overdue bills no longer double-book when marked paid. The scheduled placeholder pre-created for the next occurrence was written as an ordinary cleared transaction whenever the advanced due date was not in the future, so it counted toward the balance immediately — alongside the actual payment. Next-occurrence placeholders are now always scheduled, regardless of date
  • Restoring a backup preserves every bill setting. The data import dropped most bill fields: custom recurrence patterns (restored bills then advanced one day at a time instead of quarterly/etc.), transfer destination and description pattern, auto-pay, reminder days, tags, split templates, start/end dates, remaining payments, forecast exclusion and the future-transaction opt-out

Changed

  • The Match transfer dialog now also lists candidates from accounts in a different currency (any amount, within the date window), so cross-currency transfer pairs — e.g. imported from CSV — can finally be linked by hand. Automatic matching after imports is unchanged and still only links exact same-currency amounts (#326)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignaturegJm3RDjkvl1EBICN6Us5TsX5SdQbSGnRHvRIZmLsYaclkDVqW/mYCBjVgwjU50ifkv72zl3kxf5a8S3yxpo2WX6cnhkyyibLhs5Uzdrj9Egw47yYgMun8WH4647Y0uGP7QrX3Yf51SO7Ve+JWgdMRX+hWvG4K9hxUgAwWR3AmTYRsRXpmsNrOr97q2SPC3V0g9bAARDeSeWDGQ8SR05+OMIrQRj0Ct56fC1cTNWzHpPT+Qs17SJJcUUnK3tJWsM3wvGiwk62YMBy1cv1jx3JkOXnYvsa8bpSG3sL7aqr05QkAkvL9sSGxka6mDrC3CN1LHlwwQjPjWwoX9YDtOI04j0JPd0SzlhMYILaZNyouhoNTuY5YhDIG4aLjg737AAEBHgU3jvpWxaM8Oz2+9he9LkAJW6qA9DuzB/FmDNKxyJTmQ6S0LZ21d+Hkr0LD/2uKRSywlRBld+UNCWby8YrgIkyGomPH1rjDG28y1ApiqSozetcjSvDYwqULM2mLXU9OjD9a8UJk8B1R4Xd0TqgMmDCaAZrTdRLYYdTZEEaFbnDkbm8p4z2q+UGfn/UCNEOkg5pbu1WAsRubIKkPzNTz7gTSLI9u+qJfvoZg9c3Ae1OhXWDD9k/2Z+pCrbJhu8yDX+2JukXoAxNS+bnxaDxdoxRzIM+9jcbb0eyG3wJuLk=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.38.0
Release Details
UpdatedJuly 7, 2026, 1:07 a.m.
Changelog

Fixed

  • The account selector saved in the gear settings of insight tiles (Monthly Comparison, Large Transactions, Weekly Spending, Year-over-Year) was silently ignored — the tiles always showed all-accounts data. The saved account now actually scopes the tile's numbers
  • Importing transactions that trigger the Auto-Link as Transfer rule action no longer shows "Cannot use object of type Transaction as array" on the import screen. The import itself always completed — the error came from the transfer-linking step afterwards, which also means those transfers were never actually linked (#314)
  • The Recent Transactions dashboard tile now honors its "Rows to show" setting above 8 — the display respected the setting but the data fetch was hardcoded to 8 rows, so values of 9–20 silently showed only 8

Added

  • Edit auto-categorization rules as JSON. The rule editor gains a Builder / JSON toggle. The JSON view shows the raw rule structure — editable and paste-friendly — checked when you save, and switching back to Builder repopulates the visual widgets. A Copy JSON button makes it easy to move a rule between instances (category/account IDs are instance-specific, as noted in the view). Requested in #318

  • Hide shared categories from your own reports. Categories shared with you gain a per-viewer "Hide from my reports" toggle on the Categories page. Unlike the owner's "Exclude from reports" flag — which stays owner-only because it changes every viewer's reports at once — this only affects your own reports and dashboards; the owner and other viewers see no difference. Applied at the SQL layer through the same choke points as the owner flag, so every report and insight tile honors it consistently

  • "Exclude shared accounts" on the remaining dashboard tiles. The per-tile toggle added in v2.37 now also covers Budget Progress, Monthly Comparison, Large Transactions, Weekly Spending, Category Trends, Cash Flow Forecast and Year-over-Year (shown in the gear menu when you have shared accounts). Bills, income and pension tiles are deliberately not included — they show entity data, not account aggregates

  • Clickable spending charts. Clicking a slice (or bar) on the Spending by Category dashboard tile or the Reports page pie chart jumps to the transaction list filtered to that category, scoped to the chart's date range and account. Tiles set to "top-level only" include the subcategories in the filter so the listed transactions match the clicked amount (#317)

  • Per-bill opt-out of pre-created transactions. The "Create future transaction for this bill" checkbox is now a persistent bill setting instead of a one-shot option at creation. Bills with it unticked never get a scheduled placeholder — not at creation, not after marking paid, not after skipping — and toggling it on an existing bill adds or removes the pending placeholder immediately. Previously the checkbox only affected the moment a bill was created, while every payment re-enabled pre-booking unconditionally, so unticking it never actually opted a bill out (#311)

  • Convert a transaction into a transfer. The Match transfer dialog gains a "No match? Create the other side" section: pick one of your accounts and the app creates the opposite transaction there and links the pair as a transfer. Until now the dialog could only link two existing transactions, which left no way to correctly book payments to accounts that have nothing to import — e.g. a loan tracked as its own account (#313)

Changed

  • Scheduled (future-dated) transactions now show a Scheduled badge in the main transaction list, with a tooltip explaining they are not counted until they occur. Previously only the account detail view had the badge and the main list showed scheduled rows in italics alone, which made a bill's pre-created next occurrence easy to mistake for a duplicate booking (#311)
  • The transaction list Total no longer includes scheduled transactions — they are placeholders for money that has not moved yet (#311)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
Signatures/wP/jWqAxqTStZPLKWl/5nyJk/xpeAom+Kp7KakVOdJmzhNv/Z6KM/CUUOrGem4Qj5G1OEZ2tNrPkTneCVvfFU2S5aoayMDgcRaGquqwZisM/4a0KV9Husjq8mV0RVoqco16HBH8PUY+kYsbeWRcSp2q38Zq99L04zb1x5XY1rGe5YdP4/IydUoMpyzTtsGF00Tj6OUAMvlDTnJqCcetscuXX8yo33xm0dUfLxjZD2f9hsn8UTCwNN7v1+yBhwNN4jJsfyGTN+92XV2YDhRCfVWq/3bGqphHo+nYQvbyjndJRcaAwybOquX6MH7+wpDa5wpvNw9xzc2sYNm2FM08SYep3cX7uoXngifGZu2FBqyNHQ198dqEwqJbEVv2DrK5cAnQkbSS1glYYney/uXAlsqLEinHirrShNYRoq+ZEkxUhpdung3zSWwPe0Fd/mWh2chHiTV20A2tCrv7FRuRadpf75bq+y0xuIglVZQy5E1dT2nk3lPUUwB01w/ggmwrJ91hOchPoyoRoDhoBNxZJs903bQejWR/MdZ9pbXVmwxj1EOq8oWfWeQ5B+OEz/LbcplibODsNv6IUIYU++gxK8d2XCVzBgV2ayMqsRxFDxItgluqDcu4oTW8mh3A4z33PvbeCFFMsj2bKFbOslmuT2ZiVl58oTaQRTh61xeKEA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.37.0
Release Details
UpdatedJune 27, 2026, 11:16 p.m.
Changelog

Added

  • Exclude shared accounts from reports. When other people have shared accounts with you, the Reports page gains an "Exclude shared accounts" toggle so you can see just your own accounts' figures. The same option is available per-tile (in the gear menu) on the account-based dashboard cards — Income vs Expenses, Spending by Category, Top Spending Categories and Recent Transactions. It's off by default (shared accounts are included, as before) and only appears when you actually have shared accounts. Note: a transfer between one of your accounts and a shared account can only be partly seen when shared accounts are excluded, so income/expense totals may be slightly overstated in that case.

Fixed

  • Saving share settings failed with "Some entities do not belong to you" (HTTP 400) when the "Auto-share new" toggle was enabled for a type, or after using Select All — the auto-share toggle (which shares the same data-type as the entity checkboxes) was being collected as a phantom entity and sent as a null id. Entity selection is now scoped precisely, so share settings save correctly with auto-share on (#306)

Changed

  • The Categories page now also lists categories that have been shared with you, shown read-only with a "Shared · <owner>" badge. Previously it showed only your own categories, so anyone using a budget made up entirely of shared categories saw an empty page even though the categories worked everywhere else (#306)
  • Categories shared with you at Edit permission are now editable — rename them and change their colour straight from the Categories page (they carry a "Shared (editable) · <owner>" badge). Read-only shares stay read-only, and a category's type, parent, budget, report visibility and deletion all remain owner-only (#306)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureFqJ17XG/szTfkAMsF+oCODYGClVjdeGArgFi3SrgeGhg4CFFzIVO98XEnYhxeCnwOcYGivzy0uhe60/Vv7kgml+lIVvRL1EZOxvjOES2KksQ50fqxGZSNz3EL54EA6R3Yvo6uLFBM9cbK0mmY5H+4i3UozKhKwzRa6PJLIZzpBsjtprJXHojWsQMR5KY7WDDbb9yD32uYzMnrXMxOiQ2PZGtG7aIhLS6DzC7Mtp/oLUgyRqBWoYMUWWLLi1qyeOr4/8Tdm9H5I36oxeoX2ZQlVuprpRjDPW5EITrljbyuIPy3CdAFn5tvvt8rkurEgCtPAaMv7gSXRZto6rJJqS4woUqX310+J0re9qa53Ls0J7Kezo5WpENoaFsvT6McjVG/4k6k4YN1/l74p97fFfR+1T2kC5VptpwVz4GZ2aSF9t226Sdkft7sv72aC3oQpa4PN3PIWj113aN2X5nnCGiD+NUW282/yAdacvMWVgB+t+Rbm0FIyWtGnbw0dKAlY3CAmQoBvqX9f2vqn1OFDxJhejg/i7+FAWQD83LIk6u2kNg/N4e2+hgLtO45wd5MU6TLXXTrb1mlikbbiP80Rla1p50fScosYTCqjJfz2lh5U6D2h/nquGHHvhf4R9q7eSkykmELHZUKiUyYlrLrOfiuxGRqaWSQWp9hm0CUog1HBE=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.36.0
Release Details
UpdatedJune 27, 2026, 1:15 p.m.
Changelog

Added

  • Auto-share new entities. Each person you share with now has an "Auto-share new" toggle per entity type (accounts, categories, bills, recurring income, savings goals) in their sharing settings. Turn it on and anything you create from then on is shared with them automatically, at the permission you choose — no more sharing each new bill or category by hand (#306)

Fixed

  • Code-integrity "Some files have not passed the integrity check" errors reporting FILE_MISSING for js/.htaccess and vendor/tecnickcom/tcpdf/tools/.htaccess. The app no longer ships any .htaccess files — the Nextcloud App Store strips them from the published archive, which left the signature expecting files that were no longer present. Neither file was needed (the JS one only set a redundant cache header) (#307)
  • Deprecation warning in the Nextcloud log — the notifier now throws UnknownNotificationException instead of InvalidArgumentException for unrecognised notifications, as required by Nextcloud 30+ (#308)
  • Reports and the dashboard summary were empty when a single account flagged "Exclude from reports" was the only account selected. Accounts flagged out of reports are now only dropped from the all-accounts views; explicitly selecting one shows its data as normal (#309)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureYxqf1NnAucAiXFVdwVmQJPaPUyuExQ8t/dwv4tDVpFb1kXDtGcIWoAdspiDz+HwdyPe+ul+/2GcDWiLPTF3TvIHwIaV+h+guDRYBEHMY95+Hy5W0BSuwBC7gto5dfsZEhL5xj5OsRIYrY/Fo8Tqj99kVzDK560o9NgI6Bp6ZkQpbwPRbTnbxUX27oF0oDjrg1ArS4IiE4ghZW1ct74Mlv4uoeg5zaVQlucrZK+rBJXixtpDnImHLPMkTvd+1bmkQTFtvArS1A37YkXkLKrKn4pzWvwv/q46ddih1NXBC7o6UoBwP1pWB1OxgNq3/98OdWyPs4GLumMmRdg+7PbY95Go97lBbNc/1mrBB9qQPXirFxYHMZWVDSRHSNRJ9cSMnZA/YzsVeOZOVkIwJWXhC5YGAEN8nq8HKIMBHzmi6UYdGM2VvGPmNZ+K3wlGMIkKlVfWfIJ7XIOCe6OLvQbwR/ATZ7pUyOE+AR21uu27zWGJ4iB4y/eCfCSE8vIxyPW7L0dwkzxU13iNNNxAUQgbNrs8EiQBLQlTCaBWCWp296Dds5nEGMEilQKX9vEXAhY9KRG5dzJjoZhZ14tWA3Hjp+5/Gs2AM4Bh3Rp1OGdhfQhFDmt/2GXcL16lfDcX28K1ub4FPYE8MEz6qDmLhqqwv9FeXQQbT/ZKdQn8NwuOlGFE=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.35.1
Release Details
UpdatedJune 25, 2026, 3:28 p.m.
Changelog

Fixed

  • Categories marked "Exclude from reports" are now consistently excluded everywhere, including the Income vs Expenses trend, Category Trends, Top Spending Categories and the monthly spending chart — not just the dashboard summary. Exclusion is now applied in the database query itself, so reports and dashboard insight tiles can no longer disagree about which categories count (#219)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignaturebX/9kwpiVjwDj0f2eU5xNE7zUpt8T/nkGCFg9HnDQoKynM7c1KaXhbh4isVQBbgy5kPGXSDP7DRfuSTYY5/M3PSv1JE8gOk/9lz2AGmTqlXrf4Kgq9oARAGcVHXB955dLvDkj6Vrk7zZ9cwrjq4aMBu02dW8ZgyAHStXybiWmkAbIxK768MHM4n5FXTRFw3P/ELVlDjCxgIpxVxD5EZaaA+n7RrjN9MRY2R8/GN7Og7yijcmnutMWtna4K19B9c3ShcfUkrwotvCUz3c+K10VQSfzUpN6RoindDB0j716jUZQ6IKzXBNNRiOjQ6N6s1MlmKwjyFyw0PY509hJY+dtjBEQBbFjK0pw7ZElfW4zDWteDzWRm7M1VjzUlRgPLsg7CJ980Rg8suZAMh3UH251vymCH0ykpMYqK1qiWDurz5GWdaDov6Z0YkQPQLnszzPa60kbO9VUHrYnG+6+KA6GoPW0EHFEqaUxXv+mRLr8Pm8BhjCiDghO7mlHZFN95hN5gkNyBdIPA9JmXAdnkrJBSQaDvZdejDwFJL+T+PgA2f9JomB8BQ/WkZ4uukyKUUFYToOhntQTe7dfE+I4VsD6BycbY7smaY/xGx6EvyXfntpYkgR7Fe2rYKaxBrcRcnhTmQBeLLz85M7fLKVjME72niQdRIZRaMZ+OmpCxKK2qU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.35.0
Release Details
UpdatedJune 25, 2026, 12:36 a.m.
Changelog

Added

  • Pensions revamp. You can now record a contribution as a transfer from a bank account — the matching withdrawal is created automatically and kept out of your spending — and record withdrawals/drawdown back into an account (#304). Scheduled (recurring) contributions (monthly/quarterly/yearly) can post automatically or on demand (#251). DC pensions gained a configurable projection target with a progress indicator and a "today's money" (inflation-adjusted) view on the growth chart, plus an optional Pension Projection dashboard card. Bank legs that fund a pension show a Pension badge in the transaction list.

Fixed

  • Background-job "class does not exist" log spam that could appear after updating PHP/Nextcloud/the app: the app's autoloader is no longer "authoritative", so it falls back to PSR-4 and self-heals if PHP's cached class map is stale after an update (#305)
  • Newly-added dashboard widgets now load their data immediately instead of staying empty until the page is refreshed.
  • The pension detail panel's balance history and activity are no longer broken — those views called endpoints that didn't exist; they now show a proper balance chart and a merged timeline of contributions, withdrawals and balance updates, each removable (#251)
  • Editing a split transaction with three or more parts no longer zeroes or overwrites the other splits. The last split row is now a read-only "remaining" amount (transaction total minus the other parts), and the dialog blocks saving until the parts add up (#303)
  • Spending-anomaly notifications no longer crash with "The arguments array must contain 1 items, 0 given" — a stray % in the notification text made Nextcloud's translation layer fail, spamming the log every time notifications were rendered (#305)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureF/7pZ4sNzjJuqXXZoHmO+9OmUzkQz6ZDke3vkONfZ2uGfzBpwpDSIiGlfNv6gt40Ho8NTPNd0JuM+ESRohLlPAAftFoF+L4h+asH5s/lncoxgTZevEFl7NE14s+sPVdGdZqXGi0b3mohB+f1jOudpVbgB0bmCDvnZMEKiMSjB7XwH9iQqzu/8WyQNd28w+Bz2TbyAfu2PCtdD6jsmVCbvtCkmEdKOVJzRWuExH+vwvZ0ltX3mtorPl6HEzqKJWoDYG3tdbpSwml6w9F3qj8naVZ3tZYBrfvwABHoMD1LYpYwRss5C9UpJvu6UFfKQ4Xso1tBu5U+tYlAPKLbQ5J70o0C1aP66R+FvL8RlMHpY93duR32qZkT/6xV0NYQpd9xzXoLbB5YkZJuBLV8m3oP9k/pNEy8vwF5Kkb+/6zrJt4aSH/iiAqBoqvuT1itwScYsNpGHXWOrGHioCKiGkcMvamfr7her1fQ42wNiVIVWKaxNtjeYrVjmHCtWA2awjv3XRfcXdcL/4stuDpXxQ0Dnv2S/Ey9ZbGbqpc0DNyPZfKie5/QK5OnHPW9F8nHUsEhxDLbNezo11fKm1ykE0ja4nTZFKL3ml2D4aRDMYQe35MWJvW/fLcNW7dYOV969ZI52G8jTIUI/YphcNfCNK24fVkljrcBSybr8WavbELxVR0=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.34.0
Release Details
UpdatedJune 24, 2026, 12:34 p.m.
Changelog

Added

  • The transaction list filters now include a Reconciled filter (All / Reconciled / Not reconciled), so you can quickly see which transactions still need reconciling (#301)
  • A Budget alert threshold setting controls when a category appears on the Budget Alerts tile (default 80% of budget). Set it to 100% to be alerted only when a category actually goes over budget, rather than when it's merely approaching or fully used (#293)

Fixed

  • Creating a category (or account) no longer fails with "Unknown column 'excluded_from_reports'" on instances where an earlier upgrade was interrupted or restored from a mid-upgrade backup. A self-healing migration re-adds the affected columns automatically on update (#302)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
Signaturey+Qi2+U6CexZu8i+0DGrbLXwFbp+cHLVW62WRSfrovEAuJrnZy8paqAacEaE570GoHVd1b23Yihz4oDfOYStLASDVFk7xhVrarnlIqv4EH+Jyw0IR2iaLR+IvhJmSZc9N5nQ42i2z8UYetvQo0znzzNPmpT2FEJB1Sty9kCfHL7HiisG4hYwJp528McMVXgCYfn/XOZUQzOVY6rvis1hP8CiFbE4UMUQj/SgDpRjimcRCZy8fsRLgZHcfO2+BKYCSt5lqLDJSzsmewBFNMVWDdtZwPUxqyK8xaTwSnwWNBNXBRg5ZcDLJhhIJtk9cEezVTdJBZTw3wx7iCztR9RFQi9CZsRz9U9S4jLEdcV8m6OTa8XG22s2ZHt+I+hisGtlC1TOQ5fpPfSe9onWdA8jgC68RAFeOLJ+KmSkLQN1bbr9gUw47oB09Yd9sEtUDcFapfv+x9Zl3/s4ExwO6xDS/bwmRyZ/fq1z2jhVu/lMFd//+9ciOrCdty1p7440JVs/sx71Qcc0mRhZsMtIRYyBD2EFceUHx8cQCtOLL99+JtGkTakCMCwIxghuGoXnrq+9mRWjgROn1ysGEHDUyC8ZKCJ5f8TXOllqX2g+2fyOpFzHR66oP7lPwI5y3eW4VYJGT/lQzTavAtU148X2XaBUz+XA8Djuco3CCuGJuT9FhSU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.33.1
Release Details
UpdatedJune 18, 2026, 3:03 p.m.
Changelog

Fixed

  • On some installs an earlier update was recorded as applied but didn't fully run (an interrupted upgrade, or a database restored from a backup taken mid-upgrade), leaving the excluded_from_forecast column missing — so every new transaction failed with "Unknown column 'excluded_from_forecast'". A migration now re-adds the column automatically on update. (Also surfaced by the new database-error detail field added in 2.32.0.) (#289)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignaturewGNDwrdOGHhLxiEiJQDsZrcL4BFQbGBTjeDU/3VJql8bIeDBHITKzJ3HH47kV1bFmsZ35q0o7xh/r4q6Kj9/SXM8gQCTxEtQ0q80MS85LGy5+9dUtJ0yBvrLfE6kwpNPDH+kqwBVcAGxmLr9vYau5uTFGdeB0WZ3gmesUvT5kuZfdREwJDQ19QWR40pJjHRcWqM5KnXCT1/wq7btWj9s/Vf9GVQvo85g9R7adODG1PVBr4gM6R9nTgsrn+60BJvNNO5f3W3wbuzvqaJhtVdknB9Z8fc7Vbq6mh6TgSPBmXgiK2VdCAWPaW2EmpVL8iwgOGazPGSajPkMZNNZDhzDNEpLcveJl61g/x5dVAxOevwFnN4CaX5c/YYppjcqtoWyYgoTNMv3enF3///tD0wS68iQzcU5UNmsOOKsAUVvRnf/oOX2b13NfsKPONAxcu4Q/UG8ybPqYwXT+T6Vs+IRmoLJLnOs/BUgbqmmRIG1Wfs2BusDFKNHHWoW1Z5t+GDLGx2cyNci7+rKPRh2seML8iPrt9lNv2M5NjzIJ9Wm0Xt0FKpIetR4gDpLSRvBtINaQ0jVuYVixt1yDKMUfE6GH4sNW9rNi2ZoKptz2MIxouBmLNXezA5Y0gvIlgA11Bi0YBrKPUAtmxNl8Jyxhle2Ll5bZbsupMy1otRB/+NGEOs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.33.0
Release Details
UpdatedJune 18, 2026, 12:52 a.m.
Changelog

Added

  • Run reports on multiple accounts at once: the report Account filter is now a checklist — pick any set of accounts (e.g. all your credit cards, or all your checking accounts) or "All Accounts". Applies across the summary, spending, income, cash-flow, category-by-month and year-over-year reports and their CSV/PDF exports (#299)
  • Saved reports: save a report's settings (type, period, selected accounts, tags and options) under a name and re-run it later from the "Saved Reports" picker in the Reports view. The period is stored as the chosen preset (e.g. "Last 3 months") so a saved report always shows up-to-date data (#299)
  • Dashboard tiles that can be scoped to a specific account (Spending by Category, Income vs Expenses, Net Worth History, Recent Transactions, and the other account-aware widgets) now show a small label in their header naming the account they're analyzing — the account you picked in the tile's settings, or "All accounts" (#296)

Fixed

  • The Reports period selector didn't drive the report on reopen: the dropdown kept your last choice (e.g. "Last Year") but the report always reverted to "Last 3 Months", and clicking "Generate Report" used the reverted range instead of the shown period — you had to switch the dropdown away and back. The report now always matches the period shown in the selector (custom ranges are preserved) (#300)
  • The Quick Add Transaction dashboard widget couldn't be used on mobile — the lower fields and the "Add Transaction" button were clipped off the bottom of the tile, so a transaction could never be submitted. Its form is now condensed (each label sits beside its field with tighter spacing) so the whole form fits the tile, and it falls back to scrolling within the tile if it's resized very small (#298)
  • Editing a split transaction's amount (e.g. inline in the transaction list) left its splits at the old amounts, so they no longer summed to the transaction total. The splits are now rescaled proportionally to the new amount (the last split absorbs any rounding remainder)
  • In the edit-transaction dialog, changing one split amount now adjusts another split so the parts keep summing to the transaction total, instead of silently drifting out of balance
  • Split transactions weren't counted toward category budgets or spending. When a single transaction was split across categories (e.g. one $1,000 payment split into rent, parking and a deposit), each of those categories showed $0 spent. Split allocations now count toward category spending everywhere it's shown — the Budget view, the Spending by Category chart, and reports (#297)
  • Large amounts (e.g. values over 100,000) on the dashboard hero tiles (Net Worth, Income/Expenses This Month, Net Savings, Cash Flow) wrapped onto a second line, splitting the number mid-digits. The amount now stays on one line and its font scales down to fit narrow tiles instead of wrapping (#295)
  • The "Asset Value History" dashboard tile (and "Net Worth History") showed its empty-state message anchored near the bottom of the tile instead of vertically centered. When there's no data the message now fills and centers within the chart area (#294)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
Signaturejj+nUiPNSYYgtQ/7XYIkJNFo8vWIHaX28Q0XTtpN6RWmrW8qrJBIs2jTaaHwebC7SB5f7GP6vQxghh9+nCWfA+KlTKbm8YJg6yzah9xdTLo/JcUhTOinlH9yYoXxMiIY9EVwQLsPmef4sprTsS9oqBeSgZ7S8WRJYnxjAuljee9q0Sfai9AK+RQzBk6kgENhCAVt95ooZ3H5ukfFBSb/kyXa3IU+ngu6g5B9DgiJfBduecdkLEfc0dhYKelUyNaZa61qoG865podTGJFCFqzoSnlCXgRcJqJHjhdTERIeu/nHQAL/PhaPy0OSWK8l+kyrGveMEKDM6LvQ0Eo6B9Ul0ORobundabEat67f/hqaTmnDldOkkEm5a0WAYeQvYeeZCNLtiF26pWk66v6eQhXsrT6IwcJ/gxaC6oS8URm5yYub2iW9nVq6uZXRMJavJr8CmYl7MSqQRVvFKGlwHvD7X+YfEs+htKGYM017iWdICfQv/wbGi5JzIxqdm7QKrV9EGxgl4GFWvY/cyGZt4awfhoy4RljlFtsfJ02askgVFUloVGKOWeqZ5NbqXMDC+UonPONQ/RPM64u0L3NdVvmcXOwA8RBHCg1qgEiVkDBSsJyhK55+1J7Yn5fIC2emSU0BXOdzSFgg3BgUbYJQHgH30AwNf1iagO/WBOYDSu4jqs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.32.0
Release Details
UpdatedJune 17, 2026, 3:02 p.m.
Changelog

Added

  • Category by Month report: a new report (Reports → Category by Month) showing income and expenses per category broken down by month, with a column per month and an overall total. Categories are listed alphabetically with sub-categories grouped under their parents, and parent rows include the totals of their sub-categories; a toggle switches to sorting by total instead. Defaults to year-to-date, follows the report date-range and account filters, and exports to CSV and PDF (#288)

Changed

  • API errors caused by the database now include the underlying driver message (e.g. a missing column) in a separate detail field of the error response, visible in the browser's network tab. The user-facing message is unchanged; this makes problems diagnosable on managed Nextcloud instances where admins can't read the server log. The executed SQL and any bound values are stripped from the detail (#289)

Fixed

  • The dashboard "Budget Alerts" tile showed a red "exceeded" alert (with "0% over") for a category whose spending exactly equalled its budget. Spending that fully uses the budget without going over is now treated as a "100% used" warning, not an over-budget alert; only spending that actually exceeds the budget shows as exceeded (#293)
  • PDF reports rendered non-Latin characters (Polish, Cyrillic, etc.) in account/category names as "?". The PDF exports used a built-in font limited to Western European characters; they now use an embedded Unicode font (DejaVu Sans), so names display correctly. Applies to the budget report, bills-calendar and year-over-year PDFs (#292)
  • Marking a recurring transfer as paid showed a success message but created no account entries. The Transfers screen was only updating the transfer's "last paid" date instead of calling the mark-paid action, so no transactions were recorded; it now creates the paired transfer transactions like the Bills screen does (#291)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureNKgPUY81JziKewMWFs4QeLNIwZ8JqGBZ6wvFlsItL4R47yoDLAn4+I1T/pwgEOi7KR2lCUFBckiAdI78FONIy+JyCFhY0w4WcGEltsQdsytRMQYAggOWw+OlYvlDMPI6zoMoRfVcIvC3d+4pUrP91cJIVwi+bu5OIYO0C7ErDFCyvMlHK+ifsGvBluQJ377z8wnBUQIWSfudOuXewIyBHCF1QXsRXsVe0CIGWPNnT3ibuwxjm92a4vzwqdTEYy2qQwzPgYWPhgZofSdEN6j08iuwUzM0i9yXWd0IVpRNLb8RIo9lTzhJsjolrNFGZd0iiQk5A/4NQ6VOLKItVhwXJKOZk7KzyYTZmEki+PaeHKSEjEzwYNqv2tL4VPrBjyq5Y3bRTnYS3uBBCOnkWwn6ozQ4PitvSgPpcqciCtrP1hYAa0oQ7FsP8+BVsepO8gn8+lIcVjx7mW+YvufESAyFRXgAy61QBNjcd34vtoEfLqhdP4f37gZ/jdmCicDQ3sLw/eUIL98BylXmNvOge43vnYuRgGl9gBO11ENaP3EhqhqsrVr5Gyu07MGlMhCRlBn21fRN5sMORHFNx6pL/DcpwC0xtpfWEtHTCcEcLvArqfSiQSMrJaDvqftcQNMWYt4hGZKMVR7SYZsAragHUiMfvWDu1mW7HLNsW8PwySZDrHA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.31.0
Release Details
UpdatedJune 14, 2026, 7:05 p.m.
Changelog

Added

  • Exclude an account from totals: a per-account "Exclude from reports, dashboard & forecast" option (in the account's edit dialog) keeps the account fully tracked but leaves its transactions and balance out of every "all accounts" aggregation — reports, the dashboard, forecast, net worth, total balance and category budgets. The account still appears in your accounts list (with an "Excluded" badge) and on its own detail page, and selecting it explicitly in a report still works (#286)

Fixed

  • The account detail page's overview tiles only counted the transactions on the visible page (e.g. "50" for an account with 1,603). "Total Transactions", "This Month Income", "This Month Expenses" and "Avg. Transaction" are now aggregated server-side over the whole account, so they're correct regardless of paging (#285)
  • The dashboard spending chart's "Total Spending" figure (and each category's percentage) only summed the top 10 categories shown in the chart. It now reflects spending across all categories
  • The CSV import preview's "Auto-categorized" count was estimated from a 50-row sample and could be wrong for larger imports; it's now counted over the full file on the server
  • Editing an existing bill failed with "Failed to update bill" — saving the edit dialog (whether or not anything changed) returned a 400 error. The bill's start-date column, added with the limited-term bills feature, was missing from the list of updatable columns, so the always-sent start date was rejected before the save could run. Bills now save correctly, with a test guarding every persisted column (#284)
  • Opening an account's detail page returned a 500 error (the reconciliation-history request failed). The reconciliation controller was missing a trait it relied on, so it couldn't be constructed and every reconciliation endpoint failed; the account page surfaced it via the history sidebar. Now fixed and covered by tests (#283)
  • Starting an account reconciliation failed with a confusing "The string did not match the expected pattern" message (most visibly on Safari). The root cause was the reconciliation controller failing to construct (the #283 fix above resolves it); on top of that, the reconciliation screens now read error responses defensively, so any failure shows a clear message with the HTTP status instead of an opaque JSON-parsing error (#287)
  • The Budget Overview dashboard widget (and the digest, spending-anomaly and bill-reminder notifications) always showed amounts in US dollars regardless of your configured currency. The server-side amount formatter was reading the wrong settings key and falling back to USD; it now uses your default currency
  • The Budget Overview dashboard widget's "Total balance" now converts multi-currency accounts to your base currency instead of summing different currencies under one symbol (currencies without an exchange rate are excluded from the total and named)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureCseRrf2b0tfseaK8cBqqPjA8lhMT1C+aq6xVuP6vO3E6sRzawwkPNHdfK7CDaOro2TYW+agvm4g873WzOGVLIVa3FHEyFlnGRkFSwMz334bq1/Rcbw2WXdMbNUliZwdK76DNCauZ0JPz8FYIXr5cqkqbw80oHD/SWhWD5dTKRKJ2gpSvbNtXJfq32Sn04UVxrJq4StY11b5rJfCXR7P7RQxmFboIYJvhoVIfcebR+vighFLC9adkKVaF/xJ8tm1MVG6oJHJ4zKU87SV3+D8vB1xpxeWo2xRwseYSwg8Nk3ik6iXkcf4cHTACrCGyHhOXgCmltGkJ441alZ8kzOQCDe6Vw3Rx+zzgducfZGOQJPuIYcrpyZAAgN51xtDQJTWJNoT9jBrUmEv0r/ftZWj8QYnesnl8HgXUQPdLCsCaloLpISXkt7KzlHYlt4PgdMphbDBnuMROrXZtTeIwDCzwGAkatsK+l8HnM+FbMlpfszT7Ki1z2HYX/d+74aLRxkNUClx3fsQsxOtd0RxK9+/JPHW+W5Sv5kWbRSfiUrslL+pT7R15L9x4t3nFK8VUUEZSDcNynhSHxCVqrqOsV3mZ12eutyvQEPpN56qyLkaZmcoxOlOD2v4BKba8pBAL6YW05jx8hBWg9m0zAg4h3/qoA6zLDRrVfHi+LvUiiE1YDWs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.30.2
Release Details
UpdatedJune 13, 2026, 6:03 p.m.
Changelog

Fixed

  • Dropdowns in the transaction list (the column-configuration gear menu and the in-cell category/tag/account editors) were cut off when the table had only a few rows, because the table area was shorter than the dropdowns. The transaction table now fills the available height, so every dropdown has room to open in full (#280)
  • The Tags column couldn't be shown/hidden — the Show/Hide Columns menu was missing a Tags entry, and the column wasn't wired into the visibility logic. Tags can now be toggled like the other columns (#281)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureRXpaKwi4ViRdeYM6mjC3JtrlDOFrm03LMBFc2gQMktdYfBEoyMrW3YBp+DPKezxnLOmETNnqjXAI+oswcQLQMkRbAcjuD1dpBBZi7x8kmvtc0lZUcrKRw2QKUzDD5luZaN7JE14o393XlPFxdqkaUbJvWTltA5xK/XO2H72GyvEO7/7de7HCcP2G4XTK5kGSeP3PHRNQ5MjiB49QlM7D95p7Od374Fbr0k52h0sWFHSA14LgJSyPXCgHxxJMqVy7O76LlS1Iedg8B4TFBbTJZVol/8emaHjBHvEwVVzSIIkr9wdtZ60aqrEhJfTqaRwdGS0ks53VE2ROoE829Jnc3Xkz4Xxc0WEqH5a4vxbUWnA8NbuaFNAsUcfXW+0TDTUeLT34IV8c6GZkwn0z4a1parjkif0yyEolfPhNomKX/JMl74aSG5i2BkKyDH3OXMg9oC0/czhOIxluUuFCwWJyd6cBOGd6r/R382SMMe+mCHDpuBxIY12gRo4bzcAfmYMQ3e6rrtgpFwxBllUaK8lC+yPy9x9502QHhZem922Tz7HokfuXuFxh1x9Z6doBSvoZOe2H2PIKRupmFf4I9epoRYdDQZjatpZpN3+oZnz6DmY7f9+g3gaZ7Dl9dkPydm96203Pox5SGz9vhOQaXeOIw+l+rLnXnbodzB3eyqz11Ig=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.28.3
Release Details
UpdatedJune 12, 2026, 1:14 a.m.
Changelog

Security

  • The recurring-income update endpoint no longer passes the raw request body through to the entity layer — a crafted payload could previously set internal fields such as the owning user (mass assignment, integrity only — no data disclosure). Update keys are now allowlisted like the other endpoints

Fixed

  • Auto-derived recurring budgets (#269) are now consistent across all surfaces: the dashboard "Budget Remaining" hero, Budget Progress/Breakdown widgets, Budget Health score, and budget alerts now apply the same recurring fallback as the Budget view — a category funded only by recurring bills can now trigger alerts and is counted in headline totals
  • Auto-derived budgets now respect bill start/end dates: a bill that hasn't started (or has ended) no longer counts toward today's budget, avoiding double-counting during a planned cost change (#268)
  • Recurring income summaries (Income view header, dashboard Income Tracking widget): semi-monthly income was counted at half its value, and a one-time income at full value every month until received
  • Transfers page monthly total: semi-monthly and semi-annual transfers were converted incorrectly
  • Live forecast cache: cache invalidation never matched the stored key (changes such as toggling "exclude from forecast" appeared to do nothing for up to 5 minutes), and the cache key ignored shared-account visibility, letting a share-restricted viewer briefly see the owner's totals
  • Editing a bill's amount without updating its split template is now rejected when the stored splits no longer match (the payment would have silently imported unsplit and uncategorized); setting a split template via the API now clears the bill-level category, matching creation
  • Multi-account import partial failures (e.g. a deleted destination account) are now reported in the UI instead of masquerading as a full success
  • Import preview now also flags repeated bank transaction IDs for accounts that will be created by the import
  • Long OFX FITID hashing threshold raised so every previously-imported FITID keeps its exact ID (re-import dedup continuity)
  • Auto-derived category budgets (#269) now handle every supported frequency correctly: semi-annual bills were over-counted 6×, semi-monthly halved, custom-schedule bills counted every month, and one-time bills inflated the budget monthly until marked paid (now excluded). Frequency math is delegated to the shared calculator, which also gained the missing semi-monthly conversion
  • Auto-derived budgets no longer apply to past months — they reflect today's recurring bills/income and were rewriting history (including overriding explicitly-zeroed snapshot budgets)
  • Multi-account import: an invalid destination account mid-import no longer aborts the batch, and deferred balance recomputes now always run for already-imported rows
  • Bank sync: the post-import balance recompute now keys on transaction creation, not the import counter, so a row persisted just before a non-fatal error still gets its balance update
  • The scheduled-transactions background job now recomputes balances from the ledger (it was the last remaining hand-computed balance delta, and could race concurrent imports)
  • Import preview now flags a repeated bank transaction ID (OFX FITID) within one file as the duplicate it is, matching what import actually does; per-account preview counts include rows that will import with skip-duplicates off
  • Marking a bill paid by linking an existing transaction now warns if the link silently failed (no money movement recorded)
  • Extremely long OFX FITIDs are hashed to stay within the import-ID column
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
Signaturefa7u8mWcwya82OCYZOh+XZFPRJH94oqiBM5WUtEtvU3Dh6Lq+pMs8A7e2aCOa0Y6AbwWH7TF6ZRtwanfSh2PjQMwAaDFlR5anBdAvr89L/fn3eK0uSrZetqNGmAT7Itlc0mT5KowbTvtWDRdK46oR4jjqgXKay6JeO7caGbAcKmyfhJARbfTXsb5etz/yhMX72X33ayUYtCo8nQrtxLTGO5AAPIcFbq1pa3W3d1SHuQ7Ibksv3WXrZe79ngT4pQpGp6xtz3ervqo86vrI8qH8DDg6g9IJE8D1iseOiVzRv/KI/N06LnY0OvUHNZwGrJph5Jh3BrYg2/5rSYzEP5VzaGyZm+AS0DO1bXf9BC5OqbRl3s/FsM+4UgowriYD0S2Zwc4/2j/W3mDRjOdGf0MJxd8SOxv7uW2P5JL0TImjA7mTgppSipw1ShGTl8BU7q11cCtFmuCmwGfvPlRLQtMqEdr93gNkY84rAja08K9Ro1/ySZtrEWVRh/lYzQqmpazsjlw1V4x+KYtn65LHr9Zxd46ToleV5kv1tEZJ1u7nFXeNnrfThyz78EqvLbVxzcqphrfrImGOD9/VhUwryM58KtVz7+tXmLjn3SsSmM8sz9DEljbEKK4zTV9mQgIxviGwzNuIGEFD+HaW6HRIsAzRNtXow5oT7Kgpqa3BnJ3HxM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.28.2
Release Details
UpdatedJune 11, 2026, 6:33 p.m.
Changelog

Fixed

  • Dashboard could render half-empty (hero tiles only, widget grid invisible): a Chart.js resize on a hidden tile's detached canvas threw during initialization, and the widget grid was never revealed. Chart resizing now skips detached canvases and the grid is revealed before the resize pass. Likely also behind "nothing happens" reports after certain actions (#273)
  • Dashboard tiles with a saved account selection pointing at a deleted account (e.g. after factory reset + import re-numbered accounts) no longer error with 404s and stay empty — stale selections fall back to all accounts
  • Account balances are now derived from the ledger instead of running deltas — the root cause behind every historical balance-discrepancy report (#3, #89, #124, #163, #187, #194, #274). The stored balance was a running total that each transaction code path adjusted by hand; any missed or mis-signed delta corrupted it permanently. Every transaction create/update/delete (and retroactive rule run, repair action, import and bank sync) now recomputes balance = opening balance + net of non-scheduled transactions, making drift impossible and self-healing past inconsistencies on the next write. A one-time migration backfills the opening balance so displayed balances do not change on upgrade (#274)
  • Marking a bill as paid now warns loudly when no transaction was recorded (bill without an account, or transaction creation failed) — previously the bill was advanced silently and the account balance never reflected the payment, drifting from the real bank balance every cycle (#89, #274)
  • The app's own export→import now preserves transaction status (scheduled transactions no longer silently become balance-affecting after a migration) and restores the opening-balance invariant for imported accounts
  • "Skip Duplicate Transactions" off is now honored: previously rows whose import ID already existed were still rejected deeper in the stack (duplicate-ID guard + unique index), so parts of the batch silently failed to import. Intentional duplicates now get a uniquified import ID and the entire batch imports (#275)
  • Import duplicate detection no longer gives false positives for legitimately identical rows — e.g. two same-priced purchases on the same day with the same description. Identical rows within one file now import as distinct transactions (occurrence-aware import IDs), while re-importing the same statement still skips everything it already imported. Re-importing an older statement also recovers transactions the previous logic wrongly skipped (#276)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
Signaturekx2VkgWxozCE2LPp/nzgQQiqFxk/83sOdycv738Ly/uEwn/MhxF/kNtBlP4DMQbhmtkcHdt+kDIlQK1S5q1WHJWZQxjLc/ZCkj/ZEPkNBrDhHwdQCRh4TsRVJyfrIxXUTOCAKJLYk+0DXlnJB3kMhR81adns3wWNH9RkC4b62k3gXtzMR4n+jz/QJDGEAOXRpDUzxEm2TKqFot6sGRt3u0+rVo0bng6nogDJha0APeFI5Ujt+3mECw9MlxNt9nKbQlIGjAnraLVUFz0bXNLK7dbBS3PSzjLsUxhoNhAqMivfHEfLViOvIlCFNHzoWGxFnHK0flI2zJXUlOnaidOEyfhZWbqNpHZL4RZLIZWYQaztJgATNsK+L5aO0Md+Np1hgE8jkdY90gugiV06JqoPEWqCo/qSyaO9N3xYpeXrwfiL37JJqkigwg69RZN3OD1DfBT8ue7QlhT93dfg+39ERzbVY9QBu0gT+bwIs8tyE1MVXOaSjHKUkHab5dpGU3NQhvu/E1CO1BWA3dYvUUqvrvXKB96gm7IqNQEAkRi4JJHDPGtgzjERM+k8z/JA2xeJmPp7V3TZ/1WiKOoKMPz88soCJBMuj/LWnSpekLAGo4RJDy1JBlOm835e3ieJFVHwIwqG9YP7oRB/puFvYV6aaEXCnSkUcZV+z+2NXmHB8KM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.28.1
Release Details
UpdatedJune 8, 2026, 12:13 p.m.
Changelog

Fixed

  • Install/upgrade aborted on Nextcloud 32 and earlier with "Primary index name on oc_budget_import_templates is too long". The budget_import_templates migration created its primary key without an explicit name, so Nextcloud derived a default name and hit the Oracle-compatibility identifier limit (the unprefixed table name is exactly 23 characters). The primary key now has an explicit short name. Thanks to @TheUnderdev for the report and fix (#272)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureXdUz/Pc10uA7L3R+vTa/cI52W9X8nDyH33zElCWeS/xWeYgonfr0GwLhn4ywE7rtUQF8e1Y8GhETbSd60otnPduP+4rXp7+5+b+iMTa3qfYi6gAd3Y1YJJrZqK0yx2Fdqld/nhQLfFpVkUSQl/JQ78RZanEh779Af5RejNl7lolRlJYg7ZNrLrFasWrpyrLNsg4+Tf74/vMpKWDXf0FEIqjnXZ0LKJm7Yjig4uazy+a5vDcDOrfq6fLU56d9ML/jBJK+9A2loT3I5HP7H2cngdLpwk6+MNLiYQDsdNzLGJJK9TK4hn0Cj+AV80mAQ45beagh4H0SmEoDTPvR/hC7LLlU5rtioE1Rg1tCvlZfHBuPcH9LZMq11Q3HVbZnvzkTdG3lKQlKeFhP86QOIjiAg1Frm0yuOt4nMSdG36N+k1C5szF7HrCoH+u1XgdY6fKI6WW71RkqXJ2IhwOorxcijLVQc2l3wyDLqoQrHtJA2yWGsI9NXlq+d5ZLJ03T7xvcLBPgSDTz91KqBABqJYRdCGhzAuQPe9M814mDu5XgdoCJNUKNrAl6YGvLvJXyj5j8I09qImqsQx09AmEBxi8YTZDbxuO8U/g3yKO14aBgGu3Z+v8+h6xyqJyNsPEbHHxpjfSbwAF/9FlvjA64nOTqPam3fPOjZAdqne5bgf05gFY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.28.0
Release Details
UpdatedJune 7, 2026, 9:59 p.m.
Changelog

Added

  • Shared savings goals — share a savings goal with another Nextcloud user. Recipients see a "Shared" badge and can view progress; with write permission they can edit the goal and add money, while only the owner can delete it (#255)
  • Auto-derived budgets from recurring items — a (sub-)category with no manually-set budget now shows its committed recurring total (active recurring bills + recurring income, normalized to the budget period) as an automatic budget limit, marked "auto". Typing a value always overrides it (#269)
  • Exclude extraordinary/one-time items from the forecast — a per-transaction "exclude from forecast" flag (with a "No forecast" list badge), the same flag on recurring bills/income (propagated to generated transactions), and a matching import-rule action. Flagged amounts still affect your balance but are kept out of the projection averages (#270)
  • Reusable CSV import templates — save column mappings and import options and reapply them to future imports (#247)
  • OFX/QIF import account routing — route multi-account OFX/QIF files to the right Budget accounts, remembered across subsequent imports
  • Bank sync: pending transactions — option to import not-yet-posted (pending) transactions, automatically reconciled when they clear (#257)
  • Bill start dates — a bill only occurs on or after its start date, making it easy to change a recurring cost mid-year by ending one bill and starting another (#268)
  • "Shared with me" expenses view — recipients can now see expenses that have been shared with them (#248)
  • Dashboard period indicator — chart tiles now show a read-only indicator of the period they cover (#250)

Fixed

  • Dashboard now collapses to a single full-width column on phones, independent of your configured desktop column count (#249)
  • "Excluded from reports" categories no longer appear in the Budget view (#266, #267)
  • Category spending chart shows income as positive with the correct label (#265)
  • Tag-linked savings goals now sum net realized contributions (credits minus debits, excluding scheduled) (#264)
  • Recurring income description is now persisted on create (#263)
  • Transfers are now excluded from dashboard income/expense totals (#262)
  • Account Breakdown report now uses each account's own currency instead of a single assumed one (#256)
  • Fixed a PageController crash (TypeError) on unauthenticated requests (#259)
  • Quick Add date field normalization on iOS (#235)

Docs

  • Documented the standalone Quick Add page and the iOS home-screen workaround
  • Noted that GoCardless no longer accepts new bank-sync sign-ups; EU/UK self-hosters without an existing account are pointed to manual import (#271)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureiQMjVEdG/FWcc56MAPwvDd04E0ERl5pUWkrRWtdYdgbboBj0+7YAo+rDODFz5qC3EPqWBr7XRkjXOfvn9+m61v0w88Qy8SZQIZRHTAwRJuK5jDQbpfce5dropQgKW8btEIzI3BPE+DFBIDeV+qLNQEYT25ApMkUAz44PumVV0sJMibCGo0JBgIxHCPyem1NNjYaX3qQDt41eg8I5rH8wLCWGa7lNTtGyp8vaJ4ck0sh4J9sPuVzMdJoXQDHfGe5S8YY3GTwgvwyloNJQAFO+SQzm5WX6mC/IKAfpxwG82cQAEMm6B4geyHwaYGSFDEgrBuHOZj2fQmvQgzoarRN+U76bOhjQI0IqU76Pno3qM17eF+UKW8peDiqFBXpepGYfDoeyjQsF2GqxIK3C0bNUR5bp9RjNxkWckwvS2ihvP/2rg4lr05MuDDmIdBYG9Ny+PT9dEWBssQkXzIVX28Ox6P8xkorH0n5EoSRl3j+KMXbM34QteNMt1+jgsHAxcS8H57CwV3MC0uqZnhxUu/LbwIGHzvKbC6vN3F/3l6F+35rWM7UaQhdvr2W/1q5Swj5F2sp2Bq5jgrxbWIuUB9+pzftASgVUEmtd6blOUlJuuJj1wmaIrA9jx21+Bg8t/OmrQqB97ZHzint0WTdo7KTOviKZGnoZVXeoQthPmSyW7Wc=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath

Nextcloud 32

Budget 2.39.1
Release Details
UpdatedJuly 11, 2026, 10:22 p.m.
Changelog

Fixed

  • Share recipients saw wrong dashboard totals. For a user whose accounts are all shared from someone else, the Income/Expenses This Month cards counted transactions in the owner's "Exclude from reports" categories — the exclusion list was built only from the viewer's own categories, so the owner's internal-transfer legs inflated the recipient's income and expenses while the owner's own dashboard was correct. Shared categories now keep their owner's exclusion for every viewer, and per-viewer "Hide from my reports" mutes are honored by these totals as well (#326)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignaturePTjw+Z1r+sKWQmZSlNfYPSTl5PFejqjMEgNyvQR1FXSKor9zNXxtxcAM0eYYthPn9YEprCKS9V6NC699ZbeWK6WbdRtprmP+rsvCifpjQyVtPDGLJ11LWzLVgw84pTHcolsdY756JO6KWW8hxp63bq3s4QE4rs3RTCEyHSpzpZ1pXSydTCTvheL1M/rtg3XyKpzBkoOqGh39Dnh9TH7JQt+cCB8VD84aeHcsvnxUkQJU3AmZwYGcP8wSNeLmDjt1S9yCv2h8NAReLQeTMbmdzNJtioLLiifkedz5bEgjVximgqI99mmV+8uhRBY0keT1hWXR6En4IrRkiJwlEyNZRHkukMa9jNmoNVvoRYCuQOVZ1wWGtkS8MCz5Ig63yPijEMh1bqnoi3+WA1g8s23dJVIziAHSKl0F+V7DKThsw2jBouMZeZ7bG0nMS9bFLcndAm1MbpWyuZATotUExNeYhEZEIwUOuF+esV5lnDoHTf0i/q6OJGa4hPPiNTE/rH4PS3Z4pdEZ4V9YhxYfsSs/9y+Y7xg/ZQWnLq2YVsTR7V8FgQwU4Bi8OGLsfbYZhSaUnHv60ObUB2U4WkD1mZZqDHKJXAIgVGulvHFAkXQVeGpRqbUCQNvgiVU8hfRaRmEr/y9Usub/3srDJn7qybeAxfOxA7rL+AlakEZBECHPJlY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.39.0
Release Details
UpdatedJuly 11, 2026, 12:57 a.m.
Changelog

Added

  • The Bills page now flags payments without a recorded transaction. A warning card lists bills that were marked paid in the last 60 days without a transaction being created or linked — the situation where the app balance silently detaches from the bank. Each entry has a one-click Record transaction repair that books the missing payment (dated the day it was marked paid, both legs for transfers, splits applied). Deliberate skips via the Skip button are not flagged (#274)
  • QAR (Qatari Riyal) and JOD (Jordanian Dinar) are now available as account currencies. JOD amounts use the currency's native 3 decimal places. Automatic exchange rates cover both. Requested in #321

Fixed

  • Editing a monthly recurring income never saved the changes — the app showed "Income saved successfully" but the Expected Day (and every other field) kept its old value. Any update whose payload contained an empty field (a monthly income always sends its yearly-only "expected month" as empty) reloaded the entity mid-save and threw away the edits. Thanks to @redsteadz for the fix (#324, #325)
  • The "Exclude from forecast" checkbox on a transaction appeared unticked whenever the edit dialog was reopened, and saving the transaction again then really did reset the flag. The flag was stored correctly (including when set by an import rule) but the transaction list never sent it back to the browser, so the dialog always showed — and re-saved — it as off (#326)
  • Income/Expenses This Month (and the other report summary totals) deducted transactions in "Exclude from reports" categories without converting them to the base currency, so on multi-currency setups the deduction was applied at the wrong rate — and for a single selected account the deduction wrongly included every other account's excluded transactions too (#326)
  • Imports no longer bring in flagged duplicates by default. The preview's "Show duplicates" checkbox — on by default — secretly doubled as the skip-duplicates switch, so every import ran with duplicate-skipping off and rows flagged Duplicate were imported anyway. It is now purely a display filter; a new explicit "Import flagged duplicates too" option (off by default, resets each import) covers the deliberate re-import case. The preview's per-row checkboxes, which were never actually read by the import, are gone, and the New Transactions count no longer includes flagged duplicates (#327)
  • Marking a bill paid no longer suggests unrelated transactions as "existing" matches. The Existing Transaction Found dialog offered any unlinked same-day debit as a candidate — cigarettes could be presented as a "match" for a mortgage — steering people into marking bills paid without recording the payment, the classic source of app-vs-bank balance drift. Candidates now must match the bill by amount or name, a weak match is never pre-selected (the safe default is creating the transaction), and the "Don't create any transaction" option now states — and warns after — that the account balance will not reflect the payment (#274)
  • Overdue bills no longer double-book when marked paid. The scheduled placeholder pre-created for the next occurrence was written as an ordinary cleared transaction whenever the advanced due date was not in the future, so it counted toward the balance immediately — alongside the actual payment. Next-occurrence placeholders are now always scheduled, regardless of date
  • Restoring a backup preserves every bill setting. The data import dropped most bill fields: custom recurrence patterns (restored bills then advanced one day at a time instead of quarterly/etc.), transfer destination and description pattern, auto-pay, reminder days, tags, split templates, start/end dates, remaining payments, forecast exclusion and the future-transaction opt-out

Changed

  • The Match transfer dialog now also lists candidates from accounts in a different currency (any amount, within the date window), so cross-currency transfer pairs — e.g. imported from CSV — can finally be linked by hand. Automatic matching after imports is unchanged and still only links exact same-currency amounts (#326)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignaturegJm3RDjkvl1EBICN6Us5TsX5SdQbSGnRHvRIZmLsYaclkDVqW/mYCBjVgwjU50ifkv72zl3kxf5a8S3yxpo2WX6cnhkyyibLhs5Uzdrj9Egw47yYgMun8WH4647Y0uGP7QrX3Yf51SO7Ve+JWgdMRX+hWvG4K9hxUgAwWR3AmTYRsRXpmsNrOr97q2SPC3V0g9bAARDeSeWDGQ8SR05+OMIrQRj0Ct56fC1cTNWzHpPT+Qs17SJJcUUnK3tJWsM3wvGiwk62YMBy1cv1jx3JkOXnYvsa8bpSG3sL7aqr05QkAkvL9sSGxka6mDrC3CN1LHlwwQjPjWwoX9YDtOI04j0JPd0SzlhMYILaZNyouhoNTuY5YhDIG4aLjg737AAEBHgU3jvpWxaM8Oz2+9he9LkAJW6qA9DuzB/FmDNKxyJTmQ6S0LZ21d+Hkr0LD/2uKRSywlRBld+UNCWby8YrgIkyGomPH1rjDG28y1ApiqSozetcjSvDYwqULM2mLXU9OjD9a8UJk8B1R4Xd0TqgMmDCaAZrTdRLYYdTZEEaFbnDkbm8p4z2q+UGfn/UCNEOkg5pbu1WAsRubIKkPzNTz7gTSLI9u+qJfvoZg9c3Ae1OhXWDD9k/2Z+pCrbJhu8yDX+2JukXoAxNS+bnxaDxdoxRzIM+9jcbb0eyG3wJuLk=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.38.0
Release Details
UpdatedJuly 7, 2026, 1:07 a.m.
Changelog

Fixed

  • The account selector saved in the gear settings of insight tiles (Monthly Comparison, Large Transactions, Weekly Spending, Year-over-Year) was silently ignored — the tiles always showed all-accounts data. The saved account now actually scopes the tile's numbers
  • Importing transactions that trigger the Auto-Link as Transfer rule action no longer shows "Cannot use object of type Transaction as array" on the import screen. The import itself always completed — the error came from the transfer-linking step afterwards, which also means those transfers were never actually linked (#314)
  • The Recent Transactions dashboard tile now honors its "Rows to show" setting above 8 — the display respected the setting but the data fetch was hardcoded to 8 rows, so values of 9–20 silently showed only 8

Added

  • Edit auto-categorization rules as JSON. The rule editor gains a Builder / JSON toggle. The JSON view shows the raw rule structure — editable and paste-friendly — checked when you save, and switching back to Builder repopulates the visual widgets. A Copy JSON button makes it easy to move a rule between instances (category/account IDs are instance-specific, as noted in the view). Requested in #318

  • Hide shared categories from your own reports. Categories shared with you gain a per-viewer "Hide from my reports" toggle on the Categories page. Unlike the owner's "Exclude from reports" flag — which stays owner-only because it changes every viewer's reports at once — this only affects your own reports and dashboards; the owner and other viewers see no difference. Applied at the SQL layer through the same choke points as the owner flag, so every report and insight tile honors it consistently

  • "Exclude shared accounts" on the remaining dashboard tiles. The per-tile toggle added in v2.37 now also covers Budget Progress, Monthly Comparison, Large Transactions, Weekly Spending, Category Trends, Cash Flow Forecast and Year-over-Year (shown in the gear menu when you have shared accounts). Bills, income and pension tiles are deliberately not included — they show entity data, not account aggregates

  • Clickable spending charts. Clicking a slice (or bar) on the Spending by Category dashboard tile or the Reports page pie chart jumps to the transaction list filtered to that category, scoped to the chart's date range and account. Tiles set to "top-level only" include the subcategories in the filter so the listed transactions match the clicked amount (#317)

  • Per-bill opt-out of pre-created transactions. The "Create future transaction for this bill" checkbox is now a persistent bill setting instead of a one-shot option at creation. Bills with it unticked never get a scheduled placeholder — not at creation, not after marking paid, not after skipping — and toggling it on an existing bill adds or removes the pending placeholder immediately. Previously the checkbox only affected the moment a bill was created, while every payment re-enabled pre-booking unconditionally, so unticking it never actually opted a bill out (#311)

  • Convert a transaction into a transfer. The Match transfer dialog gains a "No match? Create the other side" section: pick one of your accounts and the app creates the opposite transaction there and links the pair as a transfer. Until now the dialog could only link two existing transactions, which left no way to correctly book payments to accounts that have nothing to import — e.g. a loan tracked as its own account (#313)

Changed

  • Scheduled (future-dated) transactions now show a Scheduled badge in the main transaction list, with a tooltip explaining they are not counted until they occur. Previously only the account detail view had the badge and the main list showed scheduled rows in italics alone, which made a bill's pre-created next occurrence easy to mistake for a duplicate booking (#311)
  • The transaction list Total no longer includes scheduled transactions — they are placeholders for money that has not moved yet (#311)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
Signatures/wP/jWqAxqTStZPLKWl/5nyJk/xpeAom+Kp7KakVOdJmzhNv/Z6KM/CUUOrGem4Qj5G1OEZ2tNrPkTneCVvfFU2S5aoayMDgcRaGquqwZisM/4a0KV9Husjq8mV0RVoqco16HBH8PUY+kYsbeWRcSp2q38Zq99L04zb1x5XY1rGe5YdP4/IydUoMpyzTtsGF00Tj6OUAMvlDTnJqCcetscuXX8yo33xm0dUfLxjZD2f9hsn8UTCwNN7v1+yBhwNN4jJsfyGTN+92XV2YDhRCfVWq/3bGqphHo+nYQvbyjndJRcaAwybOquX6MH7+wpDa5wpvNw9xzc2sYNm2FM08SYep3cX7uoXngifGZu2FBqyNHQ198dqEwqJbEVv2DrK5cAnQkbSS1glYYney/uXAlsqLEinHirrShNYRoq+ZEkxUhpdung3zSWwPe0Fd/mWh2chHiTV20A2tCrv7FRuRadpf75bq+y0xuIglVZQy5E1dT2nk3lPUUwB01w/ggmwrJ91hOchPoyoRoDhoBNxZJs903bQejWR/MdZ9pbXVmwxj1EOq8oWfWeQ5B+OEz/LbcplibODsNv6IUIYU++gxK8d2XCVzBgV2ayMqsRxFDxItgluqDcu4oTW8mh3A4z33PvbeCFFMsj2bKFbOslmuT2ZiVl58oTaQRTh61xeKEA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.37.0
Release Details
UpdatedJune 27, 2026, 11:16 p.m.
Changelog

Added

  • Exclude shared accounts from reports. When other people have shared accounts with you, the Reports page gains an "Exclude shared accounts" toggle so you can see just your own accounts' figures. The same option is available per-tile (in the gear menu) on the account-based dashboard cards — Income vs Expenses, Spending by Category, Top Spending Categories and Recent Transactions. It's off by default (shared accounts are included, as before) and only appears when you actually have shared accounts. Note: a transfer between one of your accounts and a shared account can only be partly seen when shared accounts are excluded, so income/expense totals may be slightly overstated in that case.

Fixed

  • Saving share settings failed with "Some entities do not belong to you" (HTTP 400) when the "Auto-share new" toggle was enabled for a type, or after using Select All — the auto-share toggle (which shares the same data-type as the entity checkboxes) was being collected as a phantom entity and sent as a null id. Entity selection is now scoped precisely, so share settings save correctly with auto-share on (#306)

Changed

  • The Categories page now also lists categories that have been shared with you, shown read-only with a "Shared · <owner>" badge. Previously it showed only your own categories, so anyone using a budget made up entirely of shared categories saw an empty page even though the categories worked everywhere else (#306)
  • Categories shared with you at Edit permission are now editable — rename them and change their colour straight from the Categories page (they carry a "Shared (editable) · <owner>" badge). Read-only shares stay read-only, and a category's type, parent, budget, report visibility and deletion all remain owner-only (#306)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureFqJ17XG/szTfkAMsF+oCODYGClVjdeGArgFi3SrgeGhg4CFFzIVO98XEnYhxeCnwOcYGivzy0uhe60/Vv7kgml+lIVvRL1EZOxvjOES2KksQ50fqxGZSNz3EL54EA6R3Yvo6uLFBM9cbK0mmY5H+4i3UozKhKwzRa6PJLIZzpBsjtprJXHojWsQMR5KY7WDDbb9yD32uYzMnrXMxOiQ2PZGtG7aIhLS6DzC7Mtp/oLUgyRqBWoYMUWWLLi1qyeOr4/8Tdm9H5I36oxeoX2ZQlVuprpRjDPW5EITrljbyuIPy3CdAFn5tvvt8rkurEgCtPAaMv7gSXRZto6rJJqS4woUqX310+J0re9qa53Ls0J7Kezo5WpENoaFsvT6McjVG/4k6k4YN1/l74p97fFfR+1T2kC5VptpwVz4GZ2aSF9t226Sdkft7sv72aC3oQpa4PN3PIWj113aN2X5nnCGiD+NUW282/yAdacvMWVgB+t+Rbm0FIyWtGnbw0dKAlY3CAmQoBvqX9f2vqn1OFDxJhejg/i7+FAWQD83LIk6u2kNg/N4e2+hgLtO45wd5MU6TLXXTrb1mlikbbiP80Rla1p50fScosYTCqjJfz2lh5U6D2h/nquGHHvhf4R9q7eSkykmELHZUKiUyYlrLrOfiuxGRqaWSQWp9hm0CUog1HBE=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.36.0
Release Details
UpdatedJune 27, 2026, 1:15 p.m.
Changelog

Added

  • Auto-share new entities. Each person you share with now has an "Auto-share new" toggle per entity type (accounts, categories, bills, recurring income, savings goals) in their sharing settings. Turn it on and anything you create from then on is shared with them automatically, at the permission you choose — no more sharing each new bill or category by hand (#306)

Fixed

  • Code-integrity "Some files have not passed the integrity check" errors reporting FILE_MISSING for js/.htaccess and vendor/tecnickcom/tcpdf/tools/.htaccess. The app no longer ships any .htaccess files — the Nextcloud App Store strips them from the published archive, which left the signature expecting files that were no longer present. Neither file was needed (the JS one only set a redundant cache header) (#307)
  • Deprecation warning in the Nextcloud log — the notifier now throws UnknownNotificationException instead of InvalidArgumentException for unrecognised notifications, as required by Nextcloud 30+ (#308)
  • Reports and the dashboard summary were empty when a single account flagged "Exclude from reports" was the only account selected. Accounts flagged out of reports are now only dropped from the all-accounts views; explicitly selecting one shows its data as normal (#309)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureYxqf1NnAucAiXFVdwVmQJPaPUyuExQ8t/dwv4tDVpFb1kXDtGcIWoAdspiDz+HwdyPe+ul+/2GcDWiLPTF3TvIHwIaV+h+guDRYBEHMY95+Hy5W0BSuwBC7gto5dfsZEhL5xj5OsRIYrY/Fo8Tqj99kVzDK560o9NgI6Bp6ZkQpbwPRbTnbxUX27oF0oDjrg1ArS4IiE4ghZW1ct74Mlv4uoeg5zaVQlucrZK+rBJXixtpDnImHLPMkTvd+1bmkQTFtvArS1A37YkXkLKrKn4pzWvwv/q46ddih1NXBC7o6UoBwP1pWB1OxgNq3/98OdWyPs4GLumMmRdg+7PbY95Go97lBbNc/1mrBB9qQPXirFxYHMZWVDSRHSNRJ9cSMnZA/YzsVeOZOVkIwJWXhC5YGAEN8nq8HKIMBHzmi6UYdGM2VvGPmNZ+K3wlGMIkKlVfWfIJ7XIOCe6OLvQbwR/ATZ7pUyOE+AR21uu27zWGJ4iB4y/eCfCSE8vIxyPW7L0dwkzxU13iNNNxAUQgbNrs8EiQBLQlTCaBWCWp296Dds5nEGMEilQKX9vEXAhY9KRG5dzJjoZhZ14tWA3Hjp+5/Gs2AM4Bh3Rp1OGdhfQhFDmt/2GXcL16lfDcX28K1ub4FPYE8MEz6qDmLhqqwv9FeXQQbT/ZKdQn8NwuOlGFE=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.35.1
Release Details
UpdatedJune 25, 2026, 3:28 p.m.
Changelog

Fixed

  • Categories marked "Exclude from reports" are now consistently excluded everywhere, including the Income vs Expenses trend, Category Trends, Top Spending Categories and the monthly spending chart — not just the dashboard summary. Exclusion is now applied in the database query itself, so reports and dashboard insight tiles can no longer disagree about which categories count (#219)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignaturebX/9kwpiVjwDj0f2eU5xNE7zUpt8T/nkGCFg9HnDQoKynM7c1KaXhbh4isVQBbgy5kPGXSDP7DRfuSTYY5/M3PSv1JE8gOk/9lz2AGmTqlXrf4Kgq9oARAGcVHXB955dLvDkj6Vrk7zZ9cwrjq4aMBu02dW8ZgyAHStXybiWmkAbIxK768MHM4n5FXTRFw3P/ELVlDjCxgIpxVxD5EZaaA+n7RrjN9MRY2R8/GN7Og7yijcmnutMWtna4K19B9c3ShcfUkrwotvCUz3c+K10VQSfzUpN6RoindDB0j716jUZQ6IKzXBNNRiOjQ6N6s1MlmKwjyFyw0PY509hJY+dtjBEQBbFjK0pw7ZElfW4zDWteDzWRm7M1VjzUlRgPLsg7CJ980Rg8suZAMh3UH251vymCH0ykpMYqK1qiWDurz5GWdaDov6Z0YkQPQLnszzPa60kbO9VUHrYnG+6+KA6GoPW0EHFEqaUxXv+mRLr8Pm8BhjCiDghO7mlHZFN95hN5gkNyBdIPA9JmXAdnkrJBSQaDvZdejDwFJL+T+PgA2f9JomB8BQ/WkZ4uukyKUUFYToOhntQTe7dfE+I4VsD6BycbY7smaY/xGx6EvyXfntpYkgR7Fe2rYKaxBrcRcnhTmQBeLLz85M7fLKVjME72niQdRIZRaMZ+OmpCxKK2qU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.35.0
Release Details
UpdatedJune 25, 2026, 12:36 a.m.
Changelog

Added

  • Pensions revamp. You can now record a contribution as a transfer from a bank account — the matching withdrawal is created automatically and kept out of your spending — and record withdrawals/drawdown back into an account (#304). Scheduled (recurring) contributions (monthly/quarterly/yearly) can post automatically or on demand (#251). DC pensions gained a configurable projection target with a progress indicator and a "today's money" (inflation-adjusted) view on the growth chart, plus an optional Pension Projection dashboard card. Bank legs that fund a pension show a Pension badge in the transaction list.

Fixed

  • Background-job "class does not exist" log spam that could appear after updating PHP/Nextcloud/the app: the app's autoloader is no longer "authoritative", so it falls back to PSR-4 and self-heals if PHP's cached class map is stale after an update (#305)
  • Newly-added dashboard widgets now load their data immediately instead of staying empty until the page is refreshed.
  • The pension detail panel's balance history and activity are no longer broken — those views called endpoints that didn't exist; they now show a proper balance chart and a merged timeline of contributions, withdrawals and balance updates, each removable (#251)
  • Editing a split transaction with three or more parts no longer zeroes or overwrites the other splits. The last split row is now a read-only "remaining" amount (transaction total minus the other parts), and the dialog blocks saving until the parts add up (#303)
  • Spending-anomaly notifications no longer crash with "The arguments array must contain 1 items, 0 given" — a stray % in the notification text made Nextcloud's translation layer fail, spamming the log every time notifications were rendered (#305)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureF/7pZ4sNzjJuqXXZoHmO+9OmUzkQz6ZDke3vkONfZ2uGfzBpwpDSIiGlfNv6gt40Ho8NTPNd0JuM+ESRohLlPAAftFoF+L4h+asH5s/lncoxgTZevEFl7NE14s+sPVdGdZqXGi0b3mohB+f1jOudpVbgB0bmCDvnZMEKiMSjB7XwH9iQqzu/8WyQNd28w+Bz2TbyAfu2PCtdD6jsmVCbvtCkmEdKOVJzRWuExH+vwvZ0ltX3mtorPl6HEzqKJWoDYG3tdbpSwml6w9F3qj8naVZ3tZYBrfvwABHoMD1LYpYwRss5C9UpJvu6UFfKQ4Xso1tBu5U+tYlAPKLbQ5J70o0C1aP66R+FvL8RlMHpY93duR32qZkT/6xV0NYQpd9xzXoLbB5YkZJuBLV8m3oP9k/pNEy8vwF5Kkb+/6zrJt4aSH/iiAqBoqvuT1itwScYsNpGHXWOrGHioCKiGkcMvamfr7her1fQ42wNiVIVWKaxNtjeYrVjmHCtWA2awjv3XRfcXdcL/4stuDpXxQ0Dnv2S/Ey9ZbGbqpc0DNyPZfKie5/QK5OnHPW9F8nHUsEhxDLbNezo11fKm1ykE0ja4nTZFKL3ml2D4aRDMYQe35MWJvW/fLcNW7dYOV969ZI52G8jTIUI/YphcNfCNK24fVkljrcBSybr8WavbELxVR0=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.34.0
Release Details
UpdatedJune 24, 2026, 12:34 p.m.
Changelog

Added

  • The transaction list filters now include a Reconciled filter (All / Reconciled / Not reconciled), so you can quickly see which transactions still need reconciling (#301)
  • A Budget alert threshold setting controls when a category appears on the Budget Alerts tile (default 80% of budget). Set it to 100% to be alerted only when a category actually goes over budget, rather than when it's merely approaching or fully used (#293)

Fixed

  • Creating a category (or account) no longer fails with "Unknown column 'excluded_from_reports'" on instances where an earlier upgrade was interrupted or restored from a mid-upgrade backup. A self-healing migration re-adds the affected columns automatically on update (#302)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
Signaturey+Qi2+U6CexZu8i+0DGrbLXwFbp+cHLVW62WRSfrovEAuJrnZy8paqAacEaE570GoHVd1b23Yihz4oDfOYStLASDVFk7xhVrarnlIqv4EH+Jyw0IR2iaLR+IvhJmSZc9N5nQ42i2z8UYetvQo0znzzNPmpT2FEJB1Sty9kCfHL7HiisG4hYwJp528McMVXgCYfn/XOZUQzOVY6rvis1hP8CiFbE4UMUQj/SgDpRjimcRCZy8fsRLgZHcfO2+BKYCSt5lqLDJSzsmewBFNMVWDdtZwPUxqyK8xaTwSnwWNBNXBRg5ZcDLJhhIJtk9cEezVTdJBZTw3wx7iCztR9RFQi9CZsRz9U9S4jLEdcV8m6OTa8XG22s2ZHt+I+hisGtlC1TOQ5fpPfSe9onWdA8jgC68RAFeOLJ+KmSkLQN1bbr9gUw47oB09Yd9sEtUDcFapfv+x9Zl3/s4ExwO6xDS/bwmRyZ/fq1z2jhVu/lMFd//+9ciOrCdty1p7440JVs/sx71Qcc0mRhZsMtIRYyBD2EFceUHx8cQCtOLL99+JtGkTakCMCwIxghuGoXnrq+9mRWjgROn1ysGEHDUyC8ZKCJ5f8TXOllqX2g+2fyOpFzHR66oP7lPwI5y3eW4VYJGT/lQzTavAtU148X2XaBUz+XA8Djuco3CCuGJuT9FhSU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.33.1
Release Details
UpdatedJune 18, 2026, 3:03 p.m.
Changelog

Fixed

  • On some installs an earlier update was recorded as applied but didn't fully run (an interrupted upgrade, or a database restored from a backup taken mid-upgrade), leaving the excluded_from_forecast column missing — so every new transaction failed with "Unknown column 'excluded_from_forecast'". A migration now re-adds the column automatically on update. (Also surfaced by the new database-error detail field added in 2.32.0.) (#289)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignaturewGNDwrdOGHhLxiEiJQDsZrcL4BFQbGBTjeDU/3VJql8bIeDBHITKzJ3HH47kV1bFmsZ35q0o7xh/r4q6Kj9/SXM8gQCTxEtQ0q80MS85LGy5+9dUtJ0yBvrLfE6kwpNPDH+kqwBVcAGxmLr9vYau5uTFGdeB0WZ3gmesUvT5kuZfdREwJDQ19QWR40pJjHRcWqM5KnXCT1/wq7btWj9s/Vf9GVQvo85g9R7adODG1PVBr4gM6R9nTgsrn+60BJvNNO5f3W3wbuzvqaJhtVdknB9Z8fc7Vbq6mh6TgSPBmXgiK2VdCAWPaW2EmpVL8iwgOGazPGSajPkMZNNZDhzDNEpLcveJl61g/x5dVAxOevwFnN4CaX5c/YYppjcqtoWyYgoTNMv3enF3///tD0wS68iQzcU5UNmsOOKsAUVvRnf/oOX2b13NfsKPONAxcu4Q/UG8ybPqYwXT+T6Vs+IRmoLJLnOs/BUgbqmmRIG1Wfs2BusDFKNHHWoW1Z5t+GDLGx2cyNci7+rKPRh2seML8iPrt9lNv2M5NjzIJ9Wm0Xt0FKpIetR4gDpLSRvBtINaQ0jVuYVixt1yDKMUfE6GH4sNW9rNi2ZoKptz2MIxouBmLNXezA5Y0gvIlgA11Bi0YBrKPUAtmxNl8Jyxhle2Ll5bZbsupMy1otRB/+NGEOs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.33.0
Release Details
UpdatedJune 18, 2026, 12:52 a.m.
Changelog

Added

  • Run reports on multiple accounts at once: the report Account filter is now a checklist — pick any set of accounts (e.g. all your credit cards, or all your checking accounts) or "All Accounts". Applies across the summary, spending, income, cash-flow, category-by-month and year-over-year reports and their CSV/PDF exports (#299)
  • Saved reports: save a report's settings (type, period, selected accounts, tags and options) under a name and re-run it later from the "Saved Reports" picker in the Reports view. The period is stored as the chosen preset (e.g. "Last 3 months") so a saved report always shows up-to-date data (#299)
  • Dashboard tiles that can be scoped to a specific account (Spending by Category, Income vs Expenses, Net Worth History, Recent Transactions, and the other account-aware widgets) now show a small label in their header naming the account they're analyzing — the account you picked in the tile's settings, or "All accounts" (#296)

Fixed

  • The Reports period selector didn't drive the report on reopen: the dropdown kept your last choice (e.g. "Last Year") but the report always reverted to "Last 3 Months", and clicking "Generate Report" used the reverted range instead of the shown period — you had to switch the dropdown away and back. The report now always matches the period shown in the selector (custom ranges are preserved) (#300)
  • The Quick Add Transaction dashboard widget couldn't be used on mobile — the lower fields and the "Add Transaction" button were clipped off the bottom of the tile, so a transaction could never be submitted. Its form is now condensed (each label sits beside its field with tighter spacing) so the whole form fits the tile, and it falls back to scrolling within the tile if it's resized very small (#298)
  • Editing a split transaction's amount (e.g. inline in the transaction list) left its splits at the old amounts, so they no longer summed to the transaction total. The splits are now rescaled proportionally to the new amount (the last split absorbs any rounding remainder)
  • In the edit-transaction dialog, changing one split amount now adjusts another split so the parts keep summing to the transaction total, instead of silently drifting out of balance
  • Split transactions weren't counted toward category budgets or spending. When a single transaction was split across categories (e.g. one $1,000 payment split into rent, parking and a deposit), each of those categories showed $0 spent. Split allocations now count toward category spending everywhere it's shown — the Budget view, the Spending by Category chart, and reports (#297)
  • Large amounts (e.g. values over 100,000) on the dashboard hero tiles (Net Worth, Income/Expenses This Month, Net Savings, Cash Flow) wrapped onto a second line, splitting the number mid-digits. The amount now stays on one line and its font scales down to fit narrow tiles instead of wrapping (#295)
  • The "Asset Value History" dashboard tile (and "Net Worth History") showed its empty-state message anchored near the bottom of the tile instead of vertically centered. When there's no data the message now fills and centers within the chart area (#294)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
Signaturejj+nUiPNSYYgtQ/7XYIkJNFo8vWIHaX28Q0XTtpN6RWmrW8qrJBIs2jTaaHwebC7SB5f7GP6vQxghh9+nCWfA+KlTKbm8YJg6yzah9xdTLo/JcUhTOinlH9yYoXxMiIY9EVwQLsPmef4sprTsS9oqBeSgZ7S8WRJYnxjAuljee9q0Sfai9AK+RQzBk6kgENhCAVt95ooZ3H5ukfFBSb/kyXa3IU+ngu6g5B9DgiJfBduecdkLEfc0dhYKelUyNaZa61qoG865podTGJFCFqzoSnlCXgRcJqJHjhdTERIeu/nHQAL/PhaPy0OSWK8l+kyrGveMEKDM6LvQ0Eo6B9Ul0ORobundabEat67f/hqaTmnDldOkkEm5a0WAYeQvYeeZCNLtiF26pWk66v6eQhXsrT6IwcJ/gxaC6oS8URm5yYub2iW9nVq6uZXRMJavJr8CmYl7MSqQRVvFKGlwHvD7X+YfEs+htKGYM017iWdICfQv/wbGi5JzIxqdm7QKrV9EGxgl4GFWvY/cyGZt4awfhoy4RljlFtsfJ02askgVFUloVGKOWeqZ5NbqXMDC+UonPONQ/RPM64u0L3NdVvmcXOwA8RBHCg1qgEiVkDBSsJyhK55+1J7Yn5fIC2emSU0BXOdzSFgg3BgUbYJQHgH30AwNf1iagO/WBOYDSu4jqs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.32.0
Release Details
UpdatedJune 17, 2026, 3:02 p.m.
Changelog

Added

  • Category by Month report: a new report (Reports → Category by Month) showing income and expenses per category broken down by month, with a column per month and an overall total. Categories are listed alphabetically with sub-categories grouped under their parents, and parent rows include the totals of their sub-categories; a toggle switches to sorting by total instead. Defaults to year-to-date, follows the report date-range and account filters, and exports to CSV and PDF (#288)

Changed

  • API errors caused by the database now include the underlying driver message (e.g. a missing column) in a separate detail field of the error response, visible in the browser's network tab. The user-facing message is unchanged; this makes problems diagnosable on managed Nextcloud instances where admins can't read the server log. The executed SQL and any bound values are stripped from the detail (#289)

Fixed

  • The dashboard "Budget Alerts" tile showed a red "exceeded" alert (with "0% over") for a category whose spending exactly equalled its budget. Spending that fully uses the budget without going over is now treated as a "100% used" warning, not an over-budget alert; only spending that actually exceeds the budget shows as exceeded (#293)
  • PDF reports rendered non-Latin characters (Polish, Cyrillic, etc.) in account/category names as "?". The PDF exports used a built-in font limited to Western European characters; they now use an embedded Unicode font (DejaVu Sans), so names display correctly. Applies to the budget report, bills-calendar and year-over-year PDFs (#292)
  • Marking a recurring transfer as paid showed a success message but created no account entries. The Transfers screen was only updating the transfer's "last paid" date instead of calling the mark-paid action, so no transactions were recorded; it now creates the paired transfer transactions like the Bills screen does (#291)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureNKgPUY81JziKewMWFs4QeLNIwZ8JqGBZ6wvFlsItL4R47yoDLAn4+I1T/pwgEOi7KR2lCUFBckiAdI78FONIy+JyCFhY0w4WcGEltsQdsytRMQYAggOWw+OlYvlDMPI6zoMoRfVcIvC3d+4pUrP91cJIVwi+bu5OIYO0C7ErDFCyvMlHK+ifsGvBluQJ377z8wnBUQIWSfudOuXewIyBHCF1QXsRXsVe0CIGWPNnT3ibuwxjm92a4vzwqdTEYy2qQwzPgYWPhgZofSdEN6j08iuwUzM0i9yXWd0IVpRNLb8RIo9lTzhJsjolrNFGZd0iiQk5A/4NQ6VOLKItVhwXJKOZk7KzyYTZmEki+PaeHKSEjEzwYNqv2tL4VPrBjyq5Y3bRTnYS3uBBCOnkWwn6ozQ4PitvSgPpcqciCtrP1hYAa0oQ7FsP8+BVsepO8gn8+lIcVjx7mW+YvufESAyFRXgAy61QBNjcd34vtoEfLqhdP4f37gZ/jdmCicDQ3sLw/eUIL98BylXmNvOge43vnYuRgGl9gBO11ENaP3EhqhqsrVr5Gyu07MGlMhCRlBn21fRN5sMORHFNx6pL/DcpwC0xtpfWEtHTCcEcLvArqfSiQSMrJaDvqftcQNMWYt4hGZKMVR7SYZsAragHUiMfvWDu1mW7HLNsW8PwySZDrHA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.31.0
Release Details
UpdatedJune 14, 2026, 7:05 p.m.
Changelog

Added

  • Exclude an account from totals: a per-account "Exclude from reports, dashboard & forecast" option (in the account's edit dialog) keeps the account fully tracked but leaves its transactions and balance out of every "all accounts" aggregation — reports, the dashboard, forecast, net worth, total balance and category budgets. The account still appears in your accounts list (with an "Excluded" badge) and on its own detail page, and selecting it explicitly in a report still works (#286)

Fixed

  • The account detail page's overview tiles only counted the transactions on the visible page (e.g. "50" for an account with 1,603). "Total Transactions", "This Month Income", "This Month Expenses" and "Avg. Transaction" are now aggregated server-side over the whole account, so they're correct regardless of paging (#285)
  • The dashboard spending chart's "Total Spending" figure (and each category's percentage) only summed the top 10 categories shown in the chart. It now reflects spending across all categories
  • The CSV import preview's "Auto-categorized" count was estimated from a 50-row sample and could be wrong for larger imports; it's now counted over the full file on the server
  • Editing an existing bill failed with "Failed to update bill" — saving the edit dialog (whether or not anything changed) returned a 400 error. The bill's start-date column, added with the limited-term bills feature, was missing from the list of updatable columns, so the always-sent start date was rejected before the save could run. Bills now save correctly, with a test guarding every persisted column (#284)
  • Opening an account's detail page returned a 500 error (the reconciliation-history request failed). The reconciliation controller was missing a trait it relied on, so it couldn't be constructed and every reconciliation endpoint failed; the account page surfaced it via the history sidebar. Now fixed and covered by tests (#283)
  • Starting an account reconciliation failed with a confusing "The string did not match the expected pattern" message (most visibly on Safari). The root cause was the reconciliation controller failing to construct (the #283 fix above resolves it); on top of that, the reconciliation screens now read error responses defensively, so any failure shows a clear message with the HTTP status instead of an opaque JSON-parsing error (#287)
  • The Budget Overview dashboard widget (and the digest, spending-anomaly and bill-reminder notifications) always showed amounts in US dollars regardless of your configured currency. The server-side amount formatter was reading the wrong settings key and falling back to USD; it now uses your default currency
  • The Budget Overview dashboard widget's "Total balance" now converts multi-currency accounts to your base currency instead of summing different currencies under one symbol (currencies without an exchange rate are excluded from the total and named)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureCseRrf2b0tfseaK8cBqqPjA8lhMT1C+aq6xVuP6vO3E6sRzawwkPNHdfK7CDaOro2TYW+agvm4g873WzOGVLIVa3FHEyFlnGRkFSwMz334bq1/Rcbw2WXdMbNUliZwdK76DNCauZ0JPz8FYIXr5cqkqbw80oHD/SWhWD5dTKRKJ2gpSvbNtXJfq32Sn04UVxrJq4StY11b5rJfCXR7P7RQxmFboIYJvhoVIfcebR+vighFLC9adkKVaF/xJ8tm1MVG6oJHJ4zKU87SV3+D8vB1xpxeWo2xRwseYSwg8Nk3ik6iXkcf4cHTACrCGyHhOXgCmltGkJ441alZ8kzOQCDe6Vw3Rx+zzgducfZGOQJPuIYcrpyZAAgN51xtDQJTWJNoT9jBrUmEv0r/ftZWj8QYnesnl8HgXUQPdLCsCaloLpISXkt7KzlHYlt4PgdMphbDBnuMROrXZtTeIwDCzwGAkatsK+l8HnM+FbMlpfszT7Ki1z2HYX/d+74aLRxkNUClx3fsQsxOtd0RxK9+/JPHW+W5Sv5kWbRSfiUrslL+pT7R15L9x4t3nFK8VUUEZSDcNynhSHxCVqrqOsV3mZ12eutyvQEPpN56qyLkaZmcoxOlOD2v4BKba8pBAL6YW05jx8hBWg9m0zAg4h3/qoA6zLDRrVfHi+LvUiiE1YDWs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.30.2
Release Details
UpdatedJune 13, 2026, 6:03 p.m.
Changelog

Fixed

  • Dropdowns in the transaction list (the column-configuration gear menu and the in-cell category/tag/account editors) were cut off when the table had only a few rows, because the table area was shorter than the dropdowns. The transaction table now fills the available height, so every dropdown has room to open in full (#280)
  • The Tags column couldn't be shown/hidden — the Show/Hide Columns menu was missing a Tags entry, and the column wasn't wired into the visibility logic. Tags can now be toggled like the other columns (#281)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureRXpaKwi4ViRdeYM6mjC3JtrlDOFrm03LMBFc2gQMktdYfBEoyMrW3YBp+DPKezxnLOmETNnqjXAI+oswcQLQMkRbAcjuD1dpBBZi7x8kmvtc0lZUcrKRw2QKUzDD5luZaN7JE14o393XlPFxdqkaUbJvWTltA5xK/XO2H72GyvEO7/7de7HCcP2G4XTK5kGSeP3PHRNQ5MjiB49QlM7D95p7Od374Fbr0k52h0sWFHSA14LgJSyPXCgHxxJMqVy7O76LlS1Iedg8B4TFBbTJZVol/8emaHjBHvEwVVzSIIkr9wdtZ60aqrEhJfTqaRwdGS0ks53VE2ROoE829Jnc3Xkz4Xxc0WEqH5a4vxbUWnA8NbuaFNAsUcfXW+0TDTUeLT34IV8c6GZkwn0z4a1parjkif0yyEolfPhNomKX/JMl74aSG5i2BkKyDH3OXMg9oC0/czhOIxluUuFCwWJyd6cBOGd6r/R382SMMe+mCHDpuBxIY12gRo4bzcAfmYMQ3e6rrtgpFwxBllUaK8lC+yPy9x9502QHhZem922Tz7HokfuXuFxh1x9Z6doBSvoZOe2H2PIKRupmFf4I9epoRYdDQZjatpZpN3+oZnz6DmY7f9+g3gaZ7Dl9dkPydm96203Pox5SGz9vhOQaXeOIw+l+rLnXnbodzB3eyqz11Ig=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.28.3
Release Details
UpdatedJune 12, 2026, 1:14 a.m.
Changelog

Security

  • The recurring-income update endpoint no longer passes the raw request body through to the entity layer — a crafted payload could previously set internal fields such as the owning user (mass assignment, integrity only — no data disclosure). Update keys are now allowlisted like the other endpoints

Fixed

  • Auto-derived recurring budgets (#269) are now consistent across all surfaces: the dashboard "Budget Remaining" hero, Budget Progress/Breakdown widgets, Budget Health score, and budget alerts now apply the same recurring fallback as the Budget view — a category funded only by recurring bills can now trigger alerts and is counted in headline totals
  • Auto-derived budgets now respect bill start/end dates: a bill that hasn't started (or has ended) no longer counts toward today's budget, avoiding double-counting during a planned cost change (#268)
  • Recurring income summaries (Income view header, dashboard Income Tracking widget): semi-monthly income was counted at half its value, and a one-time income at full value every month until received
  • Transfers page monthly total: semi-monthly and semi-annual transfers were converted incorrectly
  • Live forecast cache: cache invalidation never matched the stored key (changes such as toggling "exclude from forecast" appeared to do nothing for up to 5 minutes), and the cache key ignored shared-account visibility, letting a share-restricted viewer briefly see the owner's totals
  • Editing a bill's amount without updating its split template is now rejected when the stored splits no longer match (the payment would have silently imported unsplit and uncategorized); setting a split template via the API now clears the bill-level category, matching creation
  • Multi-account import partial failures (e.g. a deleted destination account) are now reported in the UI instead of masquerading as a full success
  • Import preview now also flags repeated bank transaction IDs for accounts that will be created by the import
  • Long OFX FITID hashing threshold raised so every previously-imported FITID keeps its exact ID (re-import dedup continuity)
  • Auto-derived category budgets (#269) now handle every supported frequency correctly: semi-annual bills were over-counted 6×, semi-monthly halved, custom-schedule bills counted every month, and one-time bills inflated the budget monthly until marked paid (now excluded). Frequency math is delegated to the shared calculator, which also gained the missing semi-monthly conversion
  • Auto-derived budgets no longer apply to past months — they reflect today's recurring bills/income and were rewriting history (including overriding explicitly-zeroed snapshot budgets)
  • Multi-account import: an invalid destination account mid-import no longer aborts the batch, and deferred balance recomputes now always run for already-imported rows
  • Bank sync: the post-import balance recompute now keys on transaction creation, not the import counter, so a row persisted just before a non-fatal error still gets its balance update
  • The scheduled-transactions background job now recomputes balances from the ledger (it was the last remaining hand-computed balance delta, and could race concurrent imports)
  • Import preview now flags a repeated bank transaction ID (OFX FITID) within one file as the duplicate it is, matching what import actually does; per-account preview counts include rows that will import with skip-duplicates off
  • Marking a bill paid by linking an existing transaction now warns if the link silently failed (no money movement recorded)
  • Extremely long OFX FITIDs are hashed to stay within the import-ID column
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
Signaturefa7u8mWcwya82OCYZOh+XZFPRJH94oqiBM5WUtEtvU3Dh6Lq+pMs8A7e2aCOa0Y6AbwWH7TF6ZRtwanfSh2PjQMwAaDFlR5anBdAvr89L/fn3eK0uSrZetqNGmAT7Itlc0mT5KowbTvtWDRdK46oR4jjqgXKay6JeO7caGbAcKmyfhJARbfTXsb5etz/yhMX72X33ayUYtCo8nQrtxLTGO5AAPIcFbq1pa3W3d1SHuQ7Ibksv3WXrZe79ngT4pQpGp6xtz3ervqo86vrI8qH8DDg6g9IJE8D1iseOiVzRv/KI/N06LnY0OvUHNZwGrJph5Jh3BrYg2/5rSYzEP5VzaGyZm+AS0DO1bXf9BC5OqbRl3s/FsM+4UgowriYD0S2Zwc4/2j/W3mDRjOdGf0MJxd8SOxv7uW2P5JL0TImjA7mTgppSipw1ShGTl8BU7q11cCtFmuCmwGfvPlRLQtMqEdr93gNkY84rAja08K9Ro1/ySZtrEWVRh/lYzQqmpazsjlw1V4x+KYtn65LHr9Zxd46ToleV5kv1tEZJ1u7nFXeNnrfThyz78EqvLbVxzcqphrfrImGOD9/VhUwryM58KtVz7+tXmLjn3SsSmM8sz9DEljbEKK4zTV9mQgIxviGwzNuIGEFD+HaW6HRIsAzRNtXow5oT7Kgpqa3BnJ3HxM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.28.2
Release Details
UpdatedJune 11, 2026, 6:33 p.m.
Changelog

Fixed

  • Dashboard could render half-empty (hero tiles only, widget grid invisible): a Chart.js resize on a hidden tile's detached canvas threw during initialization, and the widget grid was never revealed. Chart resizing now skips detached canvases and the grid is revealed before the resize pass. Likely also behind "nothing happens" reports after certain actions (#273)
  • Dashboard tiles with a saved account selection pointing at a deleted account (e.g. after factory reset + import re-numbered accounts) no longer error with 404s and stay empty — stale selections fall back to all accounts
  • Account balances are now derived from the ledger instead of running deltas — the root cause behind every historical balance-discrepancy report (#3, #89, #124, #163, #187, #194, #274). The stored balance was a running total that each transaction code path adjusted by hand; any missed or mis-signed delta corrupted it permanently. Every transaction create/update/delete (and retroactive rule run, repair action, import and bank sync) now recomputes balance = opening balance + net of non-scheduled transactions, making drift impossible and self-healing past inconsistencies on the next write. A one-time migration backfills the opening balance so displayed balances do not change on upgrade (#274)
  • Marking a bill as paid now warns loudly when no transaction was recorded (bill without an account, or transaction creation failed) — previously the bill was advanced silently and the account balance never reflected the payment, drifting from the real bank balance every cycle (#89, #274)
  • The app's own export→import now preserves transaction status (scheduled transactions no longer silently become balance-affecting after a migration) and restores the opening-balance invariant for imported accounts
  • "Skip Duplicate Transactions" off is now honored: previously rows whose import ID already existed were still rejected deeper in the stack (duplicate-ID guard + unique index), so parts of the batch silently failed to import. Intentional duplicates now get a uniquified import ID and the entire batch imports (#275)
  • Import duplicate detection no longer gives false positives for legitimately identical rows — e.g. two same-priced purchases on the same day with the same description. Identical rows within one file now import as distinct transactions (occurrence-aware import IDs), while re-importing the same statement still skips everything it already imported. Re-importing an older statement also recovers transactions the previous logic wrongly skipped (#276)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
Signaturekx2VkgWxozCE2LPp/nzgQQiqFxk/83sOdycv738Ly/uEwn/MhxF/kNtBlP4DMQbhmtkcHdt+kDIlQK1S5q1WHJWZQxjLc/ZCkj/ZEPkNBrDhHwdQCRh4TsRVJyfrIxXUTOCAKJLYk+0DXlnJB3kMhR81adns3wWNH9RkC4b62k3gXtzMR4n+jz/QJDGEAOXRpDUzxEm2TKqFot6sGRt3u0+rVo0bng6nogDJha0APeFI5Ujt+3mECw9MlxNt9nKbQlIGjAnraLVUFz0bXNLK7dbBS3PSzjLsUxhoNhAqMivfHEfLViOvIlCFNHzoWGxFnHK0flI2zJXUlOnaidOEyfhZWbqNpHZL4RZLIZWYQaztJgATNsK+L5aO0Md+Np1hgE8jkdY90gugiV06JqoPEWqCo/qSyaO9N3xYpeXrwfiL37JJqkigwg69RZN3OD1DfBT8ue7QlhT93dfg+39ERzbVY9QBu0gT+bwIs8tyE1MVXOaSjHKUkHab5dpGU3NQhvu/E1CO1BWA3dYvUUqvrvXKB96gm7IqNQEAkRi4JJHDPGtgzjERM+k8z/JA2xeJmPp7V3TZ/1WiKOoKMPz88soCJBMuj/LWnSpekLAGo4RJDy1JBlOm835e3ieJFVHwIwqG9YP7oRB/puFvYV6aaEXCnSkUcZV+z+2NXmHB8KM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.28.1
Release Details
UpdatedJune 8, 2026, 12:13 p.m.
Changelog

Fixed

  • Install/upgrade aborted on Nextcloud 32 and earlier with "Primary index name on oc_budget_import_templates is too long". The budget_import_templates migration created its primary key without an explicit name, so Nextcloud derived a default name and hit the Oracle-compatibility identifier limit (the unprefixed table name is exactly 23 characters). The primary key now has an explicit short name. Thanks to @TheUnderdev for the report and fix (#272)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureXdUz/Pc10uA7L3R+vTa/cI52W9X8nDyH33zElCWeS/xWeYgonfr0GwLhn4ywE7rtUQF8e1Y8GhETbSd60otnPduP+4rXp7+5+b+iMTa3qfYi6gAd3Y1YJJrZqK0yx2Fdqld/nhQLfFpVkUSQl/JQ78RZanEh779Af5RejNl7lolRlJYg7ZNrLrFasWrpyrLNsg4+Tf74/vMpKWDXf0FEIqjnXZ0LKJm7Yjig4uazy+a5vDcDOrfq6fLU56d9ML/jBJK+9A2loT3I5HP7H2cngdLpwk6+MNLiYQDsdNzLGJJK9TK4hn0Cj+AV80mAQ45beagh4H0SmEoDTPvR/hC7LLlU5rtioE1Rg1tCvlZfHBuPcH9LZMq11Q3HVbZnvzkTdG3lKQlKeFhP86QOIjiAg1Frm0yuOt4nMSdG36N+k1C5szF7HrCoH+u1XgdY6fKI6WW71RkqXJ2IhwOorxcijLVQc2l3wyDLqoQrHtJA2yWGsI9NXlq+d5ZLJ03T7xvcLBPgSDTz91KqBABqJYRdCGhzAuQPe9M814mDu5XgdoCJNUKNrAl6YGvLvJXyj5j8I09qImqsQx09AmEBxi8YTZDbxuO8U/g3yKO14aBgGu3Z+v8+h6xyqJyNsPEbHHxpjfSbwAF/9FlvjA64nOTqPam3fPOjZAdqne5bgf05gFY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.28.0
Release Details
UpdatedJune 7, 2026, 9:59 p.m.
Changelog

Added

  • Shared savings goals — share a savings goal with another Nextcloud user. Recipients see a "Shared" badge and can view progress; with write permission they can edit the goal and add money, while only the owner can delete it (#255)
  • Auto-derived budgets from recurring items — a (sub-)category with no manually-set budget now shows its committed recurring total (active recurring bills + recurring income, normalized to the budget period) as an automatic budget limit, marked "auto". Typing a value always overrides it (#269)
  • Exclude extraordinary/one-time items from the forecast — a per-transaction "exclude from forecast" flag (with a "No forecast" list badge), the same flag on recurring bills/income (propagated to generated transactions), and a matching import-rule action. Flagged amounts still affect your balance but are kept out of the projection averages (#270)
  • Reusable CSV import templates — save column mappings and import options and reapply them to future imports (#247)
  • OFX/QIF import account routing — route multi-account OFX/QIF files to the right Budget accounts, remembered across subsequent imports
  • Bank sync: pending transactions — option to import not-yet-posted (pending) transactions, automatically reconciled when they clear (#257)
  • Bill start dates — a bill only occurs on or after its start date, making it easy to change a recurring cost mid-year by ending one bill and starting another (#268)
  • "Shared with me" expenses view — recipients can now see expenses that have been shared with them (#248)
  • Dashboard period indicator — chart tiles now show a read-only indicator of the period they cover (#250)

Fixed

  • Dashboard now collapses to a single full-width column on phones, independent of your configured desktop column count (#249)
  • "Excluded from reports" categories no longer appear in the Budget view (#266, #267)
  • Category spending chart shows income as positive with the correct label (#265)
  • Tag-linked savings goals now sum net realized contributions (credits minus debits, excluding scheduled) (#264)
  • Recurring income description is now persisted on create (#263)
  • Transfers are now excluded from dashboard income/expense totals (#262)
  • Account Breakdown report now uses each account's own currency instead of a single assumed one (#256)
  • Fixed a PageController crash (TypeError) on unauthenticated requests (#259)
  • Quick Add date field normalization on iOS (#235)

Docs

  • Documented the standalone Quick Add page and the iOS home-screen workaround
  • Noted that GoCardless no longer accepts new bank-sync sign-ups; EU/UK self-hosters without an existing account are pointed to manual import (#271)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureiQMjVEdG/FWcc56MAPwvDd04E0ERl5pUWkrRWtdYdgbboBj0+7YAo+rDODFz5qC3EPqWBr7XRkjXOfvn9+m61v0w88Qy8SZQIZRHTAwRJuK5jDQbpfce5dropQgKW8btEIzI3BPE+DFBIDeV+qLNQEYT25ApMkUAz44PumVV0sJMibCGo0JBgIxHCPyem1NNjYaX3qQDt41eg8I5rH8wLCWGa7lNTtGyp8vaJ4ck0sh4J9sPuVzMdJoXQDHfGe5S8YY3GTwgvwyloNJQAFO+SQzm5WX6mC/IKAfpxwG82cQAEMm6B4geyHwaYGSFDEgrBuHOZj2fQmvQgzoarRN+U76bOhjQI0IqU76Pno3qM17eF+UKW8peDiqFBXpepGYfDoeyjQsF2GqxIK3C0bNUR5bp9RjNxkWckwvS2ihvP/2rg4lr05MuDDmIdBYG9Ny+PT9dEWBssQkXzIVX28Ox6P8xkorH0n5EoSRl3j+KMXbM34QteNMt1+jgsHAxcS8H57CwV3MC0uqZnhxUu/LbwIGHzvKbC6vN3F/3l6F+35rWM7UaQhdvr2W/1q5Swj5F2sp2Bq5jgrxbWIuUB9+pzftASgVUEmtd6blOUlJuuJj1wmaIrA9jx21+Bg8t/OmrQqB97ZHzint0WTdo7KTOviKZGnoZVXeoQthPmSyW7Wc=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath

Nextcloud 31

Budget 2.39.1
Release Details
UpdatedJuly 11, 2026, 10:22 p.m.
Changelog

Fixed

  • Share recipients saw wrong dashboard totals. For a user whose accounts are all shared from someone else, the Income/Expenses This Month cards counted transactions in the owner's "Exclude from reports" categories — the exclusion list was built only from the viewer's own categories, so the owner's internal-transfer legs inflated the recipient's income and expenses while the owner's own dashboard was correct. Shared categories now keep their owner's exclusion for every viewer, and per-viewer "Hide from my reports" mutes are honored by these totals as well (#326)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignaturePTjw+Z1r+sKWQmZSlNfYPSTl5PFejqjMEgNyvQR1FXSKor9zNXxtxcAM0eYYthPn9YEprCKS9V6NC699ZbeWK6WbdRtprmP+rsvCifpjQyVtPDGLJ11LWzLVgw84pTHcolsdY756JO6KWW8hxp63bq3s4QE4rs3RTCEyHSpzpZ1pXSydTCTvheL1M/rtg3XyKpzBkoOqGh39Dnh9TH7JQt+cCB8VD84aeHcsvnxUkQJU3AmZwYGcP8wSNeLmDjt1S9yCv2h8NAReLQeTMbmdzNJtioLLiifkedz5bEgjVximgqI99mmV+8uhRBY0keT1hWXR6En4IrRkiJwlEyNZRHkukMa9jNmoNVvoRYCuQOVZ1wWGtkS8MCz5Ig63yPijEMh1bqnoi3+WA1g8s23dJVIziAHSKl0F+V7DKThsw2jBouMZeZ7bG0nMS9bFLcndAm1MbpWyuZATotUExNeYhEZEIwUOuF+esV5lnDoHTf0i/q6OJGa4hPPiNTE/rH4PS3Z4pdEZ4V9YhxYfsSs/9y+Y7xg/ZQWnLq2YVsTR7V8FgQwU4Bi8OGLsfbYZhSaUnHv60ObUB2U4WkD1mZZqDHKJXAIgVGulvHFAkXQVeGpRqbUCQNvgiVU8hfRaRmEr/y9Usub/3srDJn7qybeAxfOxA7rL+AlakEZBECHPJlY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.39.0
Release Details
UpdatedJuly 11, 2026, 12:57 a.m.
Changelog

Added

  • The Bills page now flags payments without a recorded transaction. A warning card lists bills that were marked paid in the last 60 days without a transaction being created or linked — the situation where the app balance silently detaches from the bank. Each entry has a one-click Record transaction repair that books the missing payment (dated the day it was marked paid, both legs for transfers, splits applied). Deliberate skips via the Skip button are not flagged (#274)
  • QAR (Qatari Riyal) and JOD (Jordanian Dinar) are now available as account currencies. JOD amounts use the currency's native 3 decimal places. Automatic exchange rates cover both. Requested in #321

Fixed

  • Editing a monthly recurring income never saved the changes — the app showed "Income saved successfully" but the Expected Day (and every other field) kept its old value. Any update whose payload contained an empty field (a monthly income always sends its yearly-only "expected month" as empty) reloaded the entity mid-save and threw away the edits. Thanks to @redsteadz for the fix (#324, #325)
  • The "Exclude from forecast" checkbox on a transaction appeared unticked whenever the edit dialog was reopened, and saving the transaction again then really did reset the flag. The flag was stored correctly (including when set by an import rule) but the transaction list never sent it back to the browser, so the dialog always showed — and re-saved — it as off (#326)
  • Income/Expenses This Month (and the other report summary totals) deducted transactions in "Exclude from reports" categories without converting them to the base currency, so on multi-currency setups the deduction was applied at the wrong rate — and for a single selected account the deduction wrongly included every other account's excluded transactions too (#326)
  • Imports no longer bring in flagged duplicates by default. The preview's "Show duplicates" checkbox — on by default — secretly doubled as the skip-duplicates switch, so every import ran with duplicate-skipping off and rows flagged Duplicate were imported anyway. It is now purely a display filter; a new explicit "Import flagged duplicates too" option (off by default, resets each import) covers the deliberate re-import case. The preview's per-row checkboxes, which were never actually read by the import, are gone, and the New Transactions count no longer includes flagged duplicates (#327)
  • Marking a bill paid no longer suggests unrelated transactions as "existing" matches. The Existing Transaction Found dialog offered any unlinked same-day debit as a candidate — cigarettes could be presented as a "match" for a mortgage — steering people into marking bills paid without recording the payment, the classic source of app-vs-bank balance drift. Candidates now must match the bill by amount or name, a weak match is never pre-selected (the safe default is creating the transaction), and the "Don't create any transaction" option now states — and warns after — that the account balance will not reflect the payment (#274)
  • Overdue bills no longer double-book when marked paid. The scheduled placeholder pre-created for the next occurrence was written as an ordinary cleared transaction whenever the advanced due date was not in the future, so it counted toward the balance immediately — alongside the actual payment. Next-occurrence placeholders are now always scheduled, regardless of date
  • Restoring a backup preserves every bill setting. The data import dropped most bill fields: custom recurrence patterns (restored bills then advanced one day at a time instead of quarterly/etc.), transfer destination and description pattern, auto-pay, reminder days, tags, split templates, start/end dates, remaining payments, forecast exclusion and the future-transaction opt-out

Changed

  • The Match transfer dialog now also lists candidates from accounts in a different currency (any amount, within the date window), so cross-currency transfer pairs — e.g. imported from CSV — can finally be linked by hand. Automatic matching after imports is unchanged and still only links exact same-currency amounts (#326)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignaturegJm3RDjkvl1EBICN6Us5TsX5SdQbSGnRHvRIZmLsYaclkDVqW/mYCBjVgwjU50ifkv72zl3kxf5a8S3yxpo2WX6cnhkyyibLhs5Uzdrj9Egw47yYgMun8WH4647Y0uGP7QrX3Yf51SO7Ve+JWgdMRX+hWvG4K9hxUgAwWR3AmTYRsRXpmsNrOr97q2SPC3V0g9bAARDeSeWDGQ8SR05+OMIrQRj0Ct56fC1cTNWzHpPT+Qs17SJJcUUnK3tJWsM3wvGiwk62YMBy1cv1jx3JkOXnYvsa8bpSG3sL7aqr05QkAkvL9sSGxka6mDrC3CN1LHlwwQjPjWwoX9YDtOI04j0JPd0SzlhMYILaZNyouhoNTuY5YhDIG4aLjg737AAEBHgU3jvpWxaM8Oz2+9he9LkAJW6qA9DuzB/FmDNKxyJTmQ6S0LZ21d+Hkr0LD/2uKRSywlRBld+UNCWby8YrgIkyGomPH1rjDG28y1ApiqSozetcjSvDYwqULM2mLXU9OjD9a8UJk8B1R4Xd0TqgMmDCaAZrTdRLYYdTZEEaFbnDkbm8p4z2q+UGfn/UCNEOkg5pbu1WAsRubIKkPzNTz7gTSLI9u+qJfvoZg9c3Ae1OhXWDD9k/2Z+pCrbJhu8yDX+2JukXoAxNS+bnxaDxdoxRzIM+9jcbb0eyG3wJuLk=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.38.0
Release Details
UpdatedJuly 7, 2026, 1:07 a.m.
Changelog

Fixed

  • The account selector saved in the gear settings of insight tiles (Monthly Comparison, Large Transactions, Weekly Spending, Year-over-Year) was silently ignored — the tiles always showed all-accounts data. The saved account now actually scopes the tile's numbers
  • Importing transactions that trigger the Auto-Link as Transfer rule action no longer shows "Cannot use object of type Transaction as array" on the import screen. The import itself always completed — the error came from the transfer-linking step afterwards, which also means those transfers were never actually linked (#314)
  • The Recent Transactions dashboard tile now honors its "Rows to show" setting above 8 — the display respected the setting but the data fetch was hardcoded to 8 rows, so values of 9–20 silently showed only 8

Added

  • Edit auto-categorization rules as JSON. The rule editor gains a Builder / JSON toggle. The JSON view shows the raw rule structure — editable and paste-friendly — checked when you save, and switching back to Builder repopulates the visual widgets. A Copy JSON button makes it easy to move a rule between instances (category/account IDs are instance-specific, as noted in the view). Requested in #318

  • Hide shared categories from your own reports. Categories shared with you gain a per-viewer "Hide from my reports" toggle on the Categories page. Unlike the owner's "Exclude from reports" flag — which stays owner-only because it changes every viewer's reports at once — this only affects your own reports and dashboards; the owner and other viewers see no difference. Applied at the SQL layer through the same choke points as the owner flag, so every report and insight tile honors it consistently

  • "Exclude shared accounts" on the remaining dashboard tiles. The per-tile toggle added in v2.37 now also covers Budget Progress, Monthly Comparison, Large Transactions, Weekly Spending, Category Trends, Cash Flow Forecast and Year-over-Year (shown in the gear menu when you have shared accounts). Bills, income and pension tiles are deliberately not included — they show entity data, not account aggregates

  • Clickable spending charts. Clicking a slice (or bar) on the Spending by Category dashboard tile or the Reports page pie chart jumps to the transaction list filtered to that category, scoped to the chart's date range and account. Tiles set to "top-level only" include the subcategories in the filter so the listed transactions match the clicked amount (#317)

  • Per-bill opt-out of pre-created transactions. The "Create future transaction for this bill" checkbox is now a persistent bill setting instead of a one-shot option at creation. Bills with it unticked never get a scheduled placeholder — not at creation, not after marking paid, not after skipping — and toggling it on an existing bill adds or removes the pending placeholder immediately. Previously the checkbox only affected the moment a bill was created, while every payment re-enabled pre-booking unconditionally, so unticking it never actually opted a bill out (#311)

  • Convert a transaction into a transfer. The Match transfer dialog gains a "No match? Create the other side" section: pick one of your accounts and the app creates the opposite transaction there and links the pair as a transfer. Until now the dialog could only link two existing transactions, which left no way to correctly book payments to accounts that have nothing to import — e.g. a loan tracked as its own account (#313)

Changed

  • Scheduled (future-dated) transactions now show a Scheduled badge in the main transaction list, with a tooltip explaining they are not counted until they occur. Previously only the account detail view had the badge and the main list showed scheduled rows in italics alone, which made a bill's pre-created next occurrence easy to mistake for a duplicate booking (#311)
  • The transaction list Total no longer includes scheduled transactions — they are placeholders for money that has not moved yet (#311)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
Signatures/wP/jWqAxqTStZPLKWl/5nyJk/xpeAom+Kp7KakVOdJmzhNv/Z6KM/CUUOrGem4Qj5G1OEZ2tNrPkTneCVvfFU2S5aoayMDgcRaGquqwZisM/4a0KV9Husjq8mV0RVoqco16HBH8PUY+kYsbeWRcSp2q38Zq99L04zb1x5XY1rGe5YdP4/IydUoMpyzTtsGF00Tj6OUAMvlDTnJqCcetscuXX8yo33xm0dUfLxjZD2f9hsn8UTCwNN7v1+yBhwNN4jJsfyGTN+92XV2YDhRCfVWq/3bGqphHo+nYQvbyjndJRcaAwybOquX6MH7+wpDa5wpvNw9xzc2sYNm2FM08SYep3cX7uoXngifGZu2FBqyNHQ198dqEwqJbEVv2DrK5cAnQkbSS1glYYney/uXAlsqLEinHirrShNYRoq+ZEkxUhpdung3zSWwPe0Fd/mWh2chHiTV20A2tCrv7FRuRadpf75bq+y0xuIglVZQy5E1dT2nk3lPUUwB01w/ggmwrJ91hOchPoyoRoDhoBNxZJs903bQejWR/MdZ9pbXVmwxj1EOq8oWfWeQ5B+OEz/LbcplibODsNv6IUIYU++gxK8d2XCVzBgV2ayMqsRxFDxItgluqDcu4oTW8mh3A4z33PvbeCFFMsj2bKFbOslmuT2ZiVl58oTaQRTh61xeKEA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.37.0
Release Details
UpdatedJune 27, 2026, 11:16 p.m.
Changelog

Added

  • Exclude shared accounts from reports. When other people have shared accounts with you, the Reports page gains an "Exclude shared accounts" toggle so you can see just your own accounts' figures. The same option is available per-tile (in the gear menu) on the account-based dashboard cards — Income vs Expenses, Spending by Category, Top Spending Categories and Recent Transactions. It's off by default (shared accounts are included, as before) and only appears when you actually have shared accounts. Note: a transfer between one of your accounts and a shared account can only be partly seen when shared accounts are excluded, so income/expense totals may be slightly overstated in that case.

Fixed

  • Saving share settings failed with "Some entities do not belong to you" (HTTP 400) when the "Auto-share new" toggle was enabled for a type, or after using Select All — the auto-share toggle (which shares the same data-type as the entity checkboxes) was being collected as a phantom entity and sent as a null id. Entity selection is now scoped precisely, so share settings save correctly with auto-share on (#306)

Changed

  • The Categories page now also lists categories that have been shared with you, shown read-only with a "Shared · <owner>" badge. Previously it showed only your own categories, so anyone using a budget made up entirely of shared categories saw an empty page even though the categories worked everywhere else (#306)
  • Categories shared with you at Edit permission are now editable — rename them and change their colour straight from the Categories page (they carry a "Shared (editable) · <owner>" badge). Read-only shares stay read-only, and a category's type, parent, budget, report visibility and deletion all remain owner-only (#306)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureFqJ17XG/szTfkAMsF+oCODYGClVjdeGArgFi3SrgeGhg4CFFzIVO98XEnYhxeCnwOcYGivzy0uhe60/Vv7kgml+lIVvRL1EZOxvjOES2KksQ50fqxGZSNz3EL54EA6R3Yvo6uLFBM9cbK0mmY5H+4i3UozKhKwzRa6PJLIZzpBsjtprJXHojWsQMR5KY7WDDbb9yD32uYzMnrXMxOiQ2PZGtG7aIhLS6DzC7Mtp/oLUgyRqBWoYMUWWLLi1qyeOr4/8Tdm9H5I36oxeoX2ZQlVuprpRjDPW5EITrljbyuIPy3CdAFn5tvvt8rkurEgCtPAaMv7gSXRZto6rJJqS4woUqX310+J0re9qa53Ls0J7Kezo5WpENoaFsvT6McjVG/4k6k4YN1/l74p97fFfR+1T2kC5VptpwVz4GZ2aSF9t226Sdkft7sv72aC3oQpa4PN3PIWj113aN2X5nnCGiD+NUW282/yAdacvMWVgB+t+Rbm0FIyWtGnbw0dKAlY3CAmQoBvqX9f2vqn1OFDxJhejg/i7+FAWQD83LIk6u2kNg/N4e2+hgLtO45wd5MU6TLXXTrb1mlikbbiP80Rla1p50fScosYTCqjJfz2lh5U6D2h/nquGHHvhf4R9q7eSkykmELHZUKiUyYlrLrOfiuxGRqaWSQWp9hm0CUog1HBE=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.36.0
Release Details
UpdatedJune 27, 2026, 1:15 p.m.
Changelog

Added

  • Auto-share new entities. Each person you share with now has an "Auto-share new" toggle per entity type (accounts, categories, bills, recurring income, savings goals) in their sharing settings. Turn it on and anything you create from then on is shared with them automatically, at the permission you choose — no more sharing each new bill or category by hand (#306)

Fixed

  • Code-integrity "Some files have not passed the integrity check" errors reporting FILE_MISSING for js/.htaccess and vendor/tecnickcom/tcpdf/tools/.htaccess. The app no longer ships any .htaccess files — the Nextcloud App Store strips them from the published archive, which left the signature expecting files that were no longer present. Neither file was needed (the JS one only set a redundant cache header) (#307)
  • Deprecation warning in the Nextcloud log — the notifier now throws UnknownNotificationException instead of InvalidArgumentException for unrecognised notifications, as required by Nextcloud 30+ (#308)
  • Reports and the dashboard summary were empty when a single account flagged "Exclude from reports" was the only account selected. Accounts flagged out of reports are now only dropped from the all-accounts views; explicitly selecting one shows its data as normal (#309)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureYxqf1NnAucAiXFVdwVmQJPaPUyuExQ8t/dwv4tDVpFb1kXDtGcIWoAdspiDz+HwdyPe+ul+/2GcDWiLPTF3TvIHwIaV+h+guDRYBEHMY95+Hy5W0BSuwBC7gto5dfsZEhL5xj5OsRIYrY/Fo8Tqj99kVzDK560o9NgI6Bp6ZkQpbwPRbTnbxUX27oF0oDjrg1ArS4IiE4ghZW1ct74Mlv4uoeg5zaVQlucrZK+rBJXixtpDnImHLPMkTvd+1bmkQTFtvArS1A37YkXkLKrKn4pzWvwv/q46ddih1NXBC7o6UoBwP1pWB1OxgNq3/98OdWyPs4GLumMmRdg+7PbY95Go97lBbNc/1mrBB9qQPXirFxYHMZWVDSRHSNRJ9cSMnZA/YzsVeOZOVkIwJWXhC5YGAEN8nq8HKIMBHzmi6UYdGM2VvGPmNZ+K3wlGMIkKlVfWfIJ7XIOCe6OLvQbwR/ATZ7pUyOE+AR21uu27zWGJ4iB4y/eCfCSE8vIxyPW7L0dwkzxU13iNNNxAUQgbNrs8EiQBLQlTCaBWCWp296Dds5nEGMEilQKX9vEXAhY9KRG5dzJjoZhZ14tWA3Hjp+5/Gs2AM4Bh3Rp1OGdhfQhFDmt/2GXcL16lfDcX28K1ub4FPYE8MEz6qDmLhqqwv9FeXQQbT/ZKdQn8NwuOlGFE=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.35.1
Release Details
UpdatedJune 25, 2026, 3:28 p.m.
Changelog

Fixed

  • Categories marked "Exclude from reports" are now consistently excluded everywhere, including the Income vs Expenses trend, Category Trends, Top Spending Categories and the monthly spending chart — not just the dashboard summary. Exclusion is now applied in the database query itself, so reports and dashboard insight tiles can no longer disagree about which categories count (#219)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignaturebX/9kwpiVjwDj0f2eU5xNE7zUpt8T/nkGCFg9HnDQoKynM7c1KaXhbh4isVQBbgy5kPGXSDP7DRfuSTYY5/M3PSv1JE8gOk/9lz2AGmTqlXrf4Kgq9oARAGcVHXB955dLvDkj6Vrk7zZ9cwrjq4aMBu02dW8ZgyAHStXybiWmkAbIxK768MHM4n5FXTRFw3P/ELVlDjCxgIpxVxD5EZaaA+n7RrjN9MRY2R8/GN7Og7yijcmnutMWtna4K19B9c3ShcfUkrwotvCUz3c+K10VQSfzUpN6RoindDB0j716jUZQ6IKzXBNNRiOjQ6N6s1MlmKwjyFyw0PY509hJY+dtjBEQBbFjK0pw7ZElfW4zDWteDzWRm7M1VjzUlRgPLsg7CJ980Rg8suZAMh3UH251vymCH0ykpMYqK1qiWDurz5GWdaDov6Z0YkQPQLnszzPa60kbO9VUHrYnG+6+KA6GoPW0EHFEqaUxXv+mRLr8Pm8BhjCiDghO7mlHZFN95hN5gkNyBdIPA9JmXAdnkrJBSQaDvZdejDwFJL+T+PgA2f9JomB8BQ/WkZ4uukyKUUFYToOhntQTe7dfE+I4VsD6BycbY7smaY/xGx6EvyXfntpYkgR7Fe2rYKaxBrcRcnhTmQBeLLz85M7fLKVjME72niQdRIZRaMZ+OmpCxKK2qU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.35.0
Release Details
UpdatedJune 25, 2026, 12:36 a.m.
Changelog

Added

  • Pensions revamp. You can now record a contribution as a transfer from a bank account — the matching withdrawal is created automatically and kept out of your spending — and record withdrawals/drawdown back into an account (#304). Scheduled (recurring) contributions (monthly/quarterly/yearly) can post automatically or on demand (#251). DC pensions gained a configurable projection target with a progress indicator and a "today's money" (inflation-adjusted) view on the growth chart, plus an optional Pension Projection dashboard card. Bank legs that fund a pension show a Pension badge in the transaction list.

Fixed

  • Background-job "class does not exist" log spam that could appear after updating PHP/Nextcloud/the app: the app's autoloader is no longer "authoritative", so it falls back to PSR-4 and self-heals if PHP's cached class map is stale after an update (#305)
  • Newly-added dashboard widgets now load their data immediately instead of staying empty until the page is refreshed.
  • The pension detail panel's balance history and activity are no longer broken — those views called endpoints that didn't exist; they now show a proper balance chart and a merged timeline of contributions, withdrawals and balance updates, each removable (#251)
  • Editing a split transaction with three or more parts no longer zeroes or overwrites the other splits. The last split row is now a read-only "remaining" amount (transaction total minus the other parts), and the dialog blocks saving until the parts add up (#303)
  • Spending-anomaly notifications no longer crash with "The arguments array must contain 1 items, 0 given" — a stray % in the notification text made Nextcloud's translation layer fail, spamming the log every time notifications were rendered (#305)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureF/7pZ4sNzjJuqXXZoHmO+9OmUzkQz6ZDke3vkONfZ2uGfzBpwpDSIiGlfNv6gt40Ho8NTPNd0JuM+ESRohLlPAAftFoF+L4h+asH5s/lncoxgTZevEFl7NE14s+sPVdGdZqXGi0b3mohB+f1jOudpVbgB0bmCDvnZMEKiMSjB7XwH9iQqzu/8WyQNd28w+Bz2TbyAfu2PCtdD6jsmVCbvtCkmEdKOVJzRWuExH+vwvZ0ltX3mtorPl6HEzqKJWoDYG3tdbpSwml6w9F3qj8naVZ3tZYBrfvwABHoMD1LYpYwRss5C9UpJvu6UFfKQ4Xso1tBu5U+tYlAPKLbQ5J70o0C1aP66R+FvL8RlMHpY93duR32qZkT/6xV0NYQpd9xzXoLbB5YkZJuBLV8m3oP9k/pNEy8vwF5Kkb+/6zrJt4aSH/iiAqBoqvuT1itwScYsNpGHXWOrGHioCKiGkcMvamfr7her1fQ42wNiVIVWKaxNtjeYrVjmHCtWA2awjv3XRfcXdcL/4stuDpXxQ0Dnv2S/Ey9ZbGbqpc0DNyPZfKie5/QK5OnHPW9F8nHUsEhxDLbNezo11fKm1ykE0ja4nTZFKL3ml2D4aRDMYQe35MWJvW/fLcNW7dYOV969ZI52G8jTIUI/YphcNfCNK24fVkljrcBSybr8WavbELxVR0=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.34.0
Release Details
UpdatedJune 24, 2026, 12:34 p.m.
Changelog

Added

  • The transaction list filters now include a Reconciled filter (All / Reconciled / Not reconciled), so you can quickly see which transactions still need reconciling (#301)
  • A Budget alert threshold setting controls when a category appears on the Budget Alerts tile (default 80% of budget). Set it to 100% to be alerted only when a category actually goes over budget, rather than when it's merely approaching or fully used (#293)

Fixed

  • Creating a category (or account) no longer fails with "Unknown column 'excluded_from_reports'" on instances where an earlier upgrade was interrupted or restored from a mid-upgrade backup. A self-healing migration re-adds the affected columns automatically on update (#302)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
Signaturey+Qi2+U6CexZu8i+0DGrbLXwFbp+cHLVW62WRSfrovEAuJrnZy8paqAacEaE570GoHVd1b23Yihz4oDfOYStLASDVFk7xhVrarnlIqv4EH+Jyw0IR2iaLR+IvhJmSZc9N5nQ42i2z8UYetvQo0znzzNPmpT2FEJB1Sty9kCfHL7HiisG4hYwJp528McMVXgCYfn/XOZUQzOVY6rvis1hP8CiFbE4UMUQj/SgDpRjimcRCZy8fsRLgZHcfO2+BKYCSt5lqLDJSzsmewBFNMVWDdtZwPUxqyK8xaTwSnwWNBNXBRg5ZcDLJhhIJtk9cEezVTdJBZTw3wx7iCztR9RFQi9CZsRz9U9S4jLEdcV8m6OTa8XG22s2ZHt+I+hisGtlC1TOQ5fpPfSe9onWdA8jgC68RAFeOLJ+KmSkLQN1bbr9gUw47oB09Yd9sEtUDcFapfv+x9Zl3/s4ExwO6xDS/bwmRyZ/fq1z2jhVu/lMFd//+9ciOrCdty1p7440JVs/sx71Qcc0mRhZsMtIRYyBD2EFceUHx8cQCtOLL99+JtGkTakCMCwIxghuGoXnrq+9mRWjgROn1ysGEHDUyC8ZKCJ5f8TXOllqX2g+2fyOpFzHR66oP7lPwI5y3eW4VYJGT/lQzTavAtU148X2XaBUz+XA8Djuco3CCuGJuT9FhSU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.33.1
Release Details
UpdatedJune 18, 2026, 3:03 p.m.
Changelog

Fixed

  • On some installs an earlier update was recorded as applied but didn't fully run (an interrupted upgrade, or a database restored from a backup taken mid-upgrade), leaving the excluded_from_forecast column missing — so every new transaction failed with "Unknown column 'excluded_from_forecast'". A migration now re-adds the column automatically on update. (Also surfaced by the new database-error detail field added in 2.32.0.) (#289)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignaturewGNDwrdOGHhLxiEiJQDsZrcL4BFQbGBTjeDU/3VJql8bIeDBHITKzJ3HH47kV1bFmsZ35q0o7xh/r4q6Kj9/SXM8gQCTxEtQ0q80MS85LGy5+9dUtJ0yBvrLfE6kwpNPDH+kqwBVcAGxmLr9vYau5uTFGdeB0WZ3gmesUvT5kuZfdREwJDQ19QWR40pJjHRcWqM5KnXCT1/wq7btWj9s/Vf9GVQvo85g9R7adODG1PVBr4gM6R9nTgsrn+60BJvNNO5f3W3wbuzvqaJhtVdknB9Z8fc7Vbq6mh6TgSPBmXgiK2VdCAWPaW2EmpVL8iwgOGazPGSajPkMZNNZDhzDNEpLcveJl61g/x5dVAxOevwFnN4CaX5c/YYppjcqtoWyYgoTNMv3enF3///tD0wS68iQzcU5UNmsOOKsAUVvRnf/oOX2b13NfsKPONAxcu4Q/UG8ybPqYwXT+T6Vs+IRmoLJLnOs/BUgbqmmRIG1Wfs2BusDFKNHHWoW1Z5t+GDLGx2cyNci7+rKPRh2seML8iPrt9lNv2M5NjzIJ9Wm0Xt0FKpIetR4gDpLSRvBtINaQ0jVuYVixt1yDKMUfE6GH4sNW9rNi2ZoKptz2MIxouBmLNXezA5Y0gvIlgA11Bi0YBrKPUAtmxNl8Jyxhle2Ll5bZbsupMy1otRB/+NGEOs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.33.0
Release Details
UpdatedJune 18, 2026, 12:52 a.m.
Changelog

Added

  • Run reports on multiple accounts at once: the report Account filter is now a checklist — pick any set of accounts (e.g. all your credit cards, or all your checking accounts) or "All Accounts". Applies across the summary, spending, income, cash-flow, category-by-month and year-over-year reports and their CSV/PDF exports (#299)
  • Saved reports: save a report's settings (type, period, selected accounts, tags and options) under a name and re-run it later from the "Saved Reports" picker in the Reports view. The period is stored as the chosen preset (e.g. "Last 3 months") so a saved report always shows up-to-date data (#299)
  • Dashboard tiles that can be scoped to a specific account (Spending by Category, Income vs Expenses, Net Worth History, Recent Transactions, and the other account-aware widgets) now show a small label in their header naming the account they're analyzing — the account you picked in the tile's settings, or "All accounts" (#296)

Fixed

  • The Reports period selector didn't drive the report on reopen: the dropdown kept your last choice (e.g. "Last Year") but the report always reverted to "Last 3 Months", and clicking "Generate Report" used the reverted range instead of the shown period — you had to switch the dropdown away and back. The report now always matches the period shown in the selector (custom ranges are preserved) (#300)
  • The Quick Add Transaction dashboard widget couldn't be used on mobile — the lower fields and the "Add Transaction" button were clipped off the bottom of the tile, so a transaction could never be submitted. Its form is now condensed (each label sits beside its field with tighter spacing) so the whole form fits the tile, and it falls back to scrolling within the tile if it's resized very small (#298)
  • Editing a split transaction's amount (e.g. inline in the transaction list) left its splits at the old amounts, so they no longer summed to the transaction total. The splits are now rescaled proportionally to the new amount (the last split absorbs any rounding remainder)
  • In the edit-transaction dialog, changing one split amount now adjusts another split so the parts keep summing to the transaction total, instead of silently drifting out of balance
  • Split transactions weren't counted toward category budgets or spending. When a single transaction was split across categories (e.g. one $1,000 payment split into rent, parking and a deposit), each of those categories showed $0 spent. Split allocations now count toward category spending everywhere it's shown — the Budget view, the Spending by Category chart, and reports (#297)
  • Large amounts (e.g. values over 100,000) on the dashboard hero tiles (Net Worth, Income/Expenses This Month, Net Savings, Cash Flow) wrapped onto a second line, splitting the number mid-digits. The amount now stays on one line and its font scales down to fit narrow tiles instead of wrapping (#295)
  • The "Asset Value History" dashboard tile (and "Net Worth History") showed its empty-state message anchored near the bottom of the tile instead of vertically centered. When there's no data the message now fills and centers within the chart area (#294)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
Signaturejj+nUiPNSYYgtQ/7XYIkJNFo8vWIHaX28Q0XTtpN6RWmrW8qrJBIs2jTaaHwebC7SB5f7GP6vQxghh9+nCWfA+KlTKbm8YJg6yzah9xdTLo/JcUhTOinlH9yYoXxMiIY9EVwQLsPmef4sprTsS9oqBeSgZ7S8WRJYnxjAuljee9q0Sfai9AK+RQzBk6kgENhCAVt95ooZ3H5ukfFBSb/kyXa3IU+ngu6g5B9DgiJfBduecdkLEfc0dhYKelUyNaZa61qoG865podTGJFCFqzoSnlCXgRcJqJHjhdTERIeu/nHQAL/PhaPy0OSWK8l+kyrGveMEKDM6LvQ0Eo6B9Ul0ORobundabEat67f/hqaTmnDldOkkEm5a0WAYeQvYeeZCNLtiF26pWk66v6eQhXsrT6IwcJ/gxaC6oS8URm5yYub2iW9nVq6uZXRMJavJr8CmYl7MSqQRVvFKGlwHvD7X+YfEs+htKGYM017iWdICfQv/wbGi5JzIxqdm7QKrV9EGxgl4GFWvY/cyGZt4awfhoy4RljlFtsfJ02askgVFUloVGKOWeqZ5NbqXMDC+UonPONQ/RPM64u0L3NdVvmcXOwA8RBHCg1qgEiVkDBSsJyhK55+1J7Yn5fIC2emSU0BXOdzSFgg3BgUbYJQHgH30AwNf1iagO/WBOYDSu4jqs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.32.0
Release Details
UpdatedJune 17, 2026, 3:02 p.m.
Changelog

Added

  • Category by Month report: a new report (Reports → Category by Month) showing income and expenses per category broken down by month, with a column per month and an overall total. Categories are listed alphabetically with sub-categories grouped under their parents, and parent rows include the totals of their sub-categories; a toggle switches to sorting by total instead. Defaults to year-to-date, follows the report date-range and account filters, and exports to CSV and PDF (#288)

Changed

  • API errors caused by the database now include the underlying driver message (e.g. a missing column) in a separate detail field of the error response, visible in the browser's network tab. The user-facing message is unchanged; this makes problems diagnosable on managed Nextcloud instances where admins can't read the server log. The executed SQL and any bound values are stripped from the detail (#289)

Fixed

  • The dashboard "Budget Alerts" tile showed a red "exceeded" alert (with "0% over") for a category whose spending exactly equalled its budget. Spending that fully uses the budget without going over is now treated as a "100% used" warning, not an over-budget alert; only spending that actually exceeds the budget shows as exceeded (#293)
  • PDF reports rendered non-Latin characters (Polish, Cyrillic, etc.) in account/category names as "?". The PDF exports used a built-in font limited to Western European characters; they now use an embedded Unicode font (DejaVu Sans), so names display correctly. Applies to the budget report, bills-calendar and year-over-year PDFs (#292)
  • Marking a recurring transfer as paid showed a success message but created no account entries. The Transfers screen was only updating the transfer's "last paid" date instead of calling the mark-paid action, so no transactions were recorded; it now creates the paired transfer transactions like the Bills screen does (#291)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureNKgPUY81JziKewMWFs4QeLNIwZ8JqGBZ6wvFlsItL4R47yoDLAn4+I1T/pwgEOi7KR2lCUFBckiAdI78FONIy+JyCFhY0w4WcGEltsQdsytRMQYAggOWw+OlYvlDMPI6zoMoRfVcIvC3d+4pUrP91cJIVwi+bu5OIYO0C7ErDFCyvMlHK+ifsGvBluQJ377z8wnBUQIWSfudOuXewIyBHCF1QXsRXsVe0CIGWPNnT3ibuwxjm92a4vzwqdTEYy2qQwzPgYWPhgZofSdEN6j08iuwUzM0i9yXWd0IVpRNLb8RIo9lTzhJsjolrNFGZd0iiQk5A/4NQ6VOLKItVhwXJKOZk7KzyYTZmEki+PaeHKSEjEzwYNqv2tL4VPrBjyq5Y3bRTnYS3uBBCOnkWwn6ozQ4PitvSgPpcqciCtrP1hYAa0oQ7FsP8+BVsepO8gn8+lIcVjx7mW+YvufESAyFRXgAy61QBNjcd34vtoEfLqhdP4f37gZ/jdmCicDQ3sLw/eUIL98BylXmNvOge43vnYuRgGl9gBO11ENaP3EhqhqsrVr5Gyu07MGlMhCRlBn21fRN5sMORHFNx6pL/DcpwC0xtpfWEtHTCcEcLvArqfSiQSMrJaDvqftcQNMWYt4hGZKMVR7SYZsAragHUiMfvWDu1mW7HLNsW8PwySZDrHA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.31.0
Release Details
UpdatedJune 14, 2026, 7:05 p.m.
Changelog

Added

  • Exclude an account from totals: a per-account "Exclude from reports, dashboard & forecast" option (in the account's edit dialog) keeps the account fully tracked but leaves its transactions and balance out of every "all accounts" aggregation — reports, the dashboard, forecast, net worth, total balance and category budgets. The account still appears in your accounts list (with an "Excluded" badge) and on its own detail page, and selecting it explicitly in a report still works (#286)

Fixed

  • The account detail page's overview tiles only counted the transactions on the visible page (e.g. "50" for an account with 1,603). "Total Transactions", "This Month Income", "This Month Expenses" and "Avg. Transaction" are now aggregated server-side over the whole account, so they're correct regardless of paging (#285)
  • The dashboard spending chart's "Total Spending" figure (and each category's percentage) only summed the top 10 categories shown in the chart. It now reflects spending across all categories
  • The CSV import preview's "Auto-categorized" count was estimated from a 50-row sample and could be wrong for larger imports; it's now counted over the full file on the server
  • Editing an existing bill failed with "Failed to update bill" — saving the edit dialog (whether or not anything changed) returned a 400 error. The bill's start-date column, added with the limited-term bills feature, was missing from the list of updatable columns, so the always-sent start date was rejected before the save could run. Bills now save correctly, with a test guarding every persisted column (#284)
  • Opening an account's detail page returned a 500 error (the reconciliation-history request failed). The reconciliation controller was missing a trait it relied on, so it couldn't be constructed and every reconciliation endpoint failed; the account page surfaced it via the history sidebar. Now fixed and covered by tests (#283)
  • Starting an account reconciliation failed with a confusing "The string did not match the expected pattern" message (most visibly on Safari). The root cause was the reconciliation controller failing to construct (the #283 fix above resolves it); on top of that, the reconciliation screens now read error responses defensively, so any failure shows a clear message with the HTTP status instead of an opaque JSON-parsing error (#287)
  • The Budget Overview dashboard widget (and the digest, spending-anomaly and bill-reminder notifications) always showed amounts in US dollars regardless of your configured currency. The server-side amount formatter was reading the wrong settings key and falling back to USD; it now uses your default currency
  • The Budget Overview dashboard widget's "Total balance" now converts multi-currency accounts to your base currency instead of summing different currencies under one symbol (currencies without an exchange rate are excluded from the total and named)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureCseRrf2b0tfseaK8cBqqPjA8lhMT1C+aq6xVuP6vO3E6sRzawwkPNHdfK7CDaOro2TYW+agvm4g873WzOGVLIVa3FHEyFlnGRkFSwMz334bq1/Rcbw2WXdMbNUliZwdK76DNCauZ0JPz8FYIXr5cqkqbw80oHD/SWhWD5dTKRKJ2gpSvbNtXJfq32Sn04UVxrJq4StY11b5rJfCXR7P7RQxmFboIYJvhoVIfcebR+vighFLC9adkKVaF/xJ8tm1MVG6oJHJ4zKU87SV3+D8vB1xpxeWo2xRwseYSwg8Nk3ik6iXkcf4cHTACrCGyHhOXgCmltGkJ441alZ8kzOQCDe6Vw3Rx+zzgducfZGOQJPuIYcrpyZAAgN51xtDQJTWJNoT9jBrUmEv0r/ftZWj8QYnesnl8HgXUQPdLCsCaloLpISXkt7KzlHYlt4PgdMphbDBnuMROrXZtTeIwDCzwGAkatsK+l8HnM+FbMlpfszT7Ki1z2HYX/d+74aLRxkNUClx3fsQsxOtd0RxK9+/JPHW+W5Sv5kWbRSfiUrslL+pT7R15L9x4t3nFK8VUUEZSDcNynhSHxCVqrqOsV3mZ12eutyvQEPpN56qyLkaZmcoxOlOD2v4BKba8pBAL6YW05jx8hBWg9m0zAg4h3/qoA6zLDRrVfHi+LvUiiE1YDWs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.30.2
Release Details
UpdatedJune 13, 2026, 6:03 p.m.
Changelog

Fixed

  • Dropdowns in the transaction list (the column-configuration gear menu and the in-cell category/tag/account editors) were cut off when the table had only a few rows, because the table area was shorter than the dropdowns. The transaction table now fills the available height, so every dropdown has room to open in full (#280)
  • The Tags column couldn't be shown/hidden — the Show/Hide Columns menu was missing a Tags entry, and the column wasn't wired into the visibility logic. Tags can now be toggled like the other columns (#281)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureRXpaKwi4ViRdeYM6mjC3JtrlDOFrm03LMBFc2gQMktdYfBEoyMrW3YBp+DPKezxnLOmETNnqjXAI+oswcQLQMkRbAcjuD1dpBBZi7x8kmvtc0lZUcrKRw2QKUzDD5luZaN7JE14o393XlPFxdqkaUbJvWTltA5xK/XO2H72GyvEO7/7de7HCcP2G4XTK5kGSeP3PHRNQ5MjiB49QlM7D95p7Od374Fbr0k52h0sWFHSA14LgJSyPXCgHxxJMqVy7O76LlS1Iedg8B4TFBbTJZVol/8emaHjBHvEwVVzSIIkr9wdtZ60aqrEhJfTqaRwdGS0ks53VE2ROoE829Jnc3Xkz4Xxc0WEqH5a4vxbUWnA8NbuaFNAsUcfXW+0TDTUeLT34IV8c6GZkwn0z4a1parjkif0yyEolfPhNomKX/JMl74aSG5i2BkKyDH3OXMg9oC0/czhOIxluUuFCwWJyd6cBOGd6r/R382SMMe+mCHDpuBxIY12gRo4bzcAfmYMQ3e6rrtgpFwxBllUaK8lC+yPy9x9502QHhZem922Tz7HokfuXuFxh1x9Z6doBSvoZOe2H2PIKRupmFf4I9epoRYdDQZjatpZpN3+oZnz6DmY7f9+g3gaZ7Dl9dkPydm96203Pox5SGz9vhOQaXeOIw+l+rLnXnbodzB3eyqz11Ig=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.28.3
Release Details
UpdatedJune 12, 2026, 1:14 a.m.
Changelog

Security

  • The recurring-income update endpoint no longer passes the raw request body through to the entity layer — a crafted payload could previously set internal fields such as the owning user (mass assignment, integrity only — no data disclosure). Update keys are now allowlisted like the other endpoints

Fixed

  • Auto-derived recurring budgets (#269) are now consistent across all surfaces: the dashboard "Budget Remaining" hero, Budget Progress/Breakdown widgets, Budget Health score, and budget alerts now apply the same recurring fallback as the Budget view — a category funded only by recurring bills can now trigger alerts and is counted in headline totals
  • Auto-derived budgets now respect bill start/end dates: a bill that hasn't started (or has ended) no longer counts toward today's budget, avoiding double-counting during a planned cost change (#268)
  • Recurring income summaries (Income view header, dashboard Income Tracking widget): semi-monthly income was counted at half its value, and a one-time income at full value every month until received
  • Transfers page monthly total: semi-monthly and semi-annual transfers were converted incorrectly
  • Live forecast cache: cache invalidation never matched the stored key (changes such as toggling "exclude from forecast" appeared to do nothing for up to 5 minutes), and the cache key ignored shared-account visibility, letting a share-restricted viewer briefly see the owner's totals
  • Editing a bill's amount without updating its split template is now rejected when the stored splits no longer match (the payment would have silently imported unsplit and uncategorized); setting a split template via the API now clears the bill-level category, matching creation
  • Multi-account import partial failures (e.g. a deleted destination account) are now reported in the UI instead of masquerading as a full success
  • Import preview now also flags repeated bank transaction IDs for accounts that will be created by the import
  • Long OFX FITID hashing threshold raised so every previously-imported FITID keeps its exact ID (re-import dedup continuity)
  • Auto-derived category budgets (#269) now handle every supported frequency correctly: semi-annual bills were over-counted 6×, semi-monthly halved, custom-schedule bills counted every month, and one-time bills inflated the budget monthly until marked paid (now excluded). Frequency math is delegated to the shared calculator, which also gained the missing semi-monthly conversion
  • Auto-derived budgets no longer apply to past months — they reflect today's recurring bills/income and were rewriting history (including overriding explicitly-zeroed snapshot budgets)
  • Multi-account import: an invalid destination account mid-import no longer aborts the batch, and deferred balance recomputes now always run for already-imported rows
  • Bank sync: the post-import balance recompute now keys on transaction creation, not the import counter, so a row persisted just before a non-fatal error still gets its balance update
  • The scheduled-transactions background job now recomputes balances from the ledger (it was the last remaining hand-computed balance delta, and could race concurrent imports)
  • Import preview now flags a repeated bank transaction ID (OFX FITID) within one file as the duplicate it is, matching what import actually does; per-account preview counts include rows that will import with skip-duplicates off
  • Marking a bill paid by linking an existing transaction now warns if the link silently failed (no money movement recorded)
  • Extremely long OFX FITIDs are hashed to stay within the import-ID column
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
Signaturefa7u8mWcwya82OCYZOh+XZFPRJH94oqiBM5WUtEtvU3Dh6Lq+pMs8A7e2aCOa0Y6AbwWH7TF6ZRtwanfSh2PjQMwAaDFlR5anBdAvr89L/fn3eK0uSrZetqNGmAT7Itlc0mT5KowbTvtWDRdK46oR4jjqgXKay6JeO7caGbAcKmyfhJARbfTXsb5etz/yhMX72X33ayUYtCo8nQrtxLTGO5AAPIcFbq1pa3W3d1SHuQ7Ibksv3WXrZe79ngT4pQpGp6xtz3ervqo86vrI8qH8DDg6g9IJE8D1iseOiVzRv/KI/N06LnY0OvUHNZwGrJph5Jh3BrYg2/5rSYzEP5VzaGyZm+AS0DO1bXf9BC5OqbRl3s/FsM+4UgowriYD0S2Zwc4/2j/W3mDRjOdGf0MJxd8SOxv7uW2P5JL0TImjA7mTgppSipw1ShGTl8BU7q11cCtFmuCmwGfvPlRLQtMqEdr93gNkY84rAja08K9Ro1/ySZtrEWVRh/lYzQqmpazsjlw1V4x+KYtn65LHr9Zxd46ToleV5kv1tEZJ1u7nFXeNnrfThyz78EqvLbVxzcqphrfrImGOD9/VhUwryM58KtVz7+tXmLjn3SsSmM8sz9DEljbEKK4zTV9mQgIxviGwzNuIGEFD+HaW6HRIsAzRNtXow5oT7Kgpqa3BnJ3HxM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.28.2
Release Details
UpdatedJune 11, 2026, 6:33 p.m.
Changelog

Fixed

  • Dashboard could render half-empty (hero tiles only, widget grid invisible): a Chart.js resize on a hidden tile's detached canvas threw during initialization, and the widget grid was never revealed. Chart resizing now skips detached canvases and the grid is revealed before the resize pass. Likely also behind "nothing happens" reports after certain actions (#273)
  • Dashboard tiles with a saved account selection pointing at a deleted account (e.g. after factory reset + import re-numbered accounts) no longer error with 404s and stay empty — stale selections fall back to all accounts
  • Account balances are now derived from the ledger instead of running deltas — the root cause behind every historical balance-discrepancy report (#3, #89, #124, #163, #187, #194, #274). The stored balance was a running total that each transaction code path adjusted by hand; any missed or mis-signed delta corrupted it permanently. Every transaction create/update/delete (and retroactive rule run, repair action, import and bank sync) now recomputes balance = opening balance + net of non-scheduled transactions, making drift impossible and self-healing past inconsistencies on the next write. A one-time migration backfills the opening balance so displayed balances do not change on upgrade (#274)
  • Marking a bill as paid now warns loudly when no transaction was recorded (bill without an account, or transaction creation failed) — previously the bill was advanced silently and the account balance never reflected the payment, drifting from the real bank balance every cycle (#89, #274)
  • The app's own export→import now preserves transaction status (scheduled transactions no longer silently become balance-affecting after a migration) and restores the opening-balance invariant for imported accounts
  • "Skip Duplicate Transactions" off is now honored: previously rows whose import ID already existed were still rejected deeper in the stack (duplicate-ID guard + unique index), so parts of the batch silently failed to import. Intentional duplicates now get a uniquified import ID and the entire batch imports (#275)
  • Import duplicate detection no longer gives false positives for legitimately identical rows — e.g. two same-priced purchases on the same day with the same description. Identical rows within one file now import as distinct transactions (occurrence-aware import IDs), while re-importing the same statement still skips everything it already imported. Re-importing an older statement also recovers transactions the previous logic wrongly skipped (#276)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
Signaturekx2VkgWxozCE2LPp/nzgQQiqFxk/83sOdycv738Ly/uEwn/MhxF/kNtBlP4DMQbhmtkcHdt+kDIlQK1S5q1WHJWZQxjLc/ZCkj/ZEPkNBrDhHwdQCRh4TsRVJyfrIxXUTOCAKJLYk+0DXlnJB3kMhR81adns3wWNH9RkC4b62k3gXtzMR4n+jz/QJDGEAOXRpDUzxEm2TKqFot6sGRt3u0+rVo0bng6nogDJha0APeFI5Ujt+3mECw9MlxNt9nKbQlIGjAnraLVUFz0bXNLK7dbBS3PSzjLsUxhoNhAqMivfHEfLViOvIlCFNHzoWGxFnHK0flI2zJXUlOnaidOEyfhZWbqNpHZL4RZLIZWYQaztJgATNsK+L5aO0Md+Np1hgE8jkdY90gugiV06JqoPEWqCo/qSyaO9N3xYpeXrwfiL37JJqkigwg69RZN3OD1DfBT8ue7QlhT93dfg+39ERzbVY9QBu0gT+bwIs8tyE1MVXOaSjHKUkHab5dpGU3NQhvu/E1CO1BWA3dYvUUqvrvXKB96gm7IqNQEAkRi4JJHDPGtgzjERM+k8z/JA2xeJmPp7V3TZ/1WiKOoKMPz88soCJBMuj/LWnSpekLAGo4RJDy1JBlOm835e3ieJFVHwIwqG9YP7oRB/puFvYV6aaEXCnSkUcZV+z+2NXmHB8KM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.28.1
Release Details
UpdatedJune 8, 2026, 12:13 p.m.
Changelog

Fixed

  • Install/upgrade aborted on Nextcloud 32 and earlier with "Primary index name on oc_budget_import_templates is too long". The budget_import_templates migration created its primary key without an explicit name, so Nextcloud derived a default name and hit the Oracle-compatibility identifier limit (the unprefixed table name is exactly 23 characters). The primary key now has an explicit short name. Thanks to @TheUnderdev for the report and fix (#272)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureXdUz/Pc10uA7L3R+vTa/cI52W9X8nDyH33zElCWeS/xWeYgonfr0GwLhn4ywE7rtUQF8e1Y8GhETbSd60otnPduP+4rXp7+5+b+iMTa3qfYi6gAd3Y1YJJrZqK0yx2Fdqld/nhQLfFpVkUSQl/JQ78RZanEh779Af5RejNl7lolRlJYg7ZNrLrFasWrpyrLNsg4+Tf74/vMpKWDXf0FEIqjnXZ0LKJm7Yjig4uazy+a5vDcDOrfq6fLU56d9ML/jBJK+9A2loT3I5HP7H2cngdLpwk6+MNLiYQDsdNzLGJJK9TK4hn0Cj+AV80mAQ45beagh4H0SmEoDTPvR/hC7LLlU5rtioE1Rg1tCvlZfHBuPcH9LZMq11Q3HVbZnvzkTdG3lKQlKeFhP86QOIjiAg1Frm0yuOt4nMSdG36N+k1C5szF7HrCoH+u1XgdY6fKI6WW71RkqXJ2IhwOorxcijLVQc2l3wyDLqoQrHtJA2yWGsI9NXlq+d5ZLJ03T7xvcLBPgSDTz91KqBABqJYRdCGhzAuQPe9M814mDu5XgdoCJNUKNrAl6YGvLvJXyj5j8I09qImqsQx09AmEBxi8YTZDbxuO8U/g3yKO14aBgGu3Z+v8+h6xyqJyNsPEbHHxpjfSbwAF/9FlvjA64nOTqPam3fPOjZAdqne5bgf05gFY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.28.0
Release Details
UpdatedJune 7, 2026, 9:59 p.m.
Changelog

Added

  • Shared savings goals — share a savings goal with another Nextcloud user. Recipients see a "Shared" badge and can view progress; with write permission they can edit the goal and add money, while only the owner can delete it (#255)
  • Auto-derived budgets from recurring items — a (sub-)category with no manually-set budget now shows its committed recurring total (active recurring bills + recurring income, normalized to the budget period) as an automatic budget limit, marked "auto". Typing a value always overrides it (#269)
  • Exclude extraordinary/one-time items from the forecast — a per-transaction "exclude from forecast" flag (with a "No forecast" list badge), the same flag on recurring bills/income (propagated to generated transactions), and a matching import-rule action. Flagged amounts still affect your balance but are kept out of the projection averages (#270)
  • Reusable CSV import templates — save column mappings and import options and reapply them to future imports (#247)
  • OFX/QIF import account routing — route multi-account OFX/QIF files to the right Budget accounts, remembered across subsequent imports
  • Bank sync: pending transactions — option to import not-yet-posted (pending) transactions, automatically reconciled when they clear (#257)
  • Bill start dates — a bill only occurs on or after its start date, making it easy to change a recurring cost mid-year by ending one bill and starting another (#268)
  • "Shared with me" expenses view — recipients can now see expenses that have been shared with them (#248)
  • Dashboard period indicator — chart tiles now show a read-only indicator of the period they cover (#250)

Fixed

  • Dashboard now collapses to a single full-width column on phones, independent of your configured desktop column count (#249)
  • "Excluded from reports" categories no longer appear in the Budget view (#266, #267)
  • Category spending chart shows income as positive with the correct label (#265)
  • Tag-linked savings goals now sum net realized contributions (credits minus debits, excluding scheduled) (#264)
  • Recurring income description is now persisted on create (#263)
  • Transfers are now excluded from dashboard income/expense totals (#262)
  • Account Breakdown report now uses each account's own currency instead of a single assumed one (#256)
  • Fixed a PageController crash (TypeError) on unauthenticated requests (#259)
  • Quick Add date field normalization on iOS (#235)

Docs

  • Documented the standalone Quick Add page and the iOS home-screen workaround
  • Noted that GoCardless no longer accepts new bank-sync sign-ups; EU/UK self-hosters without an existing account are pointed to manual import (#271)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureiQMjVEdG/FWcc56MAPwvDd04E0ERl5pUWkrRWtdYdgbboBj0+7YAo+rDODFz5qC3EPqWBr7XRkjXOfvn9+m61v0w88Qy8SZQIZRHTAwRJuK5jDQbpfce5dropQgKW8btEIzI3BPE+DFBIDeV+qLNQEYT25ApMkUAz44PumVV0sJMibCGo0JBgIxHCPyem1NNjYaX3qQDt41eg8I5rH8wLCWGa7lNTtGyp8vaJ4ck0sh4J9sPuVzMdJoXQDHfGe5S8YY3GTwgvwyloNJQAFO+SQzm5WX6mC/IKAfpxwG82cQAEMm6B4geyHwaYGSFDEgrBuHOZj2fQmvQgzoarRN+U76bOhjQI0IqU76Pno3qM17eF+UKW8peDiqFBXpepGYfDoeyjQsF2GqxIK3C0bNUR5bp9RjNxkWckwvS2ihvP/2rg4lr05MuDDmIdBYG9Ny+PT9dEWBssQkXzIVX28Ox6P8xkorH0n5EoSRl3j+KMXbM34QteNMt1+jgsHAxcS8H57CwV3MC0uqZnhxUu/LbwIGHzvKbC6vN3F/3l6F+35rWM7UaQhdvr2W/1q5Swj5F2sp2Bq5jgrxbWIuUB9+pzftASgVUEmtd6blOUlJuuJj1wmaIrA9jx21+Bg8t/OmrQqB97ZHzint0WTdo7KTOviKZGnoZVXeoQthPmSyW7Wc=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath

Nextcloud 30

Budget 2.39.1
Release Details
UpdatedJuly 11, 2026, 10:22 p.m.
Changelog

Fixed

  • Share recipients saw wrong dashboard totals. For a user whose accounts are all shared from someone else, the Income/Expenses This Month cards counted transactions in the owner's "Exclude from reports" categories — the exclusion list was built only from the viewer's own categories, so the owner's internal-transfer legs inflated the recipient's income and expenses while the owner's own dashboard was correct. Shared categories now keep their owner's exclusion for every viewer, and per-viewer "Hide from my reports" mutes are honored by these totals as well (#326)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignaturePTjw+Z1r+sKWQmZSlNfYPSTl5PFejqjMEgNyvQR1FXSKor9zNXxtxcAM0eYYthPn9YEprCKS9V6NC699ZbeWK6WbdRtprmP+rsvCifpjQyVtPDGLJ11LWzLVgw84pTHcolsdY756JO6KWW8hxp63bq3s4QE4rs3RTCEyHSpzpZ1pXSydTCTvheL1M/rtg3XyKpzBkoOqGh39Dnh9TH7JQt+cCB8VD84aeHcsvnxUkQJU3AmZwYGcP8wSNeLmDjt1S9yCv2h8NAReLQeTMbmdzNJtioLLiifkedz5bEgjVximgqI99mmV+8uhRBY0keT1hWXR6En4IrRkiJwlEyNZRHkukMa9jNmoNVvoRYCuQOVZ1wWGtkS8MCz5Ig63yPijEMh1bqnoi3+WA1g8s23dJVIziAHSKl0F+V7DKThsw2jBouMZeZ7bG0nMS9bFLcndAm1MbpWyuZATotUExNeYhEZEIwUOuF+esV5lnDoHTf0i/q6OJGa4hPPiNTE/rH4PS3Z4pdEZ4V9YhxYfsSs/9y+Y7xg/ZQWnLq2YVsTR7V8FgQwU4Bi8OGLsfbYZhSaUnHv60ObUB2U4WkD1mZZqDHKJXAIgVGulvHFAkXQVeGpRqbUCQNvgiVU8hfRaRmEr/y9Usub/3srDJn7qybeAxfOxA7rL+AlakEZBECHPJlY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.39.0
Release Details
UpdatedJuly 11, 2026, 12:57 a.m.
Changelog

Added

  • The Bills page now flags payments without a recorded transaction. A warning card lists bills that were marked paid in the last 60 days without a transaction being created or linked — the situation where the app balance silently detaches from the bank. Each entry has a one-click Record transaction repair that books the missing payment (dated the day it was marked paid, both legs for transfers, splits applied). Deliberate skips via the Skip button are not flagged (#274)
  • QAR (Qatari Riyal) and JOD (Jordanian Dinar) are now available as account currencies. JOD amounts use the currency's native 3 decimal places. Automatic exchange rates cover both. Requested in #321

Fixed

  • Editing a monthly recurring income never saved the changes — the app showed "Income saved successfully" but the Expected Day (and every other field) kept its old value. Any update whose payload contained an empty field (a monthly income always sends its yearly-only "expected month" as empty) reloaded the entity mid-save and threw away the edits. Thanks to @redsteadz for the fix (#324, #325)
  • The "Exclude from forecast" checkbox on a transaction appeared unticked whenever the edit dialog was reopened, and saving the transaction again then really did reset the flag. The flag was stored correctly (including when set by an import rule) but the transaction list never sent it back to the browser, so the dialog always showed — and re-saved — it as off (#326)
  • Income/Expenses This Month (and the other report summary totals) deducted transactions in "Exclude from reports" categories without converting them to the base currency, so on multi-currency setups the deduction was applied at the wrong rate — and for a single selected account the deduction wrongly included every other account's excluded transactions too (#326)
  • Imports no longer bring in flagged duplicates by default. The preview's "Show duplicates" checkbox — on by default — secretly doubled as the skip-duplicates switch, so every import ran with duplicate-skipping off and rows flagged Duplicate were imported anyway. It is now purely a display filter; a new explicit "Import flagged duplicates too" option (off by default, resets each import) covers the deliberate re-import case. The preview's per-row checkboxes, which were never actually read by the import, are gone, and the New Transactions count no longer includes flagged duplicates (#327)
  • Marking a bill paid no longer suggests unrelated transactions as "existing" matches. The Existing Transaction Found dialog offered any unlinked same-day debit as a candidate — cigarettes could be presented as a "match" for a mortgage — steering people into marking bills paid without recording the payment, the classic source of app-vs-bank balance drift. Candidates now must match the bill by amount or name, a weak match is never pre-selected (the safe default is creating the transaction), and the "Don't create any transaction" option now states — and warns after — that the account balance will not reflect the payment (#274)
  • Overdue bills no longer double-book when marked paid. The scheduled placeholder pre-created for the next occurrence was written as an ordinary cleared transaction whenever the advanced due date was not in the future, so it counted toward the balance immediately — alongside the actual payment. Next-occurrence placeholders are now always scheduled, regardless of date
  • Restoring a backup preserves every bill setting. The data import dropped most bill fields: custom recurrence patterns (restored bills then advanced one day at a time instead of quarterly/etc.), transfer destination and description pattern, auto-pay, reminder days, tags, split templates, start/end dates, remaining payments, forecast exclusion and the future-transaction opt-out

Changed

  • The Match transfer dialog now also lists candidates from accounts in a different currency (any amount, within the date window), so cross-currency transfer pairs — e.g. imported from CSV — can finally be linked by hand. Automatic matching after imports is unchanged and still only links exact same-currency amounts (#326)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignaturegJm3RDjkvl1EBICN6Us5TsX5SdQbSGnRHvRIZmLsYaclkDVqW/mYCBjVgwjU50ifkv72zl3kxf5a8S3yxpo2WX6cnhkyyibLhs5Uzdrj9Egw47yYgMun8WH4647Y0uGP7QrX3Yf51SO7Ve+JWgdMRX+hWvG4K9hxUgAwWR3AmTYRsRXpmsNrOr97q2SPC3V0g9bAARDeSeWDGQ8SR05+OMIrQRj0Ct56fC1cTNWzHpPT+Qs17SJJcUUnK3tJWsM3wvGiwk62YMBy1cv1jx3JkOXnYvsa8bpSG3sL7aqr05QkAkvL9sSGxka6mDrC3CN1LHlwwQjPjWwoX9YDtOI04j0JPd0SzlhMYILaZNyouhoNTuY5YhDIG4aLjg737AAEBHgU3jvpWxaM8Oz2+9he9LkAJW6qA9DuzB/FmDNKxyJTmQ6S0LZ21d+Hkr0LD/2uKRSywlRBld+UNCWby8YrgIkyGomPH1rjDG28y1ApiqSozetcjSvDYwqULM2mLXU9OjD9a8UJk8B1R4Xd0TqgMmDCaAZrTdRLYYdTZEEaFbnDkbm8p4z2q+UGfn/UCNEOkg5pbu1WAsRubIKkPzNTz7gTSLI9u+qJfvoZg9c3Ae1OhXWDD9k/2Z+pCrbJhu8yDX+2JukXoAxNS+bnxaDxdoxRzIM+9jcbb0eyG3wJuLk=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.38.0
Release Details
UpdatedJuly 7, 2026, 1:07 a.m.
Changelog

Fixed

  • The account selector saved in the gear settings of insight tiles (Monthly Comparison, Large Transactions, Weekly Spending, Year-over-Year) was silently ignored — the tiles always showed all-accounts data. The saved account now actually scopes the tile's numbers
  • Importing transactions that trigger the Auto-Link as Transfer rule action no longer shows "Cannot use object of type Transaction as array" on the import screen. The import itself always completed — the error came from the transfer-linking step afterwards, which also means those transfers were never actually linked (#314)
  • The Recent Transactions dashboard tile now honors its "Rows to show" setting above 8 — the display respected the setting but the data fetch was hardcoded to 8 rows, so values of 9–20 silently showed only 8

Added

  • Edit auto-categorization rules as JSON. The rule editor gains a Builder / JSON toggle. The JSON view shows the raw rule structure — editable and paste-friendly — checked when you save, and switching back to Builder repopulates the visual widgets. A Copy JSON button makes it easy to move a rule between instances (category/account IDs are instance-specific, as noted in the view). Requested in #318

  • Hide shared categories from your own reports. Categories shared with you gain a per-viewer "Hide from my reports" toggle on the Categories page. Unlike the owner's "Exclude from reports" flag — which stays owner-only because it changes every viewer's reports at once — this only affects your own reports and dashboards; the owner and other viewers see no difference. Applied at the SQL layer through the same choke points as the owner flag, so every report and insight tile honors it consistently

  • "Exclude shared accounts" on the remaining dashboard tiles. The per-tile toggle added in v2.37 now also covers Budget Progress, Monthly Comparison, Large Transactions, Weekly Spending, Category Trends, Cash Flow Forecast and Year-over-Year (shown in the gear menu when you have shared accounts). Bills, income and pension tiles are deliberately not included — they show entity data, not account aggregates

  • Clickable spending charts. Clicking a slice (or bar) on the Spending by Category dashboard tile or the Reports page pie chart jumps to the transaction list filtered to that category, scoped to the chart's date range and account. Tiles set to "top-level only" include the subcategories in the filter so the listed transactions match the clicked amount (#317)

  • Per-bill opt-out of pre-created transactions. The "Create future transaction for this bill" checkbox is now a persistent bill setting instead of a one-shot option at creation. Bills with it unticked never get a scheduled placeholder — not at creation, not after marking paid, not after skipping — and toggling it on an existing bill adds or removes the pending placeholder immediately. Previously the checkbox only affected the moment a bill was created, while every payment re-enabled pre-booking unconditionally, so unticking it never actually opted a bill out (#311)

  • Convert a transaction into a transfer. The Match transfer dialog gains a "No match? Create the other side" section: pick one of your accounts and the app creates the opposite transaction there and links the pair as a transfer. Until now the dialog could only link two existing transactions, which left no way to correctly book payments to accounts that have nothing to import — e.g. a loan tracked as its own account (#313)

Changed

  • Scheduled (future-dated) transactions now show a Scheduled badge in the main transaction list, with a tooltip explaining they are not counted until they occur. Previously only the account detail view had the badge and the main list showed scheduled rows in italics alone, which made a bill's pre-created next occurrence easy to mistake for a duplicate booking (#311)
  • The transaction list Total no longer includes scheduled transactions — they are placeholders for money that has not moved yet (#311)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
Signatures/wP/jWqAxqTStZPLKWl/5nyJk/xpeAom+Kp7KakVOdJmzhNv/Z6KM/CUUOrGem4Qj5G1OEZ2tNrPkTneCVvfFU2S5aoayMDgcRaGquqwZisM/4a0KV9Husjq8mV0RVoqco16HBH8PUY+kYsbeWRcSp2q38Zq99L04zb1x5XY1rGe5YdP4/IydUoMpyzTtsGF00Tj6OUAMvlDTnJqCcetscuXX8yo33xm0dUfLxjZD2f9hsn8UTCwNN7v1+yBhwNN4jJsfyGTN+92XV2YDhRCfVWq/3bGqphHo+nYQvbyjndJRcaAwybOquX6MH7+wpDa5wpvNw9xzc2sYNm2FM08SYep3cX7uoXngifGZu2FBqyNHQ198dqEwqJbEVv2DrK5cAnQkbSS1glYYney/uXAlsqLEinHirrShNYRoq+ZEkxUhpdung3zSWwPe0Fd/mWh2chHiTV20A2tCrv7FRuRadpf75bq+y0xuIglVZQy5E1dT2nk3lPUUwB01w/ggmwrJ91hOchPoyoRoDhoBNxZJs903bQejWR/MdZ9pbXVmwxj1EOq8oWfWeQ5B+OEz/LbcplibODsNv6IUIYU++gxK8d2XCVzBgV2ayMqsRxFDxItgluqDcu4oTW8mh3A4z33PvbeCFFMsj2bKFbOslmuT2ZiVl58oTaQRTh61xeKEA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.37.0
Release Details
UpdatedJune 27, 2026, 11:16 p.m.
Changelog

Added

  • Exclude shared accounts from reports. When other people have shared accounts with you, the Reports page gains an "Exclude shared accounts" toggle so you can see just your own accounts' figures. The same option is available per-tile (in the gear menu) on the account-based dashboard cards — Income vs Expenses, Spending by Category, Top Spending Categories and Recent Transactions. It's off by default (shared accounts are included, as before) and only appears when you actually have shared accounts. Note: a transfer between one of your accounts and a shared account can only be partly seen when shared accounts are excluded, so income/expense totals may be slightly overstated in that case.

Fixed

  • Saving share settings failed with "Some entities do not belong to you" (HTTP 400) when the "Auto-share new" toggle was enabled for a type, or after using Select All — the auto-share toggle (which shares the same data-type as the entity checkboxes) was being collected as a phantom entity and sent as a null id. Entity selection is now scoped precisely, so share settings save correctly with auto-share on (#306)

Changed

  • The Categories page now also lists categories that have been shared with you, shown read-only with a "Shared · <owner>" badge. Previously it showed only your own categories, so anyone using a budget made up entirely of shared categories saw an empty page even though the categories worked everywhere else (#306)
  • Categories shared with you at Edit permission are now editable — rename them and change their colour straight from the Categories page (they carry a "Shared (editable) · <owner>" badge). Read-only shares stay read-only, and a category's type, parent, budget, report visibility and deletion all remain owner-only (#306)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureFqJ17XG/szTfkAMsF+oCODYGClVjdeGArgFi3SrgeGhg4CFFzIVO98XEnYhxeCnwOcYGivzy0uhe60/Vv7kgml+lIVvRL1EZOxvjOES2KksQ50fqxGZSNz3EL54EA6R3Yvo6uLFBM9cbK0mmY5H+4i3UozKhKwzRa6PJLIZzpBsjtprJXHojWsQMR5KY7WDDbb9yD32uYzMnrXMxOiQ2PZGtG7aIhLS6DzC7Mtp/oLUgyRqBWoYMUWWLLi1qyeOr4/8Tdm9H5I36oxeoX2ZQlVuprpRjDPW5EITrljbyuIPy3CdAFn5tvvt8rkurEgCtPAaMv7gSXRZto6rJJqS4woUqX310+J0re9qa53Ls0J7Kezo5WpENoaFsvT6McjVG/4k6k4YN1/l74p97fFfR+1T2kC5VptpwVz4GZ2aSF9t226Sdkft7sv72aC3oQpa4PN3PIWj113aN2X5nnCGiD+NUW282/yAdacvMWVgB+t+Rbm0FIyWtGnbw0dKAlY3CAmQoBvqX9f2vqn1OFDxJhejg/i7+FAWQD83LIk6u2kNg/N4e2+hgLtO45wd5MU6TLXXTrb1mlikbbiP80Rla1p50fScosYTCqjJfz2lh5U6D2h/nquGHHvhf4R9q7eSkykmELHZUKiUyYlrLrOfiuxGRqaWSQWp9hm0CUog1HBE=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.36.0
Release Details
UpdatedJune 27, 2026, 1:15 p.m.
Changelog

Added

  • Auto-share new entities. Each person you share with now has an "Auto-share new" toggle per entity type (accounts, categories, bills, recurring income, savings goals) in their sharing settings. Turn it on and anything you create from then on is shared with them automatically, at the permission you choose — no more sharing each new bill or category by hand (#306)

Fixed

  • Code-integrity "Some files have not passed the integrity check" errors reporting FILE_MISSING for js/.htaccess and vendor/tecnickcom/tcpdf/tools/.htaccess. The app no longer ships any .htaccess files — the Nextcloud App Store strips them from the published archive, which left the signature expecting files that were no longer present. Neither file was needed (the JS one only set a redundant cache header) (#307)
  • Deprecation warning in the Nextcloud log — the notifier now throws UnknownNotificationException instead of InvalidArgumentException for unrecognised notifications, as required by Nextcloud 30+ (#308)
  • Reports and the dashboard summary were empty when a single account flagged "Exclude from reports" was the only account selected. Accounts flagged out of reports are now only dropped from the all-accounts views; explicitly selecting one shows its data as normal (#309)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureYxqf1NnAucAiXFVdwVmQJPaPUyuExQ8t/dwv4tDVpFb1kXDtGcIWoAdspiDz+HwdyPe+ul+/2GcDWiLPTF3TvIHwIaV+h+guDRYBEHMY95+Hy5W0BSuwBC7gto5dfsZEhL5xj5OsRIYrY/Fo8Tqj99kVzDK560o9NgI6Bp6ZkQpbwPRbTnbxUX27oF0oDjrg1ArS4IiE4ghZW1ct74Mlv4uoeg5zaVQlucrZK+rBJXixtpDnImHLPMkTvd+1bmkQTFtvArS1A37YkXkLKrKn4pzWvwv/q46ddih1NXBC7o6UoBwP1pWB1OxgNq3/98OdWyPs4GLumMmRdg+7PbY95Go97lBbNc/1mrBB9qQPXirFxYHMZWVDSRHSNRJ9cSMnZA/YzsVeOZOVkIwJWXhC5YGAEN8nq8HKIMBHzmi6UYdGM2VvGPmNZ+K3wlGMIkKlVfWfIJ7XIOCe6OLvQbwR/ATZ7pUyOE+AR21uu27zWGJ4iB4y/eCfCSE8vIxyPW7L0dwkzxU13iNNNxAUQgbNrs8EiQBLQlTCaBWCWp296Dds5nEGMEilQKX9vEXAhY9KRG5dzJjoZhZ14tWA3Hjp+5/Gs2AM4Bh3Rp1OGdhfQhFDmt/2GXcL16lfDcX28K1ub4FPYE8MEz6qDmLhqqwv9FeXQQbT/ZKdQn8NwuOlGFE=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.35.1
Release Details
UpdatedJune 25, 2026, 3:28 p.m.
Changelog

Fixed

  • Categories marked "Exclude from reports" are now consistently excluded everywhere, including the Income vs Expenses trend, Category Trends, Top Spending Categories and the monthly spending chart — not just the dashboard summary. Exclusion is now applied in the database query itself, so reports and dashboard insight tiles can no longer disagree about which categories count (#219)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignaturebX/9kwpiVjwDj0f2eU5xNE7zUpt8T/nkGCFg9HnDQoKynM7c1KaXhbh4isVQBbgy5kPGXSDP7DRfuSTYY5/M3PSv1JE8gOk/9lz2AGmTqlXrf4Kgq9oARAGcVHXB955dLvDkj6Vrk7zZ9cwrjq4aMBu02dW8ZgyAHStXybiWmkAbIxK768MHM4n5FXTRFw3P/ELVlDjCxgIpxVxD5EZaaA+n7RrjN9MRY2R8/GN7Og7yijcmnutMWtna4K19B9c3ShcfUkrwotvCUz3c+K10VQSfzUpN6RoindDB0j716jUZQ6IKzXBNNRiOjQ6N6s1MlmKwjyFyw0PY509hJY+dtjBEQBbFjK0pw7ZElfW4zDWteDzWRm7M1VjzUlRgPLsg7CJ980Rg8suZAMh3UH251vymCH0ykpMYqK1qiWDurz5GWdaDov6Z0YkQPQLnszzPa60kbO9VUHrYnG+6+KA6GoPW0EHFEqaUxXv+mRLr8Pm8BhjCiDghO7mlHZFN95hN5gkNyBdIPA9JmXAdnkrJBSQaDvZdejDwFJL+T+PgA2f9JomB8BQ/WkZ4uukyKUUFYToOhntQTe7dfE+I4VsD6BycbY7smaY/xGx6EvyXfntpYkgR7Fe2rYKaxBrcRcnhTmQBeLLz85M7fLKVjME72niQdRIZRaMZ+OmpCxKK2qU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.35.0
Release Details
UpdatedJune 25, 2026, 12:36 a.m.
Changelog

Added

  • Pensions revamp. You can now record a contribution as a transfer from a bank account — the matching withdrawal is created automatically and kept out of your spending — and record withdrawals/drawdown back into an account (#304). Scheduled (recurring) contributions (monthly/quarterly/yearly) can post automatically or on demand (#251). DC pensions gained a configurable projection target with a progress indicator and a "today's money" (inflation-adjusted) view on the growth chart, plus an optional Pension Projection dashboard card. Bank legs that fund a pension show a Pension badge in the transaction list.

Fixed

  • Background-job "class does not exist" log spam that could appear after updating PHP/Nextcloud/the app: the app's autoloader is no longer "authoritative", so it falls back to PSR-4 and self-heals if PHP's cached class map is stale after an update (#305)
  • Newly-added dashboard widgets now load their data immediately instead of staying empty until the page is refreshed.
  • The pension detail panel's balance history and activity are no longer broken — those views called endpoints that didn't exist; they now show a proper balance chart and a merged timeline of contributions, withdrawals and balance updates, each removable (#251)
  • Editing a split transaction with three or more parts no longer zeroes or overwrites the other splits. The last split row is now a read-only "remaining" amount (transaction total minus the other parts), and the dialog blocks saving until the parts add up (#303)
  • Spending-anomaly notifications no longer crash with "The arguments array must contain 1 items, 0 given" — a stray % in the notification text made Nextcloud's translation layer fail, spamming the log every time notifications were rendered (#305)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureF/7pZ4sNzjJuqXXZoHmO+9OmUzkQz6ZDke3vkONfZ2uGfzBpwpDSIiGlfNv6gt40Ho8NTPNd0JuM+ESRohLlPAAftFoF+L4h+asH5s/lncoxgTZevEFl7NE14s+sPVdGdZqXGi0b3mohB+f1jOudpVbgB0bmCDvnZMEKiMSjB7XwH9iQqzu/8WyQNd28w+Bz2TbyAfu2PCtdD6jsmVCbvtCkmEdKOVJzRWuExH+vwvZ0ltX3mtorPl6HEzqKJWoDYG3tdbpSwml6w9F3qj8naVZ3tZYBrfvwABHoMD1LYpYwRss5C9UpJvu6UFfKQ4Xso1tBu5U+tYlAPKLbQ5J70o0C1aP66R+FvL8RlMHpY93duR32qZkT/6xV0NYQpd9xzXoLbB5YkZJuBLV8m3oP9k/pNEy8vwF5Kkb+/6zrJt4aSH/iiAqBoqvuT1itwScYsNpGHXWOrGHioCKiGkcMvamfr7her1fQ42wNiVIVWKaxNtjeYrVjmHCtWA2awjv3XRfcXdcL/4stuDpXxQ0Dnv2S/Ey9ZbGbqpc0DNyPZfKie5/QK5OnHPW9F8nHUsEhxDLbNezo11fKm1ykE0ja4nTZFKL3ml2D4aRDMYQe35MWJvW/fLcNW7dYOV969ZI52G8jTIUI/YphcNfCNK24fVkljrcBSybr8WavbELxVR0=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.34.0
Release Details
UpdatedJune 24, 2026, 12:34 p.m.
Changelog

Added

  • The transaction list filters now include a Reconciled filter (All / Reconciled / Not reconciled), so you can quickly see which transactions still need reconciling (#301)
  • A Budget alert threshold setting controls when a category appears on the Budget Alerts tile (default 80% of budget). Set it to 100% to be alerted only when a category actually goes over budget, rather than when it's merely approaching or fully used (#293)

Fixed

  • Creating a category (or account) no longer fails with "Unknown column 'excluded_from_reports'" on instances where an earlier upgrade was interrupted or restored from a mid-upgrade backup. A self-healing migration re-adds the affected columns automatically on update (#302)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
Signaturey+Qi2+U6CexZu8i+0DGrbLXwFbp+cHLVW62WRSfrovEAuJrnZy8paqAacEaE570GoHVd1b23Yihz4oDfOYStLASDVFk7xhVrarnlIqv4EH+Jyw0IR2iaLR+IvhJmSZc9N5nQ42i2z8UYetvQo0znzzNPmpT2FEJB1Sty9kCfHL7HiisG4hYwJp528McMVXgCYfn/XOZUQzOVY6rvis1hP8CiFbE4UMUQj/SgDpRjimcRCZy8fsRLgZHcfO2+BKYCSt5lqLDJSzsmewBFNMVWDdtZwPUxqyK8xaTwSnwWNBNXBRg5ZcDLJhhIJtk9cEezVTdJBZTw3wx7iCztR9RFQi9CZsRz9U9S4jLEdcV8m6OTa8XG22s2ZHt+I+hisGtlC1TOQ5fpPfSe9onWdA8jgC68RAFeOLJ+KmSkLQN1bbr9gUw47oB09Yd9sEtUDcFapfv+x9Zl3/s4ExwO6xDS/bwmRyZ/fq1z2jhVu/lMFd//+9ciOrCdty1p7440JVs/sx71Qcc0mRhZsMtIRYyBD2EFceUHx8cQCtOLL99+JtGkTakCMCwIxghuGoXnrq+9mRWjgROn1ysGEHDUyC8ZKCJ5f8TXOllqX2g+2fyOpFzHR66oP7lPwI5y3eW4VYJGT/lQzTavAtU148X2XaBUz+XA8Djuco3CCuGJuT9FhSU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.33.1
Release Details
UpdatedJune 18, 2026, 3:03 p.m.
Changelog

Fixed

  • On some installs an earlier update was recorded as applied but didn't fully run (an interrupted upgrade, or a database restored from a backup taken mid-upgrade), leaving the excluded_from_forecast column missing — so every new transaction failed with "Unknown column 'excluded_from_forecast'". A migration now re-adds the column automatically on update. (Also surfaced by the new database-error detail field added in 2.32.0.) (#289)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignaturewGNDwrdOGHhLxiEiJQDsZrcL4BFQbGBTjeDU/3VJql8bIeDBHITKzJ3HH47kV1bFmsZ35q0o7xh/r4q6Kj9/SXM8gQCTxEtQ0q80MS85LGy5+9dUtJ0yBvrLfE6kwpNPDH+kqwBVcAGxmLr9vYau5uTFGdeB0WZ3gmesUvT5kuZfdREwJDQ19QWR40pJjHRcWqM5KnXCT1/wq7btWj9s/Vf9GVQvo85g9R7adODG1PVBr4gM6R9nTgsrn+60BJvNNO5f3W3wbuzvqaJhtVdknB9Z8fc7Vbq6mh6TgSPBmXgiK2VdCAWPaW2EmpVL8iwgOGazPGSajPkMZNNZDhzDNEpLcveJl61g/x5dVAxOevwFnN4CaX5c/YYppjcqtoWyYgoTNMv3enF3///tD0wS68iQzcU5UNmsOOKsAUVvRnf/oOX2b13NfsKPONAxcu4Q/UG8ybPqYwXT+T6Vs+IRmoLJLnOs/BUgbqmmRIG1Wfs2BusDFKNHHWoW1Z5t+GDLGx2cyNci7+rKPRh2seML8iPrt9lNv2M5NjzIJ9Wm0Xt0FKpIetR4gDpLSRvBtINaQ0jVuYVixt1yDKMUfE6GH4sNW9rNi2ZoKptz2MIxouBmLNXezA5Y0gvIlgA11Bi0YBrKPUAtmxNl8Jyxhle2Ll5bZbsupMy1otRB/+NGEOs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.33.0
Release Details
UpdatedJune 18, 2026, 12:52 a.m.
Changelog

Added

  • Run reports on multiple accounts at once: the report Account filter is now a checklist — pick any set of accounts (e.g. all your credit cards, or all your checking accounts) or "All Accounts". Applies across the summary, spending, income, cash-flow, category-by-month and year-over-year reports and their CSV/PDF exports (#299)
  • Saved reports: save a report's settings (type, period, selected accounts, tags and options) under a name and re-run it later from the "Saved Reports" picker in the Reports view. The period is stored as the chosen preset (e.g. "Last 3 months") so a saved report always shows up-to-date data (#299)
  • Dashboard tiles that can be scoped to a specific account (Spending by Category, Income vs Expenses, Net Worth History, Recent Transactions, and the other account-aware widgets) now show a small label in their header naming the account they're analyzing — the account you picked in the tile's settings, or "All accounts" (#296)

Fixed

  • The Reports period selector didn't drive the report on reopen: the dropdown kept your last choice (e.g. "Last Year") but the report always reverted to "Last 3 Months", and clicking "Generate Report" used the reverted range instead of the shown period — you had to switch the dropdown away and back. The report now always matches the period shown in the selector (custom ranges are preserved) (#300)
  • The Quick Add Transaction dashboard widget couldn't be used on mobile — the lower fields and the "Add Transaction" button were clipped off the bottom of the tile, so a transaction could never be submitted. Its form is now condensed (each label sits beside its field with tighter spacing) so the whole form fits the tile, and it falls back to scrolling within the tile if it's resized very small (#298)
  • Editing a split transaction's amount (e.g. inline in the transaction list) left its splits at the old amounts, so they no longer summed to the transaction total. The splits are now rescaled proportionally to the new amount (the last split absorbs any rounding remainder)
  • In the edit-transaction dialog, changing one split amount now adjusts another split so the parts keep summing to the transaction total, instead of silently drifting out of balance
  • Split transactions weren't counted toward category budgets or spending. When a single transaction was split across categories (e.g. one $1,000 payment split into rent, parking and a deposit), each of those categories showed $0 spent. Split allocations now count toward category spending everywhere it's shown — the Budget view, the Spending by Category chart, and reports (#297)
  • Large amounts (e.g. values over 100,000) on the dashboard hero tiles (Net Worth, Income/Expenses This Month, Net Savings, Cash Flow) wrapped onto a second line, splitting the number mid-digits. The amount now stays on one line and its font scales down to fit narrow tiles instead of wrapping (#295)
  • The "Asset Value History" dashboard tile (and "Net Worth History") showed its empty-state message anchored near the bottom of the tile instead of vertically centered. When there's no data the message now fills and centers within the chart area (#294)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
Signaturejj+nUiPNSYYgtQ/7XYIkJNFo8vWIHaX28Q0XTtpN6RWmrW8qrJBIs2jTaaHwebC7SB5f7GP6vQxghh9+nCWfA+KlTKbm8YJg6yzah9xdTLo/JcUhTOinlH9yYoXxMiIY9EVwQLsPmef4sprTsS9oqBeSgZ7S8WRJYnxjAuljee9q0Sfai9AK+RQzBk6kgENhCAVt95ooZ3H5ukfFBSb/kyXa3IU+ngu6g5B9DgiJfBduecdkLEfc0dhYKelUyNaZa61qoG865podTGJFCFqzoSnlCXgRcJqJHjhdTERIeu/nHQAL/PhaPy0OSWK8l+kyrGveMEKDM6LvQ0Eo6B9Ul0ORobundabEat67f/hqaTmnDldOkkEm5a0WAYeQvYeeZCNLtiF26pWk66v6eQhXsrT6IwcJ/gxaC6oS8URm5yYub2iW9nVq6uZXRMJavJr8CmYl7MSqQRVvFKGlwHvD7X+YfEs+htKGYM017iWdICfQv/wbGi5JzIxqdm7QKrV9EGxgl4GFWvY/cyGZt4awfhoy4RljlFtsfJ02askgVFUloVGKOWeqZ5NbqXMDC+UonPONQ/RPM64u0L3NdVvmcXOwA8RBHCg1qgEiVkDBSsJyhK55+1J7Yn5fIC2emSU0BXOdzSFgg3BgUbYJQHgH30AwNf1iagO/WBOYDSu4jqs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.32.0
Release Details
UpdatedJune 17, 2026, 3:02 p.m.
Changelog

Added

  • Category by Month report: a new report (Reports → Category by Month) showing income and expenses per category broken down by month, with a column per month and an overall total. Categories are listed alphabetically with sub-categories grouped under their parents, and parent rows include the totals of their sub-categories; a toggle switches to sorting by total instead. Defaults to year-to-date, follows the report date-range and account filters, and exports to CSV and PDF (#288)

Changed

  • API errors caused by the database now include the underlying driver message (e.g. a missing column) in a separate detail field of the error response, visible in the browser's network tab. The user-facing message is unchanged; this makes problems diagnosable on managed Nextcloud instances where admins can't read the server log. The executed SQL and any bound values are stripped from the detail (#289)

Fixed

  • The dashboard "Budget Alerts" tile showed a red "exceeded" alert (with "0% over") for a category whose spending exactly equalled its budget. Spending that fully uses the budget without going over is now treated as a "100% used" warning, not an over-budget alert; only spending that actually exceeds the budget shows as exceeded (#293)
  • PDF reports rendered non-Latin characters (Polish, Cyrillic, etc.) in account/category names as "?". The PDF exports used a built-in font limited to Western European characters; they now use an embedded Unicode font (DejaVu Sans), so names display correctly. Applies to the budget report, bills-calendar and year-over-year PDFs (#292)
  • Marking a recurring transfer as paid showed a success message but created no account entries. The Transfers screen was only updating the transfer's "last paid" date instead of calling the mark-paid action, so no transactions were recorded; it now creates the paired transfer transactions like the Bills screen does (#291)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureNKgPUY81JziKewMWFs4QeLNIwZ8JqGBZ6wvFlsItL4R47yoDLAn4+I1T/pwgEOi7KR2lCUFBckiAdI78FONIy+JyCFhY0w4WcGEltsQdsytRMQYAggOWw+OlYvlDMPI6zoMoRfVcIvC3d+4pUrP91cJIVwi+bu5OIYO0C7ErDFCyvMlHK+ifsGvBluQJ377z8wnBUQIWSfudOuXewIyBHCF1QXsRXsVe0CIGWPNnT3ibuwxjm92a4vzwqdTEYy2qQwzPgYWPhgZofSdEN6j08iuwUzM0i9yXWd0IVpRNLb8RIo9lTzhJsjolrNFGZd0iiQk5A/4NQ6VOLKItVhwXJKOZk7KzyYTZmEki+PaeHKSEjEzwYNqv2tL4VPrBjyq5Y3bRTnYS3uBBCOnkWwn6ozQ4PitvSgPpcqciCtrP1hYAa0oQ7FsP8+BVsepO8gn8+lIcVjx7mW+YvufESAyFRXgAy61QBNjcd34vtoEfLqhdP4f37gZ/jdmCicDQ3sLw/eUIL98BylXmNvOge43vnYuRgGl9gBO11ENaP3EhqhqsrVr5Gyu07MGlMhCRlBn21fRN5sMORHFNx6pL/DcpwC0xtpfWEtHTCcEcLvArqfSiQSMrJaDvqftcQNMWYt4hGZKMVR7SYZsAragHUiMfvWDu1mW7HLNsW8PwySZDrHA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.31.0
Release Details
UpdatedJune 14, 2026, 7:05 p.m.
Changelog

Added

  • Exclude an account from totals: a per-account "Exclude from reports, dashboard & forecast" option (in the account's edit dialog) keeps the account fully tracked but leaves its transactions and balance out of every "all accounts" aggregation — reports, the dashboard, forecast, net worth, total balance and category budgets. The account still appears in your accounts list (with an "Excluded" badge) and on its own detail page, and selecting it explicitly in a report still works (#286)

Fixed

  • The account detail page's overview tiles only counted the transactions on the visible page (e.g. "50" for an account with 1,603). "Total Transactions", "This Month Income", "This Month Expenses" and "Avg. Transaction" are now aggregated server-side over the whole account, so they're correct regardless of paging (#285)
  • The dashboard spending chart's "Total Spending" figure (and each category's percentage) only summed the top 10 categories shown in the chart. It now reflects spending across all categories
  • The CSV import preview's "Auto-categorized" count was estimated from a 50-row sample and could be wrong for larger imports; it's now counted over the full file on the server
  • Editing an existing bill failed with "Failed to update bill" — saving the edit dialog (whether or not anything changed) returned a 400 error. The bill's start-date column, added with the limited-term bills feature, was missing from the list of updatable columns, so the always-sent start date was rejected before the save could run. Bills now save correctly, with a test guarding every persisted column (#284)
  • Opening an account's detail page returned a 500 error (the reconciliation-history request failed). The reconciliation controller was missing a trait it relied on, so it couldn't be constructed and every reconciliation endpoint failed; the account page surfaced it via the history sidebar. Now fixed and covered by tests (#283)
  • Starting an account reconciliation failed with a confusing "The string did not match the expected pattern" message (most visibly on Safari). The root cause was the reconciliation controller failing to construct (the #283 fix above resolves it); on top of that, the reconciliation screens now read error responses defensively, so any failure shows a clear message with the HTTP status instead of an opaque JSON-parsing error (#287)
  • The Budget Overview dashboard widget (and the digest, spending-anomaly and bill-reminder notifications) always showed amounts in US dollars regardless of your configured currency. The server-side amount formatter was reading the wrong settings key and falling back to USD; it now uses your default currency
  • The Budget Overview dashboard widget's "Total balance" now converts multi-currency accounts to your base currency instead of summing different currencies under one symbol (currencies without an exchange rate are excluded from the total and named)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureCseRrf2b0tfseaK8cBqqPjA8lhMT1C+aq6xVuP6vO3E6sRzawwkPNHdfK7CDaOro2TYW+agvm4g873WzOGVLIVa3FHEyFlnGRkFSwMz334bq1/Rcbw2WXdMbNUliZwdK76DNCauZ0JPz8FYIXr5cqkqbw80oHD/SWhWD5dTKRKJ2gpSvbNtXJfq32Sn04UVxrJq4StY11b5rJfCXR7P7RQxmFboIYJvhoVIfcebR+vighFLC9adkKVaF/xJ8tm1MVG6oJHJ4zKU87SV3+D8vB1xpxeWo2xRwseYSwg8Nk3ik6iXkcf4cHTACrCGyHhOXgCmltGkJ441alZ8kzOQCDe6Vw3Rx+zzgducfZGOQJPuIYcrpyZAAgN51xtDQJTWJNoT9jBrUmEv0r/ftZWj8QYnesnl8HgXUQPdLCsCaloLpISXkt7KzlHYlt4PgdMphbDBnuMROrXZtTeIwDCzwGAkatsK+l8HnM+FbMlpfszT7Ki1z2HYX/d+74aLRxkNUClx3fsQsxOtd0RxK9+/JPHW+W5Sv5kWbRSfiUrslL+pT7R15L9x4t3nFK8VUUEZSDcNynhSHxCVqrqOsV3mZ12eutyvQEPpN56qyLkaZmcoxOlOD2v4BKba8pBAL6YW05jx8hBWg9m0zAg4h3/qoA6zLDRrVfHi+LvUiiE1YDWs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.30.2
Release Details
UpdatedJune 13, 2026, 6:03 p.m.
Changelog

Fixed

  • Dropdowns in the transaction list (the column-configuration gear menu and the in-cell category/tag/account editors) were cut off when the table had only a few rows, because the table area was shorter than the dropdowns. The transaction table now fills the available height, so every dropdown has room to open in full (#280)
  • The Tags column couldn't be shown/hidden — the Show/Hide Columns menu was missing a Tags entry, and the column wasn't wired into the visibility logic. Tags can now be toggled like the other columns (#281)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureRXpaKwi4ViRdeYM6mjC3JtrlDOFrm03LMBFc2gQMktdYfBEoyMrW3YBp+DPKezxnLOmETNnqjXAI+oswcQLQMkRbAcjuD1dpBBZi7x8kmvtc0lZUcrKRw2QKUzDD5luZaN7JE14o393XlPFxdqkaUbJvWTltA5xK/XO2H72GyvEO7/7de7HCcP2G4XTK5kGSeP3PHRNQ5MjiB49QlM7D95p7Od374Fbr0k52h0sWFHSA14LgJSyPXCgHxxJMqVy7O76LlS1Iedg8B4TFBbTJZVol/8emaHjBHvEwVVzSIIkr9wdtZ60aqrEhJfTqaRwdGS0ks53VE2ROoE829Jnc3Xkz4Xxc0WEqH5a4vxbUWnA8NbuaFNAsUcfXW+0TDTUeLT34IV8c6GZkwn0z4a1parjkif0yyEolfPhNomKX/JMl74aSG5i2BkKyDH3OXMg9oC0/czhOIxluUuFCwWJyd6cBOGd6r/R382SMMe+mCHDpuBxIY12gRo4bzcAfmYMQ3e6rrtgpFwxBllUaK8lC+yPy9x9502QHhZem922Tz7HokfuXuFxh1x9Z6doBSvoZOe2H2PIKRupmFf4I9epoRYdDQZjatpZpN3+oZnz6DmY7f9+g3gaZ7Dl9dkPydm96203Pox5SGz9vhOQaXeOIw+l+rLnXnbodzB3eyqz11Ig=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.28.3
Release Details
UpdatedJune 12, 2026, 1:14 a.m.
Changelog

Security

  • The recurring-income update endpoint no longer passes the raw request body through to the entity layer — a crafted payload could previously set internal fields such as the owning user (mass assignment, integrity only — no data disclosure). Update keys are now allowlisted like the other endpoints

Fixed

  • Auto-derived recurring budgets (#269) are now consistent across all surfaces: the dashboard "Budget Remaining" hero, Budget Progress/Breakdown widgets, Budget Health score, and budget alerts now apply the same recurring fallback as the Budget view — a category funded only by recurring bills can now trigger alerts and is counted in headline totals
  • Auto-derived budgets now respect bill start/end dates: a bill that hasn't started (or has ended) no longer counts toward today's budget, avoiding double-counting during a planned cost change (#268)
  • Recurring income summaries (Income view header, dashboard Income Tracking widget): semi-monthly income was counted at half its value, and a one-time income at full value every month until received
  • Transfers page monthly total: semi-monthly and semi-annual transfers were converted incorrectly
  • Live forecast cache: cache invalidation never matched the stored key (changes such as toggling "exclude from forecast" appeared to do nothing for up to 5 minutes), and the cache key ignored shared-account visibility, letting a share-restricted viewer briefly see the owner's totals
  • Editing a bill's amount without updating its split template is now rejected when the stored splits no longer match (the payment would have silently imported unsplit and uncategorized); setting a split template via the API now clears the bill-level category, matching creation
  • Multi-account import partial failures (e.g. a deleted destination account) are now reported in the UI instead of masquerading as a full success
  • Import preview now also flags repeated bank transaction IDs for accounts that will be created by the import
  • Long OFX FITID hashing threshold raised so every previously-imported FITID keeps its exact ID (re-import dedup continuity)
  • Auto-derived category budgets (#269) now handle every supported frequency correctly: semi-annual bills were over-counted 6×, semi-monthly halved, custom-schedule bills counted every month, and one-time bills inflated the budget monthly until marked paid (now excluded). Frequency math is delegated to the shared calculator, which also gained the missing semi-monthly conversion
  • Auto-derived budgets no longer apply to past months — they reflect today's recurring bills/income and were rewriting history (including overriding explicitly-zeroed snapshot budgets)
  • Multi-account import: an invalid destination account mid-import no longer aborts the batch, and deferred balance recomputes now always run for already-imported rows
  • Bank sync: the post-import balance recompute now keys on transaction creation, not the import counter, so a row persisted just before a non-fatal error still gets its balance update
  • The scheduled-transactions background job now recomputes balances from the ledger (it was the last remaining hand-computed balance delta, and could race concurrent imports)
  • Import preview now flags a repeated bank transaction ID (OFX FITID) within one file as the duplicate it is, matching what import actually does; per-account preview counts include rows that will import with skip-duplicates off
  • Marking a bill paid by linking an existing transaction now warns if the link silently failed (no money movement recorded)
  • Extremely long OFX FITIDs are hashed to stay within the import-ID column
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
Signaturefa7u8mWcwya82OCYZOh+XZFPRJH94oqiBM5WUtEtvU3Dh6Lq+pMs8A7e2aCOa0Y6AbwWH7TF6ZRtwanfSh2PjQMwAaDFlR5anBdAvr89L/fn3eK0uSrZetqNGmAT7Itlc0mT5KowbTvtWDRdK46oR4jjqgXKay6JeO7caGbAcKmyfhJARbfTXsb5etz/yhMX72X33ayUYtCo8nQrtxLTGO5AAPIcFbq1pa3W3d1SHuQ7Ibksv3WXrZe79ngT4pQpGp6xtz3ervqo86vrI8qH8DDg6g9IJE8D1iseOiVzRv/KI/N06LnY0OvUHNZwGrJph5Jh3BrYg2/5rSYzEP5VzaGyZm+AS0DO1bXf9BC5OqbRl3s/FsM+4UgowriYD0S2Zwc4/2j/W3mDRjOdGf0MJxd8SOxv7uW2P5JL0TImjA7mTgppSipw1ShGTl8BU7q11cCtFmuCmwGfvPlRLQtMqEdr93gNkY84rAja08K9Ro1/ySZtrEWVRh/lYzQqmpazsjlw1V4x+KYtn65LHr9Zxd46ToleV5kv1tEZJ1u7nFXeNnrfThyz78EqvLbVxzcqphrfrImGOD9/VhUwryM58KtVz7+tXmLjn3SsSmM8sz9DEljbEKK4zTV9mQgIxviGwzNuIGEFD+HaW6HRIsAzRNtXow5oT7Kgpqa3BnJ3HxM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.28.2
Release Details
UpdatedJune 11, 2026, 6:33 p.m.
Changelog

Fixed

  • Dashboard could render half-empty (hero tiles only, widget grid invisible): a Chart.js resize on a hidden tile's detached canvas threw during initialization, and the widget grid was never revealed. Chart resizing now skips detached canvases and the grid is revealed before the resize pass. Likely also behind "nothing happens" reports after certain actions (#273)
  • Dashboard tiles with a saved account selection pointing at a deleted account (e.g. after factory reset + import re-numbered accounts) no longer error with 404s and stay empty — stale selections fall back to all accounts
  • Account balances are now derived from the ledger instead of running deltas — the root cause behind every historical balance-discrepancy report (#3, #89, #124, #163, #187, #194, #274). The stored balance was a running total that each transaction code path adjusted by hand; any missed or mis-signed delta corrupted it permanently. Every transaction create/update/delete (and retroactive rule run, repair action, import and bank sync) now recomputes balance = opening balance + net of non-scheduled transactions, making drift impossible and self-healing past inconsistencies on the next write. A one-time migration backfills the opening balance so displayed balances do not change on upgrade (#274)
  • Marking a bill as paid now warns loudly when no transaction was recorded (bill without an account, or transaction creation failed) — previously the bill was advanced silently and the account balance never reflected the payment, drifting from the real bank balance every cycle (#89, #274)
  • The app's own export→import now preserves transaction status (scheduled transactions no longer silently become balance-affecting after a migration) and restores the opening-balance invariant for imported accounts
  • "Skip Duplicate Transactions" off is now honored: previously rows whose import ID already existed were still rejected deeper in the stack (duplicate-ID guard + unique index), so parts of the batch silently failed to import. Intentional duplicates now get a uniquified import ID and the entire batch imports (#275)
  • Import duplicate detection no longer gives false positives for legitimately identical rows — e.g. two same-priced purchases on the same day with the same description. Identical rows within one file now import as distinct transactions (occurrence-aware import IDs), while re-importing the same statement still skips everything it already imported. Re-importing an older statement also recovers transactions the previous logic wrongly skipped (#276)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
Signaturekx2VkgWxozCE2LPp/nzgQQiqFxk/83sOdycv738Ly/uEwn/MhxF/kNtBlP4DMQbhmtkcHdt+kDIlQK1S5q1WHJWZQxjLc/ZCkj/ZEPkNBrDhHwdQCRh4TsRVJyfrIxXUTOCAKJLYk+0DXlnJB3kMhR81adns3wWNH9RkC4b62k3gXtzMR4n+jz/QJDGEAOXRpDUzxEm2TKqFot6sGRt3u0+rVo0bng6nogDJha0APeFI5Ujt+3mECw9MlxNt9nKbQlIGjAnraLVUFz0bXNLK7dbBS3PSzjLsUxhoNhAqMivfHEfLViOvIlCFNHzoWGxFnHK0flI2zJXUlOnaidOEyfhZWbqNpHZL4RZLIZWYQaztJgATNsK+L5aO0Md+Np1hgE8jkdY90gugiV06JqoPEWqCo/qSyaO9N3xYpeXrwfiL37JJqkigwg69RZN3OD1DfBT8ue7QlhT93dfg+39ERzbVY9QBu0gT+bwIs8tyE1MVXOaSjHKUkHab5dpGU3NQhvu/E1CO1BWA3dYvUUqvrvXKB96gm7IqNQEAkRi4JJHDPGtgzjERM+k8z/JA2xeJmPp7V3TZ/1WiKOoKMPz88soCJBMuj/LWnSpekLAGo4RJDy1JBlOm835e3ieJFVHwIwqG9YP7oRB/puFvYV6aaEXCnSkUcZV+z+2NXmHB8KM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.28.1
Release Details
UpdatedJune 8, 2026, 12:13 p.m.
Changelog

Fixed

  • Install/upgrade aborted on Nextcloud 32 and earlier with "Primary index name on oc_budget_import_templates is too long". The budget_import_templates migration created its primary key without an explicit name, so Nextcloud derived a default name and hit the Oracle-compatibility identifier limit (the unprefixed table name is exactly 23 characters). The primary key now has an explicit short name. Thanks to @TheUnderdev for the report and fix (#272)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureXdUz/Pc10uA7L3R+vTa/cI52W9X8nDyH33zElCWeS/xWeYgonfr0GwLhn4ywE7rtUQF8e1Y8GhETbSd60otnPduP+4rXp7+5+b+iMTa3qfYi6gAd3Y1YJJrZqK0yx2Fdqld/nhQLfFpVkUSQl/JQ78RZanEh779Af5RejNl7lolRlJYg7ZNrLrFasWrpyrLNsg4+Tf74/vMpKWDXf0FEIqjnXZ0LKJm7Yjig4uazy+a5vDcDOrfq6fLU56d9ML/jBJK+9A2loT3I5HP7H2cngdLpwk6+MNLiYQDsdNzLGJJK9TK4hn0Cj+AV80mAQ45beagh4H0SmEoDTPvR/hC7LLlU5rtioE1Rg1tCvlZfHBuPcH9LZMq11Q3HVbZnvzkTdG3lKQlKeFhP86QOIjiAg1Frm0yuOt4nMSdG36N+k1C5szF7HrCoH+u1XgdY6fKI6WW71RkqXJ2IhwOorxcijLVQc2l3wyDLqoQrHtJA2yWGsI9NXlq+d5ZLJ03T7xvcLBPgSDTz91KqBABqJYRdCGhzAuQPe9M814mDu5XgdoCJNUKNrAl6YGvLvJXyj5j8I09qImqsQx09AmEBxi8YTZDbxuO8U/g3yKO14aBgGu3Z+v8+h6xyqJyNsPEbHHxpjfSbwAF/9FlvjA64nOTqPam3fPOjZAdqne5bgf05gFY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath
Budget 2.28.0
Release Details
UpdatedJune 7, 2026, 9:59 p.m.
Changelog

Added

  • Shared savings goals — share a savings goal with another Nextcloud user. Recipients see a "Shared" badge and can view progress; with write permission they can edit the goal and add money, while only the owner can delete it (#255)
  • Auto-derived budgets from recurring items — a (sub-)category with no manually-set budget now shows its committed recurring total (active recurring bills + recurring income, normalized to the budget period) as an automatic budget limit, marked "auto". Typing a value always overrides it (#269)
  • Exclude extraordinary/one-time items from the forecast — a per-transaction "exclude from forecast" flag (with a "No forecast" list badge), the same flag on recurring bills/income (propagated to generated transactions), and a matching import-rule action. Flagged amounts still affect your balance but are kept out of the projection averages (#270)
  • Reusable CSV import templates — save column mappings and import options and reapply them to future imports (#247)
  • OFX/QIF import account routing — route multi-account OFX/QIF files to the right Budget accounts, remembered across subsequent imports
  • Bank sync: pending transactions — option to import not-yet-posted (pending) transactions, automatically reconciled when they clear (#257)
  • Bill start dates — a bill only occurs on or after its start date, making it easy to change a recurring cost mid-year by ending one bill and starting another (#268)
  • "Shared with me" expenses view — recipients can now see expenses that have been shared with them (#248)
  • Dashboard period indicator — chart tiles now show a read-only indicator of the period they cover (#250)

Fixed

  • Dashboard now collapses to a single full-width column on phones, independent of your configured desktop column count (#249)
  • "Excluded from reports" categories no longer appear in the Budget view (#266, #267)
  • Category spending chart shows income as positive with the correct label (#265)
  • Tag-linked savings goals now sum net realized contributions (credits minus debits, excluding scheduled) (#264)
  • Recurring income description is now persisted on create (#263)
  • Transfers are now excluded from dashboard income/expense totals (#262)
  • Account Breakdown report now uses each account's own currency instead of a single assumed one (#256)
  • Fixed a PageController crash (TypeError) on unauthenticated requests (#259)
  • Quick Add date field normalization on iOS (#235)

Docs

  • Documented the standalone Quick Add page and the iOS home-screen workaround
  • Noted that GoCardless no longer accepts new bank-sync sign-ups; EU/UK self-hosters without an existing account are pointed to manual import (#271)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEATCCAukCAhNXMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjAzMTA1MDE5WhcNMzYwOTA4MTA1MDE5WjARMQ8wDQYD
VQQDDAZidWRnZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDNKchk
gsYxcNMufIP/m82JAeIA/fFibi4mGwKEkXwWLXDDAMiwaHmrpkCcC7BYNw0iOk/K
/xYMlEw738UrhQtu5PHAi/fecIAwh7H/ij7jGcwROe7cOcwK0sdmT76po8Ry4Of0
1wE8f+/Rmw9+rRPLE5dRluuHhiO0Eg6pO+KnqxgWID7CY4Ij7xuQtyUsYKkArjEq
irooV6OPmvQHDyQHMbgKhYr+47LZZ0YuNzZd0jhd5JIMWXV6aUgW9R23c9T7JgMG
pPOhHSWxZOBlRWzRVtCEzSug3J39n9eZqVP1PFIZI/pq0mOOt7LTz5IUX0xF0lJ+
JM7lPsTuJibESiWXKo9neTvy9BUWDIV9D/i8CH1uz0+xVala0uQRSNbrdWV4cN4v
oVaYwoXm+kYeGSz27f9CxJgLEA5sxuFWlbmm2+AXOFQPyyUDVXDCvAB/rzDZpFNo
HxM0OxyfmbmLmu+j31qW3JnvJvb6eroYxlvwgVeOCTihhIh6HKQzNFKv0iq3qc4Z
2a2czDyqt5h52CO+hwjsB5jjGNgS7AIxgBmDiw2V10meNGR/ZBVP9zew4FA3IEdY
GVuFBP52xdStrDgFpE3RK799n2i0fXvZE+9zzRlZ7DNRxZXMvBBpR35IhmyqVPDF
PbUmCKV8/Rm7ryZPanmAt78CrI5RVmPz+rrGHQIDAQABMA0GCSqGSIb3DQEBCwUA
A4IBAQCD72IK7rP8TSFVLvja0VU56do2E6q4UTVAtUikqVnVszEv6lJUNqcHT+it
vgD3JtuybukU1pRsbjdu2iLjx2fStYfvapmjMa8rHqAiD6IKVkjOsq5w4Jc4HSR4
JTU9u40YR0Ly1+lHZmGDbBjK9JqJPZBHzPWlJ1sDE+DmgR9Fid9Dfv/uavkx3uuc
FPnWzoxoQx8JQs6DAHzBL6qHfbFoncPRrztRbTmkrAUhJI98nuEGUD1+T51qU5cu
pj8q262ZYKwYWvOyk1AmiokbMiBVd0Obewqj7IiY6T5S+zORLOj1IhzaZ83P9pgM
mq0/oJk8aQYC3vgYCmY2aNWXUX18
-----END CERTIFICATE-----
SignatureiQMjVEdG/FWcc56MAPwvDd04E0ERl5pUWkrRWtdYdgbboBj0+7YAo+rDODFz5qC3EPqWBr7XRkjXOfvn9+m61v0w88Qy8SZQIZRHTAwRJuK5jDQbpfce5dropQgKW8btEIzI3BPE+DFBIDeV+qLNQEYT25ApMkUAz44PumVV0sJMibCGo0JBgIxHCPyem1NNjYaX3qQDt41eg8I5rH8wLCWGa7lNTtGyp8vaJ4ck0sh4J9sPuVzMdJoXQDHfGe5S8YY3GTwgvwyloNJQAFO+SQzm5WX6mC/IKAfpxwG82cQAEMm6B4geyHwaYGSFDEgrBuHOZj2fQmvQgzoarRN+U76bOhjQI0IqU76Pno3qM17eF+UKW8peDiqFBXpepGYfDoeyjQsF2GqxIK3C0bNUR5bp9RjNxkWckwvS2ihvP/2rg4lr05MuDDmIdBYG9Ny+PT9dEWBssQkXzIVX28Ox6P8xkorH0n5EoSRl3j+KMXbM34QteNMt1+jgsHAxcS8H57CwV3MC0uqZnhxUu/LbwIGHzvKbC6vN3F/3l6F+35rWM7UaQhdvr2W/1q5Swj5F2sp2Bq5jgrxbWIuUB9+pzftASgVUEmtd6blOUlJuuJj1wmaIrA9jx21+Bg8t/OmrQqB97ZHzint0WTdo7KTOviKZGnoZVXeoQthPmSyW7Wc=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
PHP>=8.1.0
PHP extensions bcmath