Chariot Statements API
Account statements and statement documents
Account statements and statement documents
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/chariot-statements-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: Chariot FDX Statements API
version: '6.0'
description: Financial Data Exchange (FDX) v6 compatible API for read-only access to Chariot bank account data. Implements the FDX v6 standard for account information, transactions, and statements.
contact:
name: Chariot Development Team
url: https://givechariot.com/contact
email: developers@givechariot.com
servers:
- url: https://api.givechariot.com/fdx/v6
description: Production
- url: https://devapi.givechariot.com/fdx/v6
description: Staging
security:
- oauth2: []
tags:
- name: Statements
description: Account statements and statement documents
paths:
/accounts/{id}/statements:
get:
summary: List account statements
description: Get a paginated list of statements for an account. When specifying a date range, both startTime and endTime must be provided together. Defaults to the last 7 days if no date range is specified. Data is available for up to 24 months from the current date.
operationId: listAccountStatements
tags:
- Statements
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/PageKey'
- $ref: '#/components/parameters/StartTime'
- $ref: '#/components/parameters/EndTime'
responses:
'200':
description: A paginated list of statements
content:
application/json:
schema:
$ref: '#/components/schemas/ListStatementsResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServerError'
/accounts/{id}/statements/{statementId}:
get:
summary: Get account statement
description: Retrieve a statement document. Use the Accept header to specify the desired format. Supported formats are PDF (default), CSV, and BAI2.
operationId: getAccountStatement
tags:
- Statements
parameters:
- $ref: '#/components/parameters/AccountId'
- $ref: '#/components/parameters/StatementId'
responses:
'200':
description: The statement document in the requested format
content:
application/pdf:
schema:
type: string
format: binary
text/csv:
schema:
type: string
format: binary
application/vnd.bai2:
schema:
type: string
format: binary
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'406':
$ref: '#/components/responses/NotAcceptable'
'500':
$ref: '#/components/responses/InternalServerError'
components:
parameters:
Limit:
name: limit
in: query
required: false
description: Number of results per page. Clamped to the range 10–100.
schema:
type: integer
minimum: 10
maximum: 100
default: 10
StatementId:
name: statementId
in: path
required: true
description: Unique identifier for the statement
schema:
type: string
format: uuid
PageKey:
name: pageKey
in: query
required: false
description: Cursor token for pagination. Pass the `nextPageKey` value from a previous response.
schema:
type: string
format: uuid
AccountId:
name: id
in: path
required: true
description: Unique identifier for the account
schema:
type: string
format: uuid
StartTime:
name: startTime
in: query
required: false
description: 'Start date for filtering results (inclusive). Format: YYYY-MM-DD. Must be specified together with endTime or omitted entirely.'
schema:
type: string
format: date
EndTime:
name: endTime
in: query
required: false
description: 'End date for filtering results (inclusive). Format: YYYY-MM-DD. Must be specified together with startTime or omitted entirely.'
schema:
type: string
format: date
schemas:
Link:
type: object
description: A hyperlink reference.
required:
- href
properties:
href:
type: string
description: URI of the linked resource
DocumentStatus:
type: string
description: Status of a document
enum:
- AVAILABLE
ListStatementsResponse:
type: object
description: Paginated list of statements.
required:
- statements
properties:
page:
$ref: '#/components/schemas/Page'
statements:
type: array
items:
$ref: '#/components/schemas/Statement'
Page:
type: object
description: Pagination metadata for list responses.
properties:
nextPageKey:
type: string
description: Cursor token to retrieve the next page of results. Absent when there are no more results.
totalElements:
type: integer
description: Total number of elements across all pages
Statement:
type: object
description: A bank account statement.
required:
- statementId
- accountId
- statementDate
- description
- status
properties:
statementId:
type: string
description: Unique identifier for the statement
accountId:
type: string
description: The account this statement belongs to
statementDate:
type: string
format: date-time
description: Date of the statement
description:
type: string
description: Description of the statement
status:
$ref: '#/components/schemas/DocumentStatus'
links:
type: array
items:
$ref: '#/components/schemas/Link'
ProblemDetails:
type: object
description: Error response following RFC 7807 Problem Details for HTTP APIs.
required:
- type
- title
- status
properties:
type:
type: string
description: A URI reference that identifies the problem type
example: about:blank
title:
type: string
description: A short human-readable summary of the problem type
example: Bad Request
status:
type: integer
description: The HTTP status code
example: 400
detail:
type: string
description: A human-readable explanation specific to this occurrence of the problem
example: The startTime parameter must be before endTime
instance:
type: string
description: A URI reference that identifies the specific occurrence of the problem
responses:
NotFound:
description: Resource not found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
Unauthorized:
description: Missing or invalid OAuth 2.0 Bearer token
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
BadRequest:
description: Invalid request parameters
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
NotAcceptable:
description: The requested media type in the Accept header is not supported
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
Forbidden:
description: Insufficient permissions or IP not whitelisted
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
InternalServerError:
description: Unexpected server error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
securitySchemes:
oauth2:
type: oauth2
description: OAuth 2.0 Bearer token. A client may hold both scopes, but each FDX authorization must contain exactly one — they are mutually exclusive per authorization. An authorization containing both will be rejected. See the Authentication page for token exchange details.
flows:
authorizationCode:
authorizationUrl: https://dashboard.givechariot.com/oauth/authorize
tokenUrl: https://api.givechariot.com/auth/oauth/token
scopes:
read:bank_accounts: Read access to bank account data
sync:connected_accounts: Sync access to connected account data