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

# How do I cancel an order in Blend?

> PUT /api/v1/orders/{order_id}/cancel works while the order is in received, paused, or exception. Once it's picked or verified, use PUT /orders/{order_id}/request_cancellation instead — the products have to come back off the bench first.

Which endpoint you use depends on whether the order has been physically picked.

**Not yet picked** — `PUT /api/v1/orders/{order_id}/cancel` cancels it immediately. Valid from `received`, `paused`, or `exception`.

**Already picked or verified** — `PUT /api/v1/orders/{order_id}/request_cancellation` raises a request for pharmacy staff. It does **not** change the order's status.

```bash theme={null}
curl -X PUT https://api.byblend.com/api/v1/orders/ORD250312003548IAU4/cancel \
  -H "Authorization: Bearer {access_token}"
```

## Requesting cancellation on a picked order

```bash theme={null}
curl -X PUT https://api.byblend.com/api/v1/orders/ORD250312003548IAU4/request_cancellation \
  -H "Authorization: Bearer {access_token}" \
  -H "Content-Type: application/json" \
  -d '{ "reason": "Patient changed their mind" }'
```

The `reason` is optional but genuinely useful — it reaches the staff member who handles the request.

<Warning>
  **Request cancellation does not cancel the order.** It sets `cancellation_requested: true` and leaves the status alone. Don't treat a successful response as confirmation the order is dead — poll the order or subscribe to a webhook to see the real outcome.
</Warning>

<Warning>
  **Only one cancellation request per order is allowed.** A second call is rejected. If circumstances change, contact Blend support rather than re-requesting.
</Warning>

## Why picked orders work differently

Once an order has been picked, its contents are physically off the shelf and inventory has already been decremented. Blend does not mark the order cancelled until staff have unpicked the products and returned them to stock, so that inventory stays accurate. The request is picked up at pharmacist verification or at shipping, the products are returned, and the order is then cancelled.

## Deciding which to call

| Order status           | What to use             |
| ---------------------- | ----------------------- |
| `received`             | `/cancel`               |
| `paused`               | `/cancel`               |
| `exception`            | `/cancel`               |
| `picked`               | `/request_cancellation` |
| `verified`             | `/request_cancellation` |
| `shipped`, `delivered` | Neither — see below     |

Check the current status first with `GET /orders/{order_id}`, or simply attempt `/cancel` and fall back to `/request_cancellation` on rejection.

<Note>
  An order that has already shipped cannot be cancelled. If the shipment was wrong, [request a replacement](/guides/replacement-orders) instead.
</Note>

<Tip>
  Cancelling an **order** does not cancel the underlying **prescription**. The prescription keeps its remaining fills and can be ordered against again. If Blend auto-creates your orders from prescriptions, a cancelled order may simply regenerate unless the prescription is dealt with too — see [editing an order](/guides/edit-an-order).
</Tip>

Both actions are available on the order page in the Blend Dashboard, which is where most customer-service cancellations happen.

<CardGroup cols={2}>
  <Card title="Cancel an order" icon="ban" href="/api-reference/orders/cancel-an-order">
    `received`, `paused`, `exception`
  </Card>

  <Card title="Request cancellation" icon="hand" href="/api-reference/orders/request-cancellation-of-an-order">
    `picked`, `verified`
  </Card>

  <Card title="Pause an order" icon="pause" href="/api-reference/orders/pause-an-order">
    Hold instead of cancel
  </Card>

  <Card title="Get an order's status history" icon="clock-rotate-left" href="/api-reference/orders/get-an-orders-status-history">
    Confirm what actually happened
  </Card>
</CardGroup>
