List purchase orders
Operation ID: purchaseOrders
Group: Accounting › Purchase Orders
Open in the interactive reference
GET /accounting/purchase-orders
Read-only: Reads and returns; changes nothing.
Lists purchase orders. Each item is the order's main fields, without its lines. To get the lines, use GET accounting/purchase-orders/:id or POST accounting/purchase-orders/search.
To filter by vendor or legal entity, use POST accounting/purchase-orders/search.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
Api-Version |
header | string · v1 | yes | The API version this request targets, named by its public identifier. Required on every request; omitting it, or naming a version this company does not have, is answered with 400. This document describes version v1. |
Query surface
id— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likepoNumber— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likeexternalPONumber— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likeapprovalStatus— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likebudgetStatus— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likestatus— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likecurrency— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likestartDate— filter by eq, ne, gt, gte, lt, lte, in, notIn, betweenendDate— filter by eq, ne, gt, gte, lt, lte, in, notIn, betweenneedByDate— filter by eq, ne, gt, gte, lt, lte, in, notIn, betweenpaymentTerms— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likelastModifiedDate— filter by eq, ne, gt, gte, lt, lte, in, notIn, between- Orderable: id, poNumber, approvalStatus, budgetStatus, status, currency, totalAmount, invoicedTotalAmount, receivedTotalAmount, startDate, endDate, needByDate, lastModifiedDate
- Selectable: id, poNumber, description, internalDescription, externalMemo, externalPONumber, approvalStatus, budgetStatus, status, currency, totalAmount, invoicedTotalAmount, receivedTotalAmount, startDate, endDate, needByDate, paymentTerms, vendorName, vendorContactEmail, entityName, lastModifiedDate
page[size]— Page sizepage[cursor]— Opaque continuation cursor
Response
200 Success
Under data, an array of purchaseOrdersRow:
| Field | Type | Required | Filter | Sort | Description |
|---|---|---|---|---|---|
id |
string | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The unique identifier for the purchase order. |
poNumber |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The purchase order number, for example 'PO-3'. Absent while none has been assigned. |
description |
string | null | no | no | no | The description of the order, shown to the vendor. |
internalDescription |
string | null | no | no | no | Internal notes on the order, not shown to the vendor. |
externalMemo |
string | null | no | no | no | A memo intended for the vendor. |
externalPONumber |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
no | The order reference in the vendor's or an upstream system. It is not unique. |
approvalStatus |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The approval status of the order. Possible values: 'approved', 'pendingApproval', 'rejected'. |
budgetStatus |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The budget-check status of the order. Possible values: 'approved', 'rejected', 'pendingApproval'. Independent of approvalStatus. |
status |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The order lifecycle status. Possible values: 'open', 'inprogress', 'closed', 'overMatched'. This is not the vendor-bill matching status, which is per line in each line's matchStatus. |
currency |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The currency the order is denominated in. Format ISO 4217, for example 'USD'. Governs every amount on the order and its lines. |
totalAmount |
decimal | null | no | no | yes | The total ordered amount, the sum of the line totals, in the order currency. |
invoicedTotalAmount |
decimal | null | no | no | yes | The portion of the order already invoiced by vendor bills, in the order currency. |
receivedTotalAmount |
decimal | null | no | no | yes | The portion of the order already received as goods, in the order currency. |
startDate |
date | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn) |
yes | The first day of the period the order covers. Format YYYY-MM-DD. |
endDate |
date | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn) |
yes | The last day of the period the order covers. Format YYYY-MM-DD. |
needByDate |
date | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn) |
yes | The date the goods or services are needed by. Format YYYY-MM-DD. |
paymentTerms |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
no | The payment-terms code applied to this order, for example 'net30', 'net60', 'dueOnReceipt' or 'custom'. Inherited from the vendor unless overridden. |
vendorName |
string | null | no | no | no | The name of the vendor this order is placed with. |
vendorContactEmail |
string | null | no | no | no | The main contact email at the vendor. |
entityName |
string | null | no | no | no | The name of the legal entity this order is placed by. |
lastModifiedDate |
date-time | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn) |
yes | The date and time the purchase order last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. |
{
"data": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"poNumber": "<poNumber>",
"description": "<description>",
"internalDescription": "<internalDescription>",
"externalMemo": "<externalMemo>",
"externalPONumber": "<externalPONumber>",
"approvalStatus": "<approvalStatus>",
"budgetStatus": "<budgetStatus>",
"status": "<status>",
"currency": "<currency>",
"totalAmount": "19.99",
"invoicedTotalAmount": "19.99",
"receivedTotalAmount": "19.99",
"startDate": "2026-01-15",
"endDate": "2026-01-15",
"needByDate": "2026-01-15",
"paymentTerms": "<paymentTerms>",
"vendorName": "<vendorName>",
"vendorContactEmail": "<vendorContactEmail>",
"entityName": "<entityName>",
"lastModifiedDate": "2026-01-15T09:30:00.000Z"
}
],
"pagination": {
"hasMore": true,
"nextCursor": "<nextCursor>"
}
}
Statuses
400— Invalid request or business failure401— The request carries no valid access token.403— Not authorized404— Not found429— Too many requests from this client address. The response has no body and noRetry-Afterheader.500— Internal server error