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

# Shipment statuses

> Delivery and payment statuses, and when you can update or cancel.

Each shipment has a delivery `status` and a `payment_status`. They move independently after create.

## Delivery status

| Value             | Meaning                         | Typical next step               |
| ----------------- | ------------------------------- | ------------------------------- |
| `pending`         | Booked, not yet paid            | Collect payment                 |
| `awaiting_pickup` | Paid, waiting for a rider       | Rider accepts and picks up      |
| `in_transit`      | Out for delivery                | Wait for dropoff                |
| `delivered`       | Complete                        | Done                            |
| `cancelled`       | Stopped before delivery started | Create a new shipment if needed |

## Payment status

| Value              | Meaning                |
| ------------------ | ---------------------- |
| `awaiting_payment` | Invoice not paid       |
| `paid`             | Payment confirmed      |
| `failed`           | Payment attempt failed |
| `refunded`         | Payment returned       |

## What you can change

| Action                                                                  | Allowed when                     |
| ----------------------------------------------------------------------- | -------------------------------- |
| [Update](/api-reference/update-shipment) customer, addresses, or weight | `pending` and `awaiting_payment` |
| [Cancel](/api-reference/cancel-shipment)                                | `pending` or `awaiting_pickup`   |

Updates recalculate the quote. If the new route is not covered, the update returns `422` and the shipment is unchanged.

Once a shipment is `in_transit` or `delivered`, you cannot cancel it through the API.
