The native integration needs Actual
24.10.0 or later. If you’re on an older version, update Actual first, or use the legacy container below.Prerequisites
- A running Actual Budget instance, self-hosted or on Actual Cloud
- A Redbark account with connected bank accounts
- A Redbark Developer or Professional plan (trials included)
Setup
1
Generate a SimpleFIN setup token
Log into Redbark, go to Settings > API & MCP, and generate a SimpleFIN setup token. Name it after the instance you’re connecting.The token is shown once, can be claimed once, and expires in 7 days if unused.
2
Configure SimpleFIN in Actual
In Actual, open Settings, scroll to Bank Sync, and click Set up under SimpleFIN.Actual’s dialog describes SimpleFIN as a North American service. Paste your Redbark setup token in the Token field anyway and click Save and continue. Actual claims the token and receives its own private, read-only credentials.
3
Link your accounts
Click Link bank account. Actual lists every account Redbark can see, with live balances. For each one you want, click Set up bank sync, point it at an existing Actual account or create a new one, and set a starting date and opening balance.Set the starting date to a few months back rather than leaving it open. It keeps the first sync quick.
4
Sync
Actual pulls transactions immediately, then on every sync after that. Transactions carry stable imported IDs, so re-syncs update rather than duplicate.
How it behaves
- Balances and transactions are proxied live from your bank at the moment Actual asks. Redbark keeps no copy.
- Deduplication uses an
imported_idofredbark:<transaction_id>, so running sync as often as you like never creates duplicates. - Only banking accounts are served over SimpleFIN. Brokerage accounts connected to Redbark are not exposed.
- Revoking Actual’s token from Settings > API & MCP cuts its access immediately without touching your bank consent or any other connected app.
Legacy: the actual-sync container
Actual Budget sync runs as a standalone Docker container that pulls transactions from the Redbark API and imports them directly into your Actual Budget server. Everything below is kept for existing users of the container.This tool uses the Redbark REST API, which is in beta. Behaviour may change as the API evolves.
Prerequisites
- A running Actual Budget server
- Docker installed on your machine or server
- A Redbark account with connected bank accounts
- A Redbark API key
Setup
1
Get a Redbark API key
Plan required: Developer or Professional. API access is not available on the Saver plan.
2
Find your Redbark account IDs
Run the tool with
--list-redbark-accounts to see your connected accounts and their IDs:3
Find your Actual Budget account IDs
Run with You can also find account IDs in the Actual Budget web UI by copying the UUID from the account URL.
--list-actual-accounts to see your Actual Budget accounts:4
Create your account mapping
Map each Redbark account to an Actual Budget account using the format
redbark_id:actual_id, comma-separated:5
Configure environment variables
Create a
.env file with your configuration:6
Dry run
Preview what would be imported without writing any changes:
7
Sync
Run the sync:
Configuration
Environment variables
CLI flags
Running with Docker
Docker run
/app/data volume caches the Actual Budget SQLite database locally. Mount a persistent volume so it doesn’t re-download the full budget every run.
Docker Compose
Kubernetes CronJob
Scheduling
Use cron or your orchestrator’s scheduling to run syncs automatically:How deduplication works
Each transaction is imported with animported_id of redbark:<transaction_id>. Actual Budget’s importTransactions() uses this to detect duplicates:
- If a transaction with the same
imported_idexists, it updates instead of creating a duplicate - If no
imported_idmatch, Actual falls back to fuzzy matching on amount + date + payee
Exit codes
Troubleshooting
Connection refused to Actual server Make sure your Actual Budget server is running and reachable from the Docker container. If both services are in the same Docker Compose stack, use the service name (e.g.http://actual-server:5006) rather than localhost.
Budget not found
Double-check your ACTUAL_BUDGET_ID. This is the sync ID found in Actual under Settings > Advanced, not the budget name.
Encryption password required
If you’ve enabled end-to-end encryption in Actual Budget, set the ACTUAL_ENCRYPTION_PASSWORD environment variable to your encryption passphrase.
Self-signed certificates
For Actual servers behind self-signed TLS certificates, set NODE_EXTRA_CA_CERTS=/path/to/cert.pem in the container environment.
Version mismatch
The tool automatically detects your Actual server version and downloads a matching client library. If you see version errors, make sure the /app/data volume is mounted so the cached client persists between runs.
Security
Your Redbark API key is only sent over HTTPS. Never bake secrets into Docker images. Use
--env-file, Docker Secrets, or Kubernetes Secrets. The tool caches your Actual budget locally in ACTUAL_DATA_DIR, so encrypt the Docker volume on shared infrastructure.