> ## 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, advance, 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`                                               |
| [Advance status](/api-reference/update-shipment-status)                 | One step at a time: `pending` → `awaiting_pickup` → `in_transit` → `delivered` |
| [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.

You cannot skip statuses or move backwards. `cancelled` and `delivered` have no next status. Once a shipment is `in_transit` or `delivered`, you cannot cancel it through the API.
