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

# Update stop order

> Updates an existing stop order.

PUT/v3/cards/\{card\_token}/stoporders/\{stop\_order\_token}

Updates an existing stop order. Use this endpoint to cancel a stop order or change its duration.

## Path parameters

| Fields | Description |
| - | - |
| card\_token string  Required | Token of the card on which you have placed a stop order. **Allowable Values:**  Existing card token |
| stop\_order\_token string  Required | Marqeta-assigned unique identifier for the stop order. **Allowable Values:**  Existing stop order token |

## Request body

| Fields | Description |
| - | - |
| status string  Required | New status for the stop order. **Allowable Values:**  `ACTIVE`, `CANCELLED` |
| update\_reason string  Required | Reason for the update. **Allowable Values:**  `DURATION_CHANGED` - The stop order duration has been modified.  `ISSUED_IN_ERROR` - The stop order was placed by mistake.  `CARDHOLDER_REQUEST` - The cardholder requested the change.  `MERCHANT_RESOLVED` - The issue with the merchant has been resolved. |
| reason\_description string  Optional | Free-text description of the update reason. **Allowable Values:**  255 char max |
| duration integer  Optional | New duration of the stop order. Max: `60`. **Allowable Values:**  Integer between `1` and `60` |
| duration\_unit string  Optional | Unit for the new duration of the stop order. Currently the only values supported for this field are `MONTH` and `YEAR`. If no value is provided, `duration_unit` defaults to `MONTH`. If a value for `duration_unit` is provided without also providing a value for the `duration` field, then the endpoint returns a validation error. **Allowable Values:**  `MONTH`, `YEAR` |

## Response body

See [Stop order object](/docs/core-api/subscription-management).

## Sample request

```json JSON lines wrap theme={null}
{
  "status": "CANCELLED",
  "update_reason": "CARDHOLDER_REQUEST",
  "reason_description": "Customer request"
}
```

## Sample response

```json JSON lines wrap theme={null}
{
  "stop_order_token": "so_12345",
  "card_token": "card_token_123",
  "transaction_token": "token",
  "merchant_id": "mid",
  "merchant_name": "merchant_name",
  "original_amount": 20.00,
  "stop_reason": "CANCELLED_SUBSCRIPTION",
  "update_reason": "CARDHOLDER_REQUEST",
  "reason_description": "Customer request",
  "duration": 13,
  "duration_unit": "MONTH",
  "status": "CANCELLED",
  "created_time": "2025-09-23T19:24:43Z",
  "last_modified_time": "2025-11-23T19:24:43Z",
  "expiry_time": "2026-10-23T23:59:59Z"
}
```

> [!WARNING]
>
> **Important** When you change the value for the `duration` field, the new expiry date is calculated from the original stop order creation date, not from the update date.
>
> For example, if a stop order was created on `2025-09-23` and you submit an update request on `2025-11-23` that changes the duration to three months, the new expiry will be `2025-12-23` (three months from the creation date).


## Related topics

- [Subscription Management Overview](/docs/core-api/subscription-management.md)
- [Update stop payment order](/docs/core-api/ach-receiving/stop-payment-orders/update-stop-payment-order.md)
- [Stop Payment Orders Overview](/docs/core-api/ach-receiving/stop-payment-orders.md)
- [Create a stop order](/docs/core-api/subscription-management/create-stop-order.md)
- [Stop Order Object](/docs/core-api/subscription-management/subscription-management-object.md)
