Financials
Budget management in InLoox encompasses several interrelated entities: Budget, LineItem, BudgetGroup, BudgetState, and BudgetPreset. Through the OData API, you can programmatically manage the entire financial structure of a project.
Entity Overview
Project Entities
These entities are always associated with a project. Use ProjectId when filtering to retrieve a specific subset.
| Entity | Description |
|---|---|
| Budget | The parent budget object of a project |
| LineItem | Individual budget line items (benefits/expenses) |
| BudgetGroup | Grouping of line items |
| BudgetState | Status definitions for budgets |
Master Data Entities
These entities are configured at the account level in Settings and apply to all projects.
| Entity | Description |
|---|---|
| BudgetPreset | Budget presets |
| BudgetPresetLineItem | Line items within a budget preset |
| LineItemTemplate | Templates for budget line items |
| LineItemTemplateGroup | Assignment of templates to groups |
| LineItemTemplatePrice | Price definitions for line item templates |
Budget (Plan)
A budget represents a financial plan associated with a project. Each budget can contain individual entries (line items), be linked to documents, and have a defined state.
Data Model
| Property | Type | Description |
|---|---|---|
BudgetId | Guid (UUID) | Unique identifier of the budget (primary key). |
ProjectId | Guid | Associated project. |
BudgetType | int32 | Budget type: 1 = Tracked Operational Expenditures (OpEx) from time tracking, 2 = Tracked Capital Expenditures (CapEx), 3 = Planned Benefits, 4 = Tracked Benefits, 5 = Planned Capital Expenditures (CapEx), 6 = Planned Operational Expenditures (OpEx) from resource planning, 7 = Planned Operational Expenditures (OpEx), 8 = Tracked Operational Expenditures (OpEx). |
BudgetStateId | Guid | Current state of the budget. |
ConsecutiveNumber | int32 | Consecutive number. |
Name | string? | Name of the budget. |
BudgetDate | DateTimeOffset | Date of the budget. |
BudgetContactId | Guid? | Responsible contact. |
BudgetCreatedDate | DateTimeOffset | Creation date. |
BudgetChangedDate | DateTimeOffset? | Date of last modification. |
AmountAssets | double | Total amount. |
Endpoints
List all budgets across all projects
/odata/BudgetSupports OData query parameters.
Retrieve a single budget
/odata/Budget({key})| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The BudgetId. |
Create a new budget
/odata/Budget| Parameter | Type | Required | Description |
|---|---|---|---|
Body | Delta<ApiBudget> | ✅ | JSON object with the budget properties. |
Update a budget
/odata/Budget({key})| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The BudgetId. |
Body | Delta<ApiBudget> | ✅ | JSON object with the fields to update. |
Delete a budget
/odata/Budget({key})| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The BudgetId. |
Deleting a budget also removes all associated line items. This action cannot be undone.
Invoicing
Retrieve the number of unbilled line items
/odata/Budget({key})/GetUnbilledLineitemsCount()| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The BudgetId. |
Create an invoice for all line items of the budget
/odata/Budget({key})/CreateInvoiceForAllLineitems()| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The BudgetId. |
Create an invoice for selected line items
/odata/Budget({key})/CreateInvoiceForSelectedLineitems| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The BudgetId. |
Body | object | ✅ | JSON object with the following fields: lineItemIds (Guid[], required) — IDs of the line items to include in the invoice. |
Link a document to a budget
Link a document to the budget
/odata/Budget({key})/AddDocumentToBudget| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The BudgetId. |
Body | object | ✅ | JSON object with the following fields: documentIds (Guid[], required) — IDs of the documents to link to the budget. |
Remove a document from a budget
Remove a document from the budget
/odata/Budget({key})/RemoveDocumentFromBudget| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The BudgetId. |
Body | object | ✅ | JSON object with the following fields: documentId (Guid, required) — ID of the document to remove from the budget. |
Add a line item from a template
Add a line item from a template to the budget
/odata/Budget({key})/AddLineItemFromTemplate| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The BudgetId. |
Body | object | ✅ | JSON object with the following fields: lineItemTemplateId (Guid, required) — ID of the line item template to create from. lineItemTemplatePriceId (Guid?, optional) — ID of a specific price entry of the template. Can be omitted or set to null if no specific price is desired. lineItemTemplateGroupId (Guid, required) — ID of the line item template group. |
Add a relation
Add a relation to the budget
/odata/Budget({key})/AddRelation| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The BudgetId. |
Body | object | ✅ | JSON object with the following fields: itemId (Guid, required) — ID of the item to add as a relation to the budget. |
Remove a relation
Remove a relation from the budget
/odata/Budget({key})/RemoveRelation| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The BudgetId. |
Body | object | ✅ | JSON object with the following fields: itemId (Guid, required) — ID of the related item to remove from the budget. |
LineItem (Line Items)
A line item represents a single financial entry within a budget. Line items can be grouped, marked as billable, and linked to documents.
Data Model
| Property | Type | Description |
|---|---|---|
LineItemId | Guid | Primary key. Unique identifier of the line item. |
BudgetId | Guid | Foreign key to the parent budget. |
GroupId | Guid? | Foreign key to the budget group this line item is assigned to. |
PerformedByContactId | Guid? | Contact who performed the work. |
OrdinalPosition | int? | Sort order within the budget. |
ConsecutiveNumber | int? | Automatically assigned consecutive number. |
ShortDescription | string | Short description of the line item. |
Quantity | decimal? | Number 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. purchase price). |
IsCustomPricePerUnit | bool | Indicates whether the price has been manually overridden. |
IsBilled | bool | Whether the line item has been billed. |
IsBillable | bool | Whether the line item is billable. |
CreatedByContactId | Guid? | Contact who created the line item. |
ChangedByContactId | Guid? | Contact who last modified the line item. |
CreatedDate | DateTimeOffset? | Timestamp of line item creation. |
ChangedDate | DateTimeOffset? | Timestamp of last line item modification. |
ProvisionDate | DateTimeOffset? | Date of service provision. |
DescriptionText | string | Description of the line item as plain text. |
DescriptionHTML | string | Description of the line item as HTML. |
ProjectId | Guid? | Foreign key to the associated project. |
LineItemType | int | Type of line item: 0 = Manual line item, 1 = Automatic line item from a time entry, 2 = Automatic line item from a task item. |
Endpoints
List line items
Returns all line items across all budgets and all projects. Supports OData query options
/odata/LineItemRetrieve a line item
Return a single line item by its ID
/odata/LineItem({key})| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The LineItemId. |
Create a line item
Create a new line item
/odata/LineItem| Parameter | Type | Required | Description |
|---|---|---|---|
Body | Delta<ApiLineItem> | ✅ | JSON object with the line item properties. |
Update a line item
Update an existing line item
/odata/LineItem({key})| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The LineItemId. |
Body | Delta<ApiLineItem> | ✅ | JSON object with the fields to update. |
Delete a line item
Delete a line item
/odata/LineItem({key})| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The LineItemId. |
Deleting a line item cannot be undone.
Actions
Copy a line item
Create a duplicate of the specified line item
/odata/LineItem({key})/Copy| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The LineItemId to copy. |
Body | object | — | JSON object with the following fields: budgetId (Guid?, optional) — Target budget ID to copy into. If not specified, the line item is copied within the same budget. |
Add a document to a line item
Link a document to the line item
/odata/LineItem({key})/AddDocumentToLineItem| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The LineItemId. |
Body | object | ✅ | JSON object with the following fields: documentIds (Guid[], required) — IDs of the documents to link to the line item. |
Remove a document from a line item
Remove a document link from the line item
/odata/LineItem({key})/RemoveDocumentFromLineItem| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The LineItemId. |
Body | object | ✅ | JSON object with the following fields: documentId (Guid, required) — ID of the document to remove from the line item. |
Add a relation
Create a relation between the line item and another entity
/odata/LineItem({key})/AddRelation| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The LineItemId. |
Body | object | ✅ | JSON object with the following fields: itemId (Guid, required) — ID of the item to add as a relation to the line item. |
Remove a relation
Remove a relation from the line item
/odata/LineItem({key})/RemoveRelation| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The LineItemId. |
Body | object | ✅ | JSON object with the following fields: itemId (Guid, required) — ID of the related item to remove from the line item. |
BudgetGroup (Groups)
Groups organize line items within a budget into logical categories, e.g. cost centers.
Data Model
| Property | Type | Description |
|---|---|---|
BudgetGroupId | Guid | Primary key. Unique identifier of the group. |
Name | string | Display name of the group. |
OrdinalPosition | int | Sort position of the group within the budget. |
PurchasePrice | decimal? | Aggregated purchase price of the group. |
DispositionPrice | decimal? | Aggregated sales price of the group. |
Visible | bool | Indicates whether the group is visible in the user interface. |
Endpoints
List all budget groups
Return all budget groups
/odata/BudgetGroupSupports OData query options.
Retrieve a single budget group
Return a single budget group by its ID
/odata/BudgetGroup({key})| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The BudgetGroupId of the group to retrieve. |
Create a budget group
Create a new budget group
/odata/BudgetGroup| Parameter | Type | Required | Description |
|---|---|---|---|
Body | Delta<ApiBudgetGroup> | ✅ | JSON object with the group properties. |
Update a budget group
Update an existing budget group
/odata/BudgetGroup({key})| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The BudgetGroupId of the group to update. |
Body | Delta<ApiBudgetGroup> | ✅ | JSON object with the fields to update. |
Delete a budget group
Delete a budget group
/odata/BudgetGroup({key})| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The BudgetGroupId of the group to delete. |
Deleting a budget group affects all associated budget line items, tasks, and time entries across all projects. It is therefore recommended not to delete groups but to set them to invisible (Visible: false) and retain them as legacy entries.
BudgetState
Budget states define the workflow phases of a budget (e.g. Draft, Approved, Completed).
Data Model
| Property | Type | Description |
|---|---|---|
BudgetStateId | Guid | Primary key. Unique identifier of the state. |
Name | string | Display name of the state. |
IsHidden | bool | Indicates whether the state is hidden in the user interface. |
Endpoints
List all budget states
Return all budget states
/odata/BudgetStateSupports OData query options.
Create a budget state
Create a new budget state
/odata/BudgetState| Parameter | Type | Required | Description |
|---|---|---|---|
Body | Delta<ApiBudgetState> | ✅ | JSON object with the state properties. |
Retrieve a single budget state
Return a single budget state by its ID
/odata/BudgetState({key})| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The BudgetStateId of the state to retrieve. |
Update a budget state
Update an existing budget state
/odata/BudgetState({key})| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The BudgetStateId of the state to update. |
Body | Delta<ApiBudgetState> | ✅ | JSON object with the fields to update. |
Delete a budget state
Delete a budget state
/odata/BudgetState({key})| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The BudgetStateId of the state to delete. |
Deleting a budget state affects all budgets across all projects that use this state. It is therefore recommended not to delete a state but to set it to hidden (IsHidden: true) and retain it as a legacy entry.
BudgetPreset (Budget Presets)
Budget presets store reusable budget configurations that can be applied to projects. Presets can be loaded into a project to quickly set up a complete budget structure.
Data Model
| Property | Type | Description |
|---|---|---|
PresetId | Guid | Primary key. Unique identifier of the budget preset. |
PresetType | int | Type of the preset. |
Name | string | Display name of the preset. |
PresetDate | DateTimeOffset | Date of the preset. |
AmountAssets | decimal? | Total amount. |
IsGlobal | bool | Indicates whether the preset is globally available. |
Endpoints
List all budget presets
Return all budget presets
/odata/BudgetPresetSupports OData query options.
Retrieve a single budget preset
Return a single budget preset by its ID
/odata/BudgetPreset({key})| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The PresetId of the preset to retrieve. |
Create a budget preset
Create a new budget preset
/odata/BudgetPreset| Parameter | Type | Required | Description |
|---|---|---|---|
Body | Delta<ApiBudgetPreset> | ✅ | JSON object with the preset properties. |
Update a budget preset
Update an existing budget preset
/odata/BudgetPreset({key})| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The PresetId of the preset to update. |
Delete a budget preset
Delete a budget preset
/odata/BudgetPreset({key})| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The PresetId of the preset to delete. |
Deleting a budget preset also removes all associated preset line items (BudgetPresetLineItem). This action cannot be undone.
Actions
Load a preset into a project
Load a budget preset and apply it to a project
/odata/BudgetPreset({key})/LoadTemplateForProject| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The PresetId of the preset to load. |
Body | object | ✅ | JSON object with the following fields: projectId (Guid, required) — ID of the project to apply the preset to. |
Save a budget as a preset
Save the current budget configuration as a reusable preset
/odata/BudgetPreset/SaveTemplateForBudget| Parameter | Type | Required | Description |
|---|---|---|---|
Body | object | ✅ | JSON object with the following fields: budgetId (Guid, required) — ID of the existing budget to save as a preset template. name (string, required) — Name for the new budget preset. |
BudgetPresetLineItem (Preset Line Items)
Preset line items define the individual budget line items within a budget preset. Each line item contains default values for quantity, unit, price, and billing status that are applied when loading the preset into a project.
Data Model
| Property | Type | Description |
|---|---|---|
PresetLineItemId | Guid (UUID) | Unique identifier of the preset line item. |
PresetId | Guid | Associated budget preset. |
GroupId | Guid | Associated budget group. |
PerformedByContactId | Guid? | Contact who performs the work. |
OrdinalPosition | int32 | Sort position within the preset. |
ConsecutiveNumber | int32 | Automatically assigned consecutive number. |
ShortDescription | string | Short description of the line item. |
Quantity | double | Default quantity. |
Unit | string | Unit of measure (e.g. hours, pieces). |
PricePerUnit | double | Primary price per unit. |
SecondaryPricePerUnit | double | Secondary price per unit (e.g. purchase price). |
IsBilled | bool | Whether the line item is marked as billed. |
IsBillable | bool | Whether the line item is billable. |
ProvisionDate | DateTimeOffset? | Service provision date. |
DescriptionText | string | Description as plain text. |
DescriptionHTML | string | Description as HTML. |
Endpoints
List preset line items
Retrieve all preset line items
/odata/BudgetPresetLineItemSupports OData query options.
Retrieve a preset line item
Retrieve a single preset line item by its ID
/odata/BudgetPresetLineItem({key})| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The PresetLineItemId of the line item to retrieve. |
Create a preset line item
Create a new preset line item
/odata/BudgetPresetLineItem| Parameter | Type | Required | Description |
|---|---|---|---|
Body | Delta<ApiBudgetPresetLineItem> | ✅ | JSON object with the line item properties. |
Update a preset line item
Update an existing preset line item
/odata/BudgetPresetLineItem({key})| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The PresetLineItemId of the line item to update. |
Delete a preset line item
Delete a preset line item
/odata/BudgetPresetLineItem({key})| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The PresetLineItemId of the line item to delete. |
Deleting a preset line item cannot be undone.
LineItemTemplate (Line Item Templates)
Line item templates provide reusable line item configurations that can be added to budgets. Templates can be organized into groups and have multiple price entries.
Data Model
| Property | Type | Description |
|---|---|---|
LineItemTemplateId | Guid (UUID) | Unique identifier of the line item template. |
Name | string? | Name of the template. |
ShortDescription | string? | Short description. |
LongDescription | string? | Detailed description. |
Quantity | double | Default quantity. |
Endpoints
List line item templates
Retrieve all line item templates. Supports OData query options
/odata/LineItemTemplateCreate a line item template
Create a new line item template
/odata/LineItemTemplate| Parameter | Type | Required | Description |
|---|---|---|---|
Body | Delta<ApiLineItemTemplate> | ✅ | JSON object with the template properties. |
Retrieve a line item template
Retrieve a single line item template by its ID
/odata/LineItemTemplate({key})| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The LineItemTemplateId of the template to retrieve. |
Update a line item template
Update an existing line item template
/odata/LineItemTemplate({key})| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The LineItemTemplateId of the template to update. |
Body | Delta<ApiLineItemTemplate> | ✅ | JSON object with the fields to update. |
Delete a line item template
Delete a line item template
/odata/LineItemTemplate({key})| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The LineItemTemplateId of the template to delete. |
Deleting a line item template cannot be undone.
Actions
Add a group
Assign the template to a budget group
/odata/LineItemTemplate({key})/AddGroup| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The LineItemTemplateId. |
Body | object | ✅ | JSON object with the following fields: groupId (Guid, required) — ID of the budget group to assign the template to. |
Remove a group
Remove the template from a budget group
/odata/LineItemTemplate({key})/RemoveGroup| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The LineItemTemplateId. |
Body | object | ✅ | JSON object with the following fields: groupId (Guid, required) — ID of the budget group to remove the template from. |
LineItemTemplateGroup (Template Groups)
Template groups represent the assignment between line item templates and budget groups. This entity is read-only.
Use the AddGroup and RemoveGroup actions of the LineItemTemplate entity to manage group assignments.
Data Model
| Property | Type | Description |
|---|---|---|
LineItemTemplateGroupId | Guid | Unique identifier of the template-group assignment. |
LineItemTemplateId | Guid | Associated line item template. |
GroupId | Guid | Associated budget group. |
Endpoints
List template-group assignments
Retrieve all template-group assignments
/odata/LineItemTemplateGroupLineItemTemplatePrice (Template Prices)
Template prices define unit-based prices for a line item template. Each price entry contains a unit with the respective purchase and sales price per unit. Templates can have multiple price entries for different units.
Data Model
| Property | Type | Description |
|---|---|---|
LineItemTemplatePriceId | Guid | Unique identifier of the price entry. |
LineItemTemplateId | Guid | Associated line item template. |
Unit | string | Unit of measure (e.g. hours, pieces). |
PurchasePricePerUnit | decimal? | Purchase price per unit. |
DispositionPricePerUnit | decimal? | Sales price per unit. |
Endpoints
List template prices
Retrieve all template prices
/odata/LineItemTemplatePriceSupports OData query options.
Retrieve a template price
Retrieve a single template price by its ID
/odata/LineItemTemplatePrice({key})| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The LineItemTemplatePriceId of the price to retrieve. |
Create a template price
Create a new template price
/odata/LineItemTemplatePrice| Parameter | Type | Required | Description |
|---|---|---|---|
Body | Delta<ApiLineItemTemplatePrice> | ✅ | JSON object with the price properties. |
Update a template price
Update an existing template price
/odata/LineItemTemplatePrice({key})| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The LineItemTemplatePriceId of the price to update. |
Body | Delta<ApiLineItemTemplatePrice> | ✅ | JSON object with the fields to update. |
Delete a template price
Delete a template price
/odata/LineItemTemplatePrice({key})| Parameter | Type | Required | Description |
|---|---|---|---|
key | Guid | ✅ | The LineItemTemplatePriceId of the price to delete. |
Deleting a template price cannot be undone.