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
keyGuidThe 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
keyGuidThe BudgetId.
BodyDelta<ApiBudget>JSON object with the fields to update.

Delete a budget

DELETE/odata/Budget({key})
ParameterTypeRequiredDescription
keyGuidThe 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
keyGuidThe BudgetId.

Create an invoice for all line items of the budget

GET/odata/Budget({key})/CreateInvoiceForAllLineitems()
ParameterTypeRequiredDescription
keyGuidThe BudgetId.

Create an invoice for selected line items

POST/odata/Budget({key})/CreateInvoiceForSelectedLineitems
ParameterTypeRequiredDescription
keyGuidThe BudgetId.
BodyobjectJSON 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
keyGuidThe BudgetId.
BodyobjectJSON 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
keyGuidThe BudgetId.
BodyobjectJSON 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
keyGuidThe BudgetId.
BodyobjectJSON 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
keyGuidThe BudgetId.
BodyobjectJSON 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
keyGuidThe BudgetId.
BodyobjectJSON 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.
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
keyGuidThe 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
keyGuidThe LineItemId.
BodyDelta<ApiLineItem>JSON object with the fields to update.

Delete a line item

Delete a line item

DELETE/odata/LineItem({key})
ParameterTypeRequiredDescription
keyGuidThe 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
keyGuidThe LineItemId to copy.
BodyobjectJSON 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
keyGuidThe LineItemId.
BodyobjectJSON 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
keyGuidThe LineItemId.
BodyobjectJSON 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
keyGuidThe LineItemId.
BodyobjectJSON 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
keyGuidThe LineItemId.
BodyobjectJSON 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
keyGuidThe 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
keyGuidThe 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
keyGuidThe 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
keyGuidThe BudgetStateId of the state to retrieve.

Update a budget state

Update an existing budget state

PATCH/odata/BudgetState({key})
ParameterTypeRequiredDescription
keyGuidThe 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
keyGuidThe 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
keyGuidThe 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
keyGuidThe PresetId of the preset to update.

Delete a budget preset

Delete a budget preset

DELETE/odata/BudgetPreset({key})
ParameterTypeRequiredDescription
keyGuidThe 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
keyGuidThe PresetId of the preset to load.
BodyobjectJSON 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

POST/odata/BudgetPreset/SaveTemplateForBudget
ParameterTypeRequiredDescription
BodyobjectJSON 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
keyGuidThe 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
keyGuidThe PresetLineItemId of the line item to update.

Delete a preset line item

Delete a preset line item

DELETE/odata/BudgetPresetLineItem({key})
ParameterTypeRequiredDescription
keyGuidThe 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
keyGuidThe LineItemTemplateId of the template to retrieve.

Update a line item template

Update an existing line item template

PATCH/odata/LineItemTemplate({key})
ParameterTypeRequiredDescription
keyGuidThe 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
keyGuidThe 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
keyGuidThe LineItemTemplateId.
BodyobjectJSON 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
keyGuidThe LineItemTemplateId.
BodyobjectJSON 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
keyGuidThe 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
keyGuidThe 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
keyGuidThe LineItemTemplatePriceId of the price to delete.
warning

Deleting a template price cannot be undone.