API Documentation
Line Items ¶
Line Items ¶
A line item is a component of an invoice which represents an individual entry that details a specific good or service provided by the seller to the buyer.
To find out more about managing invoices and line items, visit our Help documentation: Creating and Managing Invoices.
Following diagram shows line items in our data hierarchy:
Setting tax data
In an old workflow, adding tax data to a line item requires two values: tax_name
and tax_value
. For example, if you wanted to add a VAT 15%, you would send tax_name: ‘VAT’
and tax_value: 15
.
In a new workflow (available for customers on our BETA program for now), you should send tax_rate_id
instead, which points to a Tax rate object. So, in order to set VAT 15% to your line item, you would first need to have a tax rate object with those values and then send its ID to the desired line item.
Supported filter params
-
id
-
invoice_id (array)
-
service_id (array)
-
expense_id (array)
-
creator_id (array)
-
updater_id (array)
-
service_type_id (array)
-
unit_id (array)
-
description
-
discount
-
tax_name
-
tax_value
GET /api/v2/line_items
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": "4",
"type": "line_items",
"attributes": {
"unit_id": 2,
"position": 1,
"quantity": "3.0",
"discount": null,
"description": "test name",
"tax_name": null,
"tax_value": null,
"currency": "EUR",
"currency_default": "USD",
"currency_normalized": "EUR",
"unit_price": 5000,
"unit_price_default": 6250,
"unit_price_normalized": 5000,
"amount": 15000,
"amount_default": 18750,
"amount_normalized": 15000,
"amount_tax": 3750,
"amount_tax_default": 4688,
"amount_tax_normalized": 3750,
"amount_with_tax": 18750,
"amount_with_tax_default": 23438,
"amount_with_tax_normalized": 18750
},
"relationships": {
"organization": {
"data": {
"type": "organizations",
"id": "693"
}
},
"invoice": {
"meta": {
"included": false
}
},
"service": {
"meta": {
"included": false
}
},
"expense": {
"meta": {
"included": false
}
},
"service_type": {
"meta": {
"included": false
}
},
"tax_rate": {
"meta": {
"included": false
}
}
}
}
],
"links": {
"first": "http://api-test.productive.io/api/v2/line_items?page%5Bnumber%5D=1&page%5Bsize%5D=30",
"last": "http://api-test.productive.io/api/v2/line_items?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 line itemsGET/api/v2/line_items
GET /api/v2/line_items/5
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": "line_items",
"attributes": {
"unit_id": 2,
"position": 1,
"quantity": "3.0",
"discount": null,
"description": "test name",
"tax_name": null,
"tax_value": null,
"currency": "EUR",
"currency_default": "USD",
"currency_normalized": "EUR",
"unit_price": 5000,
"unit_price_default": 6250,
"unit_price_normalized": 5000,
"amount": 15000,
"amount_default": 18750,
"amount_normalized": 15000,
"amount_tax": 3750,
"amount_tax_default": 4688,
"amount_tax_normalized": 3750,
"amount_with_tax": 18750,
"amount_with_tax_default": 23438,
"amount_with_tax_normalized": 18750
},
"relationships": {
"organization": {
"data": {
"type": "organizations",
"id": "694"
}
},
"invoice": {
"meta": {
"included": false
}
},
"service": {
"meta": {
"included": false
}
},
"expense": {
"meta": {
"included": false
}
},
"service_type": {
"meta": {
"included": false
}
},
"tax_rate": {
"meta": {
"included": false
}
}
}
},
"meta": {}
}
POST /api/v2/line_items
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": "line_items",
"attributes": {
"unit_id": 2,
"unit_price": "5000.0",
"quantity": 3,
"description": "test name",
"service_type_id": 352,
"position": 1
},
"relationships": {
"invoice": {
"data": {
"type": "invoices",
"id": "76"
}
},
"tax_rate": {
"data": {
"type": "tax_rates",
"id": "8"
}
}
}
}
}
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
"data": {
"id": "7",
"type": "line_items",
"attributes": {
"unit_id": 2,
"position": 1,
"quantity": "3.0",
"discount": null,
"description": "test name",
"tax_name": "TaxRate8",
"tax_value": "25.0",
"currency": "EUR",
"currency_default": "USD",
"currency_normalized": "EUR",
"unit_price": 5000,
"unit_price_default": 6250,
"unit_price_normalized": 5000,
"amount": 15000,
"amount_default": 18750,
"amount_normalized": 15000,
"amount_tax": 3750,
"amount_tax_default": 4688,
"amount_tax_normalized": 3750,
"amount_with_tax": 18750,
"amount_with_tax_default": 23438,
"amount_with_tax_normalized": 18750
},
"relationships": {
"organization": {
"data": {
"type": "organizations",
"id": "695"
}
},
"invoice": {
"meta": {
"included": false
}
},
"service": {
"meta": {
"included": false
}
},
"expense": {
"meta": {
"included": false
}
},
"service_type": {
"meta": {
"included": false
}
},
"tax_rate": {
"meta": {
"included": false
}
}
}
},
"meta": {}
}
POST /api/v2/line_items
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": "line_items",
"attributes": {
"unit_id": ""
}
}
}
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
"errors": [
{
"status": "422",
"code": "invalid_attribute",
"title": "Invalid Attribute",
"detail": "attribute is invalid",
"source": {
"pointer": "data/attributes/invoice"
}
}
]
}
Create a line itemPOST/api/v2/line_items
- invoice_id
number
(required) Example: 1invoice id
- unit_id
number
(required) Example: 1unit id
- unit_price
number
(required) Example: 100unit price
- quantity
number
(required) Example: 10quantity
- description
string
(required) Example: Descriptiondescription
PATCH /api/v2/line_items/10
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": "line_items",
"attributes": {
"quantity": 6
}
}
}
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
"data": {
"id": "10",
"type": "line_items",
"attributes": {
"unit_id": 2,
"position": 1,
"quantity": "6.0",
"discount": null,
"description": "test name",
"tax_name": null,
"tax_value": null,
"currency": "EUR",
"currency_default": "USD",
"currency_normalized": "EUR",
"unit_price": 5000,
"unit_price_default": 6250,
"unit_price_normalized": 5000,
"amount": 30000,
"amount_default": 37500,
"amount_normalized": 30000,
"amount_tax": 7500,
"amount_tax_default": 9375,
"amount_tax_normalized": 7500,
"amount_with_tax": 37500,
"amount_with_tax_default": 46875,
"amount_with_tax_normalized": 37500
},
"relationships": {
"organization": {
"data": {
"type": "organizations",
"id": "698"
}
},
"invoice": {
"meta": {
"included": false
}
},
"service": {
"meta": {
"included": false
}
},
"expense": {
"meta": {
"included": false
}
},
"service_type": {
"meta": {
"included": false
}
},
"tax_rate": {
"meta": {
"included": false
}
}
}
},
"meta": {}
}
PATCH /api/v2/line_items/12
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": "line_items",
"attributes": {
"quantity": ""
}
}
}
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/quantity"
}
},
{
"status": "422",
"code": "invalid_attribute",
"title": "Invalid Attribute",
"detail": "is not a number",
"source": {
"pointer": "data/attributes/quantity"
}
}
]
}
Update a line itemPATCH/api/v2/line_items/{id}
- id
number
(required) Example: 1line item id
DELETE /api/v2/line_items/18
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
Deletes a line itemDELETE/api/v2/line_items/{id}
- id
number
(required) Example: 1line item id
POST /api/v2/line_items/generate
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": {
"invoice_id": 91,
"budget_ids": [
661
],
"invoicing_method": "percentage",
"invoicing_by": "budget",
"percentage": 50,
"display_format": "{budget}",
"tax_rate_id": 22
}
}
Headers
Content-Type: application/vnd.api+json; charset=utf-8
Body
{
"data": [
{
"id": "21",
"type": "line_items",
"attributes": {
"unit_id": 2,
"position": 1,
"quantity": "0.5",
"discount": null,
"description": "test name",
"tax_name": "TaxRate22",
"tax_value": "25.0",
"currency": "EUR",
"currency_default": "USD",
"currency_normalized": "EUR",
"unit_price": 100000,
"unit_price_default": 125000,
"unit_price_normalized": 100000,
"amount": 50000,
"amount_default": 62500,
"amount_normalized": 50000,
"amount_tax": 12500,
"amount_tax_default": 15625,
"amount_tax_normalized": 12500,
"amount_with_tax": 62500,
"amount_with_tax_default": 78125,
"amount_with_tax_normalized": 62500
},
"relationships": {
"organization": {
"data": {
"type": "organizations",
"id": "708"
}
},
"invoice": {
"meta": {
"included": false
}
},
"service": {
"meta": {
"included": false
}
},
"expense": {
"meta": {
"included": false
}
},
"service_type": {
"meta": {
"included": false
}
},
"tax_rate": {
"meta": {
"included": false
}
}
}
}
],
"meta": {}
}
POST /api/v2/line_items/generate
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": {
"invoice_id": 93,
"budget_ids": [
662
],
"invoicing_method": "percentage",
"invoicing_by": "budget",
"display_format": "{budget}"
}
}
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/tax_rate"
}
}
]
}
Create line itemsPOST/api/v2/line_items/generate
- invoice_id
number
(required) Example: 1invoice id
- budget_ids
array
(required) Example: %5B1%2C+3%5Darray of budget ids
- invoicing_method
string
(required) Example: percentagepossible values: uninvoiced_time_and_expenses, uninvoiced_amount, percentage
- invoicing_by
string
(optional) Example: servicepossible values: service/budget; required for invoicing method uninvoiced_amount or percentage
- percentage
number
(optional) Example: 50percentage of budget revenue; required for invoicing method percentage
- display_format
string
(required) Example: %7Bservice%7Ddisplay format
- expense_display_format
string
(optional) Example: %7Bexpense%7Ddisplay format for expenses
- locale
string
(optional) Example: en_USlocale; required for invoicing method uninvoiced_time_and_expenses
- date_from
date
(optional) Example: 2024-04-01date from
- date_to
date
(optional) Example: 2024-05-01date to
Generated by aglio on 02 Aug 2025