Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions guides/app-features/budgets.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 2 additions & 0 deletions guides/app-features/csv-imports.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
25 changes: 25 additions & 0 deletions guides/app-features/statement-vault.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
2 changes: 2 additions & 0 deletions guides/app-features/transactions.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
10 changes: 10 additions & 0 deletions self-hosting.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -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.
</Warning>

### 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.
Expand Down