Skip to content

Known Limitations

This page lists confirmed limitations. Where an alternative exists, the entry explains it. This page does not describe planned work.

  • It does not replace everyday budgeting. Administration, cleanup, statement reconciliation, diagnostics, queries, cross-budget sync - yes. Entering transactions, budgeting on your phone, Actual’s normal bank-sync workflow - no.

The first budget on a server has to be connected to be enrolled

Section titled “The first budget on a server has to be connected to be enrolled”

Applies to: enrolling budgets for scheduled runs.

Bench needs a server’s password or API key to enrol its first budget, and the browser only holds that for a budget you have connected to. After that, the server’s other budgets can be enrolled from the Connections tab without connecting to them.

Alternative: connect to one budget on the server, enrol it, then enrol the rest from Connections.

Applies to: the ActualQL workspace.

The generated cURL calls actual-http-api’s /run-query. In Direct mode there is no such endpoint to call.

Applies to: the “Remember this server” option.

Remembered secrets are stored in the server’s metadata database and survive only when /data is persistent. The public demo disables remembering. Self-hosters must verify their volume mount; a writable container directory is not enough to survive container replacement.

A forgotten passphrase can’t be recovered

Section titled “A forgotten passphrase can’t be recovered”

Applies to: remembered servers.

The passphrase and its derived key are never stored, so a lost passphrase means the encrypted secrets cannot be decrypted - by design.

Alternative: use Forgot passphrase? on the unlock panel to reset the vault, then set a new passphrase and re-save your servers. Changing the passphrase (when you still know it) re-encrypts all saved servers instead.

Remembered servers are per-instance, not synced across devices

Section titled “Remembered servers are per-instance, not synced across devices”

Applies to: remembered servers.

They live in one Actual Bench instance’s database; there is no cross-device sync of remembered credentials.

  • Large budget snapshots depend on browser memory. Budget File Health and the Data Browser process the exported snapshot locally in the browser; very large files may be constrained by available memory.
  • The unattended scheduler is single-instance. It runs in-process and is designed for one instance; it does not coordinate across multiple replicas.
  • Notes save immediately. Note edits are not part of the staged Save and are not reverted by Discard. See Core Concepts.
  • Query results reflect saved state. ActualQL results do not include unsaved staged edits.
  • Account budget type is fixed after creation. On-budget / off-budget can’t be changed later (an Actual Budget constraint).
  • Transfer payees are restricted. They are system-managed and can’t be edited or bulk-deleted like regular payees.
  • Income categories can’t move groups. They stay locked to the single income parent group.
  • Schedule-generated rules are read-only on the Rules page and can’t be merged; manage them from the Schedules page.
  • The schedule completed flag is not a status. It’s retained for round-tripping but isn’t shown as a reliable paid/completed state.
  • Carryover is toggled via the right-click menu, not edited directly as a grid cell.
  • Category-to-pool transfers are not supported (transfers require both a source and destination category).
  • The grid is not virtualized, so very large category lists may scroll slowly.
  • Read-only. Budget File Health and the Data Browser never write back to your budget; they inspect an exported snapshot.

Not currently in scope:

  • True Actual transfer-linked sync (same-budget flows use a plain copy).
  • Automatic (non-review) target deletes - deletion is always review-first.
  • Transaction-flow category auto-create. Dedicated Category flows can create missing categories under a placeable target group.
  • Fuzzy duplicate auto-mapping - only exact duplicates can be auto-mapped (opt-in); fuzzy duplicates always go to the review queue.
  • No FX gain/loss accounting.
  • No silent recalculation of past conversions - rates lock at first sync.
  • No multi-currency within a single budget file - conversion applies to cross-currency sync between budgets.
  • Rate availability depends on the provider and the coverage you’ve filled or imported.
  • Some features depend on your Actual Budget server version (for example, tags require Actual Budget v26.3.0 or later).

If a limitation is blocking you, open a feature request on GitHub Issues describing your use case.