Skip to main content
The Finta API lets you read your stored financial data — accounts, transactions, balances, holdings, investment activity, and bank connections — from any HTTP client or script. It also supports a focused set of writes: managing manual accounts (create, update, and close accounts you track by hand, including liability accounts like credit cards, student loans, and mortgages), creating and editing manual categories, recategorizing transactions, and managing rules. See the Reference for every endpoint.
  • Base URL: https://api.finta.io/v2
  • Format: JSON
  • Authentication: Bearer token (API key)

Manual accounts

Most accounts in Finta sync automatically from a connected bank. Manual accounts are ones you maintain yourself — cash, a property, a private loan, or a credit card you’d rather track by hand.
  • POST /accounts creates a manual account. Set currentBalance to the amount owed for liabilities, and pass a liability object (type of credit, student, or mortgage) to record debt details.
  • PATCH /accounts/{accountId} updates the name, type, currency, balance, or liability data. Updating the balance records a balance-history snapshot for that day.
  • DELETE /accounts/{accountId} closes the account (soft delete): it moves to closed status but keeps its transactions and balance history.
Only manual accounts can be created, updated, or deleted — bank-synced accounts are read-only and return 400 on a write. Manual account changes automatically sync to any connected destinations (Airtable, Notion, Google Sheets, etc.) the account is linked to. If your API key (or OAuth client) is scoped to a specific set of accounts, an account it creates is automatically added to that allowlist, so the same credential can read and manage it right away.

Requirements

RequirementDetails
Active subscriptionAPI access is available on Standard and Pro plans.
Storage ModeThe v2 API reads from data Finta has already synced and stored. Creating an API key from the dashboard enables Storage Mode automatically.
API keyGenerate one from API settings.

Rate limits

PlanLimit
Standard200 requests / minute
ProHigher limits (contact us)
Requests that exceed the limit return 429 RATE_LIMITED. The response may include a retryAfter field (seconds).

Errors

Most errors use a structured envelope:
{
  "error": {
    "code": "STORAGE_MODE_REQUIRED",
    "message": "Storage mode must be enabled to use the v2 API"
  }
}
CodeHTTPWhen
BAD_REQUEST400Invalid parameters or body
STORAGE_MODE_REQUIRED403Storage mode is off
SUBSCRIPTION_REQUIRED403Subscription inactive or canceled
NOT_FOUND404Resource missing or not owned by the caller
RATE_LIMITED429Rate limit exceeded
PROVIDER_UNAVAILABLE502Upstream provider error
INTERNAL_ERROR500Unexpected server error
401 responses use a plain string rather than the envelope:
{ "error": "Missing or invalid Authorization header" }

OpenAPI spec

The full OpenAPI spec is available at:
https://api.finta.io/v2/openapi.json