---
title: "Update a delivery option"
method: PUT
path: "/v1/checkout_rates/{config_id}/options/{option_id}"
tags: ["checkout_rates"]
---

# Update a delivery option

`PUT /v1/checkout_rates/{config_id}/options/{option_id}`

Replace the configuration of an existing delivery option. Option names must remain unique within a configuration; renaming an option to a name already in use returns a `409 Conflict`.

## Request body

- CheckoutRatesOptionRequestBody — The configuration of a single delivery option. The fields that apply depend on `type`: - `live_rate` and `local_delivery` use `services` (and may apply `fee_mode`/`fee_percentage`); `live_rate` may also define a `fallback_mode`. - `flat_rate` uses `amount`/`currency`. - `free` requires no additional fields.
  - `name` string, required — The display name of the delivery option. Must be unique within the configuration.
  - `type` 'live_rate' | 'flat_rate' | 'free' | 'local_delivery', required — The kind of delivery option.
  - `services` CheckoutRatesServiceSelection[] — The carrier/service pairings to rate. Applies to `live_rate` and `local_delivery` options.
    - `carrier_id` string, required — The ID of a carrier connected to your account, in the format `se-` followed by digits (for example, `se-1234567`). A value that does not match this format is rejected with a validation error, and a well-formed ID that is not connected to your account is rejected as an invalid identifier.
    - `service_code` string, required — The service code of the carrier service to rate (for example, `usps_priority_mail`). Required for each service; a service code that is not available for the carrier is rejected as an invalid identifier.
  - `fee_mode` 'add' | 'subtract' — Whether the fee defined by `fee_percentage` is added to or subtracted from the carrier rate. Omit for a pass-through rate.
  - `fee_percentage` number — The percentage of the carrier rate to add or subtract, according to `fee_mode`.
  - `sort_index` integer — The position of this option relative to the others in the configuration, ascending.
  - `fallback_mode` 'dont_show' | 'flat_rate' | 'cart_percentage' — What to show when live rates cannot be retrieved. `dont_show` hides the option; `flat_rate` shows `fallback_rate_amount`/`fallback_rate_currency`; `cart_percentage` shows `fallback_percentage` of the cart total.
  - `fallback_rate_amount` number — The fixed fallback price, when `fallback_mode` is `flat_rate`.
  - `fallback_rate_currency` string — The currency of `fallback_rate_amount`.
  - `fallback_percentage` number — The percentage of the cart total to charge, when `fallback_mode` is `cart_percentage`.
  - `amount` number — The fixed price for a `flat_rate` option.
  - `currency` string — The currency of `amount`.

## Response `200`

The delivery option was updated.

- CheckoutRatesOptionResponseBody — A delivery option belonging to a checkout rates configuration.
  - `option_id` integer — The unique identifier of the delivery option.
  - `config_id` string — The identifier of the configuration this option belongs to.
  - `name` string — The display name of the delivery option.
  - `type` 'live_rate' | 'flat_rate' | 'free' | 'local_delivery' — The kind of delivery option.
  - `services` CheckoutRatesServiceSelection[] — The carrier/service pairings rated by this option, when applicable.
    - `carrier_id` string, required — The ID of a carrier connected to your account, in the format `se-` followed by digits (for example, `se-1234567`). A value that does not match this format is rejected with a validation error, and a well-formed ID that is not connected to your account is rejected as an invalid identifier.
    - `service_code` string, required — The service code of the carrier service to rate (for example, `usps_priority_mail`). Required for each service; a service code that is not available for the carrier is rejected as an invalid identifier.
  - `fee_mode` 'add' | 'subtract' — Whether `fee_percentage` is added to or subtracted from the carrier rate.
  - `fee_percentage` number — The percentage of the carrier rate added or subtracted, according to `fee_mode`.
  - `sort_index` integer — The position of this option relative to the others in the configuration, ascending.
  - `fallback_mode` 'dont_show' | 'flat_rate' | 'cart_percentage' — What is shown when live rates cannot be retrieved.
  - `fallback_rate_amount` number — The fixed fallback price, when `fallback_mode` is `flat_rate`.
  - `fallback_rate_currency` string — The currency of `fallback_rate_amount`.
  - `fallback_percentage` number — The percentage of the cart total charged, when `fallback_mode` is `cart_percentage`.
  - `amount` number — The fixed price for a `flat_rate` option.
  - `currency` string — The currency of `amount`.
  - `is_active` boolean — Whether the option is active and shown at checkout.
  - `created_at` string, date-time — When the option was created.

## Other responses

- `400` — The request contained errors.
- `404` — The specified resource does not exist.
- `409` — The request conflicts with an existing resource.
- `500` — An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.

---

[API](https://skmtc.net/shipstation/apis/shipengine-api.md) · [All operations](https://skmtc.net/shipstation/apis/shipengine-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/shipstation/shipengine-api/revisions/8d8a7cf79204/schema)
