Codat Lending API
The Lending API from Codat — 0 operation(s) for lending.
The Lending API from Codat — 0 operation(s) for lending.
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-lending-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: Lending API
description: 'Our Lending solution helps you make smarter credit decisions on small businesses by enabling you to pull your customers'' latest data from accounting, banking, and commerce software they are already using. It also includes features to help providers verify the accuracy of data and process it more efficiently.
The Lending solution is built on top of the latest accounting, commerce, and banking data, providing you with the most important data points you need to get a full picture of SMB creditworthiness and make a comprehensive assessment of your customers.
[Explore solution](https://docs.codat.io/lending/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. |
| Bank statements | Retrieve banking data from linked bank accounts. |
| Sales | Retrieve standardized sales data from a linked commerce software. |
| Financial statements | Financial data and reports from a linked accounting software. |
| Liabilities | Debt and other liabilities. |
| Accounts payable | Data from a linked accounting software representing money the business owes money to its suppliers. |
| Accounts receivable | Data from a linked accounting software representing money owed to the business for sold goods or services. |
| Transactions | Data from a linked accounting software representing transactions. |
| Company info | View company information fetched from the source platform. |
| Data integrity | Match mutable accounting data with immutable banking data to increase confidence in financial data. |
| Excel reports | Download reports in Excel format. |
| Manage data | Control how data is retrieved from an integration. |
| File upload | Endpoints to manage uploaded files. |
| Loan writeback | Implement the [loan writeback](https://docs.codat.io/lending/guides/loan-writeback/introduction) procedure in your lending process to maintain an accurate position of a loan during the entire lending cycle. |
<!-- End Codat Tags Table -->'
version: 3.0.0
contact:
name: Codat
email: support@codat.io
termsOfService: https://www.codat.io/legals/
servers:
- description: Production
url: https://api.codat.io
security:
- auth_header: []
tags:
- name: Lending
paths: {}
webhooks:
Account categories updated:
post:
requestBody:
description: Triggered when a company's accounts are categorized.
content:
application/json:
schema:
$ref: '#/components/schemas/AccountCategoriesUpdatedWebhook'
responses:
'200':
description: Return a 200 status to indicate that the webhook was received successfully.
tags:
- Lending
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:
- Lending
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:
- Lending
reports.categorizedBankStatement.generate.successful:
post:
description: Called when a categorized bank statement is successfully generated for a company.
requestBody:
content:
application/json:
schema:
$ref: '#/webhooks/reports.creditModel.generate.successful/post/requestBody/content/application~1json/schema'
examples:
Successful:
value:
id: bae71d36-ff47-420a-b4a6-f8c9ddf41140
eventType: reports.categorizedBankStatement.generate.successful
generatedDate: '2023-05-03T10:00:23.000Z'
payload:
id: bb42ce7e-720a-4ac5-b640-f24f53ff47c8
referenceCompany:
id: 0498e921-9b53-4396-a412-4f2f5983b0a2
name: Bank of Dave
description: internal_id_mxO7rLfo
links:
portal: https://app.codat.io/companies/0498e921-9b53-4396-a412-4f2f5983b0a2/summary
tags:
customerRegion: us
uid: 335a086e-8563-4b03-94e3-39544225ecb6
responses:
'200':
description: Return a 200 status to indicate that the webhook was received successfully.
tags:
- Lending
reports.categorizedBankStatement.generate.unsuccessful:
post:
description: Called when a categorized bank statement has failed to be generated for a company.
requestBody:
content:
application/json:
schema:
$ref: '#/webhooks/reports.creditModel.generate.successful/post/requestBody/content/application~1json/schema'
examples:
Unsuccessful:
value:
id: bae71d36-ff47-420a-b4a6-f8c9ddf41140
eventType: reports.categorizedBankStatement.generate.unsuccessful
generatedDate: '2023-05-03T10:00:23.000Z'
payload:
id: bb42ce7e-720a-4ac5-b640-f24f53ff47c8
referenceCompany:
id: 0498e921-9b53-4396-a412-4f2f5983b0a2
name: Bank of Dave
description: internal_id_mxO7rLfo
links:
portal: https://app.codat.io/companies/0498e921-9b53-4396-a412-4f2f5983b0a2/summary
tags:
customerRegion: us
uid: 335a086e-8563-4b03-94e3-39544225ecb6
responses:
'200':
description: Return a 200 status to indicate that the webhook was received successfully.
tags:
- Lending
reports.creditModel.generate.successful:
post:
description: Called when a credit model report is successfully generated.
requestBody:
content:
application/json:
schema:
title: Report generation 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:
- reports.categorizedBankStatement.generate.successful
- reports.creditModel.generate.successful
generatedDate:
$ref: '#/components/schemas/DateTime'
description: The date time in UTC the event was generated in Codat.
payload:
$ref: '#/webhooks/reports.creditModel.generate.successful/post/requestBody/content/application~1json/schema/definitions/ReportGenerationPayload'
definitions:
ReportGenerationPayload:
title: Report generation payload
type: object
properties:
id:
type: string
format: uuid
example: a78e2625-7190-4d94-ae3b-071320451026
description: Unique identifier of the report.
referenceCompany:
$ref: '#/components/schemas/Company/definitions/companyReference'
examples:
Successful:
value:
id: bae71d36-ff47-420a-b4a6-f8c9ddf41140
eventType: reports.creditModel.generate.successful
generatedDate: '2023-05-03T10:00:23.000Z'
payload:
id: bb42ce7e-720a-4ac5-b640-f24f53ff47c8
referenceCompany:
id: 0498e921-9b53-4396-a412-4f2f5983b0a2
name: Bank of Dave
description: Looking for a loan.
links:
portal: https://app.codat.io/companies/0498e921-9b53-4396-a412-4f2f5983b0a2/summary
tags:
customerRegion: us
uid: 335a086e-8563-4b03-94e3-39544225ecb6
responses:
'200':
description: Return a 200 status to indicate that the webhook was received successfully.
tags:
- Lending
reports.creditModel.generate.unsuccessful:
post:
description: Called when a credit model report has failed to be generated for a company.
requestBody:
content:
application/json:
schema:
$ref: '#/webhooks/reports.creditModel.generate.successful/post/requestBody/content/application~1json/schema'
examples:
Unsuccessful:
value:
id: bae71d36-ff47-420a-b4a6-f8c9ddf41140
eventType: reports.creditModel.generate.unsuccessful
generatedDate: '2023-05-03T10:00:23.000Z'
payload:
id: bb42ce7e-720a-4ac5-b640-f24f53ff47c8
referenceCompany:
id: 0498e921-9b53-4396-a412-4f2f5983b0a2
name: Bank of Dave
description: Looking for a loan.
links:
portal: https://app.codat.io/companies/0498e921-9b53-4396-a412-4f2f5983b0a2/summary
tags:
customerRegion: us
uid: 335a086e-8563-4b03-94e3-39544225ecb6
responses:
'200':
description: Return a 200 status to indicate that the webhook was received successfully.
tags:
- Lending
components:
schemas:
AccountCategoriesUpdatedWebhook:
title: Account categories updated webhook
description: Webhook request body for the "Account categories updated" event.
x-internal: true
type: object
properties:
ClientId:
title: Client ID
type: string
format: uuid
description: Unique identifier for your client in Codat.
ClientName:
type: string
description: Name of your client in Codat.
CompanyId:
$ref: '#/components/parameters/companyId/schema'
DataConnectionId:
$ref: '#/components/parameters/connectionId/schema'
RuleId:
type: string
format: uuid
description: Unique identifier for the rule.
deprecated: true
RuleType:
type: string
x-stoplight:
id: 34d52a089f08a
description: The type of rule.
AlertId:
type: string
format: uuid
description: Unique identifier of the webhook event.
Message:
type: string
description: A human-readable message about the webhook.
Data:
$ref: '#/components/schemas/AccountCategoriesUpdatedWebhook/definitions/AccountCategoriesUpdatedWebhookData'
definitions:
AccountCategoriesUpdatedWebhookData:
type: object
title: Account categories updated webhook data
properties:
modifiedDate:
$ref: '#/components/schemas/SourceAccountV2/properties/feedStartDate'
description: The date on which the company's account categories were last modified in Codat.
examples:
- ClientId: bae71d36-ff47-420a-b4a6-f8c9ddf41140
ClientName: Bank of Dave
CompanyId: 8a210b68-6988-11ed-a1eb-0242ac120002
DataConnectionId: 2e9d2c44-f675-40ba-8049-353bfcb5e171
RuleId: 70af3071-65d9-4ec3-b3cb-5283e8d55dac
RuleType: Account Categories Updated
AlertId: a9367074-b5c3-42c4-9be4-be129f43577e
Message: Account categories updated for company f1c35bdc-1546-41b9-baf4-3f31135af968.
Data:
modifiedDate: '2019-08-24T14:15:22Z'
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."
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/lending-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
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.
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'
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: lending-api
x-codat-keep-docs-paths-local: true
x-codat-speakeasy-pagination:
type: offsetLimit
inputs:
- name: page
in: parameters
type: page
outputs:
results: $.results