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

# Submit a Printify Express order

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

Submit a Printify Express order

## Request body

- ExpressOrderRequest
  - `external_id` string, nullable
  - `label` string, nullable
  - `line_items` LineItemWithProduct[], required
    - `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.
  - `shipping_method` integer, 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

- ExpressOrderResponse
  - `data` ExpressOrderItem[]
    - `type` string
    - `id` string
    - `attributes` ExpressOrderAttributes
      - `app_order_id` string, nullable
      - `fulfilment_type` string
      - `line_items` ExpressOrderLineItem[]
        - `product_id` string
        - `quantity` integer
        - `variant_id` integer
        - `print_provider_id` integer
        - `cost` integer
        - `shipping_cost` integer
        - `status` string
        - `metadata` LineItemMetadata
          - `title` string
          - `price` integer
          - `variant_label` string
          - `sku` string
          - `country` string
          - `external_id` string, nullable
        - `sent_to_production_at` string, date-time, nullable
        - `fulfilled_at` string, date-time, nullable

## Other responses

- `400` — Error response

## Changes

- **2026-08-27** `ed97a9d13fe7` — 2 info
  - added the new optional request property `line_items/items/personalisation`
  - added the new optional request property `line_items/items/personalisation_instructions`

[Change history](https://skmtc.dev/printify/apis/printify-public-api/changes/v1/shops/:shop_id/orders/express.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)
