bancapi

bancapi

Bank accounts and movements of your companies, synced from Banco de Chile Empresas and Banco BICE Empresas. Personal accounts at Banco BICE Personas show as a company under the person's own RUT. Read-only, except for triggering a sync. Authenticate with an API token from the web app: `Authorization: Bearer <token>`. Amounts are strings with decimals to avoid float rounding.

Machine-readable spec: https://bancapi.fitoexact.com/api/v1/openapi.json · tokens: API tokens

curl -H "Authorization: Bearer $TOKEN" "https://bancapi.fitoexact.com/api/v1/movements?company_rut=77945259-K&kind=credit&from=2026-09-01"

MCP

Agents (Claude and other MCP clients) can query the same data at https://bancapi.fitoexact.com/mcp (Streamable HTTP, same API token). Tools, all read-only: list_companies, search_movements (the movement filters below), get_movement, movements_summary (credits, debits and net per currency).

In the Claude app or claude.ai: Settings → Connectors → Add custom connector, URL https://bancapi.fitoexact.com/mcp. Claude signs you in to bancapi (OAuth 2.1 with PKCE) and asks for your consent; no token to copy. In Claude Code, either the same URL (it runs the sign-in) or a personal token:

claude mcp add --transport http bancapi https://bancapi.fitoexact.com/mcp --header "Authorization: Bearer $TOKEN"

GET /api/v1/companies

List companies. Every company (empresa, by RUT) with its accounts at every bank.

200 array of Company   401 Unauthorized  

GET /api/v1/companies/{id}

Get a company

ParameterInTypeDescription
id path integer

200 Company   401 Unauthorized   404 NotFound  

GET /api/v1/accounts

List accounts. Every bank account with balance and company.

200 array of Account   401 Unauthorized  

GET /api/v1/accounts/{id}

Get an account

ParameterInTypeDescription
id path integer

200 Account   401 Unauthorized   404 NotFound  

GET /api/v1/movements

Search movements. All movements across banks and companies, filtered and paged.

ParameterInTypeDescription
company_id query integer Only this company's movements (id from /companies).
company_rut query string Only this company's movements, by RUT in any format (77.945.259-K, 77945259K…).
account_id query integer Only this account's movements.
bank query banco_de_chile_empresas | banco_bice_empresas | banco_bice_personas Only accounts at this bank.
currency query string Only accounts in this currency, e.g. CLP or USD.
from query string, date Movements on or after this date (YYYY-MM-DD).
to query string, date Movements on or before this date (YYYY-MM-DD).
kind query credit | debit credit (money in) or debit (money out).
counterparty_rut query string The other party's RUT, any format. Check digit is validated.
counterparty query string Text contained in the other party's name (case-insensitive).
q query string Text contained in the description (case-insensitive).
min_amount query number Minimum absolute amount.
max_amount query number Maximum absolute amount.
sort query date_desc | date_asc | amount_desc | amount_asc Order of results (default date_desc).
page query integer Page number, from 1.
per_page query integer Results per page (default 100, max 500).

200 array of Movement   401 Unauthorized   400 InvalidFilter  

GET /api/v1/accounts/{account_id}/movements

Search one account's movements. Same filters, limited to one account.

ParameterInTypeDescription
account_id path integer
company_id query integer Only this company's movements (id from /companies).
company_rut query string Only this company's movements, by RUT in any format (77.945.259-K, 77945259K…).
account_id query integer Only this account's movements.
bank query banco_de_chile_empresas | banco_bice_empresas | banco_bice_personas Only accounts at this bank.
currency query string Only accounts in this currency, e.g. CLP or USD.
from query string, date Movements on or after this date (YYYY-MM-DD).
to query string, date Movements on or before this date (YYYY-MM-DD).
kind query credit | debit credit (money in) or debit (money out).
counterparty_rut query string The other party's RUT, any format. Check digit is validated.
counterparty query string Text contained in the other party's name (case-insensitive).
q query string Text contained in the description (case-insensitive).
min_amount query number Minimum absolute amount.
max_amount query number Maximum absolute amount.
sort query date_desc | date_asc | amount_desc | amount_asc Order of results (default date_desc).
page query integer Page number, from 1.
per_page query integer Results per page (default 100, max 500).

200 array of Movement   401 Unauthorized   404 NotFound   400 InvalidFilter  

GET /api/v1/movements/{id}

Get a movement

ParameterInTypeDescription
id path integer

200 Movement   401 Unauthorized   404 NotFound  

GET /api/v1/bank_connections

List bank connections. Sync status per bank login. Credentials are never returned.

200 array of Connection   401 Unauthorized  

GET /api/v1/bank_connections/{id}

Get a bank connection

ParameterInTypeDescription
id path integer

200 Connection   401 Unauthorized   404 NotFound  

POST /api/v1/bank_connections/{id}/sync

Queue a sync. Banks that sync from the server only (Banco de Chile). Extension-only banks answer 422.

ParameterInTypeDescription
id path integer

202 OK   401 Unauthorized   404 NotFound  

POST /api/v1/bank_connections/{bank_connection_id}/imports

Upload from the connector extension. Used by the bancapi connector Chrome extension; the payload is the bank portal's own JSON.

ParameterInTypeDescription
bank_connection_id path integer

201 OK   401 Unauthorized   404 NotFound  

Objects

Company

id integer
rut string
name string
accounts array

Account

id integer
bank_connection_id integer
bank banco_de_chile_empresas | banco_bice_empresas | banco_bice_personas
number string
product_code string or null
currency string
company object or null
balance string or null Decimal as string, e.g. "1500000.0"
balance_at string or null

Movement

id integer
external_id string The bank's own id, stable across syncs
account object
company object or null
date string
posted_at string or null
kind credit | debit
currency string
amount string Absolute amount
signed_amount string Negative for debits
balance_after string or null Decimal as string, e.g. "1500000.0"
description string or null
channel string or null
document_number string or null
transaction_code string or null
counterparty object

Connection

id integer
bank banco_de_chile_empresas | banco_bice_empresas | banco_bice_personas
name string
status pending | active | failing
last_synced_at string or null
last_error string or null
account_ids array
sync_from string or null Where the next extension upload should start

Error

error string
message string