# Items and vehicle fit

> Describe what you ship so Maxmove checks that the vehicle can carry it, and the courier, labels, and proof of delivery show the right goods.

`items` is optional on quotes, deliveries, and fleet orders. When you send it, Maxmove checks that the chosen `vehicle_type_id` can carry every line before it prices or books the route, and keeps the lines on the delivery for the courier, package labels, and proof of delivery.

## Describe each line

One line describes identical units. Send 1 to 100 lines:

| Field | Required | Meaning |
| --- | --- | --- |
| `quantity` | yes | Number of identical units on this line. |
| `weight_kg` | yes | Weight of one unit. |
| `length_cm`, `width_cm`, `height_cm` | yes | Outer dimensions of one unit. |
| `description` | no | Short cargo description shown to the courier. |
| `fragile` | no | Never stacked and flagged to the courier. |
| `keep_upright` | no | The height axis stays vertical; only the footprint may be rotated. |
| `stackable` | no | `true` allows stacking identical units, `false` forbids it. Omit when you don't know. |
| `source_line_id`, `sku`, `customer_reference` | no | Your identifiers. `customer_reference` is printed on package labels. |
| `barcode`, `gtin`, `sscc` | no | Existing codes. The courier scans `barcode` at pickup and dropoff. |

```json
"items": [
  {
    "source_line_id": "SO-4711-1",
    "description": "Espresso machine, boxed",
    "quantity": 2,
    "weight_kg": 12.5,
    "length_cm": 50,
    "width_cm": 40,
    "height_cm": 45,
    "fragile": true,
    "keep_upright": true,
    "barcode": "4006381333931"
  }
]
```

## Pick a vehicle that fits

`vehicle_type_id` stays required. List the options with [`GET /v1/vehicle-types`](https://api.maxmove.com/v1/docs#tag/vehicle-types/GET/v1/vehicle-types).

**1. Quote with the items**

Send `items` to [`POST /v1/quotes`](https://api.maxmove.com/v1/docs#tag/quotes/POST/v1/quotes). If the vehicle is too small, the request fails with `400 vehicle_does_not_fit`.

**2. Retry with the next larger vehicle**

Choose a larger vehicle type and quote again. Line data that cannot be evaluated fails with `400 invalid_items` instead; fix the line and retry.

**3. Book with the same items**

Send the identical `items` with the `quote_id` to [`POST /v1/deliveries`](https://api.maxmove.com/v1/docs#tag/deliveries/POST/v1/deliveries). Different items fail with `400 quote_mismatch`.

> **Tip:**
> Send `stackable` only when you know it. Omitting it is treated conservatively, which can mean a larger vehicle than strictly necessary, but never one that is too small.

---

Source: https://maxmove.com/en/developers/docs/guides/items-and-vehicle-fit
