> For the complete documentation index, see [llms.txt](https://developer.esw.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.esw.com/customs-catalog-api/fulfillment-api/core-concepts/pick-and-pack.md).

# Pick and Pack

The Pick & Pack Confirm endpoint is called by the 3PL WMS after picking items from the shelf and packing them into a parcel. It reports outcomes at two levels — the overall operation, and per item.

### Two-level outcome model

#### **Operation-level status**

The `pickPackResponse.status` field describes the overall outcome of the pick/pack operation for this order. Values: `Confirmed`, `PartialResult`, `Failed`, `AcceptedForProcessing`, `BadAddress`, `TimeOut`, `BadRequest`.

#### **Item-level status**

The `pickPackResponse.itemsResult[]` array gives per-SKU outcomes. Each item can be `Success`, `Failed`, or `PartialResult`, with a `failureReason` and `problemMessage` for failed items.

### Operation status guide

| Status                  | Description                                                                              |
| ----------------------- | ---------------------------------------------------------------------------------------- |
| `Confirmed`             | Every item in the order was successfully picked and packed                               |
| `AcceptedForProcessing` | WMS has accepted the fulfillment request and is processing it — not yet confirmed        |
| `PartialResult`         | Some items picked successfully; one or more items failed                                 |
| `Failed`                | The entire order could not be fulfilled (bad address, EOD cutoff, transient error, etc.) |
| `BadAddress`            | Carrier address validation failed — parcel cannot be shipped                             |
| `TimeOut`               | Pick/pack process exceeded the time budget.                                              |
| `BadRequest`            | The confirmation request had invalid data (wrong order reference, etc.)                  |

### Idempotency — `confirmationId`

The `confirmationId` is your 3PL WMS's unique identifier for this specific pick/pack event. It acts as an idempotency key — if you submit the same `confirmationId` twice, the second submission will be deduplicated. Generate a new `confirmationId` for every distinct fulfillment attempt. For an end-of-day retry the following morning, create a new `confirmationId` even though the `eswOrderReference` is the same.

### `confirmationDateTime`

This field should reflect when the physical packing was completed, not when the API call is made. If your WMS batches confirmations and sends them 10 minutes after packing completes, populate `confirmationDateTime` with the actual pack completion time. This timestamp is used by ESW's SLA measurement and carrier pre-clearance systems.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://developer.esw.com/customs-catalog-api/fulfillment-api/core-concepts/pick-and-pack.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
