# fbaInbound_create_packing_list (https://sellersheetai.com/docs/mcp-api/tools/fbaInbound_create_packing_list)

> Packing list from Amazon's OWN box contents.

Access: **WRITE** · toolset amazon_sp · family sp.fulfillmentInbound_2024-03-20

Call AFTER fbaInbound_confirm_plan_options. Amazon SP-API · listShipmentBoxes · GET /inbound/fba/2024-03-20/inboundPlans/{inboundPlanId}/shipments/{shipmentId}/boxes For every confirmed shipment the server reads listShipmentBoxes — each box's canonical boxId (FBAxxxxxxxx, assigned only after confirmation), name, dimensions, weight and items[{msku, fnsku, asin, quantity, labelOwner}] — and returns one row per box × item. Mixed boxes and multi-shipment placements need nothing from the sheet. Never invent box IDs from STA data — always fetch from Amazon. Mode A (plan workbook): pass sta_spreadsheet_id and the server writes the sidebar's FINAL `Inbound PL` tab into it — 11 columns (Image, Box ID, Template, FNSKU, MSKU, ASIN, Quantity, Weight, Weight Unit, Dimensions, Unit of Measurement), navy header, frozen row, guide note, Image formula — and removes a stale STA-PL tab, exactly as the sidebar's Confirm does. You write nothing there. Mode B: omit it and present data.amazonBoxes in the user's preferred form with those same 11 columns (no shipment column). Box labels per shipment come from fbaInbound_get_labels; tracking numbers go to Manage Shipments.

## Call it

MCP tool call:

```json
{
  "name": "fbaInbound_create_packing_list",
  "arguments": {
    "store": "myStore-US",
    "plan_id": "<plan_id>"
  }
}
```

Tool API (early access — contact us):

```bash
curl -X POST https://api.sellersheetai.com/api/v1/tools/fbaInbound_create_packing_list \
  -H "Authorization: Bearer $SELLERSHEET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"store":"myStore-US","plan_id":"<plan_id>"}'
```

## Arguments

| Name | Type | Required | Description |
|---|---|---|---|
| `store` | string | yes | the store ref `<store>-<CC>` (name-country, e.g. 'myStore-US') — one of get_user_context's store_refs, verbatim. |
| `plan_id` | string | yes | the inboundPlanId (from fbaInbound_createInboundPlan or fbaInbound_listInboundPlans). |
| `sta_spreadsheet_id` | string |  | the plan workbook (mode A) — '' in mode B. |
| `confirmed_shipments` | object[] |  | REQUIRED — data.confirmedShipments of fbaInbound_confirm_plan_options as is (only shipmentId is read); a list without a shipmentId is refused. |
| `sta_item_rows` | object[] |  | ignored since 2026-09-24 (it used to be cross-joined onto every box); kept so older callers keep working. |
| `fba_spreadsheet_id` | string |  | override the FBA spreadsheet whose Product Info feeds the Image column (defaults to the workspace setting). |

## Result

- `data.amazonBoxes` — [{amazonBoxId, shipmentId, boxName, msku, fnsku, asin, qty, labelOwner, boxDimensions ("LxWxH"), dimUnit, boxWeight, weightUnit, itemsInBox}] — amazonBoxId is FBAxxxxxxxx; use it for fbaInbound_updateShipmentTrackingDetails.
- `data.inboundPl` — {tab: 'Inbound PL', rows} — mode A only.

## Workflow

- 1. fbaInbound_confirm_plan_options completed — confirmedShipments in _state / handover file

## Params (Amazon schema)

- inboundPlanId*: string (max 38 chars) shipmentId*: string (max 38 chars) pageSize: integer (1–1000) paginationToken: string (max 1024 chars)