diff --git a/guides/app-features/budgets.mdx b/guides/app-features/budgets.mdx index b76293a..0a00a9d 100644 --- a/guides/app-features/budgets.mdx +++ b/guides/app-features/budgets.mdx @@ -109,6 +109,12 @@ Sure automatically excludes activity from tax-advantaged investment accounts whe Transactions from these accounts won't count toward your budget limits, keeping your budget focused on regular income and expenses. +## Creating a budget without category allocations + +You can save a budget that only sets an overall monthly spending amount without splitting it across categories. During the budget setup wizard, the **Save** button is enabled as long as the budget is initialized and you have not over-allocated — you do not need to assign any amount to individual categories first. + +Any unallocated amount is treated as **Uncategorized** spending and appears in the donut chart and budget detail view. You can add category allocations at any time after saving. + ## Tips for Effective Budgeting 1. **Start simple** - Begin with just a few major categories before adding detail diff --git a/guides/app-features/csv-imports.mdx b/guides/app-features/csv-imports.mdx index e8f5797..e7662dd 100644 --- a/guides/app-features/csv-imports.mdx +++ b/guides/app-features/csv-imports.mdx @@ -124,6 +124,8 @@ Date,Amount,Name,Account,Category,Notes Check that your date format matches the setting you selected during import. The Balance Date column in account imports must use the same format as other date fields. +Sure supports `DD/MM/YY` (two-digit year) as a date format for CSV transaction and account balance imports. Select it from the date format picker during import configuration. Because two-digit years are ambiguous (Ruby interprets `%y` as 1969–2068), this format is only available for CSV imports where you can verify the parsed preview against your source data. It is not available as a global date preference. + ### Accounts not found When importing transactions, ensure the account names in your CSV exactly match existing account names in Sure. diff --git a/guides/app-features/statement-vault.mdx b/guides/app-features/statement-vault.mdx index 82e1066..da432f0 100644 --- a/guides/app-features/statement-vault.mdx +++ b/guides/app-features/statement-vault.mdx @@ -62,6 +62,31 @@ When you upload a PDF through the import flow, Sure first stores it as an unmatc After transactions are extracted, the import still needs an account before it can be published. +## Reconciliation against existing transactions + +When you assign an account to a PDF import, Sure automatically reconciles the extracted transactions against what that account already holds. Transactions that are already recorded — whether imported from a previous CSV, synced from a provider, or entered manually — are matched and marked reconciled rather than offered for import again. + +Matching uses the transaction amount and date (with a small date window to account for posting-date differences between the statement and the provider). Transaction names are not matched because statement descriptions and provider names for the same transaction rarely agree. + +The import review screen shows a breakdown of the statement: + +- **Extracted**: Total transactions found in the statement +- **Already recorded**: Transactions matched to existing entries +- **New**: Transactions not yet in Sure, offered for import +- **Awaiting review**: New transactions not yet published + +A statement where every transaction was already recorded completes immediately with nothing to publish. You can view the summary at any time from the import detail screen. + +Provider-synced accounts are now available as import targets. Previously, PDF imports were restricted to manual accounts because importing into a synced account would create duplicates. Reconciliation removes that restriction. + +### Reconciliation state + +Entries matched by a statement import are marked **reconciled**. Reconciled means a statement was used as evidence for the transaction. The reconciled state: + +- Survives the statement being deleted (the timestamp is preserved, the statement link is cleared) +- Is released if you reassign the import to a different account +- Is set at review time, not at publish time, so the statement is the evidence regardless of whether you publish additional new transactions + ## Tips for better matches - Keep the institution name in the filename. diff --git a/guides/app-features/transactions.mdx b/guides/app-features/transactions.mdx index 4e63e12..5105d1d 100644 --- a/guides/app-features/transactions.mdx +++ b/guides/app-features/transactions.mdx @@ -43,6 +43,8 @@ Categories help Sure group income and expenses consistently. You can assign a ca When there are uncategorized transactions, use the categorize flow to work through them in batches. You can assign a category to each transaction and optionally create a categorization rule so future matching transactions use the same category. +You can also create a new category inline from the category selector in the transaction form without leaving the transaction you are editing. Type a name that does not match any existing category and choose the option to create it. + Use subcategories when you want more detail within a broader category. For example, a parent category such as **Food & Dining** can contain subcategories such as **Groceries**, **Restaurants**, and **Coffee**. Budgets can use those subcategories individually or share the parent budget. ## Bulk edit transactions diff --git a/self-hosting.mdx b/self-hosting.mdx index 0d79c4f..4855d00 100644 --- a/self-hosting.mdx +++ b/self-hosting.mdx @@ -174,6 +174,16 @@ If you enable passkeys or security keys on a public hostname, also set `WEBAUTHN If you only want Cloudflare Tunnel access, do not leave port `3000` broadly exposed to the internet. Keep the host firewall closed or bind the published port more narrowly. +### Sure import size limit + +By default, Sure NDJSON imports are limited to a fixed file size. Self-hosted admins can raise this limit with: + +```txt +SURE_IMPORT_MAX_NDJSON_SIZE_MB=50 +``` + +This setting applies to both the GUI upload path and the API upload path. Without it, only the API path honored a custom limit; the GUI always used the built-in default. + ### Market data provider variables Sure supports multiple securities pricing providers. You can configure them through environment variables or in the UI under **Settings > Self-Hosting**. See [market data providers](/providers/market-data) for details on each provider.