---
search:
  tags:
    - Operations
    - POST
seo:
  description: >-
    Places the order a draft describes, using the options, pricing, and defaults
    that draft… Reference for the POST /{id}/order endpoint in the Draft Orders
    API.
sidebar:
  label: Create order from draft
  badge: POST
title: Create order from draft
type: openapi-operation
---
Places the order a draft describes, using the options, pricing, and defaults that draft resolved.

The draft is addressed by the `id` returned from `POST /draft-orders`; nothing about the order can be changed here. To change it, create a new draft and place that one instead. A draft can only be placed once: a second request for a draft that already has an order returns 409 `DRAFT_ORDER_ALREADY_PLACED`, naming the order it became.

Pass an `idempotencyKey` to make retries safe: resubmitting the same draft with the same key within 5 minutes returns the order already placed instead of placing a second one. This matters on failure: a 5xx response or a timeout does not guarantee the order was not placed, so retry only with the same `idempotencyKey`.

A draft that does not exist and a draft belonging to another organization both return 404, so the endpoint cannot be used to discover which draft ids exist.

Validation runs at placement exactly as it does for `POST /orders`, so a draft that priced cleanly can still be rejected with 400 if something it depends on — availability, a fulfillment date, a payment method — has changed since it was drafted. The codes are the ones listed on `POST /orders`.

`POST /{id}/order`
