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
iduuidAccount identifier (UUID). Use in path parameters for update and delete.
namestringDisplay name of the account.
accountNumberstringOptional account number or code.
typeenumHigh-level account bucket. Derived from subTypeId — read-only on mutations.
One of: Assets, Liabilities, Equity, Income, Expenses
statusenumAccount status.
One of: active, inactive
editablebooleanWhether core fields can be edited. `false` for system/control/connected accounts. Partner-created accounts are `true` until mapped or used in postings.
canDeletebooleanPresent when `includeDeleteMeta=true`. Whether the account can be deleted.
deleteBlockedReasonstringPresent when `includeDeleteMeta=true` and `canDelete` is false. One of NOT_EDITABLE, HAS_JOURNAL_ENTRIES, HAS_SUB_ACCOUNTS, HAS_INVOICE_PRODUCTS, HAS_PAYROLL_MAPPINGS.
currencystringISO 4217 currency code for the account.
descriptionstringFree-text description.
colorstringHex color used in the UI.
subTypeobjectAccount sub-type metadata. The numeric `id` is the value to pass as `subTypeId` when creating another account in the same bucket.
idintegerNumeric AccountSubType id (not a UUID).
typestringHigh-level type this sub-type belongs to.
namestringSub-type label (for example Bank, Accounts Receivable).
anchorTierstringAnchor tier when applicable, otherwise null.
institutionobjectConnected institution metadata for bank/feed accounts, or null.
namestringInstitution name.
logoUrlstringInstitution logo URL, or null.
subAccountsarrayChild accounts nested under this parent, when present. When `includeBalances=true`, each sub-account row includes `systemBalance` only.
systemBalancenumberGL / COUNT journal balance. Present on parent and sub-account rows when `includeBalances=true`. Sum of journal entry amounts for the account.
providerBalancesarrayLatest bank-feed balances on top-level account rows when `includeBalances=true` and the account is connected.
reconcileBalancesarrayLatest reconciliation snapshot on top-level account rows when `includeBalances=true`.
createdAtdatetimeISO 8601 creation timestamp.
updatedAtdatetimeISO 8601 last update timestamp.
{
"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
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.
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.
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
/partners/chart-of-accountsReturns the workspace chart of accounts with optional filters.
/partners/account-sub-typesReturns the catalog of account sub-types for the workspace country.
/partners/chart-of-accountsCreates a new chart-of-accounts entry.
/partners/chart-of-accounts/{uuid}Updates an existing account. Only the fields you send are changed.
/partners/chart-of-accounts/{uuid}Deletes a chart-of-accounts entry by UUID.
/partners/chart-of-accounts/bulkCreates up to 100 chart-of-accounts entries in one request with partial-success semantics.
