orderCancel
Close an order whose payment has finally failed. No cart comes back.
Refused while a payment is still open, which is what keeps this from being a general cancel-any-order mutation: the buyer reaching for it has drifted away and come back later, so it can wait for the provider's final word.
Arguments
| Argument | Type | Description |
|---|---|---|
orderId | ID! |
Returns
| Field | Type | Description |
|---|---|---|
order | Order | The order, now cancelled |
orderErrors | [OrderCancelError!] | Error details if the order could not be closed |
Example
mutation OrderCancel($orderId: ID!) { orderCancel(orderId: $orderId) { order { id createdAt createdBy orderNumber purchaseOrderNumber orderStatus paymentState payable customerEmail deliveryRemarks vatNumber isGuest returnRefundMethods } orderErrors { __typename ... on OrderError { code message } ... on ValidationError { message } } }}{ "orderId": "id-1"}{ "data": { "orderCancel": { "order": { "id": "id-1", "createdAt": "2026-10-01T09:30:00Z", "createdBy": "Example", "orderNumber": "Example", "purchaseOrderNumber": "Example", "orderStatus": "OPEN", "paymentState": "BALANCE_DUE", "payable": true, "customerEmail": "jane@example.com", "deliveryRemarks": "Example", "vatNumber": "Example", "isGuest": true, "returnRefundMethods": [ "ORIGINAL_PAYMENT" ] }, "orderErrors": [ { "__typename": "OrderError", "code": "TARGET_NOT_FOUND", "message": "Example" } ] } }}The query selects the return type's fields two levels deep; pick the ones you need. The response shows its shape with placeholder values.
Served by
| @evolve-framework/commercetools | Resolved |
| @evolve-framework/medusa | Not resolved |
| @evolve-framework/sfcc | Not resolved |
Used by
The storefront packages that send it, in these GraphQL documents:
- @evolve-storefront/feature-order:
OrderCancel

