COUNTCOUNT
Sign Up

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

iduuid

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

namestring

Display name of the account.

accountNumberstring

Optional account number or code.

typeenum

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

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

statusenum

Account status.

One of: active, inactive

editableboolean

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

canDeleteboolean

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

deleteBlockedReasonstring

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

currencystring

ISO 4217 currency code for the account.

descriptionstring

Free-text description.

colorstring

Hex color used in the UI.

subTypeobject

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

idinteger

Numeric AccountSubType id (not a UUID).

typestring

High-level type this sub-type belongs to.

namestring

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

anchorTierstring

Anchor tier when applicable, otherwise null.

institutionobject

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

namestring

Institution name.

logoUrlstring

Institution logo URL, or null.

subAccountsarray

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

systemBalancenumber

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

providerBalancesarray

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

reconcileBalancesarray

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

createdAtdatetime

ISO 8601 creation timestamp.

updatedAtdatetime

ISO 8601 last update timestamp.

Example
{
  "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-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