API Reference
Opening Balance
Read and publish the workspace opening (conversion) balance as of the cutover date. Total debits must equal total credits.
Last updated 2026-07-28
Overview
The Opening Balance API manages the workspace conversion balance — the summarized balances as of the cutover date, after which COUNT tracks activity line by line.
Set the cutover date first with PATCH /partners/workspace when needed, then GET the current opening balance and POST rows to draft-and-publish in one call. Partners never drive the multi-step UI staging flow.
Key concepts
Balanced rows
POST requires a non-empty `rows` array. Sum of debits must equal sum of credits or publish validation fails.
replaceExisting
Pass `replaceExisting: true` to overwrite an existing draft or published opening balance. Omit or false rejects with 409 when one already exists — check with GET first.
Onboarding only for publish
POST drafts and immediately publishes. Publish only works while the workspace is still onboarding (`team.isOnboarding === true`) and rejects with 400 once onboarding is complete.
Draft survives failed publish
Draft create and publish are separate service transactions. If publish-time validation fails after the draft was saved, the draft persists — retry with `replaceExisting: true` after fixing rows.
The opening balance state
Returned by GET. Status is typically `none`, `draft`, or `published`.
Attributes
statusenumLifecycle of the conversion balance.
One of: none, draft, published
cutoverDatedateYYYY-MM-DD cutover date the balance is anchored to, when set.
rowsarrayBalance rows keyed by account UUID.
accountUuiduuidChart-of-accounts account UUID.
accountNamestringAccount display name.
accountTypestringAccount type (Assets, Liabilities, Equity, Income, Expenses).
debitstringDebit amount (string decimal, max 2 places).
creditstringCredit amount (string decimal, max 2 places).
{
"status": "published",
"cutoverDate": "2026-03-01",
"rows": [
{
"accountUuid": "c8d9e0f1-a2b3-4567-cdef-789012345678",
"accountName": "Business Checking",
"accountType": "Assets",
"debit": "12500.00",
"credit": "0.00"
},
{
"accountUuid": "d4e5f6a7-b8c9-0123-defa-234567890123",
"accountName": "Opening Balance Equity",
"accountType": "Equity",
"debit": "0.00",
"credit": "12500.00"
}
]
}Set cutover first
Use PATCH /partners/workspace with `{ "cutoverDate": "YYYY-MM-DD" }` before publishing an opening balance when the cutover is not already set.MCP equivalents
COUNT_get_opening_balance and COUNT_set_opening_balance. Prefer COUNT_update_workspace for the cutover date.Related
Recent changes
Connections, reconciliations, opening balance, workspace cutover, and transaction bulk ops
Documented Partner API groups for bank Connections (including Plaid Hosted Link connect/complete/reconnect), Reconciliations (create draft + complete), Opening Balance (get/set conversion balance), and Workspace (PATCH cutoverDate). Added PATCH /partners/transactions/change-category-bulk and exclude-bulk. Removed non-existent POST /partners/bills/bulk and /partners/invoices/bulk from the reference. Extended the MCP tool catalog with the matching COUNT_* tools plus remote-only COUNT_get_bulk_task_status and COUNT_remember/recall/forget.
