> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stateset.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Delete Order

> This endpoint deletes an order. Only draft or cancelled orders can be deleted.

### Path Parameters

<ParamField path="id" type="string" required>
  The unique identifier of the order to delete
</ParamField>

### Query Parameters

<ParamField query="force" type="boolean">
  Force deletion even if there are related records (requires admin permission)
</ParamField>

<ParamField query="archive_instead" type="boolean">
  Archive the order instead of deleting it (recommended for audit trail)
</ParamField>

### Response

<ResponseField name="id" type="string">
  The ID of the deleted order
</ResponseField>

<ResponseField name="deleted" type="boolean">
  Indicates whether the order was successfully deleted
</ResponseField>

<ResponseField name="archived" type="boolean">
  Indicates if the order was archived instead of deleted
</ResponseField>

<ResponseField name="related_records" type="object">
  Summary of related records affected

  <Expandable title="properties">
    <ResponseField name="payments" type="number">
      Number of related payment records
    </ResponseField>

    <ResponseField name="shipments" type="number">
      Number of related shipment records
    </ResponseField>

    <ResponseField name="returns" type="number">
      Number of related return records
    </ResponseField>

    <ResponseField name="refunds" type="number">
      Number of related refund records
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="deleted_at" type="string">
  Timestamp when the order was deleted
</ResponseField>

<ResponseField name="deleted_by" type="string">
  User who deleted the order
</ResponseField>

### Error Responses

<ResponseField name="error" type="object">
  Error object containing details about what went wrong

  <Expandable title="properties">
    <ResponseField name="code" type="string">
      Error code (e.g., "order\_not\_deletable", "order\_shipped", "active\_refunds")
    </ResponseField>

    <ResponseField name="message" type="string">
      Human-readable error message
    </ResponseField>

    <ResponseField name="details" type="object">
      Additional error details including order status and blockers
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl --location --request DELETE 'https://api.stateset.com/v1/orders/ord_123abc' \
  --header 'Authorization: Token <token>'
  ```

  ```bash cURL (Archive Instead) theme={null}
  curl --location --request DELETE 'https://api.stateset.com/v1/orders/ord_123abc?archive_instead=true' \
  --header 'Authorization: Token <token>'
  ```

  ```graphQL GraphQL theme={null}
  mutation orderDeleteMutation {
    orderDelete(id: "${orderId}", archiveInstead: false) {
      success
      order {
        id
        deleted
      }
      userErrors {
        field
        message
      }
    }
  }
  ```

  ```js Node.js theme={null}
  const deletedOrder = await stateset.orders.delete('ord_123abc');

  // Or archive instead
  const archivedOrder = await stateset.orders.delete('ord_123abc', {
    archive_instead: true
  });
  ```

  ```python Python theme={null}
  deleted_order = stateset.orders.delete('ord_123abc')

  # Or archive instead
  archived_order = stateset.orders.delete('ord_123abc', {
    'archive_instead': True
  })
  ```

  ```ruby Ruby theme={null}
  deleted_order = Stateset::Order.delete('ord_123abc')

  # Or archive instead
  archived_order = Stateset::Order.delete('ord_123abc', {
    archive_instead: true
  })
  ```

  ```go Go theme={null}
  deletedOrder, err := stateset.Orders.Delete("ord_123abc")

  // Or archive instead
  archivedOrder, err := stateset.Orders.Delete("ord_123abc", DeleteOptions{
    ArchiveInstead: true
  })
  ```

  ```java Java theme={null}
  Order deletedOrder = stateset.orders.delete("ord_123abc");

  // Or archive instead
  DeleteOptions options = new DeleteOptions();
  options.setArchiveInstead(true);
  Order archivedOrder = stateset.orders.delete("ord_123abc", options);
  ```

  ```php PHP theme={null}
  $deleted_order = $stateset->orders->delete('ord_123abc');

  // Or archive instead
  $archived_order = $stateset->orders->delete('ord_123abc', [
    'archive_instead' => true
  ]);
  ```

  ```csharp C# theme={null}
  var deletedOrder = await stateset.Orders.Delete("ord_123abc");

  // Or archive instead
  var archivedOrder = await stateset.Orders.Delete("ord_123abc", new DeleteOptions {
    ArchiveInstead = true
  });
  ```
</RequestExample>

<ResponseExample>
  ```json Success Response theme={null}
  {
    "id": "ord_123abc",
    "deleted": true,
    "archived": false,
    "related_records": {
      "payments": 0,
      "shipments": 0,
      "returns": 0,
      "refunds": 0
    },
    "deleted_at": "2024-01-15T14:30:00Z",
    "deleted_by": "user_123"
  }
  ```

  ```json Archive Response theme={null}
  {
    "id": "ord_123abc",
    "deleted": false,
    "archived": true,
    "status": "archived",
    "archived_at": "2024-01-15T14:30:00Z",
    "archived_by": "user_123",
    "archive_reason": "User requested archival instead of deletion"
  }
  ```

  ```json Error Response - Order Shipped theme={null}
  {
    "error": {
      "code": "order_not_deletable",
      "message": "Cannot delete order that has been shipped. Only draft or cancelled orders can be deleted.",
      "details": {
        "order_id": "ord_123abc",
        "current_status": "shipped",
        "deletable_statuses": ["draft", "cancelled"],
        "suggestion": "Cancel the order first or archive it instead"
      }
    }
  }
  ```

  ```json Error Response - Active Returns theme={null}
  {
    "error": {
      "code": "active_returns",
      "message": "Cannot delete order with active returns. Please resolve all returns first.",
      "details": {
        "order_id": "ord_123abc",
        "active_returns": 2,
        "return_ids": ["ret_456def", "ret_789ghi"]
      }
    }
  }
  ```
</ResponseExample>
