BankSync Balances API
The Balances API from BankSync — 1 operation(s) for balances.
The Balances API from BankSync — 1 operation(s) for balances.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/banksync-io:banksync-io-balances-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: BankSync Balances API
version: 1.0.0
description: Connect bank accounts and sync financial data to Notion, Google Sheets, and Airtable. Authenticate with an API key (X-API-Key header) or a Firebase ID token (Bearer). Every /v1 request counts toward a per-workspace, per-minute rate limit set by the plan; on Free and Starter only GET /v1/whoami answers (metered at the Standard rate) and every other /v1 operation returns 403 (Standard 10, Professional 20, Business 30). Over the limit, any operation returns 429 with Retry-After, X-RateLimit-Limit and X-RateLimit-Policy headers; wait Retry-After seconds before retrying. See https://banksync.io/docs/api/rest-api#rate-limits.
contact:
name: BankSync Support
url: https://banksync.io
servers:
- url: https://api.banksync.io
description: Production
tags:
- name: Balances
paths:
/v1/banks/{bid}/accounts/{aid}/balances:
get:
operationId: getBalance
summary: Get the latest known balance for an account
description: 'Returns the bank aggregator''s most recent balance snapshot for the account. This does not force the institution to recompute the balance — aggregators refresh on their own schedule (often daily, and for brokerage accounts only once the institution posts an update). Compare `balanceAsOf` (when the data was refreshed) with `retrievedAt` (when BankSync read it from the aggregator — the cached answer''s time on a cache hit) to judge freshness; `balanceAsOf` is null when the provider does not report it, which means UNKNOWN rather than fresh. Responses may be served from a cache up to 6 hours old: `X-BankSync-Cache` says `hit`, `miss` or `bypass`, and `Age` is the cached answer''s age in seconds.'
tags:
- Balances
security:
- apiKey: []
- bearerAuth: []
x-flagbase-capability: banks
x-flagbase-operation: banks.balance.get
x-flagbase-effects:
- read
x-flagbase-authorization: workspace membership, role, and credential scope enforcement
x-flagbase-access-policy: banksync.automation.banks.read
x-flagbase-trust-domain: automation
x-flagbase-access-policy-registry-digest: e7ab27792e65105a611aa7ae3908f0d52310d081fa179db6e83aa41a9a645fe0
x-flagbase-permission-catalog-digest: 46efd2554a5de6bc944e9ebe073ab7932062a4d03fd4990d4b55d7a9b89fd6de
x-flagbase-credential-classes:
- api-key
- oauth-app
x-flagbase-tenant-boundary: workspace
x-flagbase-scopes:
- banks:read
x-flagbase-service-level: first-class
parameters:
- schema:
type: string
description: Bank ID
required: true
description: Bank ID
name: bid
in: path
- schema:
type: string
description: Account ID
required: true
description: Account ID
name: aid
in: path
responses:
'200':
description: Live balance for the account
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
enum:
- true
data:
type: object
properties:
date:
type: string
retrievedAt:
type: string
balanceAsOf:
type: string
nullable: true
bank:
type: string
account:
type: string
accountName:
type: string
accountNumber:
type: string
accountType:
type: string
accountId:
type: string
bankId:
type: string
amount:
type: number
availableBalance:
type: number
nullable: true
pendingBalance:
type: number
creditLimit:
type: number
currency:
type: string
required:
- date
- account
- accountName
- accountNumber
- accountType
- accountId
- bankId
- amount
- availableBalance
- currency
required:
- success
- data
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
enum:
- false
error:
type: string
code:
type: string
recovery:
oneOf:
- type: object
properties:
action:
type: string
enum:
- retry
afterSeconds:
type: integer
minimum: 1
maximum: 86400
required:
- action
- afterSeconds
- type: object
properties:
action:
type: string
enum:
- restart_pagination
required:
- action
- type: object
properties:
action:
type: string
enum:
- resync
required:
- action
- type: object
properties:
action:
type: string
enum:
- reconnect
required:
- action
- type: object
properties:
action:
type: string
enum:
- contact_support
required:
- action
referenceId:
type: string
details:
type: array
items:
type: object
properties:
field:
type: string
message:
type: string
required:
- message
required:
- success
- error
'403':
description: Forbidden
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
enum:
- false
error:
type: string
code:
type: string
recovery:
oneOf:
- type: object
properties:
action:
type: string
enum:
- retry
afterSeconds:
type: integer
minimum: 1
maximum: 86400
required:
- action
- afterSeconds
- type: object
properties:
action:
type: string
enum:
- restart_pagination
required:
- action
- type: object
properties:
action:
type: string
enum:
- resync
required:
- action
- type: object
properties:
action:
type: string
enum:
- reconnect
required:
- action
- type: object
properties:
action:
type: string
enum:
- contact_support
required:
- action
referenceId:
type: string
details:
type: array
items:
type: object
properties:
field:
type: string
message:
type: string
required:
- message
required:
- success
- error
'404':
description: Account not found
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
enum:
- false
error:
type: string
code:
type: string
recovery:
oneOf:
- type: object
properties:
action:
type: string
enum:
- retry
afterSeconds:
type: integer
minimum: 1
maximum: 86400
required:
- action
- afterSeconds
- type: object
properties:
action:
type: string
enum:
- restart_pagination
required:
- action
- type: object
properties:
action:
type: string
enum:
- resync
required:
- action
- type: object
properties:
action:
type: string
enum:
- reconnect
required:
- action
- type: object
properties:
action:
type: string
enum:
- contact_support
required:
- action
referenceId:
type: string
details:
type: array
items:
type: object
properties:
field:
type: string
message:
type: string
required:
- message
required:
- success
- error
'501':
description: The bank's provider does not report balances
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
enum:
- false
error:
type: string
code:
type: string
recovery:
oneOf:
- type: object
properties:
action:
type: string
enum:
- retry
afterSeconds:
type: integer
minimum: 1
maximum: 86400
required:
- action
- afterSeconds
- type: object
properties:
action:
type: string
enum:
- restart_pagination
required:
- action
- type: object
properties:
action:
type: string
enum:
- resync
required:
- action
- type: object
properties:
action:
type: string
enum:
- reconnect
required:
- action
- type: object
properties:
action:
type: string
enum:
- contact_support
required:
- action
referenceId:
type: string
details:
type: array
items:
type: object
properties:
field:
type: string
message:
type: string
required:
- message
required:
- success
- error
components:
securitySchemes:
apiKey:
type: apiKey
in: header
name: X-API-Key
description: API key — pass in the X-API-Key header. Obtain from Developer Settings in the BankSync app.
bearerAuth:
type: http
scheme: bearer
description: Firebase ID token — pass as a Bearer token in the Authorization header.