---
title: "Calculate shipping rates"
method: POST
path: "/shipping/rates"
tags: ["Shipping Rate API"]
---

# Calculate shipping rates

`POST /shipping/rates`

Returns available shipping options and rates for the given list of products.

**Recipient Address Requirements:**
- Only `country_code` is required in the recipient object
- `state_code` is only required for United States (US), Australia (AU), and Canada (CA)
- All other recipient fields are optional

**Note:** Providing more address information may produce more precise results and more shipping options. While only the country code is required, including additional details like city, postal code, and state/province can help return more accurate shipping rates and additional delivery options.

**Important:** Shipping rates returned by this endpoint may differ from those returned by `/orders/estimate-costs` if your store has [store shipping settings](https://www.printful.com/dashboard/settings/store-shipping) configured. 

The `/orders/estimate-costs` endpoint automatically applies your store's shipping settings (including shipping markup), while this endpoint applies them **only if the store shipping settings are enabled**. To ensure consistent results between both endpoints, make sure your store shipping settings are enabled and properly configured in your Printful Dashboard.

## Headers

- `X-PF-Store-Id` string

## Request body

- object — Order information
  - `recipient` ShippingRatesAddress, required — Recipient address information for shipping rate calculation. **Required fields:** - `country_code`: Always required **Conditionally required fields:** - `state_code`: Required for United States (US), Australia (AU), and Canada (CA) **Optional fields:** - All other fields are optional but providing more information may produce more precise results and more shipping options.
    - `address1` string — Address line 1
    - `address2` string, nullable — Address line 2
    - `city` string — City
    - `state_code` string, nullable — State/province code. Required for United States (US), Australia (AU), and Canada (CA). For other countries, this field is optional.
    - `country_code` string, required — Two-letter country code (ISO 3166-1 alpha-2)
    - `zip` string, nullable — ZIP or postal code
    - `phone` string, nullable — Phone number
  - `items` ItemInfo[], required — Array of order items
    - `variant_id` string — Catalog Variant ID of the item ordered. See [Catalog API](#tag/Catalog-API) <span style="color:red">*Required if no other IDs given</span>
    - `external_variant_id` string — External Variant ID of the item ordered. See [Ecommerce Platform Sync API](#tag/Ecommerce-Platform-Sync-API). <span style="color:red">*Required if no other IDs given</span>
    - `warehouse_product_variant_id` string — Warehouse product variant ID of the item ordered. See [Warehouse Products API](#tag/Warehouse-Products-API). <span style="color:red">*Required if no other IDs given</span>
    - `quantity` integer, required — Number of items ordered
    - `value` string — Item retail value - optional but can help to properly calculate
  - `currency` string — 3 letter currency code (optional), required if the rates need to be converted to another currency instead of store default currency
  - `locale` string — Locale in which shipping rate names will be returned. Available options: `en_US` (default), `es_ES`

## Response `200`

OK

- object
  - `code` integer — Response status code `200`
  - `result` ShippingInfo[]
    - `id` string — Shipping method ID
    - `name` string — Shipping method name
    - `rate` string — Shipping rate
    - `currency` string — Currency code in which the rate is returned
    - `minDeliveryDays` integer — Estimated minimum delivery days. <span style="color:orange">Warning! This value may not be present in response.</span>
    - `maxDeliveryDays` integer — Estimated maximum delivery days. <span style="color:orange">Warning! This value may not be present in response.</span>
    - `minDeliveryDate` integer — Estimated minimum delivery date. <span style="color:orange">Warning! This value may not be present in response.</span>
    - `maxDeliveryDate` integer — Estimated maximum delivery date. <span style="color:orange">Warning! This value may not be present in response.</span>

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `404` — Not found

---

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