Skip to main content

Budget & Line Items

The Budget entity set provides endpoints for managing project budgets, line items, budget groups, states, presets, fiscal periods, and templates. Budgets track financial planning data and can contain multiple line items organized into groups.


Budget

A budget represents a financial plan associated with a project. Each budget can contain line items, be linked to documents, and have a defined state.

Properties

PropertyTypeDescription
BudgetIdGuidPrimary key. Unique identifier for the budget.
ProjectIdGuidForeign key to the associated project.
BudgetTypeintType discriminator for the budget (e.g., income, expense).
BudgetStateIdGuid?Foreign key to the current budget state.
ConsecutiveNumberint?Auto-incremented sequence number within the project.
NamestringDisplay name of the budget.
BudgetDateDateTimeOffset?Date associated with the budget.
BudgetContactIdGuid?Contact linked to the budget.
BudgetCreatedDateDateTimeOffset?Timestamp when the budget was created.
BudgetChangedDateDateTimeOffset?Timestamp when the budget was last modified.
AmountAssetsdecimal?Total asset amount for the budget.

Endpoints

List Budgets

GET/odata/Budget

Returns all budgets. Supports OData query options.

GET /odata/Budget?$filter=ProjectId eq {projectId}&$orderby=BudgetDate desc

Create Budget

POST/odata/Budget

Creates a new budget.

{
"ProjectId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"Name": "Q1 Budget",
"BudgetType": 1,
"BudgetDate": "2024-01-01T00:00:00Z"
}

Get Budget

GET/odata/Budget({key})

Returns a single budget by its ID.

ParameterTypeRequiredDescription
keyGuidThe BudgetId of the budget to retrieve.

Update Budget

PATCH/odata/Budget({key})

Partially updates an existing budget.

ParameterTypeRequiredDescription
keyGuidThe BudgetId of the budget to update.

Delete Budget

DELETE/odata/Budget({key})

Deletes a budget.

ParameterTypeRequiredDescription
keyGuidThe BudgetId of the budget to delete.

Count Budgets

GET/odata/Budget/$count

Returns the total number of budgets.

Actions & Functions

Get Unbilled Line Items Count

GET/odata/Budget({key})/GetUnbilledLineitemsCount()

Returns the count of unbilled line items for a budget.

ParameterTypeRequiredDescription
keyGuidThe BudgetId.

Create Invoice for All Line Items

GET/odata/Budget({key})/CreateInvoiceForAllLineitems()

Generates an invoice covering all line items in the budget.

ParameterTypeRequiredDescription
keyGuidThe BudgetId.

Create Invoice for Selected Line Items

POST/odata/Budget({key})/CreateInvoiceForSelectedLineitems

Generates an invoice for a subset of line items.

ParameterTypeRequiredDescription
keyGuidThe BudgetId.
info

The request body must include an array of line item IDs to include in the invoice.

Add Document to Budget

POST/odata/Budget({key})/AddDocumentToBudget

Links a document to the budget.

ParameterTypeRequiredDescription
keyGuidThe BudgetId.

Remove Document from Budget

POST/odata/Budget({key})/RemoveDocumentFromBudget

Removes a document link from the budget.

ParameterTypeRequiredDescription
keyGuidThe BudgetId.

Add Line Item from Template

POST/odata/Budget({key})/AddLineItemFromTemplate

Creates a line item from a predefined template and adds it to the budget.

ParameterTypeRequiredDescription
keyGuidThe BudgetId.

Add Relation

POST/odata/Budget({key})/AddRelation

Creates a relation between the budget and another entity.

ParameterTypeRequiredDescription
keyGuidThe BudgetId.

Remove Relation

POST/odata/Budget({key})/RemoveRelation

Removes a relation from the budget.

ParameterTypeRequiredDescription
keyGuidThe BudgetId.

LineItem

A line item represents an individual financial entry within a budget. Line items can be grouped, marked as billable, and linked to documents.

Properties

PropertyTypeDescription
LineItemIdGuidPrimary key. Unique identifier for the line item.
BudgetIdGuidForeign key to the parent budget.
GroupIdGuid?Foreign key to the budget group this item belongs to.
PerformedByContactIdGuid?Contact who performed the work.
OrdinalPositionint?Sort order within the budget.
ConsecutiveNumberint?Auto-incremented sequence number.
ShortDescriptionstringBrief description of the line item.
Quantitydecimal?Quantity of units.
UnitstringUnit of measure (e.g., hours, pieces).
PricePerUnitdecimal?Primary price per unit.
SecondaryPricePerUnitdecimal?Secondary price per unit (e.g., cost price).
IsCustomPricePerUnitboolIndicates whether the price was manually overridden.
IsBilledboolWhether the line item has been invoiced.
IsBillableboolWhether the line item is eligible for billing.
CreatedByContactIdGuid?Contact who created the line item.
ChangedByContactIdGuid?Contact who last modified the line item.
CreatedDateDateTimeOffset?Timestamp when the line item was created.
ChangedDateDateTimeOffset?Timestamp when the line item was last modified.
ProvisionDateDateTimeOffset?Date when the service was provided.
DescriptionTextstringPlain-text description of the line item.
DescriptionHTMLstringHTML-formatted description of the line item.
ProjectIdGuid?Foreign key to the associated project.
LineItemTypeenumType classification of the line item.

Endpoints

List Line Items

GET/odata/LineItem

Returns all line items. Supports OData query options.

GET /odata/LineItem?$filter=BudgetId eq {budgetId}&$expand=Budget

Create Line Item

POST/odata/LineItem

Creates a new line item.

{
"BudgetId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"ShortDescription": "Consulting hours",
"Quantity": 10,
"Unit": "hours",
"PricePerUnit": 150.00,
"IsBillable": true
}

Get Line Item

GET/odata/LineItem({key})

Returns a single line item by its ID.

ParameterTypeRequiredDescription
keyGuidThe LineItemId.

Update Line Item

PATCH/odata/LineItem({key})

Partially updates an existing line item.

ParameterTypeRequiredDescription
keyGuidThe LineItemId.

Delete Line Item

DELETE/odata/LineItem({key})

Deletes a line item.

ParameterTypeRequiredDescription
keyGuidThe LineItemId.

Count Line Items

GET/odata/LineItem/$count

Returns the total number of line items.

Actions

Copy Line Item

POST/odata/LineItem({key})/Copy

Creates a duplicate of the specified line item.

ParameterTypeRequiredDescription
keyGuidThe LineItemId to copy.

Add Document to Line Item

POST/odata/LineItem({key})/AddDocumentToLineItem

Links a document to the line item.

ParameterTypeRequiredDescription
keyGuidThe LineItemId.

Remove Document from Line Item

POST/odata/LineItem({key})/RemoveDocumentFromLineItem

Removes a document link from the line item.

ParameterTypeRequiredDescription
keyGuidThe LineItemId.

Add Relation

POST/odata/LineItem({key})/AddRelation

Creates a relation between the line item and another entity.

ParameterTypeRequiredDescription
keyGuidThe LineItemId.

Remove Relation

POST/odata/LineItem({key})/RemoveRelation

Removes a relation from the line item.

ParameterTypeRequiredDescription
keyGuidThe LineItemId.

BudgetGroup

Budget groups organize line items within a budget into logical categories.

Properties

PropertyTypeDescription
BudgetGroupIdGuidPrimary key. Unique identifier for the group.
NamestringDisplay name of the group.
OrdinalPositionintSort order of the group within the budget.
PurchasePricedecimal?Aggregated purchase price for the group.
DispositionPricedecimal?Aggregated disposition price for the group.
VisibleboolWhether the group is visible in the UI.

Endpoints

GET/odata/BudgetGroup

Returns all budget groups.

POST/odata/BudgetGroup

Creates a new budget group.

GET/odata/BudgetGroup({key})

Returns a single budget group by its ID.

PATCH/odata/BudgetGroup({key})

Updates an existing budget group.

DELETE/odata/BudgetGroup({key})

Deletes a budget group.

GET/odata/BudgetGroup/$count

Returns the total number of budget groups.


BudgetState

Budget states represent workflow stages for a budget (e.g., Draft, Approved, Closed).

Properties

PropertyTypeDescription
BudgetStateIdGuidPrimary key. Unique identifier for the state.
NamestringDisplay name of the state.
IsHiddenboolWhether the state is hidden from the user interface.

Endpoints

GET/odata/BudgetState

Returns all budget states.

POST/odata/BudgetState

Creates a new budget state.

GET/odata/BudgetState({key})

Returns a single budget state by its ID.

PATCH/odata/BudgetState({key})

Updates an existing budget state.

DELETE/odata/BudgetState({key})

Deletes a budget state.

GET/odata/BudgetState/$count

Returns the total number of budget states.


BudgetPreset

Budget presets store reusable budget configurations that can be applied to projects.

Endpoints

GET/odata/BudgetPreset

Returns all budget presets.

POST/odata/BudgetPreset

Creates a new budget preset.

GET/odata/BudgetPreset({key})

Returns a single budget preset by its ID.

PATCH/odata/BudgetPreset({key})

Updates an existing budget preset.

DELETE/odata/BudgetPreset({key})

Deletes a budget preset.

GET/odata/BudgetPreset/$count

Returns the total number of budget presets.

Actions

POST/odata/BudgetPreset/LoadTemplateForProject

Loads and applies a budget preset template to a project.

POST/odata/BudgetPreset/SaveTemplateForBudget

Saves the current budget configuration as a reusable preset.


FiscalPeriod

Fiscal periods define time ranges used for budget planning and reporting. This entity is read-only.

Properties

PropertyTypeDescription
FiscalPeriodIdGuidPrimary key. Unique identifier for the fiscal period.
NamestringDisplay name of the fiscal period.
PeriodTypeintType of period (e.g., monthly, quarterly, yearly).
PeriodStartDateTimeOffsetStart date of the fiscal period.
PeriodEndDateTimeOffsetEnd date of the fiscal period.

Endpoints

note

FiscalPeriod is a read-only entity. Only GET operations are supported.

GET/odata/FiscalPeriod

Returns all fiscal periods.

GET/odata/FiscalPeriod({key})

Returns a single fiscal period by its ID.

GET/odata/FiscalPeriod/$count

Returns the total number of fiscal periods.


FiscalPeriodFunding

Fiscal period funding entries allocate budget amounts to specific fiscal periods within a project.

Endpoints

GET/odata/FiscalPeriodFunding

Returns all fiscal period funding entries.

POST/odata/FiscalPeriodFunding

Creates a new fiscal period funding entry.

GET/odata/FiscalPeriodFunding({key})

Returns a single funding entry by its ID.

PATCH/odata/FiscalPeriodFunding({key})

Updates an existing funding entry.

DELETE/odata/FiscalPeriodFunding({key})

Deletes a funding entry.

GET/odata/FiscalPeriodFunding/$count

Returns the total number of funding entries.

Actions

POST/odata/FiscalPeriodFunding/CreateFundingPlanForProject

Generates a complete funding plan for a project based on its fiscal periods.


LineItemTemplate

Line item templates provide reusable line item configurations. Templates can be organized into groups.

Endpoints

GET/odata/LineItemTemplate

Returns all line item templates.

POST/odata/LineItemTemplate

Creates a new line item template.

GET/odata/LineItemTemplate({key})

Returns a single line item template by its ID.

PATCH/odata/LineItemTemplate({key})

Updates an existing line item template.

DELETE/odata/LineItemTemplate({key})

Deletes a line item template.

GET/odata/LineItemTemplate/$count

Returns the total number of line item templates.

Actions

POST/odata/LineItemTemplate({key})/AddGroup

Assigns the template to a group.

ParameterTypeRequiredDescription
keyGuidThe LineItemTemplate ID.
POST/odata/LineItemTemplate({key})/RemoveGroup

Removes the template from a group.

ParameterTypeRequiredDescription
keyGuidThe LineItemTemplate ID.

DynamicBudget

DynamicBudget provides a read-only flattened view of budgets with all custom fields included as additional columns.

Read-Only

DynamicBudget does not support create, update, or delete operations. Use the standard Budget endpoints to modify data.

Endpoints

GET/odata/DynamicBudget

Returns all budgets with custom field columns.

GET/odata/DynamicBudget({key})

Returns a single budget with custom field columns.


DynamicLineItem

DynamicLineItem provides a read-only flattened view of line items with all custom fields included as additional columns.

Read-Only

DynamicLineItem does not support create, update, or delete operations. Use the standard LineItem endpoints to modify data.

Endpoints

GET/odata/DynamicLineItem

Returns all line items with custom field columns.

GET/odata/DynamicLineItem({key})

Returns a single line item with custom field columns.