API Reference
Budgets
Budgets let partners create workspace financial plans with versioned cell grids. Partner responses expose budget UUIDs as `id`, strip internal numeric foreign keys, and require `accountUuid` (not numeric `accountId`) on cell update payloads.
Last updated 2026-06-29
Overview
The Budgets API lets your integration list, create, update, publish, archive, and duplicate budgets in a workspace. Each budget carries metadata (name, cadence, period counts, currency) and one or more numbered versions with a cell grid keyed by chart-of-accounts UUIDs.
Cell updates accept `accountUuid` and reject bare numeric `accountId` fields. Use `GET /partners/budgets/{uuid}/grid` to read the grid with optional actuals, then patch individual cells or bulk-import many rows at once.
Key concepts
Overall Budget
Each workspace may have at most one Overall Budget (`isOverall: true`). Fetch it with `GET /partners/budgets/overall` or create it explicitly on `POST /partners/budgets`.
Versions and the grid
New budgets receive version 1 automatically. Create additional versions with `POST /partners/budgets/{uuid}/versions`, then read or update cells against a specific `versionNumber`.
Account UUIDs on cells
Cell update bodies must use `accountUuid` from the chart of accounts. Sending numeric `accountId` without `accountUuid` returns 400.
Publish and archive
Publishing locks a version snapshot. Archived budgets are excluded from name-uniqueness checks and can be recreated under the same name.
The budget object
Metadata returned on budget list and detail responses. Nested `versions` omit internal database ids.
Attributes
iduuidBudget identifier (UUID). Use in path parameters.
namestringDisplay name. Must be unique among non-archived budgets in the workspace.
startPerioddateFirst budget period start date (ISO date).
cadenceenumPeriod cadence.
One of: monthly, yearly
actualPeriodsintegerNumber of historical actual periods included.
budgetPeriodsintegerNumber of forward budget periods (minimum 1).
currencyCodestringISO 4217 currency code.
statusenumBudget lifecycle status.
One of: draft, published, archived
lockedAtdatetimeWhen the budget was locked, or null.
isOverallbooleanWhether this is the workspace Overall Budget (at most one per workspace).
versionsarrayVersion summaries attached to the budget.
versionNumberinteger1-based version number used in path parameters.
labelstringHuman-readable version label.
isPublishedbooleanWhether this version is the published snapshot.
createdAtdatetimeWhen the version was created.
createdAtdatetimeISO 8601 creation timestamp.
updatedAtdatetimeISO 8601 last update timestamp.
{
"id": "55667788-99aa-bbcc-ddee-ff0011223344",
"name": "FY 2026 Operating Budget",
"startPeriod": "2026-01-01",
"cadence": "monthly",
"actualPeriods": 3,
"budgetPeriods": 12,
"currencyCode": "USD",
"status": "draft",
"lockedAt": null,
"isOverall": false,
"versions": [
{
"versionNumber": 1,
"label": "Initial",
"isPublished": false,
"createdAt": "2026-01-15T10:30:00.000Z"
}
],
"createdAt": "2026-01-15T10:30:00.000Z",
"updatedAt": "2026-01-28T14:22:30.000Z"
}Grid actuals
Pass `includeActuals=false` on the grid route to omit actual-period columns. `reportType` accepts `accrual` (default) or `cash`.Published budgets
Metadata updates are rejected when `status` is `published` or `lockedAt` is set. Duplicate or create a new version instead.Related
Recent changes
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.
Endpoints
/partners/budgets/overallReturns the workspace Overall Budget, if one exists.
/partners/budgetsReturns all budgets in the workspace, optionally filtered by status.
/partners/budgetsCreates a budget and its initial version.
/partners/budgets/{uuid}Retrieves a single budget by UUID.
/partners/budgets/{uuid}Updates budget metadata. Rejected when the budget is published or locked.
/partners/budgets/{uuid}Deletes a draft budget.
/partners/budgets/{uuid}/gridReturns the budget cell grid for a version, with optional actuals.
/partners/budgets/{uuid}/versionsReturns version summaries for a budget.
/partners/budgets/{uuid}/versionsCreates a new numbered version for the budget.
/partners/budgets/{uuid}/versions/{versionNumber}/cellsUpdates one or more cells in a budget version.
/partners/budgets/{uuid}/versions/{versionNumber}/cells/bulkApplies many cell updates in one request with per-row success/failure results.
/partners/budgets/{uuid}/publishPublishes a budget version snapshot.
/partners/budgets/{uuid}/archiveArchives a budget.
/partners/budgets/{uuid}/duplicateCreates a copy of a budget, optionally carrying cell values forward.
