---
title: "PUT /v1/logistics/orders"
method: PUT
path: "/v1/logistics/orders"
tags: ["Logistics"]
---

# PUT /v1/logistics/orders

`PUT /v1/logistics/orders`

Creates a logistic order for a given process_id, customer and address.
 Must specify the provider and carrier to be used to create the pickup. 
 - Returns UNIMPLEMENTED (gRPC code 12) if the provider is `OPS`,
 meaning it didn't generated any action. 
 - Returns InvalidArgument (gRPC code 3) if the combination of 
 `return-method`, `provider`and `carrier` is not supported.

## Request body

- LogisticsCreateLogisticOrderRequest
  - `carrier` string — Carrier to be used for generating the pickup (DHL, UPS, Correos...) kwown & available for the given provider
  - `currency` string — Currency code (e.g. "EUR", "USD"). Falls back to EUR if empty.
  - `customer` ModelsCustomer — Customer Important! the alias at the end is for API docs generation @Description A generic customer in the Rever platform @name api.Customer
    - `email` string
    - `first_name` string
    - `last_name` string
    - `platform_customer_id` string — When available, this is the customer ID in the ecommerce platform
    - `rever_id` string — Unique ID in the rever platform
  - `customer_address` ModelsAddress — Address @Description generic address used in many scenarios @name api.Address
    - `address_line_1` string
    - `address_line_2` string
    - `city` string
    - `company` string
    - `country` string
    - `country_code` string
    - `email` string
    - `first_name` string
    - `last_name` string
    - `phone` string
    - `postcode` string
    - `rever_id` string — Unique ID in the rever platform
    - `state_province` string
    - `state_province_code` string
  - `ecommerce_group` string — ecommerce group
  - `ecommerce_id` string — Ecommerce associated to this logistic order
  - `ecommerce_order_id` string — Id of the original ecommerce order (if any) associated to this shipping
  - `ecommerce_warehouse_address` ModelsAddress — Address @Description generic address used in many scenarios @name api.Address
    - `address_line_1` string
    - `address_line_2` string
    - `city` string
    - `company` string
    - `country` string
    - `country_code` string
    - `email` string
    - `first_name` string
    - `last_name` string
    - `phone` string
    - `postcode` string
    - `rever_id` string — Unique ID in the rever platform
    - `state_province` string
    - `state_province_code` string
  - `exchange_flow` 'NO_EXCHANGE_FLOW' | 'OPEN' | 'ONE_ON_ONE' | 'OPEN_WITH_GIFT_CARD' | 'FULL', enum — Exchange flow of the return. Some carriers vary the label by this (e.g. CTT for Álvaro Moreno uses a different additional code on exchanges).
  - `legal_entity` LogisticsLegalEntity
    - `address` string
    - `company_name` string
    - `country` string
    - `email` string
    - `full_name` string
    - `phone` string
  - `line_items` LogisticsLogisticsLineItem[] — Line items
    - `custom_attributes` object — Free-form per-unit attributes propagated from the source platform.
    - `dimensions` LogisticsDimensions — Package dimensions for a single unit (one piece) of a product, in whole centimeters - i.e. the dimensions of the parcel/box the unit ships in, not the bare product itself. @Description Package dimensions for a single unit of a product in centimeters (parcel, not bare product) @name api.logistics.Dimensions
      - `height_cm` string — Package height in whole centimeters (sub-cm precision discarded).
      - `length_cm` string — Package length in whole centimeters (sub-cm precision discarded).
      - `width_cm` string — Package width in whole centimeters (sub-cm precision discarded).
    - `ean` string — European Article Number / barcode. Some platforms key order lines by EAN rather than SKU (e.g. Monta for colourfulrebel), so providers match on both.
    - `id` string — Id of the line item in the source platform
    - `name` string — Name of the line item (not necessarily the name of the product)
    - `product_return_reason` string — Return reason for this item (e.g. "DEFECTIVE"). Some carriers flag the shipment based on it (e.g. CTT marks defective Álvaro Moreno returns).
    - `quantity` integer — number of items of the same product
    - `sku` string — stock-keeping unit (SKU) from the source platform
    - `subtotal` string — sub total amount of the line before discounts and taxes
    - `total` string — total amount of the line including discounts and tax
    - `unit_price` string — unit price of a single item (no discounts, no taxes)
    - `weight` string — Per-unit weight in grams (NOT total line weight). Multiply by `quantity` for the full line weight. Propagated from ReturnLineItem.weight.
  - `line_items_type` string — Line items type used for customs/product data generation for some providers (e.g. UPS). Example values: - "random": send a single aggregated product line instead of real items - "real": send one product per returned item If empty, providers fall back to their default behaviour.
  - `order_number` string — Id of the original order (if any) associated to this shipping E-commerces uses this to match the original order when the package arrives to the warehouse
  - `order_purchased_at` string, date-time — When the original order was purchased. Used to scope order lookups on platforms that don't key orders by the shop's order number (e.g. Monta colourfulrebel, resolved via a date-windowed Reference search).
  - `original_carriers` string[] — Carriers that shipped the original outbound order (used to flag same-carrier returns).
  - `original_trackings` string — Original tracking numbers
  - `pickup_ranges` string[] — Pick-up time ranges. Only required for return_type = PICKUP
  - `platform_process_id` string — Id of the return process in the source platform. Some carriers use it as the client reference on the label (e.g. CTT for Álvaro Moreno).
  - `process_id` string — Id of the process that the pickup is associated to
  - `provider` string — Provider to be used for generating the pickup (SendCloud, OPS, etc).
  - `return_type` 'NO_RETURN_METHOD' | 'HOME_PICK_UP' | 'DROP_OFF_POINT' | 'DELIVERY_PICKUP' | 'IN_STORE', enum — Return method associated to the logistic order (PICKUP, DROP_OFF)
  - `settings` LogisticsLogisticSettings — LogisticSettings is deprecated this message is going to be removed when the dynamic return methods are fully rolled out
    - `logistic_config` LogisticsLogisticConfig[] — protolint:disable:next REPEATED_FIELD_NAMES_PLURALIZED
      - `carrier` string — carrier
      - `provider` string — provider
      - `service_id` string — Optional carrier-specific service id override from back office. When empty, logistics-api falls back to the carrier default service resolution.
    - `return_method` 'NO_RETURN_METHOD' | 'HOME_PICK_UP' | 'DROP_OFF_POINT' | 'DELIVERY_PICKUP' | 'IN_STORE', enum — Return method associated to the logistic order (PICKUP, DROP_OFF)
  - `vat_number` string — VAT Number
  - `weight_in_grams` integer — protolint:disable:next FIELD_NAMES_EXCLUDE_PREPOSITIONS Weight of the total sum of packags in grams

## Response `200`

OK

- LogisticsSaveLogisticOrderResponse
  - `order` ModelsLogisticOrder
    - `carrier` string
    - `currency_code` string
    - `id` string — Logistic Order ID
    - `original_carriers` string[] — Carriers that shipped the original outbound order.
    - `price` integer
    - `provider` string
    - `requires_customs` boolean — Whether the generated label was treated as a customs shipment.
    - `same_carrier_as_original` boolean — Whether the return label's carrier matches the original outbound carrier(s) (strict 1:1).
    - `shipments` ModelsShipment[]
      - `created_at` string, date-time
      - `delivery_date` string, date-time
      - `from` ModelsAddress — Address @Description generic address used in many scenarios @name api.Address
        - `address_line_1` string
        - `address_line_2` string
        - `city` string
        - `company` string
        - `country` string
        - `country_code` string
        - `email` string
        - `first_name` string
        - `last_name` string
        - `phone` string
        - `postcode` string
        - `rever_id` string — Unique ID in the rever platform
        - `state_province` string
        - `state_province_code` string
      - `id` string
      - `is_without_label` boolean
      - `logistic_order_id` string
      - `packages` ModelsPackage[]
        - `id` string
        - `label` string
        - `shipment_id` string
        - `weight_in_grams` integer
      - `process_id` string
      - `shipment_type` 'NO_RETURN_METHOD' | 'HOME_PICK_UP' | 'DROP_OFF_POINT' | 'DELIVERY_PICKUP' | 'IN_STORE', enum
      - `status` string
      - `to` ModelsAddress — Address @Description generic address used in many scenarios @name api.Address
        - `address_line_1` string
        - `address_line_2` string
        - `city` string
        - `company` string
        - `country` string
        - `country_code` string
        - `email` string
        - `first_name` string
        - `last_name` string
        - `phone` string
        - `postcode` string
        - `rever_id` string — Unique ID in the rever platform
        - `state_province` string
        - `state_province_code` string
      - `tracking_id` string
      - `tracking_url` string
      - `updated_at` string, date-time

---

[API](https://skmtc.net/itsrever/apis/rever-admin-api.md) · [All operations](https://skmtc.net/itsrever/apis/rever-admin-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/itsrever/rever-admin-api/revisions/8506f9062fca/schema)
