> ## Documentation Index
> Fetch the complete documentation index at: https://www.commercengine.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a replacement shipment

> Creates a replacement shipment against an existing shipment. Use the `manual` payload to dispatch outside an integrated carrier, or the `auto` payload to fulfill through an integrated carrier with system-managed packing and rates.



## OpenAPI

````yaml https://openapi.commercengine.io/ce-admin.json post /pos/shipping/shipments/{reference_number}/replacement
openapi: 3.1.0
info:
  title: CE Admin APIs
  version: '1.0'
  summary: Comprehensive admin interface for managing your e-commerce platform
  description: >-
    Complete administrative API suite for Commerce Engine, providing powerful
    tools to manage products, orders, customers, inventory, analytics, and
    system configuration. Designed for administrators and backend integrations
    requiring full platform control.
  license:
    name: All Rights Reserved
    url: https://www.commercengine.io/contact-us
  contact:
    email: support@commercengine.io
    url: https://www.commercengine.io/contact-us
    name: Support
servers:
  - url: https://staging.api.commercengine.io/api/v1/{store_id}/admin
    description: Staging Server
    variables:
      store_id:
        default: store_id
        description: Store ID
  - url: https://prod.api.commercengine.io/api/v1/{store_id}/admin
    description: Prod Server
    variables:
      store_id:
        default: store_id
        description: Store ID
security:
  - Authorization: []
tags:
  - name: Analytics
    description: Analytics
  - name: Catalog
    description: Catalog
  - name: Coupons & promotions
    description: Coupons & promotions
  - name: Customers
    description: Customers
  - name: Filter Options
    description: Filter Options
  - name: Inventories
    description: Inventories
  - name: Marketplace
    description: Marketplace
  - name: Marketplace Catalog
    description: Marketplace Catalog
  - name: Media Gallery
    description: Media Gallery
  - name: Metrics
    description: Metrics
  - name: Orders
    description: Orders
  - name: Payments
    description: Payments
  - name: Payouts
    description: Payouts
  - name: POS
    description: POS
  - name: POSAdmin
    description: Admin endpoints to be used as proxy in pos
  - name: Segments
    description: Segments
  - name: Shipping
    description: Shipping
  - name: SSE
    description: SSE
  - name: Store
    description: Store
  - name: Webhooks
    description: Webhooks
paths:
  /pos/shipping/shipments/{reference_number}/replacement:
    post:
      tags:
        - POSAdmin
      summary: Create a replacement shipment
      description: >-
        Creates a replacement shipment against an existing shipment. Use the
        `manual` payload to dispatch outside an integrated carrier, or the
        `auto` payload to fulfill through an integrated carrier with
        system-managed packing and rates.
      operationId: pos-create-replacement-shipment
      parameters:
        - name: reference_number
          in: path
          description: Reference number of the original shipment being replaced.
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - $ref: >-
                    #/components/schemas/CreateReplacementShipmentWithManualMethod
                - $ref: '#/components/schemas/CreateReplacementShipmentWithAutoMethod'
                - $ref: >-
                    #/components/schemas/CreateReplacementShipmentForCollectInStore
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                  success:
                    type: boolean
components:
  schemas:
    CreateReplacementShipmentWithManualMethod:
      title: CreateReplacementShipmentWithManualMethod
      description: >-
        Replacement shipment payload when fulfilling through a manual courier
        (no carrier integration).
      type: object
      required:
        - warehouse_id
        - shipment_items
        - shipping_option
        - shipping_provider_id
        - packing_option
        - total_weight
        - expected_delivery_date
        - tracking_link
        - manual_shipping_charges
      properties:
        fulfillment_type:
          description: Set to `delivery` when the replacement is shipped to the customer.
          type: string
          const: delivery
        warehouse_id:
          description: The warehouse from which the replacement items will be shipped.
          type: string
        shipment_items:
          type: array
          items:
            $ref: '#/components/schemas/ShipmentItem'
        shipping_option:
          description: >-
            Set to `manual` to dispatch the shipment outside of an integrated
            carrier.
          enum:
            - manual
        shipping_provider_id:
          description: The manual shipping provider used to fulfill the replacement.
          type: string
        packing_option:
          description: The packing option for the replacement shipment.
          enum:
            - manual
            - auto
        boxes:
          description: The boxes for the replacement shipment.
          type: array
          items:
            $ref: '#/components/schemas/ShipmentBox'
        total_weight:
          description: >-
            Total shipment weight in kilograms, used for rate calculation by the
            carrier.
          type: number
        expected_delivery_date:
          description: The expected delivery date communicated to the customer.
          type:
            - string
            - 'null'
          format: date
        tracking_link:
          description: Optional tracking URL shared with the customer.
          type:
            - string
            - 'null'
        manual_shipping_charges:
          description: Shipping charges incurred for the manual dispatch.
          type:
            - number
            - 'null'
        reason:
          description: The reason for the replacement shipment.
          type: string
      x-tags:
        - Shipping
    CreateReplacementShipmentWithAutoMethod:
      title: CreateReplacementShipmentWithAutoMethod
      description: >-
        Replacement shipment payload when fulfilling through an integrated
        carrier.
      type: object
      required:
        - warehouse_id
        - shipment_items
        - shipping_option
        - shipping_provider_id
        - packing_option
        - total_weight
        - reason
      properties:
        fulfillment_type:
          description: Set to `delivery` when the replacement is shipped to the customer.
          type: string
          const: delivery
        warehouse_id:
          description: The warehouse from which the replacement items will be shipped.
          type: string
        shipment_items:
          type: array
          items:
            $ref: '#/components/schemas/ShipmentItem'
        shipping_option:
          description: >-
            Set to `auto` to dispatch the shipment through an integrated
            carrier.
          enum:
            - auto
        shipping_provider_id:
          description: The integrated shipping provider used to fulfill the replacement.
          type: string
        packing_option:
          description: >-
            Use `manual` to specify boxes explicitly, or `auto` to let the
            system pack on your behalf.
          enum:
            - auto
            - manual
        boxes:
          description: >-
            Box-wise packing breakdown. Required when `packing_option` is
            `manual`.
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/ShipmentBox'
        total_weight:
          description: >-
            Total shipment weight in kilograms, used for rate calculation by the
            carrier.
          type: number
        courier_company_id:
          description: >-
            Specific courier company to use. If omitted, the system selects the
            most suitable courier automatically.
          type:
            - string
            - 'null'
        reason:
          description: The reason for the replacement shipment.
          type: string
      x-tags:
        - Shipping
    CreateReplacementShipmentForCollectInStore:
      title: CreateReplacementShipmentForCollectInStore
      description: >-
        Replacement shipment payload when the customer collects the items from a
        store instead of having them delivered.
      type: object
      required:
        - warehouse_id
        - shipment_items
        - shipping_option
        - shipping_provider_id
        - packing_option
        - reason
      properties:
        fulfillment_type:
          description: >-
            Set to `collect-in-store` when the replacement is fulfilled via
            in-store pickup.
          type: string
          const: collect-in-store
        warehouse_id:
          description: The warehouse holding the replacement items for in-store pickup.
          type: string
        shipment_items:
          type: array
          items:
            $ref: '#/components/schemas/ShipmentItem'
        shipping_option:
          description: >-
            Set to `manual` since in-store pickup is handled outside of an
            integrated carrier.
          enum:
            - manual
        shipping_provider_id:
          description: >-
            The manual shipping provider associated with the in-store pickup
            flow.
          type: string
        packing_option:
          description: The packing option for the replacement shipment.
          enum:
            - manual
            - auto
        boxes:
          description: The boxes for the replacement shipment.
          type: array
          items:
            $ref: '#/components/schemas/ShipmentBox'
        reason:
          description: The reason for the replacement shipment.
          type: string
      x-tags:
        - Shipping
    ShipmentItem:
      title: ShipmentItem
      description: Shipment item model
      type: object
      required:
        - product_id
        - variant_id
        - quantity
      properties:
        product_id:
          type: string
        product_name:
          type: string
          readOnly: true
        variant_id:
          type:
            - string
            - 'null'
        variant_name:
          type:
            - string
            - 'null'
          readOnly: true
        product_image_url:
          type:
            - string
            - 'null'
          readOnly: true
        sku:
          type: string
          readOnly: true
        quantity:
          type: integer
        free_quantity:
          type: integer
        is_free_item:
          type: boolean
          readOnly: true
        selling_price:
          type: number
          format: double
    ShipmentBox:
      title: ShipmentBox
      type: object
      properties:
        box_name:
          type: string
        box_length:
          type: number
        box_width:
          type: number
        box_height:
          type: number
        box_weight:
          type: number
        items_count:
          type:
            - integer
            - 'null'
        box_count:
          type:
            - integer
            - 'null'
      x-tags:
        - Shipping
  securitySchemes:
    Authorization:
      type: http
      scheme: bearer

````