---
title: "Chart of Accounts API · COUNT Partner API"
description: "The chart of accounts is the workspace general ledger. Every transaction, bill, invoice line, and journal entry line posts to an account. Accounts are…"
canonical: "https://developers.getcount.com/reference/chart-of-accounts"
source: "https://developers.getcount.com/reference/chart-of-accounts"
---
API Reference

# Chart of Accounts

The chart of accounts is the workspace general ledger. Every transaction, bill, invoice line, and journal entry line posts to an account. Accounts are organized by high-level type (Assets, Liabilities, Equity, Income, Expenses) and a numeric sub-type.

Last updated 2026-06-30

## Overview

The Chart of Accounts API lets your integration list, create, update, and delete ledger accounts in a workspace. Accounts carry a display name, optional account number, currency, status, and a sub-type that determines the high-level bucket (Assets, Liabilities, Equity, Income, or Expenses).

Partner responses expose each account UUID as `id` and remove internal numeric identifiers and foreign keys. The high-level `type` is derived from `subTypeId` on create — do not send `type` in mutation bodies.

## Key concepts

### Identification

Accounts are referenced by UUID returned as `id`. Copy the `id` from a list response (or any nested account reference) when updating or deleting.

### Sub-types and type

Creating an account requires `name` and `subTypeId`. Read `subType.id` from an existing account in the bucket you want — the server derives the high-level `type` from that id. Switching sub-types across buckets (for example Bank to Income) is rejected on update.

### Sub-accounts

Pass `parentAccountId` (numeric internal id of the parent) to nest an account. Sub-accounts inherit the parent type, currency, and status. A sub-account cannot itself have sub-accounts.

### System accounts

System-created or protected accounts accept only a small allowlist of cosmetic fields. Attempts to edit protected fields return 403.

## The account object

Fields returned on a chart-of-accounts entry. Nested `subType` and `institution` objects are included on list responses. Sub-accounts may appear under `subAccounts`.

#### Attributes

`id` uuid

Account identifier (UUID). Use in path parameters for update and delete.

`name` string

Display name of the account.

`accountNumber` string

Optional account number or code.

`type` enum

High-level account bucket. Derived from subTypeId — read-only on mutations.

One of: `Assets`, `Liabilities`, `Equity`, `Income`, `Expenses`

`status` enum

Account status.

One of: `active`, `inactive`

`editable` boolean

Whether core fields can be edited. `false` for system/control/connected accounts. Partner-created accounts are `true` until mapped or used in postings.

`canDelete` boolean

Present when `includeDeleteMeta=true`. Whether the account can be deleted.

`deleteBlockedReason` string

Present when `includeDeleteMeta=true` and `canDelete` is false. One of NOT_EDITABLE, HAS_JOURNAL_ENTRIES, HAS_SUB_ACCOUNTS, HAS_INVOICE_PRODUCTS, HAS_PAYROLL_MAPPINGS.

`currency` string

ISO 4217 currency code for the account.

`description` string

Free-text description.

`color` string

Hex color used in the UI.

`subType` object

Account sub-type metadata. The numeric `id` is the value to pass as `subTypeId` when creating another account in the same bucket.

`id` integer

Numeric AccountSubType id (not a UUID).

`type` string

High-level type this sub-type belongs to.

`name` string

Sub-type label (for example Bank, Accounts Receivable).

`anchorTier` string

Anchor tier when applicable, otherwise null.

`institution` object

Connected institution metadata for bank/feed accounts, or null.

`name` string

Institution name.

`logoUrl` string

Institution logo URL, or null.

`subAccounts` array

Child accounts nested under this parent, when present. When `includeBalances=true`, each sub-account row includes `systemBalance` only.

`systemBalance` number

GL / COUNT journal balance. Present on parent and sub-account rows when `includeBalances=true`. Sum of journal entry amounts for the account.

`providerBalances` array

Latest bank-feed balances on top-level account rows when `includeBalances=true` and the account is connected.

`reconcileBalances` array

Latest reconciliation snapshot on top-level account rows when `includeBalances=true`.

`createdAt` datetime

ISO 8601 creation timestamp.

`updatedAt` datetime

ISO 8601 last update timestamp.

Example

```json
{
  "id": "c8d9e0f1-a2b3-4567-cdef-789012345678",
  "name": "Operating Bank Account",
  "accountNumber": "1000",
  "type": "Assets",
  "status": "active",
  "currency": "USD",
  "description": "Primary business checking account",
  "color": "#4A90D9",
  "subType": {
    "id": 1,
    "type": "Assets",
    "name": "Bank",
    "anchorTier": null
  },
  "institution": {
    "name": "Chase",
    "logoUrl": null
  },
  "subAccounts": [],
  "createdAt": "2026-01-15T10:30:00.000Z",
  "updatedAt": "2026-01-28T14:22:30.000Z"
}
```

Type filter is case-sensitive

The `type` query filter on list must be one of `Assets`, `Liabilities`, `Equity`, `Income`, or `Expenses` — plural and case-sensitive. Singular forms like `Asset` return 400.

Finding subTypeId

Use `GET /partners/account-sub-types` to list all sub-types for the workspace country, or list accounts filtered by `type=Expenses` and copy `subType.id` from any row in that bucket.

Deletion restrictions

Accounts with posted activity, open balances, or system protection cannot be deleted. The API returns 400 or 403 with a descriptive message.

## Recent changes

2026-09-07

Accounting Playbooks and Ledger Semantics published as documentation

The workflows and behaviour rules the MCP server serves to agents through COUNT_playbooks and COUNT_knowledge are now readable documentation. Accounting Playbooks (/guides/playbooks) covers nine ordered workflows across 54 steps — invoicing, credit memos, recurring templates, vendor bill payment, chart-of-accounts setup, migration imports, budget planning and round-trip, and month-end review — each naming the exact tool per step. Ledger Semantics & Lifecycles (/guides/ledger-semantics) documents 33 confirmed behaviours across twelve resources: the state each operation is valid in, the fields accepted and then ignored, and the calls that cannot be undone, with every irreversible behaviour collected in one table at the top of the page. Both pages carry the COUNT_playbooks and COUNT_knowledge ids they were ported from so the agent-facing and human-facing copies stay in step. Playbooks, lifecycle sections, and individual behaviour rules are indexed into site search.

2026-06-30

Transaction split, COA balance, and bill-picker filters

Added PUT /partners/transactions/{uuid}/split for explicit transaction splits. Chart of accounts list now returns systemBalance when includeBalances=true. Documented bill-assignment list filters (reviewed, pending, excluded, currency, status) and exposed read-only billId/invoiceId UUIDs on transaction responses.

2026-06-29

Budgets API and documentation parity

Added the Budgets API reference (14 endpoints), invoice send-history, and account sub-types list. Introduced an automated parity check (`npm run check:parity`) that compares documented routes against count-dev. Normalized customer path parameters to `{uuid}` and fixed the documents chunk-upload progress path.

2026-06-21

Complete Partner API reference

Documented all remaining API reference groups: Chart of Accounts, Vendors, Products & Services, Recurring Invoice Templates, Credit Memos, Bills, Journal Entries, Tags, People, Projects, Tasks, Time Entries, Expense Receipts, Reports, and Workspace Stats. Added missing invoice endpoints (audit log, attachments, credit application, remove transaction) and group overviews for Invoices and Transactions.

## Endpoints

[GET List chart of accounts `/partners/chart-of-accounts` Returns the workspace chart of accounts with optional filters.](https://developers.getcount.com/reference/chart-of-accounts/list-chart-of-accounts) [GET List account sub-types `/partners/account-sub-types` Returns the catalog of account sub-types for the workspace country.](https://developers.getcount.com/reference/chart-of-accounts/list-account-sub-types) [POST Create account `/partners/chart-of-accounts` Creates a new chart-of-accounts entry.](https://developers.getcount.com/reference/chart-of-accounts/create-account) [PATCH Update account `/partners/chart-of-accounts/{uuid}` Updates an existing account. Only the fields you send are changed.](https://developers.getcount.com/reference/chart-of-accounts/update-account) [DELETE Delete account `/partners/chart-of-accounts/{uuid}` Deletes a chart-of-accounts entry by UUID.](https://developers.getcount.com/reference/chart-of-accounts/delete-account) [POST Bulk create accounts `/partners/chart-of-accounts/bulk` Creates up to 100 chart-of-accounts entries in one request with partial-success semantics.](https://developers.getcount.com/reference/chart-of-accounts/bulk-create-accounts)
