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
| Property | Type | Description |
|---|---|---|
BudgetId | Guid | Primary key. Unique identifier for the budget. |
ProjectId | Guid | Foreign key to the associated project. |
BudgetType | int | Type discriminator for the budget (e.g., income, expense). |
BudgetStateId | Guid? | Foreign key to the current budget state. |
ConsecutiveNumber | int? | Auto-incremented sequence number within the project. |
Name | string | Display name of the budget. |
BudgetDate | DateTimeOffset? | Date associated with the budget. |
BudgetContactId | Guid? | Contact linked to the budget. |
BudgetCreatedDate | DateTimeOffset? | Timestamp when the budget was created. |
BudgetChangedDate | DateTimeOffset? | Timestamp when the budget was last modified. |
AmountAssets | decimal? | Total asset amount for the budget. |
Endpoints
List Budgets
/odata/BudgetReturns all budgets. Supports OData query options.
GET /odata/Budget?$filter=ProjectId eq {projectId}&$orderby=BudgetDate desc
Create Budget
/odata/BudgetCreates a new budget.
{
"ProjectId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"Name": "Q1 Budget",
"BudgetType": 1,
"BudgetDate": "2024-01-01T00:00:00Z"
}
Get Budget
/odata/Budget({key})Returns a single budget by its ID.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The BudgetId of the budget to retrieve. |
Update Budget
/odata/Budget({key})Partially updates an existing budget.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The BudgetId of the budget to update. |
Delete Budget
/odata/Budget({key})Deletes a budget.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The BudgetId of the budget to delete. |
Count Budgets
/odata/Budget/$countReturns the total number of budgets.
Actions & Functions
Get Unbilled Line Items Count
/odata/Budget({key})/GetUnbilledLineitemsCount()Returns the count of unbilled line items for a budget.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The BudgetId. |
Create Invoice for All Line Items
/odata/Budget({key})/CreateInvoiceForAllLineitems()Generates an invoice covering all line items in the budget.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The BudgetId. |
Create Invoice for Selected Line Items
/odata/Budget({key})/CreateInvoiceForSelectedLineitemsGenerates an invoice for a subset of line items.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The BudgetId. |
The request body must include an array of line item IDs to include in the invoice.
Add Document to Budget
/odata/Budget({key})/AddDocumentToBudgetLinks a document to the budget.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The BudgetId. |
Remove Document from Budget
/odata/Budget({key})/RemoveDocumentFromBudgetRemoves a document link from the budget.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The BudgetId. |
Add Line Item from Template
/odata/Budget({key})/AddLineItemFromTemplateCreates a line item from a predefined template and adds it to the budget.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The BudgetId. |
Add Relation
/odata/Budget({key})/AddRelationCreates a relation between the budget and another entity.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The BudgetId. |
Remove Relation
/odata/Budget({key})/RemoveRelationRemoves a relation from the budget.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The 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
| Property | Type | Description |
|---|---|---|
LineItemId | Guid | Primary key. Unique identifier for the line item. |
BudgetId | Guid | Foreign key to the parent budget. |
GroupId | Guid? | Foreign key to the budget group this item belongs to. |
PerformedByContactId | Guid? | Contact who performed the work. |
OrdinalPosition | int? | Sort order within the budget. |
ConsecutiveNumber | int? | Auto-incremented sequence number. |
ShortDescription | string | Brief description of the line item. |
Quantity | decimal? | Quantity of units. |
Unit | string | Unit of measure (e.g., hours, pieces). |
PricePerUnit | decimal? | Primary price per unit. |
SecondaryPricePerUnit | decimal? | Secondary price per unit (e.g., cost price). |
IsCustomPricePerUnit | bool | Indicates whether the price was manually overridden. |
IsBilled | bool | Whether the line item has been invoiced. |
IsBillable | bool | Whether the line item is eligible for billing. |
CreatedByContactId | Guid? | Contact who created the line item. |
ChangedByContactId | Guid? | Contact who last modified the line item. |
CreatedDate | DateTimeOffset? | Timestamp when the line item was created. |
ChangedDate | DateTimeOffset? | Timestamp when the line item was last modified. |
ProvisionDate | DateTimeOffset? | Date when the service was provided. |
DescriptionText | string | Plain-text description of the line item. |
DescriptionHTML | string | HTML-formatted description of the line item. |
ProjectId | Guid? | Foreign key to the associated project. |
LineItemType | enum | Type classification of the line item. |
Endpoints
List Line Items
/odata/LineItemReturns all line items. Supports OData query options.
GET /odata/LineItem?$filter=BudgetId eq {budgetId}&$expand=Budget
Create Line Item
/odata/LineItemCreates 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
/odata/LineItem({key})Returns a single line item by its ID.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The LineItemId. |
Update Line Item
/odata/LineItem({key})Partially updates an existing line item.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The LineItemId. |
Delete Line Item
/odata/LineItem({key})Deletes a line item.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The LineItemId. |
Count Line Items
/odata/LineItem/$countReturns the total number of line items.
Actions
Copy Line Item
/odata/LineItem({key})/CopyCreates a duplicate of the specified line item.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The LineItemId to copy. |
Add Document to Line Item
/odata/LineItem({key})/AddDocumentToLineItemLinks a document to the line item.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The LineItemId. |
Remove Document from Line Item
/odata/LineItem({key})/RemoveDocumentFromLineItemRemoves a document link from the line item.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The LineItemId. |
Add Relation
/odata/LineItem({key})/AddRelationCreates a relation between the line item and another entity.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The LineItemId. |
Remove Relation
/odata/LineItem({key})/RemoveRelationRemoves a relation from the line item.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The LineItemId. |
BudgetGroup
Budget groups organize line items within a budget into logical categories.
Properties
| Property | Type | Description |
|---|---|---|
BudgetGroupId | Guid | Primary key. Unique identifier for the group. |
Name | string | Display name of the group. |
OrdinalPosition | int | Sort order of the group within the budget. |
PurchasePrice | decimal? | Aggregated purchase price for the group. |
DispositionPrice | decimal? | Aggregated disposition price for the group. |
Visible | bool | Whether the group is visible in the UI. |
Endpoints
/odata/BudgetGroupReturns all budget groups.
/odata/BudgetGroupCreates a new budget group.
/odata/BudgetGroup({key})Returns a single budget group by its ID.
/odata/BudgetGroup({key})Updates an existing budget group.
/odata/BudgetGroup({key})Deletes a budget group.
/odata/BudgetGroup/$countReturns the total number of budget groups.
BudgetState
Budget states represent workflow stages for a budget (e.g., Draft, Approved, Closed).
Properties
| Property | Type | Description |
|---|---|---|
BudgetStateId | Guid | Primary key. Unique identifier for the state. |
Name | string | Display name of the state. |
IsHidden | bool | Whether the state is hidden from the user interface. |
Endpoints
/odata/BudgetStateReturns all budget states.
/odata/BudgetStateCreates a new budget state.
/odata/BudgetState({key})Returns a single budget state by its ID.
/odata/BudgetState({key})Updates an existing budget state.
/odata/BudgetState({key})Deletes a budget state.
/odata/BudgetState/$countReturns the total number of budget states.
BudgetPreset
Budget presets store reusable budget configurations that can be applied to projects.
Endpoints
/odata/BudgetPresetReturns all budget presets.
/odata/BudgetPresetCreates a new budget preset.
/odata/BudgetPreset({key})Returns a single budget preset by its ID.
/odata/BudgetPreset({key})Updates an existing budget preset.
/odata/BudgetPreset({key})Deletes a budget preset.
/odata/BudgetPreset/$countReturns the total number of budget presets.
Actions
/odata/BudgetPreset/LoadTemplateForProjectLoads and applies a budget preset template to a project.
/odata/BudgetPreset/SaveTemplateForBudgetSaves 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
| Property | Type | Description |
|---|---|---|
FiscalPeriodId | Guid | Primary key. Unique identifier for the fiscal period. |
Name | string | Display name of the fiscal period. |
PeriodType | int | Type of period (e.g., monthly, quarterly, yearly). |
PeriodStart | DateTimeOffset | Start date of the fiscal period. |
PeriodEnd | DateTimeOffset | End date of the fiscal period. |
Endpoints
FiscalPeriod is a read-only entity. Only GET operations are supported.
/odata/FiscalPeriodReturns all fiscal periods.
/odata/FiscalPeriod({key})Returns a single fiscal period by its ID.
/odata/FiscalPeriod/$countReturns the total number of fiscal periods.
FiscalPeriodFunding
Fiscal period funding entries allocate budget amounts to specific fiscal periods within a project.
Endpoints
/odata/FiscalPeriodFundingReturns all fiscal period funding entries.
/odata/FiscalPeriodFundingCreates a new fiscal period funding entry.
/odata/FiscalPeriodFunding({key})Returns a single funding entry by its ID.
/odata/FiscalPeriodFunding({key})Updates an existing funding entry.
/odata/FiscalPeriodFunding({key})Deletes a funding entry.
/odata/FiscalPeriodFunding/$countReturns the total number of funding entries.
Actions
/odata/FiscalPeriodFunding/CreateFundingPlanForProjectGenerates 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
/odata/LineItemTemplateReturns all line item templates.
/odata/LineItemTemplateCreates a new line item template.
/odata/LineItemTemplate({key})Returns a single line item template by its ID.
/odata/LineItemTemplate({key})Updates an existing line item template.
/odata/LineItemTemplate({key})Deletes a line item template.
/odata/LineItemTemplate/$countReturns the total number of line item templates.
Actions
/odata/LineItemTemplate({key})/AddGroupAssigns the template to a group.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The LineItemTemplate ID. |
/odata/LineItemTemplate({key})/RemoveGroupRemoves the template from a group.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The LineItemTemplate ID. |
DynamicBudget
DynamicBudget provides a read-only flattened view of budgets with all custom fields included as additional columns.
DynamicBudget does not support create, update, or delete operations. Use the standard Budget endpoints to modify data.
Endpoints
/odata/DynamicBudgetReturns all budgets with custom field columns.
/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.
DynamicLineItem does not support create, update, or delete operations. Use the standard LineItem endpoints to modify data.
Endpoints
/odata/DynamicLineItemReturns all line items with custom field columns.
/odata/DynamicLineItem({key})Returns a single line item with custom field columns.