Skip to content

Get Order

GET /cdp/commerce/orders/{id} — fetch a single order by its Shopify/external id, bound to your shop scope. The order is served from the local synced store and returned as a normalized contract (line items and processed_at are derived from the stored payload) — the raw Shopify payload is never exposed verbatim.

Requires the beta:cdp-commerce permission on your brand.

GET /cdp/commerce/orders/{id}
Authorization: Bearer vyg_…
ParamTypeDescription
idstringThe order’s Shopify/external order id.
{
"id": "b2c1…",
"external_id": "4501234567890",
"number": "1001",
"state": "complete",
"billing_status": "complete",
"total": "120.00",
"currency_code": "USD",
"customer": {
"contact_id": "c9f0…",
"shopify_customer_id": "5483611717768"
},
"created_at": "2026-03-02T14:21:00.000Z",
"processed_at": "2026-03-02T14:22:10.000Z",
"updated_at": "2026-03-02T14:22:10.000Z",
"recovered_at": null,
"line_items": [
{
"title": "Product 2",
"quantity": 2,
"price": "5.00",
"sku": "jojo",
"product_id": "4616065155208",
"variant_id": "32547470704776",
"variant_title": ""
}
]
}
FieldTypeDescription
idstringInternal order id.
external_idstringShopify/external order id (the {id} you fetched by).
numberstringHuman-facing order number.
state / billing_statusstringOrder state and billing status.
total / currency_codestringOrder total and its currency.
customerobjectLocal contact_id and, when derivable, the shopify_customer_id.
created_at / processed_at / updated_atstring | nullOrder timestamps.
recovered_atstring | nullWhen the order was recovered, if applicable.
line_itemsarrayNormalized line items ([] when the stored payload has none).
Terminal window
curl -s "https://cdp.vyg.app/cdp/commerce/orders/4501234567890" \
-H "Authorization: Bearer vyg_your_key_here"
StatusWhen
400Missing order id.
401Missing or invalid credential.
403Brand not enrolled in the commerce beta (beta_not_enabled), or no connected Shopify integration (integration_not_connected).
404Order not found or owned by another brand — indistinguishable by design, so a brand cannot probe for another brand’s ids.
405Non-GET method.
{
"error": "not_found",
"error_description": "Order not found"
}

See Tenant Isolation & Scope for why out-of-scope ids return 404.