Skip to main content
Aggregates the app already computes, plus control over refreshing bank data.

Net worth

GET /v1/analytics/net-worth · Required scope: data.read
Assets, liabilities, and the resulting total, in cents.

Spending

GET /v1/analytics/spending · Required scope: data.read
Computing this server-side is much cheaper than paging every transaction and aggregating locally, and it will agree with what the app shows.

Settings

GET /v1/settings · Required scope: data.read
Account settings, including the timezone that governs which calendar day a transaction falls on. Worth reading if your integration does anything date-sensitive.

Sync status

GET /v1/sync/status · Required scope: data.read
When each connection last synced and when it is next due. Check this before assuming data is current.

Trigger a sync

POST /v1/sync · Required scope: data.write
Asks connected providers for new transactions.
Optionally restrict it with {"provider": "plaid"} or {"provider": "simplefin"}. You probably do not need this. Syncs already run on a schedule, and providers enforce their own quotas, which are far tighter than our rate limits: exhausting one returns a 429 with provider_quota_exhausted and delays your scheduled syncs too. Check GET /v1/sync/status to see whether the data is already fresh before reaching for this.