> ## 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.

# Inbound Shipments

> Integration sequence from create through inventory in_vault

Follow an inbound shipment on [Inbound Shipments](/api-reference/inbound-shipments/list). Inventory items show up on [Inventory](/api-reference/inventory/list) after `inventory.vaulted`.

## Vault ID

Read the vault ID from [Get FBO Intake Address](/api-reference/fbo-accounts/get-intake-address). Format is `PV-######`. `placement` is `address_line_2` or `last_name`.

Put that address on the package. [Create Inbound Shipment](/api-reference/inbound-shipments/create) takes `fboAccountId`, not the vault ID.

## Create

`POST /inbound-shipments`. Required fields:

* `fboAccountId`
* `lines` — at least one entry, each with `productId` and `quantityDeclared`

With no `carrier`, `trackingNumber`, or `rateId`, the response `status` is `created`.

```json theme={null}
{
  "fboAccountId": "m97fbo456",
  "lines": [{ "productId": "jh7prod123", "quantityDeclared": 1 }]
}
```

```json theme={null}
{
  "data": {
    "shipment": {
      "id": "jn7shipin123",
      "fboAccountId": "m97fbo456",
      "status": "created"
    }
  }
}
```

[Cancel Inbound Shipment](/api-reference/inbound-shipments/cancel) is valid only while `status` is `created` or `in_transit`.

A package can arrive with the vault ID and no prior create. [List Inbound Shipments](/api-reference/inbound-shipments/list) returns it as `processing`. `lineItems` is empty. The webhook is `inbound_shipment.status_changed` with `fromStatus: "created"` and `toStatus: "processing"`. That `created` is the insert step in the same receive, not a shipment you posted.

## Tracking

Set tracking on create. Pass `carrier` and `trackingNumber`, or a `rateId` from [Get Label Quote](/api-reference/inbound-shipments/get-label-quote). The response `status` is `in_transit`.

There is no endpoint to add tracking after create. `created` and `in_transit` both move next to `processing`.

## Statuses

Shipment `status` on list, get, and `inbound_shipment.status_changed`:

| Status       | What to do                                                                                                                                                                                                                               |
| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `created`    | Waiting. Cancel is available.                                                                                                                                                                                                            |
| `in_transit` | Tracking is set. Cancel is available.                                                                                                                                                                                                    |
| `processing` | At the vault. [Get Inbound Shipment](/api-reference/inbound-shipments/get) includes `receivedAt`. No inventory item yet.                                                                                                                 |
| `accepted`   | Whole shipment closed with accepted units and no rejected units. Then each item sends `inventory.vaulted` and `inventory.status_changed` to `in_vault`. Read `lineItems` with `includeLineItems=true` for counts and `inventoryItemIds`. |
| `rejected`   | Whole shipment closed with no accepted units. No inventory items. Terminal.                                                                                                                                                              |
| `cancelled`  | Cancelled from `created` or `in_transit`. No inventory items.                                                                                                                                                                            |

`accepted` and `rejected` follow `processing`. `in_vault` is an inventory status.
