Codat Bank Feeds API
The Bank Feeds API from Codat — 0 operation(s) for bank feeds.
The Bank Feeds API from Codat — 0 operation(s) for bank feeds.
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/codat-bank-feeds-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: Bank Feeds API
version: 3.0.0
contact:
email: support@codat.io
name: Codat
description: 'Bank Feeds solution enables your SMB users to set up bank feeds from accounts in your application to supported accounting software.
A bank feed is a connection between a source bank account in your application and a target bank account in a supported accounting software.
[Explore solution](https://docs.codat.io/bank-feeds-api/overview) | [See OpenAPI spec](https://github.com/codatio/oas)
---
<!-- Start Codat Tags Table -->
## Endpoints
| Endpoints | Description |
| :- |:- |
| Companies | Create and manage your SMB users'' companies. |
| Connections | Create new and manage existing data connections for a company. |
| Source accounts | Provide and manage lists of source bank accounts. |
| Account mapping | Extra functionality for building an account management UI. |
| Company information | Get detailed information about a company from the underlying platform. |
| Transactions | Create new bank account transactions for a company''s connections, and see previous operations. |
<!-- End Codat Tags Table -->'
termsOfService: https://www.codat.io/legals/
servers:
- description: Production
url: https://api.codat.io
security:
- auth_header: []
tags:
- name: Bank Feeds
paths: {}
webhooks:
client.rateLimit.reached:
post:
description: Called when your client’s request count to Codat's API surpasses the allocated quota.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ClientRateLimitWebhook'
examples:
Reached:
value:
id: 743ec94a-8aa4-44bb-8bd4-e1855ee0e74b
eventType: client.rateLimit.reached
generatedDate: '2024-09-01T00:00:00Z'
payload:
dailyQuota: 12000
quotaRemaining: 0
expiryDate: '2024-09-01T12:14:14Z'
responses:
'200':
description: Return a 200 status to indicate that the webhook was received successfully.
tags:
- Bank Feeds
client.rateLimit.reset:
post:
description: Called when your client's rate limit quota is reset, allowing additional requests to Codat's API.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ClientRateLimitWebhook'
examples:
Reset:
value:
id: 743ec94a-8aa4-44bb-8bd4-e1855ee0e74b
eventType: client.rateLimit.reset
generatedDate: '2024-09-01T00:00:00Z'
payload:
dailyQuota: 12000
quotaRemaining: 11993
expiryDate: '2024-09-01T23:59:99Z'
responses:
'200':
description: Return a 200 status to indicate that the webhook was received successfully.
tags:
- Bank Feeds
bankFeeds.sourceAccount.connected:
post:
description: Triggered when a bank feed source account has become connected to a target account. This occurs when a user sets up mapping between the two.
x-svix-feature-flag: bank-feeds
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SourceAccountWebhook'
examples:
Connected:
value:
id: ba29118f-5406-4e59-b05c-ba307ca38d01
eventType: bankFeeds.sourceAccount.connected
generatedDate: '2022-10-23T00:00:00.000Z'
payload:
referenceCompany:
id: 0498e921-9b53-4396-a412-4f2f5983b0a2
name: Toft stores
description: Requested early access to the new financing scheme.
links:
portal: https://app.codat.io/companies/0498e921-9b53-4396-a412-4f2f5983b0a2/summary
connectionId: 2e9d2c44-f675-40ba-8049-353bfcb5e171
sourceAccount:
id: acc-002
accountName: account-081
sortCode: '040004'
accountNumber: '12345678'
currency: GBP
balance: 99.99
modifiedDate: '2023-01-09T14:14:14.1057478Z'
status: pending
responses:
'200':
description: Return a 200 status to indicate that the webhook was received successfully.
tags:
- Bank Feeds
bankFeeds.sourceAccount.disconnected:
post:
description: Called when a bank feed source account has become disconnected.
x-svix-feature-flag: bank-feeds
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SourceAccountWebhook'
examples:
Disconnected:
value:
id: ba29118f-5406-4e59-b05c-ba307ca38d01
eventType: bankFeeds.sourceAccount.disconnected
generatedDate: '2022-10-23T00:00:00.000Z'
payload:
referenceCompany:
id: 0498e921-9b53-4396-a412-4f2f5983b0a2
name: Toft stores
description: Requested early access to the new financing scheme.
links:
portal: https://app.codat.io/companies/0498e921-9b53-4396-a412-4f2f5983b0a2/summary
connectionId: 2e9d2c44-f675-40ba-8049-353bfcb5e171
sourceAccount:
id: acc-002
accountName: account-081
sortCode: '040004'
accountNumber: '12345678'
currency: GBP
balance: 99.99
modifiedDate: '2023-01-09T14:14:14.1057478Z'
status: pending
responses:
'200':
description: Return a 200 status to indicate that the webhook was received successfully.
tags:
- Bank Feeds
components:
schemas:
SourceAccount:
title: Source account (v1)
type: object
description: The target bank account in a supported accounting software for ingestion into a bank feed.
additionalProperties: false
properties:
id:
type: string
description: Unique ID for the bank account.
accountName:
type: string
nullable: true
description: The bank account name.
accountType:
type: string
nullable: true
description: The type of bank account e.g. Credit.
accountNumber:
type: string
nullable: true
description: The account number.
sortCode:
type: string
nullable: true
description: The sort code.
currency:
title: Currency
x-internal: true
type: string
description: "The currency data type in Codat is the [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code, e.g. _GBP_.\n\n## Unknown currencies\n\nIn line with the ISO 4217 specification, the code _XXX_ is used when the data source does not return a currency for a transaction. \n\nThere are only a very small number of edge cases where this currency code is returned by the Codat system."
format: ISO4217
examples:
- GBP
- USD
- EUR
balance:
type: number
format: decimal
nullable: true
description: The latest balance for the bank account.
modifiedDate:
$ref: '#/components/schemas/DateTime'
nullable: true
description: The last date the bank account was modified.
status:
type: string
nullable: true
description: Status of the source account.
enum:
- pending
- connected
- connecting
- disconnected
- unknown
feedStartDate:
$ref: '#/components/schemas/DateTime'
nullable: true
required:
- id
definitions:
sourceAccountPrototype:
title: Source account (v1)
type: object
properties:
id:
$ref: '#/components/schemas/SourceAccount/properties/id'
accountName:
$ref: '#/components/schemas/SourceAccount/properties/accountName'
accountType:
$ref: '#/components/schemas/SourceAccount/properties/accountType'
accountNumber:
$ref: '#/components/schemas/SourceAccount/properties/accountNumber'
sortCode:
$ref: '#/components/schemas/SourceAccount/properties/sortCode'
currency:
$ref: '#/components/schemas/SourceAccount/properties/currency'
balance:
$ref: '#/components/schemas/SourceAccount/properties/balance'
modifiedDate:
$ref: '#/components/schemas/SourceAccount/properties/modifiedDate'
required:
- id
sourceAccounts:
title: Source accounts
type: array
items:
$ref: '#/components/schemas/SourceAccount'
examples:
- id: acc-002
accountName: account-081
sortCode: '123456'
accountType: Credit
accountNumber: '12345670'
currency: GBP
balance: 99.99
modifiedDate: '2023-01-09T14:14:14.1057478Z'
status: pending
- id: acc-003
accountName: account-095
sortCode: '123456'
accountType: Credit
accountNumber: '12345671'
currency: USD
balance: 0
modifiedDate: '2023-01-09T14:14:14.1057478Z'
status: pending
Company:
title: Company
description: "\uFEFFIn Codat, a company represents a business sharing access to their data. Each company can have multiple [connections](https://docs.codat.io/bank-feeds-api#/schemas/Connection) to different data sources such as one connection to [Xero](https://docs.codat.io/integrations/accounting/xero/accounting-xero) for accounting data, two connections to [Plaid](https://docs.codat.io/integrations/banking/plaid/banking-plaid) for two bank accounts and a connection to [Zettle](https://docs.codat.io/integrations/commerce/zettle/commerce-zettle) for POS data.\n\nTypically each company is one of your customers.\n\nWhen you create a company, you can specify a `name` and we will automatically generate a unique `id` for the company. You can also add a `description` to store any additional information about the company."
type: object
allOf:
- $ref: '#/components/schemas/Company/definitions/companyDetails'
- type: object
properties:
dataConnections:
type: array
items:
$ref: '#/components/schemas/Connection'
definitions:
companyDetails:
title: Company details
type: object
properties:
id:
$ref: '#/components/parameters/companyId/schema'
name:
type: string
description: The name of the company
example: Codat Ltd.
description:
$ref: '#/components/schemas/CompanyRequestBody/properties/description'
nullable: true
redirect:
type: string
format: uri
description: The `redirect` [Link URL](https://docs.codat.io/auth-flow/authorize-hosted-link) enabling the customer to start their auth flow journey for the company.
example: https://link.codat.io/company/27628208-459c-46a2-a705-5641ce25f739
lastSync:
$ref: '#/components/schemas/DateTime'
nullable: true
created:
$ref: '#/components/schemas/DateTime'
createdByUserName:
type: string
description: Name of user that created the company in Codat.
nullable: true
products:
type: array
items:
type: string
description: An array of products that are currently enabled for the company.
tags:
title: Tags
type: object
maxProperties: 10
propertyNames:
pattern: ^.{1,27}$
additionalProperties:
type: string
maxLength: 100
description: A collection of user-defined key-value pairs that store custom metadata against the company.
referenceParentCompany:
$ref: '#/components/schemas/Company/definitions/companyReference'
nullable: true
description: The parent entity or controlling organization of this company. Null if the company has no parent.
referenceSubsidiaryCompanies:
type: array
nullable: false
description: A list of subsidiary companies owned or controlled by this entity. Empty if the company has no children.
minItems: 0
items:
$ref: '#/components/schemas/Company/definitions/companyReference'
required:
- id
- name
- redirect
companyReference:
title: Company reference
type: object
properties:
id:
$ref: '#/components/parameters/companyId/schema'
name:
$ref: '#/components/schemas/Company/definitions/companyDetails/properties/name'
description:
$ref: '#/components/schemas/Company/definitions/companyDetails/properties/description'
links:
type: object
description: A collection of links for the company.
properties:
portal:
type: string
format: uri
description: Link to the company page in the portal.
tags:
$ref: '#/components/schemas/Company/definitions/companyDetails/properties/tags'
examples:
- id: 0498e921-9b53-4396-a412-4f2f5983b0a2
name: string
redirect: https://link.codat.io/company/27628208-459c-46a2-a705-5641ce25f739
lastSync: '2022-01-01T12:00:00.000Z'
created: '2022-01-01T12:00:00.000Z'
createdByUserName: string
tags:
region: us
uid: f6b0c253-16c7-4da1-a0c5-9c871e9c9d6c
dataConnections:
- id: ee2eb431-c0fa-4dc9-93fa-d29781c12bcd
integrationId: bf083d72-62c7-493e-aec9-81b4dbba7e2c
integrationKey: dfxm
sourceId: bdd831ce-eebd-4896-89a7-20e5ee8989ee
platformName: Basiq
linkUrl: https://link-api.codat.io/companies/86bd88cb-44ab-4dfb-b32f-87b19b14287f/connections/ee2eb431-c0fa-4dc9-93fa-d29781c12bcd/start
status: Linked
lastSync: '2022-10-27T10:22:43.6464237Z'
created: '2022-10-27T09:53:29Z'
sourceType: Banking
products:
- spend-insights
- lending
SourceAccountV2:
title: Source account (v2)
type: object
description: The target bank account in a supported accounting software for ingestion into a bank feed.
additionalProperties: false
properties:
id:
type: string
description: Unique ID for the bank account.
accountName:
type: string
description: The bank account name.
accountType:
type: string
description: The type of bank account e.g. checking, savings, loan, creditCard, prepaidCard.
enum:
- checking
- savings
- loan
- creditCard
- prepaidCard
accountNumber:
type: string
description: The account number.
sortCode:
type: string
nullable: true
description: The sort code.
routingInfo:
$ref: '#/components/schemas/SourceAccountV2/definitions/routingInfo'
currency:
$ref: '#/components/schemas/SourceAccount/properties/currency'
balance:
type: number
format: decimal
description: The latest balance for the bank account.
accountInfo:
$ref: '#/components/schemas/SourceAccountV2/definitions/accountInfo'
modifiedDate:
$ref: '#/components/schemas/DateTime'
nullable: true
description: The last date the bank account was modified.
status:
type: string
nullable: true
description: Status of the source account.
enum:
- pending
- connected
- connecting
- disconnected
- unknown
feedStartDate:
nullable: true
title: Date
type: string
example: '2022-10-23'
description: 'In Codat''s data model, dates are represented using the <a class="external" href="https://en.wikipedia.org/wiki/ISO_8601" target="_blank">ISO 8601 standard</a>. Date fields are formatted as strings; for example:
```
2020-10-08
```'
required:
- id
- accountName
- accountType
- accountNumber
- currency
- balance
definitions:
sourceAccountV2Prototype:
title: Source account (v2)
type: object
properties:
id:
$ref: '#/components/schemas/SourceAccountV2/properties/id'
accountName:
$ref: '#/components/schemas/SourceAccountV2/properties/accountName'
accountType:
$ref: '#/components/schemas/SourceAccountV2/properties/accountType'
accountNumber:
$ref: '#/components/schemas/SourceAccountV2/properties/accountNumber'
routingInfo:
$ref: '#/components/schemas/SourceAccountV2/definitions/routingInfo'
sortCode:
$ref: '#/components/schemas/SourceAccountV2/properties/sortCode'
currency:
$ref: '#/components/schemas/SourceAccount/properties/currency'
balance:
$ref: '#/components/schemas/SourceAccountV2/properties/balance'
modifiedDate:
$ref: '#/components/schemas/SourceAccountV2/properties/modifiedDate'
accountInfo:
$ref: '#/components/schemas/SourceAccountV2/definitions/accountInfo'
required:
- id
- accountName
- accountType
- accountNumber
- currency
- balance
accountInfo:
title: Account Info
type: object
nullable: true
properties:
description:
type: string
nullable: true
description: Description of the account.
nickname:
type: string
nullable: true
description: Name given to the account by the user. Used in UIs to assist in account selection.
accountOpenDate:
$ref: '#/components/schemas/SourceAccountV2/properties/feedStartDate'
nullable: true
description: Date when the account was opened or created at the provider
availableBalance:
type: number
format: decimal
nullable: true
description: Balance of funds available for use. This includes pending activity.
sourceAccounts:
title: Source accounts
type: array
items:
$ref: '#/components/schemas/SourceAccountV2'
routingInfo:
title: Routing Info
type: object
description: Routing information for the bank. This does not include account number.
properties:
bankCode:
type: string
nullable: true
description: The numeric identifier of the routing number
type:
type: string
nullable: true
default: bankcode
enum:
- rtn
- aba
- swift
- bsb
- iban
- nz2
- trno
- sortcode
- blz
- ifsc
- bankcode
- apca
- clabe
description: The type of routing number.
examples:
- id: acc-001
accountName: account-081
accountType: checking
accountNumber: '12345670'
routingInfo:
bankCode: 021001088
type: bankcode
currency: GBP
balance: 99.99
accountInfo:
description: account description 1
nickname: account 123
accountOpenDate: '2023-05-06'
availableBalance: 10
modifiedDate: '2024-08-02T00:00:00.000Z'
status: pending
feedStartDate: '2024-05-01'
- id: acc-002
accountName: account-083
accountType: savings
accountNumber: '23456789'
routingInfo:
bankCode: 021001088
type: bankcode
currency: GBP
balance: 400
accountInfo:
description: account description 2
nickname: account 1290
accountOpenDate: '2023-05-23'
availableBalance: 400
modifiedDate: '2024-08-02T00:00:00.000Z'
status: pending
feedStartDate: '2024-05-01'
DateTime:
title: Date time
type: string
examples:
- '2022-10-23T00:00:00Z'
- '2022-10-23'
description: "In Codat's data model, dates and times are represented using the <a class=\"external\" href=\"https://en.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601 standard</a>. Date and time fields are formatted as strings; for example:\n\n```\n2020-10-08T22:40:50Z\n2021-01-01T00:00:00\n```\n\n\n\nWhen syncing data that contains `DateTime` fields from Codat, make sure you support the following cases when reading time information:\n\n- Coordinated Universal Time (UTC): `2021-11-15T06:00:00Z`\n- Unqualified local time: `2021-11-15T01:00:00`\n- UTC time offsets: `2021-11-15T01:00:00-05:00`\n\n> Time zones\n> \n> Not all dates from Codat will contain information about time zones. \n> Where it is not available from the underlying platform, Codat will return these as times local to the business whose data has been synced."
ClientRateLimitWebhook:
title: Client rate limit webhook
type: object
properties:
id:
type: string
format: uuid
example: 743ec94a-8aa4-44bb-8bd4-e1855ee0e74b
description: Unique identifier of the event.
eventType:
type: string
description: The type of event.
examples:
- client.rateLimit.reset
- client.rateLimit.reached
generatedDate:
$ref: '#/components/schemas/DateTime'
description: The date time in UTC the event was generated in Codat.
payload:
$ref: '#/components/schemas/ClientRateLimitWebhook/definitions/clientRateLimitWebhookPayload'
definitions:
clientRateLimitWebhookPayload:
title: Client rate limit webhook payload
type: object
properties:
dailyQuota:
type: integer
description: The number of available requests per day.
quotaRemaining:
type: integer
description: Total number of requests remaining for your client.
expiryDate:
$ref: '#/components/schemas/DateTime'
description: The date time in UTC when your daily quota is reset.
SourceAccountWebhook:
title: Source account status changed webhook
type: object
properties:
id:
type: string
format: uuid
example: ba29118f-5406-4e59-b05c-ba307ca38d01
description: Unique identifier of the event.
eventType:
type: string
description: The type of event.
examples:
- bankFeeds.sourceAccount.connected
- bankFeeds.sourceAccount.disconnected
generatedDate:
$ref: '#/components/schemas/DateTime'
description: The date time in UTC the event was generated in Codat.
payload:
$ref: '#/components/schemas/SourceAccountWebhook/definitions/sourceAccountWebhookPayload'
definitions:
sourceAccountWebhookPayload:
title: Payload
type: object
properties:
referenceCompany:
$ref: '#/components/schemas/Company/definitions/companyReference'
companyId:
$ref: '#/components/parameters/companyId/schema'
deprecated: true
connectionId:
$ref: '#/components/parameters/connectionId/schema'
sourceAccount:
oneOf:
- $ref: '#/components/schemas/SourceAccountV2'
- $ref: '#/components/schemas/SourceAccount'
CompanyRequestBody:
title: Create company request
x-internal: true
type: object
properties:
name:
type: string
description: Name of company being connected.
pattern: ^[A-Za-z0-9\s\-',&@.,?!\s]+$
minLength: 1
example: Bank of Dave
description:
type: string
example: Requested early access to the new financing scheme.
description: Additional information about the company. This can be used to store foreign IDs, references, etc.
tags:
$ref: '#/components/schemas/Company/definitions/companyDetails/properties/tags'
required:
- name
parameters:
connectionId:
name: connectionId
in: path
required: true
schema:
type: string
format: uuid
example: 2e9d2c44-f675-40ba-8049-353bfcb5e171
description: Unique identifier for a company's data connection.
description: Unique identifier for a connection.
companyId:
name: companyId
in: path
required: true
schema:
type: string
format: uuid
example: 8a210b68-6988-11ed-a1eb-0242ac120002
description: Unique identifier for your SMB in Codat.
description: Unique identifier for a company.
securitySchemes:
auth_header:
name: Authorization
description: The word "Basic" followed by a space and your API key. [API keys](https://docs.codat.io/platform-api#/schemas/ApiKeyDetails) are tokens used to control access to the API. You can get an API key via [the Codat Portal](https://app.codat.io/developers/api-keys), via [the API](https://docs.codat.io/platform-api#/operations/list-api-keys), or [read more](https://docs.codat.io/using-the-api/authentication) about authentication at Codat.
type: apiKey
in: header
x-speakeasy-example: Basic BASE_64_ENCODED(API_KEY)
x-speakeasy-retries:
strategy: backoff
backoff:
initialInterval: 500
maxInterval: 60000
maxElapsedTime: 3600000
exponent: 1.5
statusCodes:
- 408
- 429
- 5XX
retryConnectionErrors: true
x-speakeasy-name-override:
- operationId: ^list-.*?
methodNameOverride: list
- operationId: ^list-.*?-attachments
methodNameOverride: list-attachments
- operationId: ^get-.*?
methodNameOverride: get
- operationId: ^get-create-.*?-model
methodNameOverride: get-create-model
- operationId: ^get-create-update.*?-model
methodNameOverride: get-create-update-model
- operationId: ^get-.*?-attachment
methodNameOverride: get-attachment
- operationId: ^update-.*?
methodNameOverride: update
- operationId: ^create-.*?
methodNameOverride: create
- operationId: ^delete-.*?
methodNameOverride: delete
- operationId: ^delete-.*?-attachment
methodNameOverride: delete-attachment
- operationId: ^download-.*?-attachment
methodNameOverride: download-attachment
- operationId: ^upload-.*?-attachment
methodNameOverride: upload-attachment
x-codat-docs-path: bank-feeds-api
x-codat-keep-docs-paths-local: true
x-codat-speakeasy-pagination:
type: offsetLimit
inputs:
- name: page
in: parameters
type: page
outputs:
results: $.results