Invoice Items
Invoice Item represents an individual line item on an Invoice
Schema​
InvoiceItem​
| Name | Type | Description | Example |
|---|---|---|---|
| id | ID | Unique identifier for invoice items | "ckmnpybisiy5x08abky4g2d1f" |
| createdAt | DateTime | When this invoice item was created | "2021-03-24 17:26:46.983Z" |
| updatedAt | DateTime | When this invoice item was updated | "2021-03-24 17:26:46.983Z" |
| description | string? | Description of the invoice item | 3/4" EMT |
| extPriceFloat | float? | EXT price of the item | 125.00 |
| hasException | boolean | Indicates whether the invoice item has any exceptions | false |
| invoiceId | ID | The ID of the invoice this item is attached to | "ckmnpybisiy5x08abky4g2d1f" |
| lineNumber | int | Number representing the index of the line item within it's invoice | 3 |
| notes | string? | Additional handwritten details attached to this item | "This item is important" |
| shipQuantity | float? | Quantity of this item | 100 |
| unitPriceFloat | float? | Unit price of this item | 1.25 |
| unitsOfMeasure | string? | Unit of measurement for this item | EA |
| taxCode | string? | Tax code applicable to this invoice item | "CA" |
| taxRate | float? | Tax rate applied to this invoice item | 0.075 |
| phaseCode | string? | Phase code associated with this invoice item | "100" |
| costCategory | string? | Cost category code associated with this invoice item | "M" |
REST Endpoints​
GET /invoices/:id/items​
Read the items associated with an invoice
Accepts all standard pagination parameters.
Allowed orderBy fields: createdAt, id, lineNumber, updatedAt.
Default (direction, orderBy): (lineNumber, ASC)
Allowed filter fields: createdAt, description, hasException, id, notes, updatedAt.
Response​
A list of Invoice Item objects.
Example Request​
GET https://api.kojo.tech/invoices/ckmnpybisiy5x08abky4g2d1f/items
Example Response​
[
{
"id": "clku7gtqt000cpwtzv6e971xg",
"createdAt": "2021-03-24 17:26:46.983Z",
"updatedAt": "2021-03-24 17:26:46.983Z",
"description": "LUT CABLE",
"extPriceFloat": 1328.22,
"hasException": false,
"invoiceId": "ckmnpybisiy5x08abky4g2d1f",
"lineNumber": 1,
"notes": null,
"shipQuantity": 1,
"unitPriceFloat": 1328.22,
"unitsOfMeasure": "EA",
"taxCode": "test",
"taxRate": 0,
"phaseCode": "1-010",
"costCategory": "L"
}
]
GET /invoice-items​
Get all invoice items across all invoices for your organization. This endpoint is optimized for bulk data pulling and warehousing operations.
Unlike the per-invoice endpoint /invoices/:id/items, this endpoint allows you to query invoice items across all invoices with advanced filtering capabilities.
Parameters​
Accepts all standard pagination parameters with a maximum limit of 2500 items per request.
| Name | Type | Description | Required |
|---|---|---|---|
| limit | int? | Maximum number of invoice items to return (max: 2500, default: 500) | No |
| offset | int? | Number of invoice items to skip (default: 0) | No |
| filter | object? | Filter criteria for invoice items | No |
| filter[invoiceId] | ID? | Filter items by a specific invoice ID | No |
| filter[invoiceId_in] | ID[]? | Filter items by multiple invoice IDs | No |
| filter[jobId] | ID? | Filter items by a specific job ID (from the invoice's job) | No |
| filter[jobId_in] | ID[]? | Filter items by multiple job IDs | No |
| filter[vendorId] | ID? | Filter items by a specific vendor ID (from the invoice's vendor) | No |
| filter[vendorId_in] | ID[]? | Filter items by multiple vendor IDs | No |
| filter[hasException] | boolean? | Filter items by exception status | No |
| orderBy | string? | Field to sort by (default: createdAt) | No |
| direction | ASC \| DESC | Sort direction (default: DESC) | No |
Allowed orderBy fields: createdAt, description, hasException, id, invoiceId, lineNumber, notes, updatedAt
See standard filter documentation for additional filterable fields: createdAt, description, hasException, id, invoiceId, lineNumber, notes, updatedAt.
Response​
Returns an object with pagination metadata and an array of invoice item objects.
| Name | Type | Description |
|---|---|---|
| meta | object | Pagination metadata |
| meta.total | int | Total number of invoice items matching the filters |
| meta.limit | int | Number of invoice items requested (max 2500) |
| meta.offset | int | Number of invoice items skipped |
| data | object[] | Array of invoice item objects |
Each invoice item object in the data array includes the following fields:
| Name | Type | Description |
|---|---|---|
| id | ID | Unique identifier for this invoice item |
| invoiceId | ID | ID of the invoice this item is attached to |
| lineNumber | int | Number representing the index of the line item within its invoice |
| createdAt | DateTime | When this invoice item was created |
| updatedAt | DateTime | When this invoice item was last updated |
| description | string? | Description of the invoice item |
| notes | string? | Additional handwritten details |
| manufacturerPartNumber | string? | Manufacturer part number (MPN) |
| universalProductCode | string? | Universal product code (UPC) |
| unitPriceFloat | float? | Unit price of the invoice item |
| extPriceFloat | float? | Extended price of the invoice item |
| extPriceFloatIncludingTax | float? | Extended price including tax |
| shipQuantity | float? | Quantity shipped |
| extendedQuantity | float? | Extended quantity (calculated with unit conversions) |
| unitsOfMeasure | string? | Unit of measurement for this invoice item |
| requestedUOM | string? | Requested unit of measure |
| pricingUOM | string? | Pricing unit of measure |
| extendedUOM | string? | Extended unit of measure |
| taxRate | float? | Tax rate applied to this item |
| hasException | boolean | Whether this invoice item has an exception |
| phaseCode | string? | Phase code for this invoice item |
| costCategory | string? | Cost category for this invoice item |
| taxCode | string? | Tax code for this invoice item |
| phaseCodeCode | string? | Phase code string from item or integration data |
| costCategoryCode | string? | Cost category code string from item or integration data |
| glCodeCode | string? | GL code string from item or integration data |
| taxCodeCode | string? | Tax code string from item or integration data |
| costTypeCode | string? | Cost type code string from item or integration data |
| jobId | ID? | Job ID from the parent invoice (denormalized for efficient querying) |
| vendorId | ID? | Vendor ID from the parent invoice (denormalized for efficient querying) |
| itemCode | object? | Full ItemCode object with id, code, and description fields |
| scaledUnitPrice | float? | Scaled unit price (when UOM v2 feature is enabled) |
| itemCodeText | string? | Free-form item code text from integration data |
Example Request (Single Filter)​
GET https://api.kojo.tech/invoice-items?limit=100&offset=0&filter[jobId]=ckb91ig8400d307335u4p92lq
Example Request (Multiple Invoices)​
GET https://api.kojo.tech/invoice-items?limit=100&filter[invoiceId_in][]=ckb91ig8400d307335u4p92lq&filter[invoiceId_in][]=ckb91ig8400d307335u4p92lr&filter[invoiceId_in][]=ckb91ig8400d307335u4p92ls
Example Request (Combined Filters)​
GET https://api.kojo.tech/invoice-items?filter[jobId]=ckb91ig8400d307335u4p92lq&filter[vendorId]=ckb91igzr01e70733dehis81o&filter[hasException]=false&orderBy=createdAt&direction=DESC
Example Response​
{
"meta": {
"total": 850,
"limit": 100,
"offset": 0
},
"data": [
{
"createdAt": "2025-10-28T15:56:19.137Z",
"costCategory": null,
"description": "1/2\" Copper Pipe",
"extPriceFloat": 250.50,
"extPriceFloatIncludingTax": 280.56,
"extendedQuantity": 500,
"extendedUOM": "FT",
"hasException": false,
"id": "cmhar18ox000o13mixao4iqzq",
"invoiceId": "cmhar18nl000n13mi15m20p39",
"lineNumber": 1,
"manufacturerPartNumber": "CP-500",
"notes": "Delivered on time",
"phaseCode": "01-100",
"pricingUOM": "FT",
"requestedUOM": "FT",
"shipQuantity": 500,
"taxCode": "GST/PST BC",
"taxRate": 0.12,
"unitPriceFloat": 0.501,
"unitsOfMeasure": "FT",
"universalProductCode": "987654321",
"updatedAt": "2025-10-28T15:59:14.267Z",
"phaseCodeCode": "01-100",
"costCategoryCode": "01",
"glCodeCode": "5000",
"taxCodeCode": "GST/PST BC",
"costTypeCode": "MATERIAL",
"jobId": "cmg9nv1ye001eyxj7fwnht7mn",
"vendorId": "cmg9o1gjb001jyxj7hb20q862",
"scaledUnitPrice": 0.501,
"itemCodeText": "PIPE-CP-500",
"itemCode": {
"id": "ckb91igzt01e90733giki0v0q",
"code": "PIPE-CP-500",
"description": "1/2\" Copper Pipe"
}
}
]
}