Chariot Statements API
Account statements and statement documents
Account statements and statement documents
openapi: 3.0.0
info:
title: Chariot FDX Accounts 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:
responses:
BadRequest:
description: Invalid request parameters
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'
Unauthorized:
description: Missing or invalid OAuth 2.0 Bearer token
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'
NotFound:
description: Resource not found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
InternalServerError:
description: Unexpected server error
content:
application/problem+json:
schema:
$ref: '#/components/schemas/ProblemDetails'
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
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
ListStatementsResponse:
type: object
description: Paginated list of statements.
required:
- statements
properties:
page:
$ref: '#/components/schemas/Page'
statements:
type: array
items:
$ref: '#/components/schemas/Statement'
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
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'
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
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
StatementId:
name: statementId
in: path
required: true
description: Unique identifier for the statement
schema:
type: string
format: uuid
AccountId:
name: id
in: path
required: true
description: Unique identifier for the account
schema:
type: string
format: uuid
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
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
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