Create a draft order via POST /admin/api/2024-01/draft_orders.json with a line_items array (each containing variant_id and quantity), customer id or email, and optionally applied_discount or shipping_address
Optionally send an invoice to the customer by POSTing to /admin/api/2024-01/draft_orders/{id}/send_invoice.json which emails a checkout link
Apply custom line items (without variant_id) for services or non-catalog items by including title, price, and quantity in the line_items array without a variant_id
Complete the draft order as paid by POSTing to /admin/api/2024-01/draft_orders/{id}/complete.json with payment_pending: false to mark it as fully paid and convert it to a real order
Retrieve the resulting order ID from the order field on the completed draft order response and use it for subsequent fulfillment workflows
To hold the order as unpaid (e.g. net-30 B2B), complete with payment_pending: true and later mark it paid via the order transactions API
Known gotchas
Draft orders do not decrement inventory until they are completed; do not rely on draft order creation for inventory reservation in high-velocity scenarios
Discounts applied at the draft order level use a different schema than automatic discounts on live checkouts; test discount code application carefully
The completed draft order becomes an immutable order; any corrections require refunds and new orders, not editing the draft
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp