> Part of [WHCC Developer Documentation](https://www.whcc.com/developer/llms.txt)

# Order Lookup

Look up the current state of a submitted order &mdash; statuses, totals, items, and tracking numbers &mdash; by WHCC order number or by the `ConfirmationID` returned from [Order Import](https://www.whcc.com/developer/docs/order-submit-api/order-import/index.html.md). Use it to confirm an order landed, or to inspect one order while debugging.

> **This is a point-in-time lookup, not a status channel.** Do not build a polling loop against this endpoint. [Webhooks](https://www.whcc.com/developer/docs/order-submit-api/webhooks/index.html.md) are how WHCC pushes status changes to your integration &mdash; use this endpoint to spot-check a single order, and webhooks to track them all.

## GET `/api/Client/Order/[OrderNumber]`

## GET `/api/Client/Order/[ConfirmationID]`

One endpoint, two identifier forms. A numeric value is treated as a WHCC order number. A 36-character value is treated as a `ConfirmationID` and resolved to the order it produced.

Both forms accept an optional `?sequenceNumber=` query parameter. You need it only when one `ConfirmationID` maps to more than one order &mdash; see [Multiple orders per ConfirmationID](https://www.whcc.com/#multiple_orders) below.

You can only look up orders that belong to your account. An order number that exists but belongs to another account returns `404`, the same as an order that does not exist.

## curl

### Example Request &mdash; by order number

```shell
curl https://apps.whcc.com/api/Client/Order/80052986 \
-H "Authorization: Bearer 726670514499"
```

### Example Request &mdash; by ConfirmationID

```shell
curl https://apps.whcc.com/api/Client/Order/a3ff9b4a-3112-4101-88ab-6ba025fd7600 \
-H "Authorization: Bearer 726670514499"
```

### Example Response

Values below are illustrative. Two things to notice before you write a parser: money fields are **strings** (`"13.32"`, not `13.32`), and timestamps are **server-local (Central Time) date strings** (`"8/13/2026 6:11:50 PM"`), not ISO‑8601.

```json
{
	"Id": 80052986,
	"ReceivedTime": "8/13/2026 6:10:56 PM",
	"ShippingCarrier": "",
	"OrderReference": "OrderID 12345",
	"ProductionLocation": "MN",
	"ShippingMethod": "",
	"OrderTotal": "13.32",
	"OrderSubTotal": "12.44",
	"OrderDiscount": "0",
	"SalesTax": "0.88",
	"Statuses": [{
		"StatusTime": "8/13/2026 6:11:50 PM",
		"Status": "Queued for Printing"
	}],
	"TrackingNumbers": [],
	"Items": [{
		"Description": "5x7 Print",
		"Price": "0.65",
		"Quantity": 2,
		"ItemAttributes": [{
			"AttributeUID": 1,
			"AttributeValue": ""
		}]
	}]
}
```

> **The response does not echo `ConfirmationID` or `SequenceNumber`.** If you look an order up by `ConfirmationID`, the only correlation value in the response is `OrderReference` &mdash; the reference you supplied at import time. Set a meaningful `Reference` on every order you import; it is how you tie this response back to your own records.

- **`Id`** (Integer): The WHCC order number. This is the same number partners see in their WHCC account order history.
- **`ReceivedTime`** (String): When WHCC received the order. Server-local (Central Time) date string, not ISO‑8601.
- **`ShippingCarrier`** (String): Carrier for the shipment. Empty until the order ships.
- **`OrderReference`** (String): The `Reference` you supplied at import time. The only field in this response that correlates back to your submission.
- **`ProductionLocation`** (String): The WHCC facility producing the order.
- **`ShippingMethod`** (String): Shipping method for the order. May be empty early in processing.
- **`OrderTotal`** (String): Order total. A decimal formatted as a string, like all money fields in this response.
- **`OrderSubTotal`** (String): Order subtotal, as a string.
- **`OrderDiscount`** (String): Discount applied to the order, as a string.
- **`SalesTax`** (String): Sales tax charged, as a string.
- **`Statuses`** (Array): Status history for the order. Each entry has `StatusTime` (String, server-local) and `Status` (String).
- **`TrackingNumbers`** (Array): Tracking numbers once the order ships. Each entry is an object with a single `Value` field (String) &mdash; not a bare string.
- **`Items`** (Array): Line items on the order. Each entry has `Description` (String), `Price` (String), `Quantity` (Integer), and `ItemAttributes` &mdash; an array of `AttributeUID` (Integer) / `AttributeValue` (String) pairs.

## Multiple orders per ConfirmationID

A `ConfirmationID` is not always one order. When WHCC splits an order &mdash; across shipments or production paths &mdash; the resulting orders share a `ConfirmationID` and are told apart by `SequenceNumber`, exactly as described in [webhook delivery and deduplication](https://www.whcc.com/developer/docs/order-submit-api/webhook-delivery/index.html.md).

Looking up a `ConfirmationID` that maps to more than one order returns `400 Bad Request` with the message *&ldquo;There are multiple orders for this ConfirmationId. Please include a sequenceNumber in the request.&rdquo;* Retry with the query parameter:

```shell
curl "https://apps.whcc.com/api/Client/Order/a3ff9b4a-3112-4101-88ab-6ba025fd7600?sequenceNumber=1" \
-H "Authorization: Bearer 726670514499"
```

## Error behavior

> **Error responses are HTML, not JSON.** Only the success response and authentication errors (`403.01`) return JSON. The `400` and `404` cases return an HTML error page &mdash; do not assume a JSON body on failure.

| Case | Response |
| --- | --- |
| Order number on your account | 200, JSON order |
| ConfirmationID with exactly one order | 200, JSON order |
| ConfirmationID with multiple orders, no sequenceNumber | 400 (HTML) &mdash; include a sequenceNumber |
| 36-character value that is not a known ConfirmationID | 400 (HTML) &mdash; &ldquo;ConfirmationId not yet present in system&rdquo; |
| Order number that does not exist, or belongs to another account | 404 (HTML) |
| Anything else &mdash; non-numeric, not 36 characters | 404 (HTML) |
| Missing or invalid access token | 403.01 (JSON) |

> ## What's Next
>
> For ongoing status updates, register [Webhooks](https://www.whcc.com/developer/docs/order-submit-api/webhooks/index.html.md) &mdash; they push every status change to you, without polling.