If you build or run a finance app
If your app already speaks SimpleFIN, it already works with Synci. There is nothing Synci-specific to build: no partnership, no API keys to request, no Synci SDK. A user creates a Synci destination, copies a standard setup token, and pastes it into the same SimpleFIN screen your app already has. From your side it is an ordinary SimpleFIN source. If SimpleFIN support is on your roadmap, implementing the spec is all it takes: Synci then becomes a data source your users can pick, for free, the day you ship it. What Synci brings to your users:Bank coverage beyond North America
European banks (via GoCardless) and New Zealand banks (via Akahu).
More than checking and savings
Investment, brokerage and crypto-exchange accounts are exposed as SimpleFIN accounts too.
Data users can shape
Transactions reflect the user’s Synci bank-account rules (payee cleanup, renaming), so what your app imports is already tidy.
Getting a setup token
1
Open the destination in Synci
Go to Destinations then SimpleFIN (or an app-specific page such as Actual Budget). The page is presentation only; the token it produces works with any SimpleFIN consumer.
2
Choose which accounts to expose
Share all of them, or a specific selection.
3
Copy the setup token
Copy the one-time setup token.
Claiming the token
The token exchange follows the standard SimpleFIN flow:1
Decode the setup token
Base64-decode the setup token to get a claim URL.
2
Claim it once
POST the claim URL once. On success you receive an access URL as text/plain:3
Request accounts from then on
Request
{access URL}/accounts using HTTP Basic auth built from the embedded username:password.403 whose body begins with Forbidden.
Access credentials are revocable at any time from the destination’s page in Synci. Once revoked, requests return 403.
Fetching accounts
GET {access URL}/accounts returns a SimpleFIN Account Set. It is called in two shapes:
transactions array.
With transactions:
start-date/end-dateare Unix timestamps in seconds.end-dateis exclusive.pending=1includes not-yet-posted transactions.- Repeat
account={id}to limit the response to specific accounts. Ids not exposed by this connection are ignored. - If
start-dateis omitted, the response is capped to roughly the last 90 days.
Response shape
- Amounts (
balance,available-balance, transactionamount) are signed decimal strings with exactly two decimal places. A negative amount is an outflow. - Timestamps (
posted,transacted_at,balance-date) are Unix seconds at noon UTC of the relevant calendar date. - Ids (account
id, transactionid) are stable across requests, so consumers can safely deduplicate on them. payeeis always present and non-empty.- A pending transaction always carries a
transacted_at. orgidentifies the underlying institution, not Synci:org.nameis the institution’s name (for example “DNB”) andorg.domainis stable and unique per institution. Consumers that group accounts into “banks” byorg.domaintherefore get one bank per institution, and multiple accounts from the same institution are grouped together.available-balanceis included only when Synci has one for the account.
Limits and behavior
- History: roughly 90 days when no
start-dateis given. - Rate limit: approximately 60 requests per hour per access credential.
- Freshness: responses are served from Synci’s most recent provider sync, not live from the bank, so balances in particular can lag behind. There is no real-time fetch on request.
- Only bank-style account data is exposed (accounts, balances, transactions). No other part of the user’s Synci account is reachable through these credentials.
Versioning and stability
Synci advertises SimpleFIN version1.0, which the protocol’s info endpoint reports as {"versions":["1.0"]}. An issued access URL is permanent for the life of the credential. Any breaking change would ship as a new protocol version and new credentials rather than altering an existing access URL, so a working integration keeps working.
Security
- All requests are over HTTPS.
- Credentials are read-only and scoped to exactly the accounts the destination exposes. If the user shared all accounts, that scope includes accounts they connect to Synci later.
- Setup tokens are single-use with an expiry; access credentials are revocable at any time from Synci.
- Treat both the setup token and the access URL as secrets.