> ## Documentation Index
> Fetch the complete documentation index at: https://docs.beachdepository.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Outbound Shipments

> The carrier package that takes inventory out of the vault

An **outbound shipment** is the physical package Beach hands to a carrier to fulfil an [outbound request](/concepts/outbound-requests). It exists only after the request is approved and the items are picked. This is where you find the carrier, tracking number, and delivery status.

## Terms

| Term                  | Meaning                                                                                                   |
| --------------------- | --------------------------------------------------------------------------------------------------------- |
| **Outbound shipment** | One carrier package. Fulfils one outbound request. A request can produce more than one shipment.          |
| **Tracking**          | `carrier`, `trackingNumber`, and a ready-made `trackingUrl`. Present once a label exists.                 |
| **Shipping**          | The preference and resolved quote copied from the request: mode, signature type, carrier, service, price. |
| **Read-only**         | You cannot create or cancel a shipment directly. Act on the request instead.                              |

## Model

```prisma theme={null}
model OutboundShipment {
  id                  String
  fboAccountId        String
  organizationId      String
  status              OutboundShipmentStatus
  carrier             String?
  trackingNumber      String?
  trackingUrl         String?
  destinationAddress  Address
  shipping            ShippingPreference      // includes resolved quote
  approvedAt          DateTime?
  pickedUpAt          DateTime?
  shippedAt           DateTime?
  createdAt           DateTime

  fboAccount          FboAccount
  outboundRequest     OutboundRequest
  items               OutboundShipmentItem[]  // links each inventory item back to its request line
}
```

<Info>
  Item status is driven by the shipment. Items are `pending_outbound` while the shipment is
  `processing`, and `shipped_out` once it is `shipped`. `delivered` is a shipment status only; the
  item stays `shipped_out`.
</Info>

Full field reference is on [Get Outbound Shipment](/api-reference/outbound-shipments/get).

## Statuses

| Status       | Meaning                                                |
| ------------ | ------------------------------------------------------ |
| `processing` | Picked and being prepared. Tracking may not exist yet. |
| `shipped`    | Handed to the carrier. Items are now `shipped_out`.    |
| `delivered`  | Carrier confirmed delivery.                            |

```mermaid theme={null}
stateDiagram-v2
    [*] --> processing: Request picked
    processing --> shipped
    shipped --> delivered
```

`processing` is visible on list and get. It does not send `outbound_shipment.status_changed`. The first webhook is `shipped` (`fromStatus: "processing"`), then `delivered`. Item changes come separately as `inventory.status_changed`. After `delivered`, the item stays `shipped_out`.

## Endpoints

* [List Outbound Shipments](/api-reference/outbound-shipments/list)
* [Get Outbound Shipment](/api-reference/outbound-shipments/get)
