List a project’s invoice positions across all of its invoices
Equivalent to GET /invoices/{invoice}/items but scoped to a project instead of a single invoice.
Availability: Full version only — a Clock instance answers 404 for this endpoint.
Request
curl --request GET \
--url 'https://www.zep-online.de/zepinstanz/next/api/v1/projects/{id}/invoice-items' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {token}'Path parameters
- Name
id- Type
- integer
- Description
The project ID
Query parameters
- Name
perPage- Type
- integer, nullable
- Description
Ignored on this endpoint — send
limitinstead. Any value given here is replaced bylimit, or by the default whenlimitis absent.
- Name
page- Type
- integer, nullable
- Description
The page of results to return, counting from 1.
- Name
orderBy- Type
- string, nullable
- Description
Name of the field to sort by.
- Name
order- Type
- string, nullable
- Description
Sort direction, ascending or descending.
One of:
"asc","desc"
- Name
limit- Type
- integer, nullable
- Description
The number of records per page, 1 to 200. Defaults to 15.
- Name
id[]- Type
- array of integer
- Description
Restrict the result to one or more invoice-item ids.
- Name
status[]- Type
- array of integer
- Description
Restrict the result to one or more statuses: 0 planned, 1 approved, 2 billed, 3 cancelled. A single value is accepted as well as a list (
status[]=0&status[]=1).
- Name
project_id[]- Type
- array of integer
- Description
Restrict the result to one or more project ids.
- Name
planned_from- Type
- string (date-time), nullable
- Description
Only return items whose planned_date is on or after this date (inclusive).
- Name
planned_to- Type
- string (date-time), nullable
- Description
Only return items whose planned_date is on or before this date (inclusive).
Response
{
"data": [
{
"id": 1,
"project_id": 16,
"customer_number": "K-12345",
"from": "2026-01-31T09:00:00.000000Z",
"to": "2026-01-31T09:00:00.000000Z",
"repetition": 1,
"quantity": 1.5,
"unit_price": 1.5,
"unit": "Stunde",
"currency": "EUR",
"language": "de",
"status": {
"id": 1,
"name": "Geplante"
},
"kind": {
"id": 1,
"name": "Aufwand"
},
"invoice_number": "20240001",
"invoice_text": "string",
"sorting": 1,
"contains_working_hours": true,
"contains_receipts": true,
"contains_travel_expenses": true,
"planned_amount": 1.5,
"planned_date": "2024-05-31T00:00:00.000000Z",
"billed_amount": 1.5,
"billed_date": "2024-05-31T00:00:00.000000Z",
"vat": 1.5,
"project_task_id": 1,
"ticket_id": 1234,
"article_id": 1,
"revenueAccounts": [
{
"vat": "string",
"revenue_account": "string"
}
],
"sales_manager": "string"
}
],
"links": {
"first": "string",
"last": "string",
"prev": "string",
"next": "string"
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": "string",
"label": "string",
"active": true
}
],
"path": "string",
"per_page": 1,
"to": 1,
"total": 1
}
}Response fields
- Name
id- Type
- integer
- Description
Unique identifier of the invoice position.
- Name
project_id- Type
- integer, nullable
- Description
The project this position bills against.
- Name
customer_number- Type
- string, nullable
- Description
The customer the position’s project belongs to.
- Name
from- Type
- string (date-time), nullable
- Description
Start of the service period this position covers.
- Name
to- Type
- string (date-time), nullable
- Description
End of the service period this position covers.
- Name
repetition- Type
- integer, nullable
- Description
How many times this position recurs, for repeating positions.
- Name
quantity- Type
- number, nullable
- Description
The billed quantity, in the position’s unit.
- Name
unit_price- Type
- number, nullable
- Description
The price per unit, in the position’s currency.
- Name
unit- Type
- string, nullable
- Description
The unit the quantity and price are measured in.
- Name
currency- Type
- string, nullable
- Description
The three-letter currency code of unit_price and the derived amounts.
- Name
language- Type
- string, nullable
- Description
The language the invoice text is written in.
- Name
status- Type
- object
- Description
The position’s processing state — planned, approved, billed or cancelled.
- Name
status.id- Type
- integer
- Description
The stored value. Compare against this, not against name.
- Name
status.name- Type
- string
- Description
The human-readable label, delivered in the tenant’s language. Do not parse it.
One of:
"Geplante","genehmigt","Billed","Canceled"
- Name
kind- Type
- object
- Description
What this position bills for — working hours, receipts, a flat fee or a manual entry.
- Name
kind.id- Type
- integer
- Description
The stored value. Compare against this, not against name.
- Name
kind.name- Type
- string
- Description
The human-readable label, delivered in the tenant’s language. Do not parse it.
One of:
"Aufwand","Flat Rate","Project Task","Other Receipts","Travel Flat Rates","Ticket","Artikel","Cancellation Credit","Final Performance Level","Partial Payment on Performance Level","Partial Payment Percent","Final Payment Percent","Partial Payment Fixed Price","Final Payment Fixed Price","Partial Payment Costs","Partial Payment Costs VMA","Partial Payment Costs Receipts","Final Payment Costs","Final Payment Costs Receipts","Final Invoice Costs VMA","Prozent","Careforce Month End"
- Name
invoice_number- Type
- string, nullable
- Description
The invoice this position was billed on, once it has been billed.
- Name
invoice_text- Type
- string, nullable
- Description
The text printed for this position on the invoice.
- Name
sorting- Type
- integer, nullable
- Description
The position’s order among the invoice’s other positions.
- Name
contains_working_hours- Type
- boolean, nullable
- Description
Whether this position bills recorded working hours.
- Name
contains_receipts- Type
- boolean, nullable
- Description
Whether this position bills recorded receipts.
- Name
contains_travel_expenses- Type
- boolean, nullable
- Description
Whether this position bills recorded travel expenses.
- Name
planned_amount- Type
- number, nullable
- Description
The forecast amount for this position while it is only planned or approved.
- Name
planned_date- Type
- string (date-time)
- Description
The planned invoice date this position is scheduled to be billed on; the list filters act on this field, not on from/to.
- Name
billed_amount- Type
- number, nullable
- Description
The billed amount, net of tax; 0 while the position is only planned or approved and not yet cancelled.
- Name
billed_date- Type
- string, nullable
- Description
The date of the invoice this position was actually billed on.
- Name
vat- Type
- number, nullable
- Description
The VAT percentage rate applied to this position.
- Name
project_task_id- Type
- integer, nullable
- Description
The project task this position bills against, if the project uses tasks.
- Name
ticket_id- Type
- integer, nullable
- Description
The ticket this position bills against, if it originates from a ticket.
- Name
article_id- Type
- integer, nullable
- Description
The article this position bills, if it was created from the article catalogue.
- Name
revenueAccounts- Type
- array of object
- Description
The bookkeeping accounts this position’s revenue is split across, present only where revenue accounts are kept.
- Name
revenueAccounts.vat- Type
- string
- Description
The VAT percentage rate this bookkeeping entry applies to.
- Name
revenueAccounts.revenue_account- Type
- string
- Description
The bookkeeping account the revenue at this rate is posted to.
- Name
sales_manager- Type
- string
- Description
The employee carrying revenue responsibility for this position. Only on instances with the MOD_HHPBERLIN extension. Not a generally available feature.