---
id: SCR-COM-FUL-004
title: Create Shipment
route: '/console/{tenantId}/orders/{orderId}'
surface: console
product_area: commerce
module: fulfillment
revision: 1
status: draft
design_intent: proposed
implementation_evidence: observed
inference: []
source_sha:
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
  services-commerce: c8b66a98e2490617aec38ba5c8165dd9bd0a8f9b
purpose: Start shipment preparation from eligible merchandise lines on an order.
supports:
  - JNY-COM-FUL-003
  - CAP-COM-FUL-012
permission: orders.shipments.create (commerce.shipments.create)
entry_from:
  - The Create Shipment action of Order 360's actions card.
exits_to:
  - 'Order 360, refreshed, including the new shipment on the Shipments card.'
displays:
  - field: Merchandise lines including the units left to ship.
    source: The order read (lines and shipped quantities)
  - field: 'Carriers to choose from, plus the manual carrier.'
    source: listCarrierAccounts (active accounts)
  - field: 'Ship-to, ship date, tracking, weight, notes and e-mail the customer.'
    source: The order's ship-to and the person's entries
actions:
  - label: Create Shipment
    operation_id: createShipment
    permission: orders.shipments.create (commerce.shipments.create)
    confirm: false
states:
  - loading
  - error
  - read-only
validation:
  - BR-CAP-COM-FUL-012-01
  - BR-CAP-COM-FUL-012-11
patterns:
  - Order 360 action panel as a dialog with a tinted header
  - Refusal alert inside the dialog
  - 'Design-system inputs, select, switch and textarea'
component: components/commerce/order-flows/create-shipment-dialog.tsx
evidence:
  - >-
    react-console at baf6dae3:
    components/commerce/order-flows/create-shipment-dialog.tsx,
    order-flow-panels.tsx;
    components/record-views/cards/order/order-actions.tsx;
    lib/commerce/order-flows/live.ts (shipmentOptions, createShipment).
  - >-
    services-commerce at c8b66a98: modules/shipping/aws/api/shipping.schemas.ts
    (createShipmentRequestSchema).
  - >-
    react-console at baf6dae382d6f41dce976c7f848667ccc37e076f:
    lib/api/commerce.ts:COMMERCE_LIVE; lib/config/mock-mode.ts:resolveMockMode;
    app/(console)/console/[tenantId]/orders/[orderId]/page.tsx.
controls: [TC-IAM-001, TC-IAM-002, TC-IAM-004, TC-IAM-005, TC-AZ-001, TC-AZ-002, TC-AZ-003, TC-AZ-004, TC-AZ-005, TC-AZ-006, TC-TEN-001, TC-TEN-002, TC-TEN-003, TC-CRY-001, TC-DAT-001, TC-DAT-002, TC-DAT-003, TC-LOG-001, TC-LOG-002, TC-LOG-003, TC-LOG-004, TC-LOG-005, TC-PI-001, TC-PI-003, TC-PRV-001, TC-PRV-002]
---

# Create Shipment

## What the Screen Is For

Start shipment preparation from eligible merchandise lines on an order.

## What It Shows and Lets People Do

The dialog displays remaining quantities and offers carrier, address, date, tracking, weight, notes and customer-email controls. The live request sends selected line identities and notes only; it drops quantities and the other collected values. The service selects eligible units at one warehouse using the order’s saved shipping facts.

## States and Errors

Live mode uses the Commerce service by default. Explicit mock or preview mode uses sample adapters where deployment settings permit it; customer production deployments refuse mock mode.

Option loading and request refusal appear inside the dialog. Creation requires its action permission. The built form can accept values that are not applied, which remains an unresolved screen defect.

## Patterns It Must Respect

Keep the existing Order 360 action dialog and its alert, input, selection, switch and text controls. Correcting the discarded-input behavior requires a product and implementation change rather than a prose claim that it works.
