---
title: "Connect Actual Budget, Securo and other SimpleFIN apps"
description: "Sync the banks you have connected to BankSync into Actual Budget, Securo or any SimpleFIN-compatible app with one setup token. No second bank login, nothing extra to pay for."
section: "Integrations"
canonical: "https://banksync.io/docs/integrations/simplefin-setup"
---

BankSync speaks [SimpleFIN](https://www.simplefin.org/protocol.html), the open standard budgeting apps use to read bank data. Any app that accepts a SimpleFIN **setup token** — Actual Budget, Securo, beancount importers, your own script — can read the banks you have already connected to BankSync. You do not link your banks a second time, and the app never sees your bank credentials.

> **Before you start:** You need the Admin or Owner role in the workspace, and at least one connected bank.
> SimpleFIN access is available on every plan, including Free.

## How it works

**Three steps, once**

1. **Create access in BankSync** — Settings → Developers → SimpleFIN → Create access. Choose which app it is for and, if you
   want, limit it to specific accounts.
2. **Copy the setup token** — It is shown once. It is a long base64 string, and it expires in 7 days if it is never used.
3. **Paste it into your app** — The app exchanges the setup token for its own credentials and syncs from then on. You never need
   to paste it again.

![The BankSync SimpleFIN setup token screen: a one-time token in a monospace block with a copy button, followed by numbered steps for pasting it into Actual Budget.](https://cdn.banksync.io/screenshots/simplefin/setup-token.ae601461e81e7c94.png "The setup token is shown once, with the paste steps for the app you picked.")

### Choose which accounts the app can see

By default an access can read every account in the workspace. If the app only needs some of them,
pick **Choose accounts** when you create it — a budgeting app that tracks your spending does not
need to see the savings account you never touch. You can change the scope later without
re-linking: the app sees the new list on its next sync.

![The BankSync SimpleFIN create form: app picker with Actual Budget selected, a name field, and an account scope chooser listing accounts grouped by bank with two of three ticked.](https://cdn.banksync.io/screenshots/simplefin/create.a7b75da7f8af0ffe.png "Scope is set per access, so each app sees exactly the accounts you gave it.")

## Connect Actual Budget

> **Use the BankSync token, not a Bridge token:** Actual links to the SimpleFIN Bridge on its setup screen. Ignore that link — paste the token
> BankSync gave you into the same box. Actual does not care which SimpleFIN server issued it.

**In Actual**

1. **Add the account** — Click + Add account at the bottom of the sidebar, then Link bank account with SimpleFIN.
2. **Paste the setup token** — Actual stores the resulting credentials on its own server, so you only do this once.
3. **Link your accounts** — Actual lists the BankSync accounts it can see. Map each one to an Actual account, then click
   Setup bank-sync.

To re-link later — after rotating the token, for example — use **Add Account** → the **⋯** menu next
to SimpleFIN → **Reset SimpleFIN credentials**, then paste the new token.

## Connect Securo

**In Securo**

1. **Open the connect flow** — Go to Accounts → Connect Bank → SimpleFIN.
2. **Paste the setup token** — Confirm, and Securo imports your accounts and holdings.

Securo needs `SIMPLEFIN_ENABLED=true` in its environment. Leave `SIMPLEFIN_API_URL` at its default —
it only affects where Securo sends people to *get* a token, and you already have one.

## Any other SimpleFIN app

Paste the setup token wherever the app asks for one — the screen is usually called "SimpleFIN",
"bank sync" or "link bank account". If you are writing the client yourself, the
[SimpleFIN developer reference](/docs/api/simplefin) has the wire format, query parameters and the
two-request claim exchange.

## Check what the app receives

Open **Preview** on any access row in Settings → Developers → SimpleFIN. It shows the exact
response your app gets: the accounts in scope, their balances, and any bank that is reporting an
error. If an app shows nothing, this is the first place to look.

![The BankSync SimpleFIN preview panel: two accounts with balances and balance dates, one connection, and an empty error list.](https://cdn.banksync.io/screenshots/simplefin/preview.0ff845bca71abab6.png "Preview is the response your app sees, as it sees it.")

## Rotate or revoke

**Rotate** issues a new setup token and immediately stops the credentials the app is holding. Use it
if a token may have leaked, or when you want to re-link an app.

**Revoke** stops the access permanently. The app gets an error on its next sync, and the record stays
in your list so you can see it was revoked.

Both live in the row's actions in Settings → Developers → SimpleFIN.

## Troubleshooting

- **The app says the token is invalid** — A setup token works once. If you pasted it somewhere already, or it has been more than 7 days,
  create new access — or rotate the existing one — and paste the fresh token.
- **The app shows no accounts** — Open Preview on the access row. If it is empty, the access is scoped to accounts that no
  longer exist, or the bank was disconnected.
- **One bank stopped appearing** — A bank that needs reconnecting is reported to your app as an error while the others keep
  working. Reconnect it under Banks and the next sync picks it up.
- **Balances look a day old** — The balance date is when the institution last refreshed, not when you asked. Most aggregators
  refresh once a day, so this is normal.

## Frequently asked

**Is this the SimpleFIN Bridge?** No. The Bridge is a separate paid service that connects to banks
itself. BankSync implements the same protocol over the banks you have already connected here, so
there is nothing extra to pay for or maintain.

**Can an app change anything?** No. SimpleFIN is read-only by design, and a BankSync SimpleFIN
access cannot create other credentials or modify your workspace.

**Does it work with my app?** If the app accepts a SimpleFIN setup token, yes. We test against
Actual Budget and Securo specifically.

**What about pending transactions?** Excluded unless the app asks for them, which matches the
protocol's default. You can flip that default per access when you create or edit it.

## Related guides

- [SimpleFIN developer reference](/docs/api/simplefin) — wire format, query parameters, limits
- [Connecting banks](/docs/connecting-banks/overview) — get a bank into the workspace first
