---
title: "Create Order"
method: POST
path: "/stores/{storeId}/orders"
tags: ["Orders"]
---

# Create Order

`POST /stores/{storeId}/orders`

Create a new order in the system with line items, customer information, and shipping details. Requires the [`orders_write`](/docs/api-reference/scopes) scope.

## Request body

- OrdersApiCreateOrderRequestSchema — Request body for creating an order.
  - `orderId` string, required — Unique identifier for the order.
  - `createdAt` string, date-time, required — ISO 8601 date string for when the order was created.
  - `lineItems` OrdersApiLineItemSchema[], required — List of line items in the order.
    - `id` string, required — Unique identifier for the line item.
    - `productId` string, required — Identifier for the product.
    - `variantId` string, nullable — Identifier for the product variant.
    - `title` string, required — Title/name of the product.
    - `sku` string, nullable — SKU of the product.
    - `quantity` integer, required — Quantity of the product ordered.
    - `price` number, nullable — Price per unit of the product before discounts, as a decimal amount in the order's currency (e.g. $79.99, not 7999 cents).
    - `imageUrl` string, nullable — URL to the product image.
    - `discount` number, nullable — Total discount amount applied to this line item, as a decimal amount in the order's currency (e.g. $79.99, not 7999 cents).
  - `customer` OrdersApiCustomerSchema — Customer information.
    - `id` string, nullable — Customer ID from the external system.
    - `email` string, nullable — Customer email address.
    - `phoneNumber` string, nullable — Customer phone number.
    - `name` string, nullable — Customer full name.
    - `firstName` string, nullable — Customer first name.
    - `lastName` string, nullable — Customer last name.
  - `shipping` OrdersApiShippingSchema — Shipping information.
    - `method` string, nullable — Shipping method name.
    - `cost` number, nullable — Shipping cost, as a decimal amount in the order's currency (e.g. $79.99, not 7999 cents).
    - `address` OrdersApiShippingAddressSchema — Shipping address.
      - `address1` string, nullable — Primary address line.
      - `address2` string, nullable — Secondary address line.
      - `city` string, nullable — City.
      - `province` string, nullable — State or province.
      - `country` string, nullable — Country.
      - `postalCode` string, nullable — Postal or zip code.
  - `totalPrice` number, nullable — Total order price including tax and shipping, as a decimal amount in the order's currency (e.g. $79.99, not 7999 cents).
  - `subtotalPrice` number, nullable — Subtotal price excluding tax and shipping, as a decimal amount in the order's currency (e.g. $79.99, not 7999 cents).
  - `totalTax` number, nullable — Total tax amount, as a decimal amount in the order's currency (e.g. $79.99, not 7999 cents).
  - `totalDiscount` number, nullable — Total discount amount applied to the order (e.g. coupon codes, promotions), as a decimal amount in the order's currency (e.g. $79.99, not 7999 cents).
  - `billingAddress` OrdersApiBillingAddressSchema — Billing address.
    - `address1` string, nullable — Primary address line.
    - `address2` string, nullable — Secondary address line.
    - `city` string, nullable — City.
    - `province` string, nullable — State or province.
    - `country` string, nullable — Country.
    - `postalCode` string, nullable — Postal or zip code.
  - `tags` string[], nullable — Optional tags associated with the order.
  - `currencyCode` string, nullable — Currency code from the ISO 4217 standard (e.g., USD, EUR, GBP).
  - `locationId` string, nullable — Optional. Pin this order to a specific fulfillment location. Must be a location id (`loc_...`) returned by `GET /inventory-levels` — either one of your own warehouses or a location at a linked 3PL fulfillment service. When provided, the fulfillment group's origin address is sourced from the location row. Omit to use your team's default origin address.

## Response `200`

Success

- OrdersApiCreateOrderResponseSchema — Successful order creation response.
  - `orderId` string, required — Internal Redo order ID.
  - `externalOrderId` string, required — Original external order ID provided in the request.

## Other responses

- `400` — Bad Request (validation error)
- `401` — Unauthorized (invalid or missing API token)
- `409` — Conflict (duplicate order ID)
- `default` — Error

---

[API](https://skmtc.net/redoapp/apis/redo-api.md) · [All operations](https://skmtc.net/redoapp/apis/redo-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/redoapp/redo-api/revisions/119714540a45/schema)
