The Finta API gives you programmatic access to your company’s financial data: transactions, journal entries, categories, and financial reports. The API is read-only for now.Documentation Index
Fetch the complete documentation index at: https://www.finta.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
Get your API key
Go to API Keys
Sign in to Finta and go to Settings > API Keys.
Base URL
All requests go to:Environments
There is no sandbox or test environment. Every request runs against your real company data, and every response reflects live production data. The API is read-only, so calls cannot modify your books, but you should assume any data you fetch is live.Authentication
Include your API key in theAuthorization header as a Bearer token:
Key prefix convention
Every Finta credential is prefixed so it can be recognized at a glance in logs, error messages, and secret scanners. Today there is one credential type and its prefix isfinta_. As additional credential or token types are introduced (for example restricted keys or webhook signing secrets), each will have its own distinct prefix that stacks on the brand prefix (e.g. finta_<type>_...). Treat the prefix as load-bearing: do not strip it before sending, and do not assume a missing or unknown prefix is still a Finta credential.
Content type
All responses are returned as JSON. The API is currently read-only, and all parameters are passed as query strings.Pagination
List endpoints (/transactions, /journal_entries) use cursor-based pagination. Responses are wrapped in a list envelope:
limit (default 100, max 500) to control page size, and starting_after with the next_cursor value to fetch the next page. There is no offset or page-number parameter. The url field carries the canonical path of the collection and is useful for logging and generic pagination helpers.
See Pagination for full parameters and an example fetch-all loop.
Monetary amounts
Every monetary field in the API follows two non-negotiable rules:- Integer cents. Monetary values are integers, never floats and never formatted strings.
\$499.00is49900.\$1,500.00is150000. Divide by 100 to get dollars. _centssuffix. The field name always ends in_cents(e.g.amount_cents,balance_cents,total_cents). If a field name does not end in_cents, it is not a monetary value.
_cents, or whose value is not an integer, treat it as a bug and report it.
Sign conventions:
- Income statement: revenue/income amounts are positive, expense amounts are negative. Summing every section’s
total_centsyields net income without sign-flipping. - Balance sheet:
balance_centscarries the natural-sign cumulative balance for that account at the report date. - Cash flow:
amount_centsis positive for cash inflows and negative for cash outflows.
Errors
The Finta API uses conventional HTTP status codes and returns every error in a consistent JSON envelope. Branch onerror.type and error.code to handle errors programmatically; treat error.message as human-readable only and do not parse it.
| Status | Description |
|---|---|
200 | Success. |
400 | Bad request. A required parameter is missing or invalid. |
401 | Unauthorized. The bearer credential is missing, malformed, or unrecognized. The fix is to obtain a valid API key. |
403 | Forbidden. The API key is valid, but the caller no longer has permission to access the resource (deactivated user, removed from company, closed company, or expired subscription). The fix is to regain access, not to get a new key. |
404 | Not found. The endpoint path does not exist. |
429 | Rate limited. Either the per-minute burst limit (retryable, with Retry-After) or the monthly per-company call limit (not retryable in the short term, no Retry-After). Branch on error.code to distinguish the two. |
5xx | Server error. Something went wrong on our end. |
Making your first request
Verify your API key by pulling your company’s metadata:entity_type values), is in the Retrieve Company reference.
The id is included so you can cross-reference the company from other API responses, and as the disambiguator for the planned multi-company-keys feature; the endpoint is a singleton, so there is no GET /v1/company/{id}.
From here, try pulling your income statement, balance sheet, or journal entries. To understand how journal entries, transactions, and reports fit together, see Data Model.