---
title: "Submit an order"
method: POST
path: "/v1/shops/{shop_id}/orders.json"
tags: ["Orders"]
---

# Submit an order

`POST /v1/shops/{shop_id}/orders.json`

Submit an order

## Request body

- SubmitOrderRequest
  - `external_id` string, nullable
  - `label` string, nullable
  - `line_items` union[], required
    - union
      - LineItemWithProduct
        - `product_id` string, required
        - `variant_id` integer, required
        - `quantity` integer, required
        - `external_id` string, nullable
        - `personalisation` Personalisation — Attaches a personalization created via the Create a personalization configuration endpoint to an order line item.
          - `personalisation_strategy` string, nullable — Pass this value exactly as returned by the Create a personalization configuration response — it is an opaque value and should not be constructed manually. The one value worth knowing about explicitly is `manual`, which indicates a mapping issue caused by a label inconsistency (the personalizable product was changed). The order will require manual adjustment from the merchant and won't be sent to production automatically.
          - `personalisation_instructions` string, nullable — Pass this value exactly as returned by the Create a personalization configuration response. It is an opaque reference token for most strategies, or human-readable free text when personalisation_strategy is manual.
          - `buyer_request` string, nullable
          - `layers` PersonalisationLayer[], nullable
            - `personalisation_id` string, required
            - `name` string, required
            - `layer_type` string, required
            - `text_input` string, nullable
            - `image_id` string, nullable
          - `personalisation_buyer_confirmation` PersonalisationBuyerConfirmation
            - `approved` boolean, required
            - `source` string, required
            - `date` string, date-time, required
            - `ip_address` string, nullable
            - `user_agent` string, nullable
        - `personalisation_instructions` string, nullable — Deprecated. Use personalisation.personalisation_instructions instead.
      - LineItemWithBlueprint
        - `print_provider_id` integer, required
        - `blueprint_id` integer, required
        - `variant_id` integer, required
        - `print_areas` union
          - PrintAreasSimple
          - PrintAreasAdvanced
        - `print_details` PrintDetails
          - `print_on_side` string, nullable
        - `quantity` integer, required
        - `external_id` string, nullable
        - `personalisation` Personalisation — Attaches a personalization created via the Create a personalization configuration endpoint to an order line item.
          - `personalisation_strategy` string, nullable — Pass this value exactly as returned by the Create a personalization configuration response — it is an opaque value and should not be constructed manually. The one value worth knowing about explicitly is `manual`, which indicates a mapping issue caused by a label inconsistency (the personalizable product was changed). The order will require manual adjustment from the merchant and won't be sent to production automatically.
          - `personalisation_instructions` string, nullable — Pass this value exactly as returned by the Create a personalization configuration response. It is an opaque reference token for most strategies, or human-readable free text when personalisation_strategy is manual.
          - `buyer_request` string, nullable
          - `layers` PersonalisationLayer[], nullable
            - `personalisation_id` string, required
            - `name` string, required
            - `layer_type` string, required
            - `text_input` string, nullable
            - `image_id` string, nullable
          - `personalisation_buyer_confirmation` PersonalisationBuyerConfirmation
            - `approved` boolean, required
            - `source` string, required
            - `date` string, date-time, required
            - `ip_address` string, nullable
            - `user_agent` string, nullable
        - `personalisation_instructions` string, nullable — Deprecated. Use personalisation.personalisation_instructions instead.
      - LineItemWithSku
        - `sku` string, required
        - `quantity` integer, required
        - `external_id` string, nullable
        - `personalisation` Personalisation — Attaches a personalization created via the Create a personalization configuration endpoint to an order line item.
          - `personalisation_strategy` string, nullable — Pass this value exactly as returned by the Create a personalization configuration response — it is an opaque value and should not be constructed manually. The one value worth knowing about explicitly is `manual`, which indicates a mapping issue caused by a label inconsistency (the personalizable product was changed). The order will require manual adjustment from the merchant and won't be sent to production automatically.
          - `personalisation_instructions` string, nullable — Pass this value exactly as returned by the Create a personalization configuration response. It is an opaque reference token for most strategies, or human-readable free text when personalisation_strategy is manual.
          - `buyer_request` string, nullable
          - `layers` PersonalisationLayer[], nullable
            - `personalisation_id` string, required
            - `name` string, required
            - `layer_type` string, required
            - `text_input` string, nullable
            - `image_id` string, nullable
          - `personalisation_buyer_confirmation` PersonalisationBuyerConfirmation
            - `approved` boolean, required
            - `source` string, required
            - `date` string, date-time, required
            - `ip_address` string, nullable
            - `user_agent` string, nullable
        - `personalisation_instructions` string, nullable — Deprecated. Use personalisation.personalisation_instructions instead.
  - `shipping_method` integer, nullable
  - `is_printify_express` boolean, nullable
  - `is_economy_shipping` boolean, nullable
  - `send_shipping_notification` boolean, nullable
  - `address_to` AddressTo, required
    - `first_name` string
    - `last_name` string
    - `region` string, nullable
    - `address1` string
    - `address2` string
    - `city` string
    - `zip` string
    - `email` string, email
    - `phone` string
    - `country` string
    - `company` string, nullable

## Response `200`

Successful operation

- OrderCreated
  - `id` string

## Other responses

- `400` — Error response

## Changes

- **2026-08-27** `ed97a9d13fe7` — 6 info
  - added the new optional request property `line_items/items/oneOf[#/components/schemas/lineItemWithBlueprint]/personalisation`
  - added the new optional request property `line_items/items/oneOf[#/components/schemas/lineItemWithBlueprint]/personalisation_instructions`
  - added the new optional request property `line_items/items/oneOf[#/components/schemas/lineItemWithProduct]/personalisation`
  - added the new optional request property `line_items/items/oneOf[#/components/schemas/lineItemWithProduct]/personalisation_instructions`
  - …2 more

[Change history](https://skmtc.dev/printify/apis/printify-public-api/changes/v1/shops/:shop_id/orders.json/post.md)

---

[API](https://skmtc.dev/printify/apis/printify-public-api.md) · [All operations](https://skmtc.dev/printify/apis/printify-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/printify/printify-public-api/revisions/ed97a9d13fe7/schema)
