---
title: "upsertOrders - Upsert orders"
method: POST
path: "/v1/orders"
tags: ["Orders"]
---

# upsertOrders - Upsert orders

`POST /v1/orders`

<div class="extension-title">Description</div>

Use this API to synchronize orders with Mirakl Connect.

- The operation is **not partially successful**: if any order in the payload is invalid, the entire request is rejected.
- This API does not support PATCH operations. All fields must be sent with each upsert request to ensure the complete update of the order data.
- Updates whose `channel_updated_at` timestamp is older than the value already stored in Connect are silently ignored (anti-replay guard).


<div class="api-description-extension">
<div class="extension-title">Call Frequency</div>

<div class="recommended-call-frequency">Recommended usage: 20 / sec</div>
<div class="max-call-frequency">Maximum usage: 30 / sec</div>
</div>

## Request body

- UpsertOrdersRequest
  - `orders` OrderRequest[], required — List of orders to create or update.
    - `billing_info` BillingInfoRequest — Billing information for invoice and payment purposes. Optional.
      - `address` AddressRequest
        - `additional_info` string — Additional delivery instructions or notes.
        - `city` string, required — City.
        - `company` string — Company name, if applicable.
        - `country` string — Country name.
        - `country_iso_code` string — ISO 3166-1 alpha-3 country code (e.g. FRA, USA, DEU).
        - `first_name` string — Recipient's first name.
        - `last_name` string, required — Recipient's last name.
        - `phone` string — Phone number of the recipient.
        - `state` string — State or region.
        - `street` string, required — Street name and number.
        - `street_additional_info` string — Additional street information (apartment, floor, building, etc.).
        - `zip_code` string — Postal or ZIP code.
    - `channel_order_id` string, required — Unique identifier of the order on the channel. Must be unique across all orders of the channel. Combined with `origin.channel_id`, it forms the global Connect order identifier.
    - `channel_updated_at` string, date-time, required — Date and time of the last update on the channel. Connect uses this timestamp to handle updates versioning: an order is updated only if this value is greater or equal to the current stored value in Connect. This means that an update whose `channel_updated_at` is older than the currently stored value will be silently ignored.
    - `created_at` string, date-time, required — Date and time when the order was placed on the channel.
    - `custom_attributes` CustomAttributeRequest[] — Custom attributes
      - `id` string, required — Attribute's id
      - `type` string, required — The attribute's type Enum: `"STRING"`, `"NUMERIC"`, `"BOOLEAN"`, `"DATE"`, `"LIST"`
    - `fulfillment` FulfillmentRequest, required
      - `code` string — Identifier of the fulfillment partner. Only meaningful when `type` is `FULFILLED_BY_PARTNER`. Ignored for `FULFILLED_BY_SELLER`.
      - `type` string, required — Indicates who is responsible for physically fulfilling the order. Enum: `"FULFILLED_BY_SELLER"`, `"FULFILLED_BY_PARTNER"`
    - `has_incident` boolean — Indicates whether the order has an active incident or dispute.
    - `order_lines` OrderLineRequest[], required — Lines composing the order. Each line corresponds to one distinct product in a given quantity.
      - `adjustments` AdjustmentRequest[] — Post-order modifications on this line, such as partial cancellations or refunds. Each adjustment represents a discrete event that occurred after the order was placed. Adjustments are append-only: send all past adjustments on every upsert.
        - `channel_adjustment_id` string, required — Unique identifier of the adjustment on the channel.
        - `created_at` string, date-time, required — Date and time when the adjustment was created on the channel.
        - `price` Money, required
          - `amount` number, required — Monetary amount. Must be zero or positive.
          - `currency` string, required — ISO 4217 currency code (e.g. EUR, USD, GBP).
        - `quantity` integer, required — Number of units affected by this adjustment. For a `CANCELATION`, this is the number of units cancelled. For a `REFUND`, this is the number of units for which the refund applies.
        - `reason` string, required — Business reason for the adjustment. Enum: `"CUSTOMER_CANCELATION"`, `"OUT_OF_STOCK"`, `"RETURN"`, `"ITEM_NOT_RECEIVED"`, `"AGREEMENT"`, `"DEFECT"`, `"UNABLE_TO_DELIVER"`, `"CHANNEL_SPECIFIC"`
        - `shipping_price` Money, required
          - `amount` number, required — Monetary amount. Must be zero or positive.
          - `currency` string, required — ISO 4217 currency code (e.g. EUR, USD, GBP).
        - `shipping_taxes` TaxRequest[] — Taxes on the adjusted shipping amount. These amounts are **not** included in `shipping_price`.
          - `amount` Money, required
            - `amount` number, required — Monetary amount. Must be zero or positive.
            - `currency` string, required — ISO 4217 currency code (e.g. EUR, USD, GBP).
          - `channel_collectible` Money
            - `amount` number, required — Monetary amount. Must be zero or positive.
            - `currency` string, required — ISO 4217 currency code (e.g. EUR, USD, GBP).
          - `code` string, required — Identifier of the tax type, as defined by the channel (e.g. VAT, GST, HST).
          - `rate` number — Tax rate expressed as a decimal (e.g. `0.20` for 20%).
          - `seller_collectible` Money
            - `amount` number, required — Monetary amount. Must be zero or positive.
            - `currency` string, required — ISO 4217 currency code (e.g. EUR, USD, GBP).
        - `taxes` TaxRequest[] — Refunded or cancelled taxes. These amounts should **not** be included in `price`.
          - `amount` Money, required
            - `amount` number, required — Monetary amount. Must be zero or positive.
            - `currency` string, required — ISO 4217 currency code (e.g. EUR, USD, GBP).
          - `channel_collectible` Money
            - `amount` number, required — Monetary amount. Must be zero or positive.
            - `currency` string, required — ISO 4217 currency code (e.g. EUR, USD, GBP).
          - `code` string, required — Identifier of the tax type, as defined by the channel (e.g. VAT, GST, HST).
          - `rate` number — Tax rate expressed as a decimal (e.g. `0.20` for 20%).
          - `seller_collectible` Money
            - `amount` number, required — Monetary amount. Must be zero or positive.
            - `currency` string, required — ISO 4217 currency code (e.g. EUR, USD, GBP).
        - `type` string, required — Nature of the adjustment. `CANCELATION` means units were removed from the line (quantity reduction); connect will release the corresponding stock reservation. `REFUND` means a monetary compensation was issued without changing the ordered quantity. Enum: `"REFUND"`, `"CANCELATION"`
      - `can_cancel` boolean, required — Whether the order line is currently eligible for cancellation.
      - `can_refund` boolean, required — Whether the order line is currently eligible for refund.
      - `channel_order_line_id` string, required — Unique identifier of the order line on the channel. Must be unique across **all** orders of the channel, not just within the current order.
      - `created_at` string, date-time, required — Date and time when the order line was created on the channel.
      - `custom_attributes` CustomAttributeRequest[] — Custom attributes
        - `id` string, required — Attribute's id
        - `type` string, required — The attribute's type Enum: `"STRING"`, `"NUMERIC"`, `"BOOLEAN"`, `"DATE"`, `"LIST"`
      - `price` Money, required
        - `amount` number, required — Monetary amount. Must be zero or positive.
        - `currency` string, required — ISO 4217 currency code (e.g. EUR, USD, GBP).
      - `product` ProductRequest, required
        - `id` string, required — Unique identifier of the product on the channel.
        - `thumbnail_url` string, uri — URL of a product image.
        - `title` string, required — Display name of the product as shown to the buyer.
      - `quantity` integer, required — Number of units ordered for this product.
      - `shipping_taxes` TaxRequest[] — Taxes applied to the shipping price. These amounts are **not** included in `total_shipping_price`.
        - `amount` Money, required
          - `amount` number, required — Monetary amount. Must be zero or positive.
          - `currency` string, required — ISO 4217 currency code (e.g. EUR, USD, GBP).
        - `channel_collectible` Money
          - `amount` number, required — Monetary amount. Must be zero or positive.
          - `currency` string, required — ISO 4217 currency code (e.g. EUR, USD, GBP).
        - `code` string, required — Identifier of the tax type, as defined by the channel (e.g. VAT, GST, HST).
        - `rate` number — Tax rate expressed as a decimal (e.g. `0.20` for 20%).
        - `seller_collectible` Money
          - `amount` number, required — Monetary amount. Must be zero or positive.
          - `currency` string, required — ISO 4217 currency code (e.g. EUR, USD, GBP).
      - `status` string, required — Current lifecycle status of the order line. Lines within the same order can have different statuses (e.g. one line shipped while another is still awaiting shipment). See `order.status` for the meaning of each value. Enum: `"AWAITING_ACCEPTANCE"`, `"AWAITING_FRAUD_CHECK"`, `"AWAITING_PAYMENT"`, `"AWAITING_SHIPMENT"`, `"CHANNEL_SPECIFIC"`, `"CLOSED"`, `"DELIVERED"`, `"SHIPPED"`
      - `status_reason` string — Reason that explains why this order line reached its current status. See `order.status_reason` for the meaning of each value. Enum: `"ACCEPTANCE_TIMEOUT"`, `"AUTOMATICALLY_CLOSED"`, `"CANCELED"`, `"FRAUD_CHECK_FAILED"`, `"FRAUD_CHECK_TIMEOUT"`, `"PAYMENT_TIMEOUT"`, `"REFUNDED"`, `"REFUSED"`, `"REFUSED_PAYMENT"`
      - `taxes` TaxRequest[] — Taxes applied to the product price. These amounts should **not** be included in `price`. Each entry represents a distinct tax type (e.g. VAT, GST).
        - `amount` Money, required
          - `amount` number, required — Monetary amount. Must be zero or positive.
          - `currency` string, required — ISO 4217 currency code (e.g. EUR, USD, GBP).
        - `channel_collectible` Money
          - `amount` number, required — Monetary amount. Must be zero or positive.
          - `currency` string, required — ISO 4217 currency code (e.g. EUR, USD, GBP).
        - `code` string, required — Identifier of the tax type, as defined by the channel (e.g. VAT, GST, HST).
        - `rate` number — Tax rate expressed as a decimal (e.g. `0.20` for 20%).
        - `seller_collectible` Money
          - `amount` number, required — Monetary amount. Must be zero or positive.
          - `currency` string, required — ISO 4217 currency code (e.g. EUR, USD, GBP).
      - `total_shipping_price` Money, required
        - `amount` number, required — Monetary amount. Must be zero or positive.
        - `currency` string, required — ISO 4217 currency code (e.g. EUR, USD, GBP).
      - `updated_at` string, date-time, required — Date and time of the last update of this order line on the channel.
    - `shipping_info` ShippingInfoRequest, required — Shipping destination and logistics information for the order.
      - `address` AddressRequest
        - `additional_info` string — Additional delivery instructions or notes.
        - `city` string, required — City.
        - `company` string — Company name, if applicable.
        - `country` string — Country name.
        - `country_iso_code` string — ISO 3166-1 alpha-3 country code (e.g. FRA, USA, DEU).
        - `first_name` string — Recipient's first name.
        - `last_name` string, required — Recipient's last name.
        - `phone` string — Phone number of the recipient.
        - `state` string — State or region.
        - `street` string, required — Street name and number.
        - `street_additional_info` string — Additional street information (apartment, floor, building, etc.).
        - `zip_code` string — Postal or ZIP code.
      - `carrier` string — Name of the carrier handling the shipment, as defined on the channel.
      - `delivery_date` object — Estimated delivery window communicated to the buyer.
        - `earliest` string, date-time, required — Earliest expected delivery date.
        - `latest` string, date-time, required — Latest expected delivery date.
      - `email` string, email — Email address of the recipient.
      - `method` string — Shipping service level or method name (e.g. standard, express, next-day).
      - `pudo_id` string — Identifier of the pick-up/drop-off point (PUDO) when the delivery targets a relay point, locker, or store rather than a home address.
      - `shipping_deadline` string, date-time — Latest date and time by which the seller must ship the order.
    - `status` string, required — Current lifecycle status of the order. - `AWAITING_FRAUD_CHECK`: Order is pending fraud verification before being confirmed. - `AWAITING_ACCEPTANCE`: Order has been placed and is waiting for the seller to accept or refuse it. - `AWAITING_PAYMENT`: Order has been accepted but payment has not yet been confirmed. - `AWAITING_SHIPMENT`: Order is paid and accepted, waiting for the seller to ship. - `SHIPPED`: Order has been handed to a carrier. - `DELIVERED`: Order has been delivered to the buyer. - `CLOSED`: Order lifecycle is complete (delivered, cancelled, or refunded). - `CHANNEL_SPECIFIC`: The order has a status specific to the channel that does not map to any standard Connect status. Use `status_reason` to carry additional context. Enum: `"AWAITING_ACCEPTANCE"`, `"AWAITING_FRAUD_CHECK"`, `"AWAITING_PAYMENT"`, `"AWAITING_SHIPMENT"`, `"CHANNEL_SPECIFIC"`, `"CLOSED"`, `"DELIVERED"`, `"SHIPPED"`
    - `status_reason` string — Reason that explains why the order reached its current status. Typically used for terminal or exceptional statuses (e.g. `CLOSED`, `CHANNEL_SPECIFIC`). - `ACCEPTANCE_TIMEOUT`: Seller did not accept the order within the acceptance deadline. - `AUTOMATICALLY_CLOSED`: Order was automatically closed by the channel. - `CANCELED`: Order was cancelled. - `FRAUD_CHECK_FAILED`: Order failed fraud verification. - `FRAUD_CHECK_TIMEOUT`: Fraud check was not completed within the deadline. - `PAYMENT_TIMEOUT`: Payment was not received within the deadline. - `REFUNDED`: Order was fully refunded. - `REFUSED`: Order was refused by the seller. - `REFUSED_PAYMENT`: Payment was refused. Enum: `"ACCEPTANCE_TIMEOUT"`, `"AUTOMATICALLY_CLOSED"`, `"CANCELED"`, `"FRAUD_CHECK_FAILED"`, `"FRAUD_CHECK_TIMEOUT"`, `"PAYMENT_TIMEOUT"`, `"REFUNDED"`, `"REFUSED"`, `"REFUSED_PAYMENT"`
    - `sub_channel_code` string — Code of the sub-channel
  - `origin` OriginRequest, required
    - `channel_id` string, required — Unique identifier of the sales channel
    - `channel_store_id` string, required — Store identifier on the sales channel.

## Response `204`

No Content

## Other responses

- `400` — Bad Request
- `404` — A critical resource was not found. This may occur if: - The channel or its technology is unknown to Connect - The store is unknown to Connect

---

[API](https://skmtc.net/mirakl/apis/mirakl-connect-channel-platform-apis.md) · [All operations](https://skmtc.net/mirakl/apis/mirakl-connect-channel-platform-apis/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/mirakl/mirakl-connect-channel-platform-apis/revisions/9cbcd9622613/schema)
