API Documentation
Overheads ¶
Overheads ¶
For more details about what overheads are, please refer to the help article.
The Overhead object represents overhead costs for a particular month of a fiscal year. Productive generates overhead objects automatically every month, starting the month when you opened your Productive account.
Please note that some overhead settings are also defined at the organisation level. This settings can be changed by modifying the Organizations object.
Supported attributes
-
facility_costs (integer)
-
facility_costs_breakdown (json)
-
use_overhead (boolean)
-
overhead_controls (json)
-
averaging_period (integer)
Costs are always defined in cents.
Facility cost breakdown can be defined as:
{
"sections": [
{
"name": "Section",
"rows": [
{
"cost": 200000,
"name": "Facility cost"
}
]
}
]
}
There are six overhead controls which can be set to true or false inside a json object:
{
"exclude_work_overhead": false,
"exclude_expense_overhead": false,
"exclude_facility_overhead": false,
"exclude_overtime_overhead": true,
"exclude_time_off_overhead": false,
"exclude_undertime_overhead": true
}
These are default control settings when a new overhead is created. When changed for the current month, the settings are transferred to the next month.
Averaging period can only contain integer values from 1 to 12 which represents the number of months.
To change the overhead recalculation day and to globally enable or disable overhead, please use the Organization object.
Supported filters
There are no supported filters for Overhead objects.
Supported sort params
There are no supported params for Overhead objects. Default sorting is by Overhead id in a descending order (from newest to oldest).
GET /api/v2/overheads
Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
"data": [
{
"id": "1",
"type": "overheads",
"attributes": {
"started_on": "2025-07-01",
"ended_on": null,
"exchange_rate": "1.0",
"updated_at": "2025-08-01T06:06:31.913+02:00",
"facility_costs_breakdown": {},
"recalculated_at": null,
"use_overhead": false,
"overhead_controls": {},
"recalculating_status": {},
"uses_averaging": false,
"averaging_period": 1,
"total_hours": "0.0",
"client_hours": "0.0",
"internal_hours": "0.0",
"time_off_hours": "0.0",
"overhead_hours": "0.0",
"client_overhead_hours": "0.0",
"internal_overhead_hours": "0.0",
"time_off_overhead_hours": "0.0",
"overtracked_hours": "0.0",
"undertracked_hours": "0.0",
"capacity": "0.0",
"currency": "USD",
"currency_default": "USD",
"currency_normalized": "USD",
"facility_costs": 0,
"facility_costs_default": 0,
"facility_costs_normalized": 0,
"internal_work_costs": 0,
"internal_work_costs_default": 0,
"internal_work_costs_normalized": 0,
"time_off_costs": 0,
"time_off_costs_default": 0,
"time_off_costs_normalized": 0,
"internal_expense_costs": 0,
"internal_expense_costs_default": 0,
"internal_expense_costs_normalized": 0,
"facility_cost_per_hour": 1500,
"facility_cost_per_hour_default": 1500,
"facility_cost_per_hour_normalized": 1500,
"overtracked_costs": 0,
"overtracked_costs_default": 0,
"overtracked_costs_normalized": 0,
"undertracked_costs": 0,
"undertracked_costs_default": 0,
"undertracked_costs_normalized": 0,
"new_internal_cost_per_hour": 1000,
"new_internal_cost_per_hour_default": 1000,
"new_internal_cost_per_hour_normalized": 1000,
"internal_componentized_costs": 0,
"internal_componentized_costs_default": 0,
"internal_componentized_costs_normalized": 0
},
"relationships": {
"organization": {
"data": {
"type": "organizations",
"id": "794"
}
},
"updater": {
"meta": {
"included": false
}
},
"subsidiary": {
"meta": {
"included": false
}
}
}
}
],
"links": {
"first": "http://api-test.productive.io/api/v2/overheads?page%5Bnumber%5D=1&page%5Bsize%5D=30",
"last": "http://api-test.productive.io/api/v2/overheads?page%5Bnumber%5D=1&page%5Bsize%5D=30"
},
"meta": {
"current_page": 1,
"total_pages": 1,
"total_count": 1,
"page_size": 30,
"max_page_size": 200
}
}
Get overheadsGET/api/v2/overheads
GET /api/v2/overheads/2
Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
"data": {
"id": "2",
"type": "overheads",
"attributes": {
"started_on": "2025-07-01",
"ended_on": null,
"exchange_rate": "1.0",
"updated_at": "2025-08-01T06:06:31.979+02:00",
"facility_costs_breakdown": {},
"recalculated_at": null,
"use_overhead": false,
"overhead_controls": {},
"recalculating_status": {},
"uses_averaging": false,
"averaging_period": 1,
"total_hours": "0.0",
"client_hours": "0.0",
"internal_hours": "0.0",
"time_off_hours": "0.0",
"overhead_hours": "0.0",
"client_overhead_hours": "0.0",
"internal_overhead_hours": "0.0",
"time_off_overhead_hours": "0.0",
"overtracked_hours": "0.0",
"undertracked_hours": "0.0",
"capacity": "0.0",
"currency": "USD",
"currency_default": "USD",
"currency_normalized": "USD",
"facility_costs": 0,
"facility_costs_default": 0,
"facility_costs_normalized": 0,
"internal_work_costs": 0,
"internal_work_costs_default": 0,
"internal_work_costs_normalized": 0,
"time_off_costs": 0,
"time_off_costs_default": 0,
"time_off_costs_normalized": 0,
"internal_expense_costs": 0,
"internal_expense_costs_default": 0,
"internal_expense_costs_normalized": 0,
"facility_cost_per_hour": 1500,
"facility_cost_per_hour_default": 1500,
"facility_cost_per_hour_normalized": 1500,
"overtracked_costs": 0,
"overtracked_costs_default": 0,
"overtracked_costs_normalized": 0,
"undertracked_costs": 0,
"undertracked_costs_default": 0,
"undertracked_costs_normalized": 0,
"new_internal_cost_per_hour": 1000,
"new_internal_cost_per_hour_default": 1000,
"new_internal_cost_per_hour_normalized": 1000,
"internal_componentized_costs": 0,
"internal_componentized_costs_default": 0,
"internal_componentized_costs_normalized": 0
},
"relationships": {
"organization": {
"data": {
"type": "organizations",
"id": "795"
}
},
"updater": {
"meta": {
"included": false
}
},
"subsidiary": {
"meta": {
"included": false
}
}
}
},
"meta": {}
}
PATCH /api/v2/overheads/3
Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Body
{
"data": {
"type": "overheads",
"attributes": {
"facility_costs": 1000000,
"use_overhead": true,
"averaging_period": 10,
"overhead_controls": {
"exclude_work_overhead": false,
"exclude_time_off_overhead": false,
"exclude_expense_overhead": false,
"exclude_undertime_overhead": true,
"exclude_overtime_overhead": true
}
}
}
}
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
"data": {
"id": "3",
"type": "overheads",
"attributes": {
"started_on": "2025-07-01",
"ended_on": null,
"exchange_rate": "1.0",
"updated_at": "2025-08-01T06:06:32.078+02:00",
"facility_costs_breakdown": {},
"recalculated_at": null,
"use_overhead": true,
"overhead_controls": {
"exclude_work_overhead": false,
"exclude_time_off_overhead": false,
"exclude_expense_overhead": false,
"exclude_undertime_overhead": true,
"exclude_overtime_overhead": true
},
"recalculating_status": {},
"uses_averaging": false,
"averaging_period": 10,
"total_hours": "0.0",
"client_hours": "0.0",
"internal_hours": "0.0",
"time_off_hours": "0.0",
"overhead_hours": "0.0",
"client_overhead_hours": "0.0",
"internal_overhead_hours": "0.0",
"time_off_overhead_hours": "0.0",
"overtracked_hours": "0.0",
"undertracked_hours": "0.0",
"capacity": "0.0",
"currency": "USD",
"currency_default": "USD",
"currency_normalized": "USD",
"facility_costs": 1000000,
"facility_costs_default": 1000000,
"facility_costs_normalized": 1000000,
"internal_work_costs": 0,
"internal_work_costs_default": 0,
"internal_work_costs_normalized": 0,
"time_off_costs": 0,
"time_off_costs_default": 0,
"time_off_costs_normalized": 0,
"internal_expense_costs": 0,
"internal_expense_costs_default": 0,
"internal_expense_costs_normalized": 0,
"facility_cost_per_hour": 1500,
"facility_cost_per_hour_default": 1500,
"facility_cost_per_hour_normalized": 1500,
"overtracked_costs": 0,
"overtracked_costs_default": 0,
"overtracked_costs_normalized": 0,
"undertracked_costs": 0,
"undertracked_costs_default": 0,
"undertracked_costs_normalized": 0,
"new_internal_cost_per_hour": 1000,
"new_internal_cost_per_hour_default": 1000,
"new_internal_cost_per_hour_normalized": 1000,
"internal_componentized_costs": 0,
"internal_componentized_costs_default": 0,
"internal_componentized_costs_normalized": 0
},
"relationships": {
"organization": {
"data": {
"type": "organizations",
"id": "796"
}
},
"updater": {
"meta": {
"included": false
}
},
"subsidiary": {
"meta": {
"included": false
}
}
}
},
"meta": {}
}
PATCH /api/v2/overheads/4
Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Body
{
"data": {
"type": "overheads",
"attributes": {
"facility_costs": ""
}
}
}
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
"errors": [
{
"status": "422",
"code": "invalid_attribute",
"title": "Invalid Attribute",
"detail": "can't be blank",
"source": {
"pointer": "data/attributes/facility_costs"
}
}
]
}
Update an overheadPATCH/api/v2/overheads/{id}
- id
number
(required) Example: 1overhead id
PATCH /api/v2/overheads/5/recalculate
Headers
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Content-Type: application/vnd.api+json
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
"data": {
"id": "5",
"type": "overheads",
"attributes": {
"started_on": "2020-09-01",
"ended_on": "2020-09-30",
"exchange_rate": "1.0",
"updated_at": "2025-08-01T06:06:32.733+02:00",
"facility_costs_breakdown": {},
"recalculated_at": "2025-08-01T06:06:32.733+02:00",
"use_overhead": false,
"overhead_controls": {},
"recalculating_status": {
"time_entries": false,
"bookings": false
},
"uses_averaging": false,
"averaging_period": 1,
"total_hours": "20.0",
"client_hours": "20.0",
"internal_hours": "0.0",
"time_off_hours": "0.0",
"overhead_hours": "20.0",
"client_overhead_hours": "20.0",
"internal_overhead_hours": "0.0",
"time_off_overhead_hours": "0.0",
"overtracked_hours": "0.0",
"undertracked_hours": "0.0",
"capacity": "0.0",
"currency": "USD",
"currency_default": "USD",
"currency_normalized": "USD",
"facility_costs": 1000000,
"facility_costs_default": 1000000,
"facility_costs_normalized": 1000000,
"internal_work_costs": 0,
"internal_work_costs_default": 0,
"internal_work_costs_normalized": 0,
"time_off_costs": 0,
"time_off_costs_default": 0,
"time_off_costs_normalized": 0,
"internal_expense_costs": 0,
"internal_expense_costs_default": 0,
"internal_expense_costs_normalized": 0,
"facility_cost_per_hour": 50000,
"facility_cost_per_hour_default": 50000,
"facility_cost_per_hour_normalized": 50000,
"overtracked_costs": 0,
"overtracked_costs_default": 0,
"overtracked_costs_normalized": 0,
"undertracked_costs": 0,
"undertracked_costs_default": 0,
"undertracked_costs_normalized": 0,
"new_internal_cost_per_hour": 0,
"new_internal_cost_per_hour_default": 0,
"new_internal_cost_per_hour_normalized": 0,
"internal_componentized_costs": 0,
"internal_componentized_costs_default": 0,
"internal_componentized_costs_normalized": 0
},
"relationships": {
"organization": {
"data": {
"type": "organizations",
"id": "798"
}
},
"updater": {
"meta": {
"included": false
}
},
"subsidiary": {
"meta": {
"included": false
}
}
}
},
"meta": {}
}
Recalculate an overheadPATCH/api/v2/overheads/{id}/recalculate
- id
number
(required) Example: 1overhead id
Generated by aglio on 01 Aug 2025