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

# Update a delivery option

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

<aside class="access" aria-label="Endpoint access">
      <table class="access__table">
        <thead>
          <tr>
            <th class="access__table-header">Products</th>
            <th class="access__table-header">Plans</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td class="access__table-cell access__product">
              <img class="access__logo" src="/static/logos/shipstation-api-logo.svg" alt="ShipStation API Logo" loading="lazy" decoding="async"/>
              <div class="access__sub">Formerly ShipEngine</div>
            </td>
            <td class="access__table-cell access__plans">
              <a href="/apis/@shipstation-v2/docs/getting-started/plans/shipstation-api-free.md" class="access__plan">Free</a>
              <a href="/apis/@shipstation-v2/docs/getting-started/plans/shipstation-api-advanced-enterprise.md" class="access__plan">Advanced</a>
              <a href="/apis/@shipstation-v2/docs/getting-started/plans/shipstation-api-advanced-enterprise.md" class="access__plan">Enterprise</a>
            </td>
          </tr>
          <tr>
            <td class="access__table-cell">
              <img class="access__logo" src="/static/logos/shipstation-logo.svg" alt="ShipStation Logo" loading="lazy" decoding="async"/>
            </td>
            <td class="access__table-cell access__plans">
              <a href="/apis/@shipstation-v2/docs/getting-started/plans/shipstation-free-starter.md" class="access__plan access__plan--off">Free</a>
              <a href="/apis/@shipstation-v2/docs/getting-started/plans/shipstation-free-starter.md" class="access__plan access__plan--off">Starter</a>
              <a href="/apis/@shipstation-v2/docs/getting-started/plans/shipstation-standard-premium.md" class="access__plan">Standard</a>
              <a href="/apis/@shipstation-v2/docs/getting-started/plans/shipstation-standard-premium.md" class="access__plan">Premium</a>
            </td>
          </tr>
        </tbody>
      </table>
      <footer class="access__footer">
        <a class="access__help" href="/apis/@shipstation-v2/docs/getting-started/products-and-plans.md">
          Learn about products and plans
          <img src="/static/icons/external-link.svg" alt="External Link Icon" style="width: 16px;" loading="lazy" decoding="async"/>
        </a>
      </footer>
    </aside>

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` — The request was successful.

---

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