# orderCancel - admin - MUTATION Version: unstable ## Description Cancels an order. ### Access Scopes `write_orders` access scope or `write_marketplace_orders` access scope. Also: This action cannot be reversed. ## Arguments * [notifyCustomer](/docs/api/admin/unstable/scalars/Boolean): Boolean - Whether to send a notification to the customer about the order cancellation. * [orderId](/docs/api/admin/unstable/scalars/ID): ID! - The ID of the order to be canceled. * [reason](/docs/api/admin/unstable/enums/OrderCancelReason): OrderCancelReason! - The reason for canceling the order. * [refund](/docs/api/admin/unstable/scalars/Boolean): Boolean! - Whether to refund the amount paid by the customer. * [restock](/docs/api/admin/unstable/scalars/Boolean): Boolean! - Whether to restock the inventory committed to the order. For unpaid orders fulfilled from locations that have been deactivated, inventory will not be restocked to the deactivated locations even if this argument is set to true. * [staffNote](/docs/api/admin/unstable/scalars/String): String - A staff-facing note about the order cancellation. This is not visible to the customer. ## Returns * [job](/docs/api/admin/unstable/objects/Job): Job The job that asynchronously cancels the order. * [jobResult](/docs/api/admin/unstable/objects/OrderCancelJobResult): OrderCancelJobResult The job that asynchronously cancels the order. * [orderCancelUserErrors](/docs/api/admin/unstable/objects/OrderCancelUserError): OrderCancelUserError! The list of errors that occurred from executing the mutation. * [userErrors](/docs/api/admin/unstable/objects/UserError): UserError! The list of errors that occurred from executing the mutation. ## Examples ### Cancel an order Curl example: "curl -X POST \\\nhttps://your-development-store.myshopify.com/admin/api/unstable/graphql.json \\\n-H 'Content-Type: application/json' \\\n-H 'X-Shopify-Access-Token: {access_token}' \\\n-d '{\n\"query\": \"mutation OrderCancel($orderId: ID!, $notifyCustomer: Boolean, $refund: Boolean!, $restock: Boolean!, $reason: OrderCancelReason!, $staffNote: String) { orderCancel(orderId: $orderId, notifyCustomer: $notifyCustomer, refund: $refund, restock: $restock, reason: $reason, staffNote: $staffNote) { job { id done } jobResult { id done } orderCancelUserErrors { field message code } } }\",\n \"variables\": {\n \"orderId\": \"gid://shopify/Order/148977776\",\n \"notifyCustomer\": true,\n \"refund\": true,\n \"restock\": true,\n \"reason\": \"CUSTOMER\",\n \"staffNote\": \"Wrong size. Customer reached out saying they already re-purchased the correct size.\"\n }\n}'\n" Node example: "const client = new shopify.clients.Graphql({session});\nconst data = await client.query({\n data: {\n \"query\": `mutation OrderCancel($orderId: ID!, $notifyCustomer: Boolean, $refund: Boolean!, $restock: Boolean!, $reason: OrderCancelReason!, $staffNote: String) {\n orderCancel(orderId: $orderId, notifyCustomer: $notifyCustomer, refund: $refund, restock: $restock, reason: $reason, staffNote: $staffNote) {\n job {\n id\n done\n }\n jobResult {\n id\n done\n }\n orderCancelUserErrors {\n field\n message\n code\n }\n }\n }`,\n \"variables\": {\n \"orderId\": \"gid://shopify/Order/148977776\",\n \"notifyCustomer\": true,\n \"refund\": true,\n \"restock\": true,\n \"reason\": \"CUSTOMER\",\n \"staffNote\": \"Wrong size. Customer reached out saying they already re-purchased the correct size.\"\n },\n },\n});\n" Ruby example: "session = ShopifyAPI::Auth::Session.new(\n shop: \"your-development-store.myshopify.com\",\n access_token: access_token\n)\nclient = ShopifyAPI::Clients::Graphql::Admin.new(\n session: session\n)\n\nquery = <<~QUERY\n mutation OrderCancel($orderId: ID!, $notifyCustomer: Boolean, $refund: Boolean!, $restock: Boolean!, $reason: OrderCancelReason!, $staffNote: String) {\n orderCancel(orderId: $orderId, notifyCustomer: $notifyCustomer, refund: $refund, restock: $restock, reason: $reason, staffNote: $staffNote) {\n job {\n id\n done\n }\n jobResult {\n id\n done\n }\n orderCancelUserErrors {\n field\n message\n code\n }\n }\n }\nQUERY\n\nvariables = {\n \"orderId\": \"gid://shopify/Order/148977776\",\n \"notifyCustomer\": true,\n \"refund\": true,\n \"restock\": true,\n \"reason\": \"CUSTOMER\",\n \"staffNote\": \"Wrong size. Customer reached out saying they already re-purchased the correct size.\"\n}\n\nresponse = client.query(query: query, variables: variables)\n" Remix example: "const { admin } = await authenticate.admin(request);\n\nconst response = await admin.graphql(\n `#graphql\n mutation OrderCancel($orderId: ID!, $notifyCustomer: Boolean, $refund: Boolean!, $restock: Boolean!, $reason: OrderCancelReason!, $staffNote: String) {\n orderCancel(orderId: $orderId, notifyCustomer: $notifyCustomer, refund: $refund, restock: $restock, reason: $reason, staffNote: $staffNote) {\n job {\n id\n done\n }\n jobResult {\n id\n done\n }\n orderCancelUserErrors {\n field\n message\n code\n }\n }\n }`,\n {\n variables: {\n \"orderId\": \"gid://shopify/Order/148977776\",\n \"notifyCustomer\": true,\n \"refund\": true,\n \"restock\": true,\n \"reason\": \"CUSTOMER\",\n \"staffNote\": \"Wrong size. Customer reached out saying they already re-purchased the correct size.\"\n },\n },\n);\n\nconst data = await response.json();\n" Graphql query: "mutation OrderCancel($orderId: ID!, $notifyCustomer: Boolean, $refund: Boolean!, $restock: Boolean!, $reason: OrderCancelReason!, $staffNote: String) {\n orderCancel(orderId: $orderId, notifyCustomer: $notifyCustomer, refund: $refund, restock: $restock, reason: $reason, staffNote: $staffNote) {\n job {\n id\n done\n }\n jobResult {\n id\n done\n }\n orderCancelUserErrors {\n field\n message\n code\n }\n }\n}" #### Graphql Input { "orderId": "gid://shopify/Order/148977776", "notifyCustomer": true, "refund": true, "restock": true, "reason": "CUSTOMER", "staffNote": "Wrong size. Customer reached out saying they already re-purchased the correct size." } #### Graphql Response { "data": { "orderCancel": { "job": { "id": "gid://shopify/Job/5f82274b-13ed-44f0-b8d8-6a448dfd1636", "done": false }, "jobResult": { "id": "gid://shopify/OrderCancelJobResult/884324524", "done": false }, "orderCancelUserErrors": [] } } }