How it works
SimpleFIN uses a setup token system to establish secure access to your bank accounts:- Obtain a setup token from SimpleFIN
- Sure claims the setup token to get an access URL with embedded credentials
- The access URL is used to fetch account data, balances, and transactions
- Data syncs automatically to keep your information current
Setting up SimpleFIN
To connect your US bank accounts:- Sign up for a SimpleFIN account at simplefin.org
- Generate a setup token from your SimpleFIN dashboard
- In Sure, provide the setup token
- Sure will claim the token and establish access to your accounts
Setup token claiming
The setup token is a base64-encoded claim URL. When you provide it to Sure:- Sure decodes the token to get the claim URL
- Makes a POST request to claim the access URL
- Receives an access URL with HTTP Basic Auth credentials embedded
- Uses this access URL for all subsequent API requests
Features
Account syncing
- Account listing: View all connected accounts with current balances
- Transaction history: Import transactions with date range filtering
- Pending transactions: Optional support for pending transactions (varies by institution)
- Multiple accounts: Connect multiple bank accounts from different institutions
- Localized status messages: Sync status summaries (such as “2 accounts synced” or “1 account needs setup”) display in your chosen language
Date range filtering
When syncing transactions, you can specify:- Start date: Fetch transactions from this date forward
- End date: Fetch transactions up to this date
- Pending flag: Include or exclude pending transactions
Reliability features
Sure’s SimpleFIN integration includes automatic retry logic:- Exponential backoff for transient network failures
- Up to 3 retry attempts for network errors
- Handles temporary connection issues gracefully
- Prevents sync failures from intermittent network problems
API structure
SimpleFIN uses a simple REST API with embedded authentication:- POST /claim: Exchange setup token for access URL
- GET /accounts: Fetch all accounts with balances and transactions
- GET /info: Get server information
API reference
For detailed protocol documentation, see the SimpleFIN Protocol.Pricing
SimpleFIN is a paid service, but typically more affordable than alternatives like Plaid. Check simplefin.org for current pricing.Limitations
- US-focused: Primarily supports US financial institutions
- Setup token security: Setup tokens can only be claimed once and may expire
- Pending transactions: Not all institutions return pending transactions, even when requested
- Rate limits: Subject to SimpleFIN API rate limits
- Access URL validity: Access URLs can be revoked or expire (returns 403 error)
Troubleshooting
Incorrect balance sign on credit cards or loans
SimpleFIN reports liability balances from the bank’s perspective (positive = you owe money). Sure converts these into the correct sign for net worth calculations — liabilities reduce net worth, so their balances are stored as negative values. For loans, Sure trusts the bank’s sign directly and stores the absolute value of the reported balance. Earlier versions incorrectly ran a transaction-history heuristic on loans, which could invert the balance and make the loan appear to add to your net worth instead of subtracting from it. This is now fixed. For credit cards, Sure uses recent transaction history to determine whether a positive balance represents debt (normal) or an overpayment credit (unusual). When there is not enough transaction history to decide, Sure falls back to sign-based normalization using both the posted and available balances reported by the institution. If a credit card or loan balance looks wrong after syncing:- Re-sync the account from Settings → Providers → SimpleFIN.
- If the balance is still incorrect, check whether the account type is set to Credit Card or Loan in your account settings. An incorrect account type can cause the wrong normalization to be applied.
Duplicate accounts with the same name
If you have two accounts at the same institution with identical display names (for example, two accounts both named “CHECKING (0001)”), Sure’s sync logic previously could confuse them — the unlinked account would silently steal the linked account’s connection, merge in its transactions, and overwrite its balance on every sync. This has been fixed. Sure now tracks each account by its upstream account ID rather than by display name alone. Ambiguous same-name matches are skipped rather than resolved incorrectly. If you were affected, re-syncing after upgrading to the fixed version will restore the correct linkage.Setup token issues
If you receive a 403 error when claiming a setup token:- The token may have already been used
- The token may have expired
- The token may have been compromised
Duplicate accounts with the same name
If you have two accounts at the same institution with identical display names (for example, two accounts both named “CHECKING (0001)”), Sure uses the upstream account ID to distinguish them during sync. Previously, a stale-linkage repair could incorrectly reassign one account’s connection to the other. This is now resolved — each account is matched by its unique upstream ID, not just its name. If you notice an account that appears to have lost its transaction history after a sync, check Settings → Debug for any skipped stale-linkage repair entries that may indicate an ambiguous name match.Missing pending transactions
Some institutions don’t return pending transactions even when thepending=1 parameter is set. This is a limitation of the institution’s data feed, not a bug in SimpleFIN or Sure.
Duplicate accounts with the same name
If you have two distinct accounts at the same institution that share a display name (for example, two accounts both named “CHECKING (0001)”), Sure uses the upstream account ID to distinguish them during sync. Only accounts whose ID is genuinely absent from the upstream response are treated as stale and eligible for re-linking. Ambiguous cases where multiple local accounts share a name are skipped rather than resolved automatically, preventing one account from silently inheriting another’s transaction history.Network errors
If you experience intermittent sync failures:- Sure automatically retries failed requests up to 3 times
- Network errors are logged for troubleshooting
- Manual sync attempts may succeed where automatic syncs fail