canonical: https://jentic.com/apis/codat.io/banking

# Codat Banking API

Codat's Banking API surfaces bank account, balance, transaction, and transaction-category data from a customer's directly-linked bank or open-banking provider. It is purpose-built for lenders, finance platforms, and underwriters that need cleaned bank transaction history alongside accounting data. Endpoints return account metadata, current balances, and categorised transactions so credit teams can verify cash flow and detect risk signals without parsing raw open-banking output.

## For AI agents

Read bank accounts, balances, and categorised transactions from a customer's linked bank account for cash flow analysis and credit decisioning.

## Scope

Does not handle posting transactions into accounting software, payment initiation, or accounting ledger reads - use for reading bank account, balance, and categorised transaction data from linked banking sources only.

## Capabilities

- Retrieve a customer's linked bank accounts with account name, currency, and identifier
- Read current and historical balances for each linked bank account
- Pull categorised bank transactions including merchant, amount, date, and assigned category
- List transaction categories used to classify spending and inflows
- Fetch a single transaction by ID for detailed inspection or audit
- Read banking data scoped to a single connection or aggregated across all connections for a company

## Use cases

### Cash Flow Underwriting

Lenders use the Codat Banking API to verify a borrower's cash flow directly from their bank. The /companies/{companyId}/connections/{connectionId}/data/banking-transactions and /banking-accountBalances endpoints provide categorised transactions and balances so credit models can score volatility, recurring income, and overdraft frequency without asking applicants to upload statements.

Example prompt: Fetch the last 90 days of categorised bank transactions for company {companyId} connection {connectionId} and compute total inflow versus outflow.

### Bookkeeping Automation

Bookkeeping platforms read bank transactions through the Banking API to suggest matches against unreconciled invoices and bills in the customer's accounting software. The /banking-transactions endpoint plus the /banking-transactionCategories list let the platform group similar transactions and propose categorisations to the bookkeeper for one-click approval.

Example prompt: Pull all bank transactions for company {companyId} since the last reconciliation date and group them by category.

### SMB Cash Flow Forecasting

B2B SaaS products that build SMB cash flow forecasts use Banking API balance and transaction history as the input series. The /banking-accounts and /banking-accountBalances endpoints give the current state, and the /banking-transactions endpoint with date filtering supplies the trailing data the forecast model needs.

Example prompt: Retrieve account balances and the last 12 months of transactions for company {companyId} and return a daily ending-balance series.

### AI Agent Credit Analyst

AI agents acting as credit analysts use the Codat Banking API through Jentic to assemble the bank-data section of a credit memo. The agent searches Jentic for 'list banking transactions', loads the schema, and pulls categorised transactions and balances. Jentic isolates the Codat API key in its vault, and the unified search means the agent does not have to know the exact Codat path structure.

Example prompt: Search Jentic for 'banking transactions codat', load the operation, then pull the last 12 months of transactions for company {companyId} and summarise the largest five outflows.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | /companies/{companyId}/connections/{connectionId}/data/banking-accounts | List linked bank accounts for a connection |
| GET | /companies/{companyId}/connections/{connectionId}/data/banking-accountBalances | Read account balances |
| GET | /companies/{companyId}/connections/{connectionId}/data/banking-transactions | List categorised bank transactions |
| GET | /companies/{companyId}/data/banking-transactions | List transactions aggregated across all connections for a company |
| GET | /companies/{companyId}/connections/{connectionId}/data/banking-transactionCategories | List transaction categories |

## Key resources

- **Accounts** — Linked bank accounts with name, currency, and account identifier
- **Account balances** — Current and historical balance values for each linked account
- **Transactions** — Categorised bank transactions with date, amount, and merchant
- **Transaction categories** — Categorisation taxonomy used to classify each transaction

## Why Jentic

- **Setup:** Wiring Codat Banking by hand means building its Basic API-key header, targeting api.codat.io, and threading companyId and connectionId through every account, balance, and transaction read yourself. Through Jentic you install once, import the Banking API from the API Directory, store the Codat API key once, and your agent calls it.
- **Permission scoping:** Banking puts the company id in the URL path (/companies/{companyId}/connections/{connectionId}/data/banking-...), so a rule can pin your agent to one company: it reads that company's bank accounts, balances, transactions, and categories and nothing else. Since Banking exposes read-only data here, you choose which of those reads the agent may call.
- **Credential handling:** Your Codat API key is stored once, encrypted, by your own Jentic One instance and injected at execution time as the Basic Authorization header. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'list bank transactions for a borrower' or 'get categorised banking transactions', and Jentic returns the matching Banking operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Codat Bank Feeds** — Pushes bank transactions into accounting software rather than reading them
- **Codat Accounting API** — Provides ledger-level invoices, bills, and journal entries to pair with raw banking data
- **Codat Assess API** — Combines banking and accounting data into derived lending metrics

## FAQ

### What authentication does the Codat Banking API use?

The API uses an API key passed in the Authorization header as 'Basic <base64-encoded-key>'. The single security scheme in the spec is named auth_header. Through Jentic, the Codat API key is stored encrypted in the vault and the Authorization header is constructed inside Jentic at execution time.

### Can I read categorised bank transactions with the Codat Banking API?

Yes. Use GET /companies/{companyId}/connections/{connectionId}/data/banking-transactions to list categorised transactions, and GET /companies/{companyId}/connections/{connectionId}/data/banking-transactionCategories to retrieve the category taxonomy. Both return data normalised by Codat from the underlying bank or open-banking source.

### What are the rate limits for the Codat Banking API?

Codat does not publish a fixed rate limit in the OpenAPI spec; limits are governed at the company and connection level and depend on the underlying bank or open-banking provider. Codat returns HTTP 429 with a Retry-After header when limits are hit and recommends exponential backoff.

### How do I pull bank balances through Jentic?

Search Jentic for 'bank account balances codat', load the GET /companies/{companyId}/connections/{connectionId}/data/banking-accountBalances operation, and execute it. Install with pip install jentic and use the standard async search, load, and execute flow.

### Can I aggregate transactions across multiple connections for one company?

Yes. Use GET /companies/{companyId}/data/banking-transactions which returns transactions across every banking connection linked to the company, rather than scoping to a single connection. Use the connection-scoped endpoint when you need per-account isolation.

### Can I limit what my agent is allowed to do with the Codat Banking API?

Yes. Because you run Jentic One yourself, your own rules decide which Codat Banking operations and credentials the agent may use. Since this API carries the company id in the URL path, a rule can pin your agent to a single company so it only reads that company's bank accounts, balances, categorised transactions, and transaction categories. The API is read-only here, so you choose exactly which of those reads the agent is allowed to call and which company or connection it is scoped to.
