---
title: "Get Purchase Orders"
method: GET
path: "/v2/po"
tags: ["Routes", "Purchase Orders"]
---

# Get Purchase Orders

`GET /v2/po`

meta | useful links relating to this Purchase order
poID | The unique ID of the Purchase Order.
poNumber | The user-set Purchase Order number.
budgetID | The unique ID of the budget associated with this Purchase Order.
vendorID | The unique ID of the vendor associated with this Purchase Order.
locationID | The unique ID of the location associated with this Purchase Order.
userIDStarted | The unique ID of the user that started this Purchase Order.
userID | The unique ID of the user this Purchase Order is currently assigned to.
teamID | The unique ID of the team the user of this Purchase Order is currently assigned to.
requestedByUserID | The userID of the user that request this Purchase Order. A value of 0 means this PO wasn't requested, but was manually started by the userIDStarted.
date | The date this PO was started as a UNIX timestamp, or the date the user inputted for the Purchase Order.
expectedDate | The date this PO is expected as a UNIX timestamp to receive items.
billTo | The address that should receive the bill for the PO.
shipTo | The address the PO's items should be delivered to.
notesToVendor | Any notes sent to the vendor, possibly containing handling, packaging, or delivery instructions.
customField1 | PO custom field, the customer chooses which custom fields are available on all POs.
customField2 | PO custom field, the customer chooses which custom fields are available on all POs.
customField3 | PO custom field, the customer chooses which custom fields are available on all POs.
customField4 | PO custom field, the customer chooses which custom fields are available on all POs.
customField5 | PO custom field, the customer chooses which custom fields are available on all POs.
customField6 | PO custom field, the customer chooses which custom fields are available on all POs.
poPrefix | If a PO prefix is configured, it will show up here.
lastEdited | Last time this PO was edited as a UNIX timestamp.
status | This is the current status of a PO. Status of PO can be as follows:, 0: the PO has only been setup. (Status: Setup), 1-97: these are custom statuses based on the budget steps. Refer to "budgetSteps" in meta. (Status : {Name of the budgetStep it is on} ), 97: the PO is in the ready to receive step. This means items can be received for this PO. (Status: Ready to Receive), 98 all budget steps have been completed, but not all items on the PO have been received. This means only some items or partial qty of items have been received. (Status: Partially Received), 99: the PO is completed. This means all the items and their full qty on the PO have been received but not been paid for ( i.e. all the bills generated for this PO have not been marked as paid yet.) (Status: Fully Received - Pending Payment), 100: the PO is closed. This means all the items on the PO have been received and have been paid for. (i.e. all the bills for this PO have been marked as paid.) (Status: Closed)
stateDetails | JSON object containing details about the PO's current state, and available state transitions.
poNumberDisplay | Formatted display string with leading zeros and prefix. This is the PO Number the UI will display.

## Query parameters

- `pos` integer
- `vendors` integer
- `locations` integer
- `numbers` integer
- `cursor` integer
- `limit` integer
- `lastEditedStart` integer
- `lastEditedEnd` integer
- `status` string
- `page` integer

## Response `200`

Get Purchase Orders

- PurchaseOrder[]
  - `poID` integer
  - `taskID` integer
  - `budgetID` integer
  - `poNumber` integer
  - `vendorID` integer
  - `locationID` integer
  - `userIDStarted` integer
  - `userID` integer
  - `teamID` integer
  - `requestedByUserID` integer
  - `date` integer
  - `expectedDate` unknown
  - `notesToVendor` string
  - `billTo` unknown
  - `shipTo` unknown
  - `status` integer
  - `customField1` unknown
  - `customField2` unknown
  - `customField3` unknown
  - `customField4` unknown
  - `customField5` unknown
  - `customField6` unknown
  - `lastEdited` integer
  - `poPrefix` unknown
  - `meta` object
    - `items` string
    - `state` string
    - `stateTransitions` string
    - `budget` string
    - `budgetSteps` string
  - `stateDetails` object
    - `current` object
      - `number` integer
      - `name` string
      - `label` string
      - `canModify` boolean
    - `transitions` object
      - `available` object[]
        - `state` integer
        - `name` string
        - `label` string
  - `state` 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.
- `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/revisions/eceb9442ed4d/schema)
