---
title: "Calculate checkout rates"
method: POST
path: "/v2/checkout_rates/{config_id}/quotes"
tags: ["checkout_rates"]
---

# Calculate checkout rates

`POST /v2/checkout_rates/{config_id}/quotes`

## Request

- Base URL: `https://api.shipstation.com`
- URL: `https://api.shipstation.com/v2/checkout_rates/{config_id}/quotes`
- Auth: API key in header `api-key`

<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>

Calculate the shipping rates a buyer should see at checkout for the given destination and cart, using the delivery options defined on the configuration. The response contains one rate per delivery option that produced a price, and each rate carries its own `quote_id` that can be retrieved later with [Get a checkout rate quote](#operation/get_checkout_rates_quote).

## Request body

- CalculateCheckoutRatesRequestBody: The destination and cart contents to calculate checkout rates for, and optionally the origin to calculate them from.
  - `ship_from` CheckoutRatesShipFrom: The origin address to calculate rates from. When this address is omitted, rates are calculated from the origin on the account's registration. The origin applies to `live_rate` and `local_delivery` options. Pickup point options are unaffected.
    - `address_type` string: The kind of address, when known (for example, `residential` or `commercial`). Treated as unknown when omitted.
    - `address_line1` string: The first line of the street address.
    - `address_line2` string: The second line of the street address, when applicable.
    - `address_line3` string: The third line of the street address, when applicable.
    - `city_locality` string: The city or locality.
    - `state_province` string: The state or province.
    - `postal_code` string, required: The postal code. Required when `ship_from` is supplied.
    - `country_code` string, required: The ISO 3166-1 alpha-2 country code. Required when `ship_from` is supplied.
  - `ship_to` CheckoutRatesShipTo, required: The destination address to calculate rates for.
    - `address_type` string: The kind of address, when known (for example, `residential` or `commercial`).
    - `address_line1` string: The first line of the street address.
    - `address_line2` string: The second line of the street address, when applicable.
    - `address_line3` string: The third line of the street address, when applicable.
    - `city_locality` string: The city or locality.
    - `state_province` string: The state or province.
    - `postal_code` string: The postal code.
    - `country_code` string: The ISO 3166-1 alpha-2 country code.
  - `items` CheckoutRatesItem[], required: The items in the cart.
    - `name` string: The name of the item.
    - `quantity` integer: The number of units of the item in the cart.
    - `sku` string: The stock keeping unit (SKU) of the item.
    - `price` number: The unit price of the item.
    - `weight` Weight: The weight of a package
      - `value` number, required: The weight, in the specified unit
      - `unit` 'pound' | 'ounce' | 'gram' | 'kilogram', required: The possible weight unit values
    - `dimensions` Dimensions: The dimensions of a package
      - `unit` 'inch' | 'centimeter', required: The dimension units that are supported by ShipStation .
      - `length` number, required: The length of the package, in the specified unit
      - `width` number, required: The width of the package, in the specified unit
      - `height` number, required: The height of the package, in the specified unit
  - `currency` string: The currency to return rates in.

## Response `200`

The calculated rates for the cart.

- CalculateCheckoutRatesResponseBody: The rates calculated for a cart. Each rate carries its own `quote_id`.
  - `config_id` string: The configuration the rates were calculated against.
  - `rates` CheckoutRatesRateOption[]: The rates to display at checkout, one entry per delivery option that produced a rate. Each entry has its own `quote_id`.
    - `quote_id` string: The unique identifier of this rate's quote. Use it to retrieve the quote later with [Get a checkout rate quote](#operation/get_checkout_rates_quote).
    - `option_id` integer: The identifier of the delivery option this rate was produced for.
    - `option_name` string: The display name of the delivery option.
    - `type` 'live_rate' | 'flat_rate' | 'free' | 'local_delivery': The delivery option type this rate corresponds to (for example, `live_rate` or `free`).
    - `carrier_id` string, nullable: The carrier this rate is for. `null` for options without a carrier (for example, `free`).
    - `service_code` string, nullable: The carrier service this rate is for. `null` for options without a carrier service.
    - `final_amount` number: The price shown to the buyer after fees or fallbacks are applied.
    - `currency` string: The currency of `final_amount`.
    - `estimated_delivery_days` integer, nullable: The carrier's estimated number of days in transit, when available.
    - `estimated_delivery_date` string, date-time, nullable: The carrier's estimated delivery date, when available.
    - `delivery_prediction` DeliveryPrediction: ShipStation's own predicted delivery estimate, from its delivery prediction model rather than quoted by the carrier. This complements the carrier's own estimate rather than replacing it — where carrier fields are present, they are still populated. The whole object is omitted when a prediction is not available for the carrier, service, and lane, so treat its absence as "no prediction" rather than as an error. To request predictions on their own, without rating or buying anything, use [Predict delivery dates](#operation/create_delivery_predictions).
      - `delivery_date` string, date, nullable: The predicted delivery date.
      - `confidence_level` 'high' | 'low': How much historical data the prediction rests on. - `high` — the prediction is based on historical data for this carrier service. - `low` — little or no historical data was available for this service, so the prediction is based on similar services.
  - `created_at` string, date-time: When the quote was calculated.

## Other responses

- `400`: The request contained errors.
- `404`: The specified resource does not exist.
- `500`: An error occurred on ShipStation API's side.

## Changes

- **2026-10-22** `4e29670aa28d`: 6 warning
  - added the new `bring_your_own_label_not_supported` enum value to the `errors/items/error_code` response property for the response status `400`
  - added the new `bring_your_own_label_not_supported` enum value to the `errors/items/error_code` response property for the response status `404`
  - added the new `multiple_sales_orders` enum value to the `errors/items/error_code` response property for the response status `400`
  - added the new `multiple_sales_orders` enum value to the `errors/items/error_code` response property for the response status `404`
  - …2 more
- **2026-10-13** `5d283bcd5a48`: 1 info
  - added the optional property `rates/items/delivery_prediction` to the response with the `200` status
- **2026-10-09** `934f5935dbea`: 2 breaking, 14 info
  - the `errors/items/` response's property type changed from no type to `object` for status `400`
  - the `errors/items/` response's property type changed from no type to `object` for status `404`
  - added the optional property `errors/items/field_name` to the response with the `400` status
  - added the optional property `errors/items/field_name` to the response with the `404` status
  - …12 more
- **2026-09-09** `dc74a6387377`: 2 info
  - added the new optional request property `ship_from`
  - added the new optional request property `ship_to/allOf[subschema #1: checkout_rates_ship_to]/address_line3`
- …earlier changes not shown

[Operation history](https://skmtc.dev/shipstation/apis/shipstation-api-v2/changes/v2/checkout_rates/:config_id/quotes/post.md)

---

[API](https://skmtc.dev/shipstation/apis/shipstation-api-v2.md) - [All operations](https://skmtc.dev/shipstation/apis/shipstation-api-v2/llms.txt) - [OpenAPI document](https://skmtc.dev/shipstation/apis/shipstation-api-v2/revisions/43d0f3c948ca?raw)
