# Calculate checkout rates

Products
            Plans
          
        
        
          
            
              
              Formerly ShipEngine
            
            
              Free
              Advanced
              Enterprise
            
          
          
            
              
            
            
              Free
              Starter
              Standard
              Premium
            
          
        
      
      
        
          Learn about products and plans
          
        
      
    

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.

Endpoint: POST /v2/checkout_rates/{config_id}/quotes
Version: 2.0.0
Security: api_keys

## Path parameters:

  - `config_id` (string, required)
    The unique identifier of the checkout rates configuration to quote against.
    Example: "a1b2c3d4-e5f6-7890-abcd-ef1234567890"

## Request fields (application/json):

  - `ship_to` (object, required)
    The destination address.

  - `ship_to.address_type` (string)
    The kind of address, when known (for example, residential or commercial).
    Example: "residential"

  - `ship_to.address_line1` (string)
    The first line of the street address.
    Example: "525 S Winchester Blvd"

  - `ship_to.address_line2` (string)
    The second line of the street address, when applicable.
    Example: "Suite 200"

  - `ship_to.city_locality` (string)
    The city or locality.
    Example: "San Jose"

  - `ship_to.state_province` (string)
    The state or province.
    Example: "CA"

  - `ship_to.postal_code` (string)
    The postal code.
    Example: "95128"

  - `ship_to.country_code` (string)
    The ISO 3166-1 alpha-2 country code.
    Example: "US"

  - `items` (array, required)
    The items in the cart.

  - `items.name` (string)
    The name of the item.
    Example: "T-Shirt"

  - `items.quantity` (integer)
    The number of units of the item in the cart.
    Example: 2

  - `items.sku` (string)
    The stock keeping unit (SKU) of the item.
    Example: "SKU-1234"

  - `items.price` (number)
    The unit price of the item.
    Example: 19.99

  - `items.weight` (object)
    The weight of a single unit of the item.

  - `items.weight.value` (number, required)
    The weight, in the specified unit
    Example: 23

  - `items.weight.unit` (string, required)
    Weight unit
    Enum: "pound", "ounce", "gram", "kilogram"

  - `items.dimensions` (object)
    The dimensions of a single unit of the item.

  - `items.dimensions.unit` (string, required)
    Dimension unit
    Enum: "inch", "centimeter"

  - `items.dimensions.length` (number, required)
    The length of the package, in the specified unit
    Example: 2

  - `items.dimensions.width` (number, required)
    The width of the package, in the specified unit
    Example: 2

  - `items.dimensions.height` (number, required)
    The height of the package, in the specified unit
    Example: 1

  - `currency` (string)
    The currency to return rates in.
    Example: "USD"

## Response 200 fields (application/json):

  - `config_id` (string)
    The configuration the rates were calculated against.
    Example: "a1b2c3d4-e5f6-7890-abcd-ef1234567890"

  - `rates` (array)
    The rates to display at checkout, one entry per delivery option that produced a rate. Each entry has its own quote_id.

  - `rates.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).
    Example: "f1a2b3c4-d5e6-7890-abcd-ef1234567890"

  - `rates.option_id` (integer)
    The identifier of the delivery option this rate was produced for.
    Example: 100001

  - `rates.option_name` (string)
    The display name of the delivery option.
    Example: "Standard Shipping"

  - `rates.type` (string)
    The delivery option type this rate corresponds to (for example, live_rate or free).
    Enum: "live_rate", "flat_rate", "free", "local_delivery"

  - `rates.carrier_id` (string,null)
    The carrier this rate is for. null for options without a carrier (for example, free).
    Example: "se-1234567"

  - `rates.service_code` (string,null)
    The carrier service this rate is for. null for options without a carrier service.
    Example: "usps_priority_mail"

  - `rates.final_amount` (number)
    The price shown to the buyer after fees or fallbacks are applied.
    Example: 10.69

  - `rates.currency` (string)
    The currency of final_amount.
    Example: "USD"

  - `rates.estimated_delivery_days` (integer,null)
    The estimated number of days in transit, when available.
    Example: 2

  - `rates.estimated_delivery_date` (string,null)
    The estimated delivery date, when available.
    Example: "2026-06-26T00:00:00Z"

  - `created_at` (string)
    When the quote was calculated.
    Example: "2026-06-24T10:00:00Z"

## Response 400 fields (application/json):

  - `request_id` (string, required)
    A UUID that uniquely identifies the request id.
This can be given to the support team to help debug non-trivial issues that may occur
    Example: "aa3d8e8e-462b-4476-9618-72db7f7b7009"

  - `errors` (array, required)
    The errors associated with the failed API call

  - `errors.error_source` (string, required)
    The source of the error, as indicated by the name this informs us if the API call failed because of the
carrier, the order source, the ShipStation API itself, or the underlying ShipEngine platform.
    Enum: "carrier", "order_source", "ShipStation", "shipengine"

  - `errors.error_type` (string, required)
    The type of error
    Enum: "account_status", "business_rules", "validation", "security", "system", "integrations"

  - `errors.error_code` (string, required)
    The error code specified for the failed API Call
    Enum: "auto_fund_not_supported", "batch_cannot_be_modified", "carrier_conflict", "carrier_disconnected", "carrier_not_connected", "carrier_not_supported", "confirmation_not_supported", "default_warehouse_cannot_be_deleted", "field_conflict", "field_value_required", "forbidden", "identifier_conflict", "identifiers_must_match", "insufficient_funds", "invalid_address", "invalid_billing_plan", "invalid_field_value", "invalid_identifier", "invalid_status", "invalid_string_length", "label_images_not_supported", "meter_failure", "order_source_not_active", "rate_limit_exceeded", "refresh_not_supported", "request_body_required", "return_label_not_supported", "settings_not_supported", "subscription_inactive", "terms_not_accepted", "tracking_not_supported", "trial_expired", "unauthorized", "unknown", "unspecified", "verification_failure", "warehouse_conflict", "webhook_event_type_conflict", "customs_items_required", "incompatible_paired_labels", "invalid_charge_event", "invalid_object", "no_rates_returned", "freight_connection_inactive", "freight_provider_id_required", "freight_shipment_not_found", "freight_tracking_not_available", "freight_tracking_not_found", "freight_shipment_not_batchable"

  - `errors.message` (string, required)
    An error message associated with the failed API call
    Example: "Body of request cannot be null."

  - `errors.field_name` (string)
    The name of the field that caused the error (only present for validation errors)
    Example: "inventory_warehouse_id"

  - `errors.field_value` (string)
    The invalid value that was provided for the field (only present for validation errors)
    Example: "invalid-id"


