---
title: "Create a multiparcel shipment and mark the position items as sent."
method: POST
path: "/v1/multiparcel-shipments"
tags: ["Shipments V1"]
---

# Create a multiparcel shipment and mark the position items as sent.

`POST /v1/multiparcel-shipments`

This endpoint is designed for creating a shipment of a single article (position item) that, due to its size or nature, must be shipped in multiple physical parcels, each with its own tracking key.

A typical use case is, for example, a large piece of furniture shipped in 2 to 3 parcels.

Please note: If you are shipping different articles, each packed in its own parcel with a separate tracking number, each of these shipments must be reported individually via the standard API endpoint for shipment creation. You cannot use the Multiparcel Shipment endpoint for this purpose.

## Request body

- MultiparcelCreateShipmentRequestShipmentsV1[]
  - `trackingKey` MultiparcelTrackingKeyShipmentsV1, required
    - `carrier` 'DHL' | 'DHL_EXPRESS' | 'DPD' | 'GLS' | 'HERMES' | 'UPS' | 'ABIKS' | 'AJ' | 'AJE' | 'BTW' | 'BURSPED' | 'CARGOLINE' | 'CARGOBOARD' | 'CTL' | 'DACHSER' | 'DB_SCHENKER' | 'DHL_FREIGHT' | 'DHL_HOME_DELIVERY' | 'DSV' | 'ECE' | 'EMONS' | 'EPH_DIREKT' | 'FEDEX' | 'FROEDE' | 'GEIS' | 'GEL' | 'GRASSL' | 'GUETTLER' | 'HASENAUER' | 'HEPPNER' | 'HELLMANN' | 'HES' | 'HEUEL' | 'IDS' | 'ISG' | 'KIESSLING' | 'KOCH' | 'KUEHNE_NAGEL' | 'LOGWIN' | 'MEYER_JUMBO' | 'MIRJAN' | 'ORCARGO' | 'PALLETWAYS' | 'PEISKER' | 'RABEN_LOGISTIK' | 'REIMER' | 'REITHMEIER' | 'RHENUS' | 'RIECK' | 'SCHMIDT_GEVELSBERG' | 'SCHOCKEMOEHLE' | 'SIEVERS' | 'SIMPLE_LOGISTIK' | 'SPEEDTRANS' | 'SPT' | 'VERHOEK' | 'WEISS' | 'ZUFALL' | 'OTHER_FORWARDER', required — The carrier of the shipment.
    - `trackingNumber` string, required — The tracking number assigned by the carrier. <br> Required for parcel deliveries.
  - `shipDate` string, date-time, required — The date that the shipment is handed over to the carrier. Must be a valid UTC dateTime according to ISO 8601.
  - `shipFromAddress` AddressShipmentsV1, required — The warehouse or location from which the shipment will be picked up for final delivery.
    - `city` string, required — The city from where the shipment is sent.
    - `countryCode` string, required — The country code according to [iso-3166-1-alpha-3](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3) from where the shipment is sent.
    - `zipCode` string, required — The zip code from where the shipment is sent.
  - `positionItems` MultiparcelPositionItemShipmentsV1[], required — The position items included in shipment.
    - `positionItemId` string, uuid, required — The ID of a position item of the sales order from the OTTO Market, as defined in the Order API.
    - `salesOrderId` string, uuid, required — The ID of the sales order from the OTTO Market, as defined in the Order API.
    - `returnTrackingKey` MultiparcelReturnTrackingKeyShipmentsV1, required — The return tracking key for the return process. <br> **Required for parcel deliveries.** <br> Each position item can have its own return tracking key.
      - `carrier` 'DHL' | 'GLS' | 'HERMES', required — The carrier for the return process, which can differ from the carrier used to deliver the shipment to the customer. Please be aware that this carrier can not differ from the chosen carrier in the OPC portal.
      - `trackingNumber` string, required — The tracking number (or return tracking number) assigned by the carrier.
    - `returnAddressCarrierId` string, uuid — Unique identifier for the return address and the return carrier combination. A returnAddressCarrierId is required when a partner has multiple return addresses/carriers. This identifier can be obtained through the ReturnsWarehouse API or in the Partner-Portal. Note that all position items within the same shipment must have the same returnAddressCarrierId.

## Response `201`

Resource created

- CreateMultiparcelShipmentResponseShipmentsV1
  - `multiParcelShipmentId` string — Internal multiparcel shipment identifier assigned by OTTO Market.

## Other responses

- `400` — Bad request
- `401` — Unauthorized
- `409` — Conflict
- `500` — Internal server error

---

[API](https://skmtc.dev/otto/apis/otto-market-api.md) · [All operations](https://skmtc.dev/otto/apis/otto-market-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/otto/otto-market-api/revisions/b1bc133112bd/schema)
