---
title: "New Purchase Order Item"
method: POST
path: "/v2/po/{poID}/items"
tags: ["Routes", "Purchase Orders", "Items"]
---

# New Purchase Order Item

`POST /v2/po/{poID}/items`

This request creates a new Purchase Order Item.

itemType | Int | Required | A number describing what type of PO Item this is. Valid values are: 1 (Part), 2 (Service), 4 (Other). If itemType is 1, name and taskID cannot be present and partID is required. If itemType is 2 or 4, name is required and partID cannot be present. If itemType is 2, a checklistID is required.
name | String | Optional | A short line-item title for this PO Item.
description | String | Optional | A more detailed description for this PO Item.
glID | Int | Optional | The ID of the General Ledger that this PO Item will belong to.
taskID | Int | Optional | The ID of the Task that this PO Item will belong to.
assetID | Int | Optional | The ID of the Asset that this PO Item will belong to.
partID | Int | Optional | The ID of the Part that this PO Item will belong to.
quantity | Int | Optional | A number for how many items are represented in this line. If not provided, the minimum and default values are 1.
rate | Float | Optional | A decimal (precision 4) representing the cost of one of the item(s). Default is 0.0000
tax | Float | Optional | A decimal (precision 4) representing the amount of tax on the item(s) as a percent. Default is 0.0000
discount | Float | Optional | A decimal (precision 4) representing the discounted cost on the item(s) as a percent. Default is 0.0000
shipping | Float | Optional | A decimal (precision 4) representing the cost of shipping for the item(s). Default is 0.0000

## Request body

- object
  - `itemType` integer
  - `glID` integer
  - `assetID` integer
  - `partID` integer
  - `quantity` integer
  - `rate` number
  - `tax` integer
  - `discount` integer
  - `shipping` number

## Response `201`

New Purchase Order Item

- object
  - `itemID` integer

## Other responses

- `400` — The request was malformed — either invalid JSON syntax or a validation failure (missing required field, wrong type, etc.).
- `401` — No `Authorization` header was provided on the request.
- `403` — The supplied credentials are invalid, the customer account is inactive, or the credentials do not have permission to perform this action.
- `404` — The referenced resource does not exist or is not visible to the authenticated customer.
- `409` — The request conflicts with the current state of the resource (e.g. a uniqueness constraint or a referenced parent that is in the wrong state).
- `429` — The per-minute or per-hour rate limit for this credential and method has been exhausted. Inspect the `X-RateLimit-*` headers to determine when to retry.
- `500` — An unhandled server-side error. The body message is generic (`System unavailable...`) when the underlying cause is a database fault; otherwise it reflects the raised error.

---

[API](https://skmtc.net/limblecmms/apis/limble-api-v2.md) · [All operations](https://skmtc.net/limblecmms/apis/limble-api-v2/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/limblecmms/limble-api-v2/versions/20801e23f7f2/schema)
