Codat Bank Feeds API

The Bank Feeds API from Codat — 0 operation(s) for bank feeds.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/codat-bank-feeds-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

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 Specification

codat-bank-feeds-api-openapi.yml Raw ↑
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