---
title: "Create Shipment"
method: POST
path: "/createshipment"
tags: ["ShipmentApi"]
---

# Create Shipment

`POST /createshipment`

Initiates the creation of a new shipment with the provided details, including sender and recipient information. This is the primary method for registering shipments into the system.

## Request body

- ClientAPICreateShipmentRequest
  - `senderID` integer, nullable — Registered sender account ID. Can't be used with Sender field. If null Sender is not given, the authenticated customer's default sender is used.
  - `cosignee` Address, required
    - `name` string, nullable — Person or business name (max 35 characters)
    - `countryCode` string, nullable — Country code in ISO format (max 3 characters)
    - `zipcode` string, nullable — Postal code (max 10 characters)
    - `city` string, nullable — City name (max 35 characters)
    - `streetAndNumber` string, nullable — Street and street number (max 70 characters)
    - `telephone` string, nullable — Telephone (max 30 characters)
    - `fax` string, nullable — Fax (max 30 characters)
    - `notifyGSM` string, nullable — Mobile number for notifications (max 35 characters)
    - `notifyEmail` string, nullable — Email for sending notifications (max 70 characters)
  - `sender` Address
    - `name` string, nullable — Person or business name (max 35 characters)
    - `countryCode` string, nullable — Country code in ISO format (max 3 characters)
    - `zipcode` string, nullable — Postal code (max 10 characters)
    - `city` string, nullable — City name (max 35 characters)
    - `streetAndNumber` string, nullable — Street and street number (max 70 characters)
    - `telephone` string, nullable — Telephone (max 30 characters)
    - `fax` string, nullable — Fax (max 30 characters)
    - `notifyGSM` string, nullable — Mobile number for notifications (max 35 characters)
    - `notifyEmail` string, nullable — Email for sending notifications (max 70 characters)
  - `cosigneeNotifyType` 'NoNotifications' | 'Email' | 'SMS' | 'Both' — 0 = NoNotifications, 1 = Email, 2 = SMS, 3 = Both
  - `isSenderNonCustomer` boolean, nullable — Set to true when the shipment is remote pickup
  - `deliveryParcelLocker` string, nullable — Target parcel locker code for last-mile delivery. Mutually exclusive with DeliveryParcelShop.
  - `dropOffParcelLocker` string, nullable — Parcel locker code where the sender will drop off the shipment. Mutually exclusive with DropOffParcelShop.
  - `numberOfCollies` integer, nullable — Number of packages (collies) in the shipment (max 999). Can't be used with Collies field
  - `unitType` 'Weight' | 'Pallet' | 'Value' | 'Quantity' | 'PalletWeight' | 'Letter' | 'BoxA' | 'BoxB' | 'BoxC' | 'XLBox' | 'WeightPerUnit' | 'None' | 'All' — 0 = Weight, 4 = Pallet, 5 = Value, 7 = Quantity, 11 = PalletWeight, 12 = Letter, 13 = BoxA, 14 = BoxB, 15 = BoxC, 16 = XLBox, 17 = WeightPerUnit, -999 = None, -1 = All
  - `unitAmount` number, double, nullable — Unit amount for shipment-level pricing. Decimal numbers must use a dot (.) as the separator (e.g., 1234.56).
  - `ref1` string, nullable — Reference 1 value for the shipment (max 35 characters).
  - `ref2` string, nullable — Reference 2 value for the shipment (max 35 characters).
  - `ref3` string, nullable — Reference 3 value for the shipment (max 35 characters).
  - `refInt` string, nullable — International reference for the shipment (max 35 characters).
  - `exWorksType` integer, nullable — Ex-works collection type identifier. Must be 4 (PaidByReceiver)
  - `codValue` number, double, nullable — Cash-on-delivery amount to collect from the consignee. Decimal numbers must use a dot (.) as the separator (e.g., 1234.56).
  - `codCurrency` integer, nullable — Currency code for the cash-on-delivery amount. Required when CODValue is set.
  - `codIban` string, nullable — IBAN of the bank account to which COD funds will be transferred.
  - `codBicSwift` string, nullable — BIC/SWIFT code for the COD bank transfer. Required for international IBAN accounts.
  - `dopService` boolean — Package Opening Allowed service
  - `cargo` boolean — Marks the shipment as cargo type, applying cargo-specific handling and routing rules.
  - `returnDocument` boolean — Attaches a return document to the shipment. The consignee must sign it upon delivery and it is returned to sender.
  - `remark` string, nullable — Shipment contents description or general remark (max 150 characters).
  - `pickupRemark` string, nullable — Remark for the courier regarding shipment pickup (max 255 characters).
  - `deliveryRemark` string, nullable — Remark for the courier regarding shipment delivery (max 255 characters).
  - `prefferedPickupTime` string, date-time, nullable — Preferred pickup date and time. The system assigns the nearest available slot if the requested time is unavailable.
  - `dropOffParcelShop` string, nullable — Parcel shop code where the sender will drop off the shipment. Mutually exclusive with DropOffParcelLocker.
  - `deliveryParcelShop` string, nullable — Target parcel shop code for last-mile delivery. Mutually exclusive with DeliveryParcelLocker.
  - `pdfAttachmentBase64` string, nullable — Base64-encoded PDF document to attach to the shipment. It is only used for commissioning shipments.
  - `commissionType` 'None' | 'Document' | 'Item' | 'DocumentAndItem' — 0 = None, 1 = Document, 2 = Item, 3 = DocumentAndItem
  - `commissions` CNCommission[], nullable — List of commission entries associated with this shipment.
    - `amount` number, double — Commission amount. Decimal numbers must use a dot (.) as the separator (e.g., 12.50).
    - `itemCode` string, nullable — Item/product code that identifies the commission type or service being charged.
  - `collies` ClientAPICreateShipmentRequestColliDto[], nullable — Individual package (colli) details. Use when packages differ in weight, references, or barcodes. Can't be used with numberofcollies field
    - `unitType` 'Weight' | 'Pallet' | 'Value' | 'Quantity' | 'PalletWeight' | 'Letter' | 'BoxA' | 'BoxB' | 'BoxC' | 'XLBox' | 'WeightPerUnit' | 'None' | 'All' — 0 = Weight, 4 = Pallet, 5 = Value, 7 = Quantity, 11 = PalletWeight, 12 = Letter, 13 = BoxA, 14 = BoxB, 15 = BoxC, 16 = XLBox, 17 = WeightPerUnit, -999 = None, -1 = All
    - `unitAmount` number, double, nullable — Unit amount for pricing this individual package. Decimal numbers must use a dot (.) as the separator (e.g., 1234.56).
    - `ref1` string, nullable — Reference 1 value for this package (max 35 characters).
    - `ref2` string, nullable — Reference 2 value for this package (max 35 characters).
    - `ref3` string, nullable — Reference 3 value for this package (max 35 characters).
    - `refInt` string, nullable — International reference for this package (max 35 characters).
    - `remark` string, nullable — Remark specific to this package (max 150 characters).
    - `barcode` string, nullable — Custom barcode to assign to this package. If omitted, the system generates one automatically.
  - `noSticker` boolean, nullable — When true, suppresses label/sticker generation for this shipment.
  - `insuranceValue` number, double, nullable — Declared monetary value of the shipment for insurance purposes. Decimal numbers must use a dot (.) as the separator (e.g., 1234.56).
  - `insuranceCurrency` 'National' | 'Euro' | 'CurrencyOfDestinationCountry' | 'MobilePaymentService' | 'CreditCard' | 'ReturnCashCRC' — 0 = National, 1 = Euro, 2 = CurrencyOfDestinationCountry, 3 = MobilePaymentService, 4 = CreditCard, 5 = ReturnCashCRC
  - `returnAddress` Address
    - `name` string, nullable — Person or business name (max 35 characters)
    - `countryCode` string, nullable — Country code in ISO format (max 3 characters)
    - `zipcode` string, nullable — Postal code (max 10 characters)
    - `city` string, nullable — City name (max 35 characters)
    - `streetAndNumber` string, nullable — Street and street number (max 70 characters)
    - `telephone` string, nullable — Telephone (max 30 characters)
    - `fax` string, nullable — Fax (max 30 characters)
    - `notifyGSM` string, nullable — Mobile number for notifications (max 35 characters)
    - `notifyEmail` string, nullable — Email for sending notifications (max 70 characters)
  - `deliveryLocation` HubModel
    - `routeNumber` integer
    - `zipCode` string, nullable
    - `routeName` string, nullable
    - `hubId` integer
    - `hubName` string, nullable
    - `hubShortName` string, nullable
  - `returnDelivered` boolean — When true, the shipment is returned to sender automatically after a successful delivery confirmation.
  - `deliveryUntil12` boolean — When true, Requests delivery before 12:00 noon. Subject to service availability in the delivery area.
  - `documentCollection` boolean — Set true for Document collection service.
  - `eDocumentCollection` boolean — Set true for Electronic document collection service.
  - `personalDelivery` boolean — Set true for Personal delivery Service
  - `saturdayDelivery` boolean — Set true for Saturday delivery service
  - `flexService` boolean — Set true for Flex Service
  - `guaranteedDelivery` boolean — Set true for Guaranteed delivery service
  - `virtualShipment` boolean — Set true for Virtual shipment service
  - `isAutoRedirectRequested` boolean — When true, the system automatically redirects the shipment to an parcelshop/parcellocker location within an available distance. Customer should be allowed to use this action

## Response `200`

OK

- ClientAPICreateShipmentResult
  - `status` 'OK' | 'Error' | 'ValidationFailed' — 0 = OK, 1 = Error, 2 = ValidationFailed
  - `validations` ClientAPIValidation[], nullable
    - `code` integer
    - `message` string, nullable
    - `params` object, nullable
  - `error` ClientAPIError
    - `code` integer
    - `message` string, nullable
    - `stackTrace` string, nullable
    - `innerException` ClientAPIError — recursive
    - `validations` ClientAPIValidation[], nullable
      - `code` integer
      - `message` string, nullable
      - `params` object, nullable
    - `messageParams` string[], nullable
    - `payload` JToken[]
  - `shipmentid` integer — ID of the created shipment. Use this value with ShipmentsById to retrieve full shipment details.
  - `pickuptime` string, nullable — Assigned pickup start time. May change if the shipment is committed or pickup is requested at a later date.
  - `pickupendtime` string, date-time, nullable — Assigned pickup end time. May change if the shipment is committed or pickup is requested at a later date.
  - `deliverytime` string, nullable — Expected delivery start time, calculated based on the assigned pickup window.
  - `deliveryendtime` string, nullable — Expected delivery end time, calculated based on the assigned pickup window.
  - `cargoIDs` string[], nullable — List of cargo IDs assigned to this shipment. Populated only for cargo-type shipments.
  - `traceID` string, nullable — Correlation trace ID for this API call. Include this value when reporting issues for faster diagnosis.

---

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