Beta
Not authenticated — log in first
VendorPurchase Orders

List Purchase Orders

List Purchase Orders — vendor REST API endpoint.

GET/vendor/purchase-ordersVendor bearer token required

List Purchase Orders

List purchase orders issued to your vendor with cursor-based pagination.

What this means in plain English

Returns a paginated slice of your purchase orders as summary rows — order header plus money totals, priced at your vendor cost instead of customer retail. Address panels and line items are on Get Purchase Order. Use first/after (or last/before) cursors from pageInfo to navigate.

When to use this

  • Reconciling what the marketplace owes you against your own accounting system.
  • Listing open purchase orders before fetching the ones you need in full.

Query parameters

NameTypeRequiredDescription
firstintegerNoNumber of purchase orders to return (default 24, max 100).
afterstringNoOpaque cursor — pass pageInfo.endCursor from the previous page for the next page.
beforestringNoOpaque cursor for backward pagination (use with last).
lastintegerNoNumber of purchase orders when paginating backward (max 100).

Request example

curl -X GET 'https://api.next.gcommerce.glass/api/v1/vendor/purchase-orders'

Response examples

200Success
{
  "purchaseOrders": [{
  "id": "550e8400-e29b-41d4-a716-446655440030",
  "orderNumber": "ORD-2026-0042-V1",
  "status": "SHIPPED",
  "placedAt": "2026-06-10T16:45:00.000Z",
  "poNumber": "PO-7788",
  "subtotal": 39.98,
  "shipping": 0,
  "tax": 0,
  "discount": 0,
  "total": 39.98,
  "currency": "USD"
}],
  "pageInfo": {
  "startCursor": "MjAyNi0wMS0xNVQxMjowMDowMC4wMDBafDU1MGU4NDAwLWUyOWItNDFkNC1hNzE2LTQ0NjY1NTQ0MDAwMA==",
  "endCursor": "MjAyNS0xMi0wMVQxMDowMDowMC4wMDBafDU1MGU4NDAwLWUyOWItNDFkNC1hNzE2LTQ0NjY1NTQ0MDAxMA==",
  "hasNextPage": true,
  "hasPreviousPage": false
},
  "estimatedTotalCount": 128
}

Status codes

200

OK

Request succeeded.

401

Unauthorized

Missing or invalid bearer token.

403

Forbidden

Insufficient permissions for this action.

400

Bad Request

Validation failed or invalid parameters.

404

Not Found

Resource not found.

429

Too Many Requests

Global rate limit exceeded (10,000 requests per 10 minutes per IP).

500

Internal Server Error

Unexpected server error.

403

Forbidden

No vendor membership, or insufficient vendor role (requires OWNER, ADMIN, or EDITOR for write operations).

Prices are **vendor cost** (`vendor_price`), not the customer retail price shown on `/vendor/orders`. This is the JSON counterpart of the Purchase Order PDF.
Totals cover line vendor costs only: `shipping`, `tax` and `discount` are always `0` and `total` equals `subtotal`.
Lines with no vendor cost recorded are excluded from `subtotal`/`total`, so a partially priced order still lists.
`poNumber` is the buyer's agency PO number when one was supplied at checkout; otherwise it falls back to `orderNumber`, so it is never `null`.
List rows are a summary: `id`, `orderNumber`, `status`, `placedAt`, `poNumber` and the money totals. The `vendor` / `billTo` / `shipTo` panels, `items`, `paymentMethodName` and `shippingMethodName` are only on [Get Purchase Order](/docs/v1/vendor/purchase-orders/get).
Only orders that were confirmed and not cancelled are listed: `CONFIRMED`, `PROCESSING`, `SHIPPED`, `PARTIALLY_SHIPPED`, `DELIVERED` and `BACKORDERED`. `PENDING`, `CANCELLED`, `DECLINED`, `REFUNDED` and `TEST` never appear, and `estimatedTotalCount` counts only listable rows.
Get Purchase Order is not filtered by status — an id you stored earlier still resolves after the order is cancelled.

Try it

Uses your saved session from login. Edit values and send a live request, or copy the cURL command.