Skip to main content

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​

info

These entities are always associated with a project. Use ProjectId when filtering to retrieve a specific subset.

EntityDescription
BudgetThe parent budget object of a project
LineItemIndividual budget line items (benefits/expenses)
BudgetGroupGrouping of line items
BudgetStateStatus definitions for budgets

Master Data Entities​

info

These entities are configured at the account level in Settings and apply to all projects.

EntityDescription
BudgetPresetBudget presets
BudgetPresetLineItemLine items within a budget preset
LineItemTemplateTemplates for budget line items
LineItemTemplateGroupAssignment of templates to groups
LineItemTemplatePricePrice 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​

PropertyTypeDescription
BudgetIdGuid (UUID)Unique identifier of the budget (primary key).
ProjectIdGuidAssociated project.
BudgetTypeint32Budget 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).
BudgetStateIdGuidCurrent state of the budget.
ConsecutiveNumberint32Consecutive number.
Namestring?Name of the budget.
BudgetDateDateTimeOffsetDate of the budget.
BudgetContactIdGuid?Responsible contact.
BudgetCreatedDateDateTimeOffsetCreation date.
BudgetChangedDateDateTimeOffset?Date of last modification.
AmountAssetsdoubleTotal amount.

Endpoints​

List all budgets across all projects

GET/odata/Budget

Supports OData query parameters.


Retrieve a single budget

GET/odata/Budget({key})
ParameterTypeRequiredDescription
keyGuid✅The BudgetId.

Create a new budget

POST/odata/Budget
ParameterTypeRequiredDescription
BodyDelta<ApiBudget>✅JSON object with the budget properties.

Update a budget

PATCH/odata/Budget({key})
ParameterTypeRequiredDescription
keyGuid✅The BudgetId.
BodyDelta<ApiBudget>✅JSON object with the fields to update.

Delete a budget

DELETE/odata/Budget({key})
ParameterTypeRequiredDescription
keyGuid✅The BudgetId.
warning

Deleting a budget also removes all associated line items. This action cannot be undone.


Invoicing​

Retrieve the number of unbilled line items

GET/odata/Budget({key})/GetUnbilledLineitemsCount()
ParameterTypeRequiredDescription
keyGuid✅The BudgetId.

Create an invoice for all line items of the budget

GET/odata/Budget({key})/CreateInvoiceForAllLineitems()
ParameterTypeRequiredDescription
keyGuid✅The BudgetId.

Create an invoice for selected line items

POST/odata/Budget({key})/CreateInvoiceForSelectedLineitems
ParameterTypeRequiredDescription
keyGuid✅The BudgetId.
Bodyobject✅JSON object with the following fields:

lineItemIds (Guid[], required) — IDs of the line items to include in the invoice.

Link a document to the budget

POST/odata/Budget({key})/AddDocumentToBudget
ParameterTypeRequiredDescription
keyGuid✅The BudgetId.
Bodyobject✅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

POST/odata/Budget({key})/RemoveDocumentFromBudget
ParameterTypeRequiredDescription
keyGuid✅The BudgetId.
Bodyobject✅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

POST/odata/Budget({key})/AddLineItemFromTemplate
ParameterTypeRequiredDescription
keyGuid✅The BudgetId.
Bodyobject✅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

POST/odata/Budget({key})/AddRelation
ParameterTypeRequiredDescription
keyGuid✅The BudgetId.
Bodyobject✅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

POST/odata/Budget({key})/RemoveRelation
ParameterTypeRequiredDescription
keyGuid✅The BudgetId.
Bodyobject✅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​

PropertyTypeDescription
LineItemIdGuidPrimary key. Unique identifier of the line item.
BudgetIdGuidForeign key to the parent budget.
GroupIdGuid?Foreign key to the budget group this line item is assigned to.
PerformedByContactIdGuid?Contact who performed the work.
OrdinalPositionint?Sort order within the budget.
ConsecutiveNumberint?Automatically assigned consecutive number.
ShortDescriptionstringShort description of the line item.
Quantitydecimal?Number of units.
UnitstringUnit of measure (e.g. hours, pieces).
PricePerUnitdecimal?Primary price per unit.
SecondaryPricePerUnitdecimal?Secondary price per unit (e.g. purchase price).
IsCustomPricePerUnitboolIndicates whether the price has been manually overridden.
IsBilledboolWhether the line item has been billed.
IsBillableboolWhether the line item is billable.
CreatedByContactIdGuid?Contact who created the line item.
ChangedByContactIdGuid?Contact who last modified the line item.
CreatedDateDateTimeOffset?Timestamp of line item creation.
ChangedDateDateTimeOffset?Timestamp of last line item modification.
ProvisionDateDateTimeOffset?Date of service provision.
IsCustomProvisionDateboolIndicates whether `ProvisionDate` is manually set (`true`) or automatically derived (`false`, for automatic task/time line items).
DescriptionTextstringDescription of the line item as plain text.
DescriptionHTMLstringDescription of the line item as HTML.
ProjectIdGuid?Foreign key to the associated project.
LineItemTypeintType 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

GET/odata/LineItem

Retrieve a line item​

Return a single line item by its ID

GET/odata/LineItem({key})
ParameterTypeRequiredDescription
keyGuid✅The LineItemId.

Create a line item​

Create a new line item

POST/odata/LineItem
ParameterTypeRequiredDescription
BodyDelta<ApiLineItem>✅JSON object with the line item properties.

Update a line item​

Update an existing line item

PATCH/odata/LineItem({key})
ParameterTypeRequiredDescription
keyGuid✅The LineItemId.
BodyDelta<ApiLineItem>✅JSON object with the fields to update.

Delete a line item​

Delete a line item

DELETE/odata/LineItem({key})
ParameterTypeRequiredDescription
keyGuid✅The LineItemId.
warning

Deleting a line item cannot be undone.

Actions​

Copy a line item​

Create a duplicate of the specified line item

POST/odata/LineItem({key})/Copy
ParameterTypeRequiredDescription
keyGuid✅The LineItemId to copy.
Bodyobject—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

POST/odata/LineItem({key})/AddDocumentToLineItem
ParameterTypeRequiredDescription
keyGuid✅The LineItemId.
Bodyobject✅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

POST/odata/LineItem({key})/RemoveDocumentFromLineItem
ParameterTypeRequiredDescription
keyGuid✅The LineItemId.
Bodyobject✅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

POST/odata/LineItem({key})/AddRelation
ParameterTypeRequiredDescription
keyGuid✅The LineItemId.
Bodyobject✅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

POST/odata/LineItem({key})/RemoveRelation
ParameterTypeRequiredDescription
keyGuid✅The LineItemId.
Bodyobject✅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​

PropertyTypeDescription
BudgetGroupIdGuidPrimary key. Unique identifier of the group.
NamestringDisplay name of the group.
OrdinalPositionintSort position of the group within the budget.
PurchasePricedecimal?Aggregated purchase price of the group.
DispositionPricedecimal?Aggregated sales price of the group.
VisibleboolIndicates whether the group is visible in the user interface.

Endpoints​

List all budget groups​

Return all budget groups

GET/odata/BudgetGroup

Supports OData query options.


Retrieve a single budget group​

Return a single budget group by its ID

GET/odata/BudgetGroup({key})
ParameterTypeRequiredDescription
keyGuid✅The BudgetGroupId of the group to retrieve.

Create a budget group​

Create a new budget group

POST/odata/BudgetGroup
ParameterTypeRequiredDescription
BodyDelta<ApiBudgetGroup>✅JSON object with the group properties.

Update a budget group​

Update an existing budget group

PATCH/odata/BudgetGroup({key})
ParameterTypeRequiredDescription
keyGuid✅The BudgetGroupId of the group to update.
BodyDelta<ApiBudgetGroup>✅JSON object with the fields to update.

Delete a budget group​

Delete a budget group

DELETE/odata/BudgetGroup({key})
ParameterTypeRequiredDescription
keyGuid✅The BudgetGroupId of the group to delete.
Important Notice

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​

PropertyTypeDescription
BudgetStateIdGuidPrimary key. Unique identifier of the state.
NamestringDisplay name of the state.
IsHiddenboolIndicates whether the state is hidden in the user interface.

Endpoints​

List all budget states​

Return all budget states

GET/odata/BudgetState

Supports OData query options.


Create a budget state​

Create a new budget state

POST/odata/BudgetState
ParameterTypeRequiredDescription
BodyDelta<ApiBudgetState>✅JSON object with the state properties.

Retrieve a single budget state​

Return a single budget state by its ID

GET/odata/BudgetState({key})
ParameterTypeRequiredDescription
keyGuid✅The BudgetStateId of the state to retrieve.

Update a budget state​

Update an existing budget state

PATCH/odata/BudgetState({key})
ParameterTypeRequiredDescription
keyGuid✅The BudgetStateId of the state to update.
BodyDelta<ApiBudgetState>✅JSON object with the fields to update.

Delete a budget state​

Delete a budget state

DELETE/odata/BudgetState({key})
ParameterTypeRequiredDescription
keyGuid✅The BudgetStateId of the state to delete.
warning

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​

PropertyTypeDescription
PresetIdGuidPrimary key. Unique identifier of the budget preset.
PresetTypeintType of the preset.
NamestringDisplay name of the preset.
PresetDateDateTimeOffsetDate of the preset.
AmountAssetsdecimal?Total amount.
IsGlobalboolIndicates whether the preset is globally available.

Endpoints​

List all budget presets​

Return all budget presets

GET/odata/BudgetPreset

Supports OData query options.


Retrieve a single budget preset​

Return a single budget preset by its ID

GET/odata/BudgetPreset({key})
ParameterTypeRequiredDescription
keyGuid✅The PresetId of the preset to retrieve.

Create a budget preset​

Create a new budget preset

POST/odata/BudgetPreset
ParameterTypeRequiredDescription
BodyDelta<ApiBudgetPreset>✅JSON object with the preset properties.

Update a budget preset​

Update an existing budget preset

PATCH/odata/BudgetPreset({key})
ParameterTypeRequiredDescription
keyGuid✅The PresetId of the preset to update.

Delete a budget preset​

Delete a budget preset

DELETE/odata/BudgetPreset({key})
ParameterTypeRequiredDescription
keyGuid✅The PresetId of the preset to delete.
warning

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

POST/odata/BudgetPreset({key})/LoadTemplateForProject
ParameterTypeRequiredDescription
keyGuid✅The PresetId of the preset to load.
Bodyobject✅JSON object with the following fields:

projectId (Guid, required) — ID of the project to apply the preset to.
Prerequisite

Loading a preset requires the target project's folder structure to be initialized. If the document store cannot be created automatically, the request fails — initialize the folder structure in the project's Documents tab, then retry.

Save a budget as a preset​

Save the current budget configuration as a reusable preset

POST/odata/BudgetPreset/SaveTemplateForBudget
ParameterTypeRequiredDescription
Bodyobject✅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​

PropertyTypeDescription
PresetLineItemIdGuid (UUID)Unique identifier of the preset line item.
PresetIdGuidAssociated budget preset.
GroupIdGuidAssociated budget group.
PerformedByContactIdGuid?Contact who performs the work.
OrdinalPositionint32Sort position within the preset.
ConsecutiveNumberint32Automatically assigned consecutive number.
ShortDescriptionstringShort description of the line item.
QuantitydoubleDefault quantity.
UnitstringUnit of measure (e.g. hours, pieces).
PricePerUnitdoublePrimary price per unit.
SecondaryPricePerUnitdoubleSecondary price per unit (e.g. purchase price).
IsBilledboolWhether the line item is marked as billed.
IsBillableboolWhether the line item is billable.
ProvisionDateDateTimeOffset?Service provision date.
DescriptionTextstringDescription as plain text.
DescriptionHTMLstringDescription as HTML.

Endpoints​

List preset line items​

Retrieve all preset line items

GET/odata/BudgetPresetLineItem

Supports OData query options.


Retrieve a preset line item​

Retrieve a single preset line item by its ID

GET/odata/BudgetPresetLineItem({key})
ParameterTypeRequiredDescription
keyGuid✅The PresetLineItemId of the line item to retrieve.

Create a preset line item​

Create a new preset line item

POST/odata/BudgetPresetLineItem
ParameterTypeRequiredDescription
BodyDelta<ApiBudgetPresetLineItem>✅JSON object with the line item properties.

Update a preset line item​

Update an existing preset line item

PATCH/odata/BudgetPresetLineItem({key})
ParameterTypeRequiredDescription
keyGuid✅The PresetLineItemId of the line item to update.

Delete a preset line item​

Delete a preset line item

DELETE/odata/BudgetPresetLineItem({key})
ParameterTypeRequiredDescription
keyGuid✅The PresetLineItemId of the line item to delete.
warning

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​

PropertyTypeDescription
LineItemTemplateIdGuid (UUID)Unique identifier of the line item template.
Namestring?Name of the template.
ShortDescriptionstring?Short description.
LongDescriptionstring?Detailed description.
QuantitydoubleDefault quantity.

Endpoints​

List line item templates​

Retrieve all line item templates. Supports OData query options

GET/odata/LineItemTemplate

Create a line item template​

Create a new line item template

POST/odata/LineItemTemplate
ParameterTypeRequiredDescription
BodyDelta<ApiLineItemTemplate>✅JSON object with the template properties.

Retrieve a line item template​

Retrieve a single line item template by its ID

GET/odata/LineItemTemplate({key})
ParameterTypeRequiredDescription
keyGuid✅The LineItemTemplateId of the template to retrieve.

Update a line item template​

Update an existing line item template

PATCH/odata/LineItemTemplate({key})
ParameterTypeRequiredDescription
keyGuid✅The LineItemTemplateId of the template to update.
BodyDelta<ApiLineItemTemplate>✅JSON object with the fields to update.

Delete a line item template​

Delete a line item template

DELETE/odata/LineItemTemplate({key})
ParameterTypeRequiredDescription
keyGuid✅The LineItemTemplateId of the template to delete.
warning

Deleting a line item template cannot be undone.

Actions​

Add a group​

Assign the template to a budget group

POST/odata/LineItemTemplate({key})/AddGroup
ParameterTypeRequiredDescription
keyGuid✅The LineItemTemplateId.
Bodyobject✅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

POST/odata/LineItemTemplate({key})/RemoveGroup
ParameterTypeRequiredDescription
keyGuid✅The LineItemTemplateId.
Bodyobject✅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.

note

Use the AddGroup and RemoveGroup actions of the LineItemTemplate entity to manage group assignments.

Data Model​

PropertyTypeDescription
LineItemTemplateGroupIdGuidUnique identifier of the template-group assignment.
LineItemTemplateIdGuidAssociated line item template.
GroupIdGuidAssociated budget group.

Endpoints​

List template-group assignments​

Retrieve all template-group assignments

GET/odata/LineItemTemplateGroup

LineItemTemplatePrice (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​

PropertyTypeDescription
LineItemTemplatePriceIdGuidUnique identifier of the price entry.
LineItemTemplateIdGuidAssociated line item template.
UnitstringUnit of measure (e.g. hours, pieces).
PurchasePricePerUnitdecimal?Purchase price per unit.
DispositionPricePerUnitdecimal?Sales price per unit.

Endpoints​

List template prices​

Retrieve all template prices

GET/odata/LineItemTemplatePrice

Supports OData query options.


Retrieve a template price​

Retrieve a single template price by its ID

GET/odata/LineItemTemplatePrice({key})
ParameterTypeRequiredDescription
keyGuid✅The LineItemTemplatePriceId of the price to retrieve.

Create a template price​

Create a new template price

POST/odata/LineItemTemplatePrice
ParameterTypeRequiredDescription
BodyDelta<ApiLineItemTemplatePrice>✅JSON object with the price properties.

Update a template price​

Update an existing template price

PATCH/odata/LineItemTemplatePrice({key})
ParameterTypeRequiredDescription
keyGuid✅The LineItemTemplatePriceId of the price to update.
BodyDelta<ApiLineItemTemplatePrice>✅JSON object with the fields to update.

Delete a template price​

Delete a template price

DELETE/odata/LineItemTemplatePrice({key})
ParameterTypeRequiredDescription
keyGuid✅The LineItemTemplatePriceId of the price to delete.
warning

Deleting a template price cannot be undone.