PrintNowPrintNowDocs

Orders

Retrieve order details, download print-ready files, and update order/item statuses via the Enterprise API.

The Orders endpoints let you retrieve full order details including line items, addresses, and payment information. You can download print-ready files as ZIP archives, mark orders or individual items as shipped with tracking numbers, and update order statuses with comments and notification controls.

Endpoints

MethodEndpointDescription
GET/api/v2/order/{orderId}Retrieve an order
GET/api/v2/order/{orderId}/downloadDownload all order files as ZIP
GET/api/v2/order/{orderId}/download/{itemId}Download a single item's files as ZIP
GET/api/v2/order/{orderId}/assets/{itemId}Download an item's source assets as ZIP
PATCH/api/v2/order/{orderId}/shippedMark entire order as shipped
PATCH/api/v2/order/{orderId}/shipped/{itemId}Mark a single item as shipped
PATCH/api/v2/order/{orderId}/statusUpdate status for entire order
PATCH/api/v2/order/{orderId}/status/{itemId}Update status for a single item

Get Order

Retrieve full order details including customer, addresses, payment, line items with options, and checkout fields.

GET /api/v2/order/{orderId}

Example Request

curl -X GET https://api.printnow.com/api/v2/order/5001 \
  -u "YOUR_TOKEN:YOUR_KEY"

Example Response

{
  "storefront": "My Print Store",
  "id": 5001,
  "is_archived": false,
  "is_deleted": false,
  "integration_id": "EXT-12345",
  "status": "New Order",
  "customer": {
    "id": 12345,
    "first_name": "Jane",
    "last_name": "Smith",
    "email": "jane@example.com",
    "username": "janesmith"
  },
  "shipping_address": {
    "id": 100,
    "name": "Office",
    "first_name": "Jane",
    "last_name": "Smith",
    "line_1": "123 Main St",
    "city": "New York",
    "state": "NY",
    "postal_code": "10001",
    "country_code": "US",
    "is_residential": false
  },
  "billing_address": { },
  "payment_creditcard": true,
  "payment_check": false,
  "payment_cod": false,
  "payment_po": false,
  "payment_invoice": false,
  "payment_paypal": false,
  "payment_reference": "ch_abc123",
  "payment_avscode": "Y",
  "payment_cvcode": "M",
  "card_type": "Visa",
  "card_number": "4242",
  "tax_total": 8.75,
  "shipping_total": 12.50,
  "sub_total": 125.00,
  "promotion_total": 10.00,
  "promotion_code": "SAVE10",
  "created_on": "2026-01-20T09:15:00Z",
  "shipped_on": null,
  "shipping_provider": "UPS",
  "shipping_service": "Ground",
  "items": [
    {
      "id": 8001,
      "product_id": 42,
      "name": "Business Cards",
      "status": "New Order",
      "quantity": 500,
      "sub_total": 125.00,
      "base_price": 100.00,
      "options_price": 25.00,
      "markup_price": 0.00,
      "image_fee": 0.00,
      "download_fee": 0.00,
      "weight": 1.5,
      "created_on": "2026-01-20T09:15:00Z",
      "due_on": "2026-01-25T00:00:00Z",
      "item_number": "BC-001",
      "model_number": "STD-BC",
      "integration_id": "SKU-BC-500",
      "vendor": "Print Vendor Inc",
      "notes": "Please use matte finish",
      "reorder_ref": "REF-123",
      "options": [
        { "name": "Paper Stock", "value": "14pt Matte", "option_integration_id": "OPT-1", "value_integration_id": "VAL-1" }
      ],
      "parametric": null
    }
  ],
  "checkout_fields": [
    { "name": "PO Number", "value": "PO-2026-001" }
  ]
}

Order Response Fields

FieldTypeDescription
storefrontstringName of the storefront where the order was placed.
idintegerUnique order ID.
is_archivedbooleanWhether the order has been archived in the admin.
is_deletedbooleanWhether the order has been deleted in the admin.
integration_idstringExternal integration identifier, if the order was created via an external system.
statusstringCurrent order status label (e.g., "New Order", "In Production", "Shipped").
customerobjectFull Customer object for the buyer.
shipping_addressobjectShipping Address object.
billing_addressobjectBilling Address object.
payment_creditcardbooleanPaid by credit card.
payment_checkbooleanPaid by check.
payment_codbooleanPaid cash on delivery.
payment_pobooleanPaid by purchase order.
payment_invoicebooleanPaid by invoice.
payment_paypalbooleanInferred: true when none of the other payment flags are set. This is not stored explicitly but calculated -- if no other payment method was recorded, PayPal is assumed.
payment_referencestringPayment gateway transaction reference (e.g., Stripe charge ID).
payment_avscodestringAddress Verification System response code from the payment gateway.
payment_cvcodestringCard Verification response code from the payment gateway.
card_typestringCredit card brand (Visa, Mastercard, etc.). Only present for credit card payments.
card_numberstringLast 4 digits of the credit card. Only present for credit card payments.
check_numberstringCheck number. Only present for check payments.
po_numberstringPurchase order number.
invoice_numberstringInvoice number.
tax_totaldecimalTotal tax amount.
shipping_totaldecimalTotal shipping cost.
sub_totaldecimalOrder subtotal (sum of line item totals).
promotion_totaldecimalTotal discount amount from promotions.
promotion_codestringPromotion code applied to the order, if any.
created_ondatetimeUTC timestamp when the order was placed.
shipped_ondatetimeUTC timestamp when the order was marked as shipped. Null if not yet shipped.
shipping_providerstringShipping carrier name (e.g., "UPS", "FedEx").
shipping_servicestringShipping service level (e.g., "Ground", "2-Day").
itemsarrayArray of Order Item objects.
checkout_fieldsarrayArray of custom checkout field name/value pairs configured in the storefront.

Order Item Fields

FieldTypeDescription
idintegerUnique line item ID.
product_idintegerID of the ordered product.
namestringProduct name.
statusstringCurrent status of this line item (items can have different statuses within the same order).
quantityintegerOrdered quantity.
sub_totaldecimalLine item total price.
base_pricedecimalBase product price before options and markups.
options_pricedecimalTotal price of selected options.
markup_pricedecimalService markup amount.
image_feedecimalFee for stock images used in the design.
download_feedecimalFee for downloadable content.
weightdecimalItem weight for shipping calculations.
created_ondatetimeUTC timestamp when the item was created.
due_ondatetimeDue date for the item, if set.
item_numberstringProduct item/SKU number. Pulled from the original product template if this is a customized copy.
model_numberstringProduct model number. Pulled from the original product template if this is a customized copy.
integration_idstringExternal integration identifier. Pulled from the original product template if this is a customized copy.
vendorstringAssigned vendor name.
notesstringCombined product and order item comments.
reorder_refstringReference for reorder tracking.
optionsarrayArray of selected Option Item objects.
parametricarrayArray of Parametric Property objects for Print CAD products. Null for non-parametric products.

Option Item Fields

FieldTypeDescription
namestringOption name (e.g., "Paper Stock", "Finish").
valuestringSelected option value (e.g., "14pt Matte").
option_integration_idstringExternal integration ID for the option, if configured.
value_integration_idstringExternal integration ID for the selected value, if configured.

Parametric Property Fields

For products designed with Print CAD, parametric dimensions and configuration are included.

FieldTypeDescription
namestringProperty name (e.g., "blankWidth", "blankHeight", "standard", or custom variable names).
valuestringProperty value. Dimensions are converted from mm to the product's configured unit system.

Address Object

FieldTypeDescription
idintegerAddress ID.
namestringAddress label (e.g., "Home", "Office").
companystringCompany name.
first_namestringRecipient first name.
last_namestringRecipient last name.
line_1stringAddress line 1.
line_2stringAddress line 2.
line_3stringAddress line 3.
line_4stringAddress line 4.
citystringCity.
statestringState or province.
postal_codestringPostal/ZIP code.
phonestringPhone number.
emailstringEmail address.
country_codestringCountry code.
is_residentialbooleanWhether the address is residential (affects shipping rates).

Download Order

Download all print-ready files for an order as a ZIP archive. All items in the order must have completed the file merge process before download is available.

GET /api/v2/order/{orderId}/download

Returns a application/zip file stream with filename order-{orderId}.zip.

If any items have not completed the merge process, returns 409 Conflict with a Retry-After: 60 header. Poll again after the suggested interval.

Download Item

Download print-ready files for a single order item as a ZIP archive.

GET /api/v2/order/{orderId}/download/{itemId}

Returns a application/zip file stream with filename item-{itemId}.zip.

If the item has not completed the merge process, returns 409 Conflict with a Retry-After: 30 header.

Download Item Assets

Download source design assets for an order item as a ZIP archive. For custom-design products, this returns the uploaded design files. For editor-designed products, this returns the high-resolution images used in the design.

GET /api/v2/order/{orderId}/assets/{itemId}

Returns a application/zip file stream with filename item-assets-{itemId}.zip.

Mark Order Shipped

Mark all items in an order as shipped. This sets the shipped date, updates all item statuses to the "Order Shipped" status, triggers the order_updated webhook, and sends the "Order Shipped" email notification to the customer.

PATCH /api/v2/order/{orderId}/shipped

Request Body (Optional)

{
  "tracking_number": "1Z999AA10123456784"
}

Tracking numbers are appended to any existing tracking numbers on the order (duplicates are ignored). Returns 204 No Content on success.

If the storefront does not have an "Order Shipped" status configured, returns 400 Bad Request.

Mark Item Shipped

Mark a single order item as shipped while leaving other items unchanged.

PATCH /api/v2/order/{orderId}/shipped/{itemId}

Same request body and behavior as Mark Order Shipped, but only updates the specified item's status.

Update Order Status

Update all items in an order to a specific status. This is more flexible than the shipped endpoints -- you can set any status configured in the storefront, add comments, include tracking numbers, and control who gets notified.

PATCH /api/v2/order/{orderId}/status

Request Body

FieldTypeRequiredDescription
order_statusstringYesTarget status name. Must match an existing status on the storefront (case-insensitive). Use the Get Status List endpoint to discover available statuses.
commentsstringNoComments to include in the order history entry. Supports multiple lines.
tracking_numberstringNoTracking number to append to the order.
user_initialsstringNoInitials to record in the order history (identifies who made the change).
notify_customerbooleanNoWhether to send the status change email to the customer. Defaults to false.
notify_vendorbooleanNoWhether to send vendor purchase order emails to all vendors on the order. Defaults to false.

Example Request

curl -X PATCH https://api.printnow.com/api/v2/order/5001/status \
  -u "YOUR_TOKEN:YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "order_status": "In Production",
    "comments": "Sent to press",
    "user_initials": "JS",
    "notify_customer": true,
    "notify_vendor": false
  }'

Returns 204 No Content on success. The status change is recorded in the order history with an "Updated via API" note. If the target status is a shipping status (associated with the "Order Shipped" email template), the order's shipped date is also set. Triggers the order_updated webhook.

Update Item Status

Update a single item's status within an order.

PATCH /api/v2/order/{orderId}/status/{itemId}

Same request body and behavior as Update Order Status, but only affects the specified item.

Error Responses

CodeMessageCause
404Order not found.No order with this ID exists under your license.
404Item not found.No order item with this ID exists within the specified order.
409All items have not completed merge process.Download requested before print-ready files are generated. Retry after the Retry-After header duration.
409Item has not completed merge process.Single-item download requested before that item's files are ready.
400Bad RequestMark Shipped called on a storefront without an "Order Shipped" status configured.
  • Storefronts — retrieve order statuses and search orders across storefronts
  • Webhooks — receive order_created and order_updated event notifications
  • Orders — manage orders and update statuses in the admin UI

On this page