Skip to main content
The SimpleFIN bridge intentionally keeps using v1 for now; it is unaffected by the v1 deprecation notice and will move to API v2 in a later release.
Redbark speaks the SimpleFIN protocol, the open standard that finance apps use for bank sync. Any app with a SimpleFIN integration, including Actual Budget, Zerosum, Sure, and the Firefly III data importer, can pull your accounts, balances, and transactions from Redbark with a single setup token. No API keys, no custom bridge scripts.
SimpleFIN access requires a plan that includes SimpleFIN — Developer, Professional, or the private Zerosum plan (trials included). Banking and Documents accounts are supported; brokerage accounts are not exposed over SimpleFIN.

How it works

  1. In Settings > SimpleFIN, generate a setup token, naming it after the app you are connecting.
  2. Paste the setup token into your app’s SimpleFIN settings. The app claims it once (within 7 days) and receives its own private access credentials.
  3. The app pulls new data from Redbark whenever you run a bank sync in it. For Actual that is the Bank Sync button on desktop or pull to refresh on mobile. Redbark never pushes; some apps, like the Sure and Firefly III importers, can schedule that pull on their own side. Revoke the connection any time from the same settings section.
Each connected app gets its own token, so revoking one never breaks another.

Transaction rules

SimpleFIN filtering is off by default. To exclude transactions you do not want imported:
  1. Open Rules, create or edit a ruleset, and add a rule with the Skip transaction action.
  2. Add an Account condition together with the description or other conditions you want to match. Conditions in the same group must all match; an OR group can match independently.
  3. Review the conditions, then open Settings > SimpleFIN and turn on that ruleset under Transaction rules.
Only enabled skip rules in active, opted-in rulesets apply. They run on every SimpleFIN read, across all your SimpleFIN app connections. A match in any opted-in ruleset hides the transaction. Pausing a ruleset or turning its SimpleFIN switch off stops filtering on subsequent requests. New and duplicated rulesets start with SimpleFIN off.
Rules match the conditions you choose. They do not identify authorization charges or prove that two records are duplicates. A description-only rule can hide legitimate, unpaired posted transactions. Avoid treating equal amounts and dates as proof of duplication, and narrow conditions to the intended account.
  • Email, category, description and other transform actions do not run in SimpleFIN. Match totals in the rules editor count destination syncs only.
  • Account balances and transaction IDs are unchanged. REST API, MCP and destination sync behaviour are unaffected by the SimpleFIN switch.
  • Pending status is preserved. pending=1 still includes genuine pending transactions unless they match an enabled skip rule; there is no automatic pending-to-posted deduplication.
  • Filtered transaction reads bypass the provider cache so Redbark can detect incomplete scans. They may take longer than unfiltered reads.
  • Rules do not delete or repair transactions already imported into your budgeting app. Back up your budget before reconciling existing entries. Turning a rule off can make previously hidden transactions available for import again.
  • Filtered requests inspect a bounded window of up to 5,000 in-window records and return up to 2,000 remaining transactions per account. If a limit is reached, the request fails rather than returning an incomplete import; request a shorter date range. If rules cannot be loaded, transactions are withheld with an error rather than returned unfiltered; balances remain available.

App setup

In Actual, open Settings → Bank Sync, choose SimpleFIN, and paste the setup token when prompted. Then link each Actual account to the matching Redbark account. Requires Actual 24.10.0 or later.

Protocol details

Redbark implements SimpleFIN protocol version 1 at:
GET /accounts supports the standard query parameters: start-date and end-date (Unix seconds), pending=1 to include pending transactions, balances-only=1, and repeatable account filters. Each account also carries an optional extra object with two keys. account_number is the masked account number, showing only the last 4 digits. redbark_account_id is the same account’s id in the Redbark REST API v2 (an acct_ id), useful if your app also talks to that API directly. Both keys are additions to the SimpleFIN 1.0 spec, so apps that don’t recognise extra can ignore it.

Limits and behaviour

  • Data comes from your banking provider and may use Redbark’s bounded encrypted Fiskil cache. Plaid balances reflect Plaid’s last successful connection update and are not cached by Redbark. Live provider payloads are not stored in Redbark’s primary database or logs. See Caching for freshness, retention, and opt-out behaviour.
  • You can have up to 10 active SimpleFIN connections or unclaimed setup tokens that have not expired. Expired, unclaimed tokens do not use a slot. Revoke an existing connection to free a slot.
  • Default transaction window is the last 30 days when the app does not send start-date. Banking history is capped at ~7 years, matching the underlying providers; Documents reads keep the requested date range.
  • Up to 2,000 transactions per account per request.
  • 300 requests per minute per connected app, sized for client backfills that burst sequentially (Firefly’s importer chunks history into 44-day windows). If end-date is at or before the banking history floor, Redbark skips banking transaction reads. Balances still use the normal read path, and Documents transactions can still be returned.
  • Up to 4 requests per connected app are processed at once. A further request waits for a free slot for up to 15 seconds, so its response can take that much longer, and only then fails with HTTP 429. If Redbark cannot check for a free slot at all, the request fails with HTTP 503 (concurrency_limiter_unavailable) and Retry-After: 10. Apps that sync each account with its own request should allow for this.
  • Account discovery without account filters is best-effort. A connection requiring action can report Connection to <bank> may need attention in the errors array. Temporary balance or transaction failures instead say that data is temporarily unavailable; available accounts are still returned. A transaction-read failure can leave an account’s balance available with an empty transaction list and an error, so inspect errors before treating that list as complete.
  • With account filters, a requested account that is temporarily unavailable or has no balance makes the request fail with HTTP 503 (simplefin_accounts_temporarily_unavailable). Retry later. Redbark does not return a successful partial account set that could make your budgeting app treat the omitted account as deleted.