---
title: "Create a shipping protection quote"
method: POST
path: "/shipping-offers/quotes"
tags: ["ShippingOffers"]
---

# Create a shipping protection quote

`POST /shipping-offers/quotes`

This endpoint calculates the shipping protection premium, i.e. the price you will charge the customer for shipping protection, for eligible products in the specified cart.<p>The response will include the premium and a quote id which must be used to create a valid Order with Extend including shipping protection. An optional array "excluded_products" may contain a list of products that were excluded from the premium calculation if the cart contained products that are not eligible for shipping protection.

## Headers

- `Content-Type` string, required
- `Accept` string, required

## Request body

- object
  - `storeId` string, required — Unique identifier for a store on Extend
  - `region` string — Region is used to filter quotes by the region where the customer is located (an ISO 3166-2 region code). <p> If no region is passed, "US" will be used as default region
  - `currency` 'AUD' | 'CAD' | 'EUR' | 'GBP' | 'NZD' | 'USD', required — Currency code used when contract was purchased. NOTE - This is an ISO-4217 currency code.
  - `customer` object — Customer information
    - `loyaltyStatus` string — The loyalty status of the customer which must be set to create quotes for loyalty customers. Confirmed loyalty customers should have a loyaltyStatus of `member`.
  - `items` object[], required — Array of products in the cart for shipping protection quote
    - `referenceId` string, required — Unique identifier representing the product provided during product (catalog) creation with Extend
    - `quantity` number, required
    - `purchasePrice` number, required — Unit purchase price of the product, expressed in terms of the smallest currency unit.<p> <ul><li>$19.99 would be 1999</li><li>1.234,56 € would be 123456</li><li>£ 1,999.99 would be 199999</li></ul> <p> Please note that the purchase price should not reflect the quantity as total price
    - `productName` string
    - `category` string — Category of the product in Merchant's catalog
    - `shippable` boolean — Value provided by merchant that determines if product can be shipped
  - `locale` string — The locale of the customer. Locale is used to determine the language for display and communication. Locale is formatted as xx-XX: the first two letters denote language, (ISO 639-1 standards) and the last two letters denote region (ISO 3166 standards).

## Response `200`

When all request parameters are valid and the request is processed successfully. If the request is not eligible for shipping protection coverage, the, premium on the response will be zero and there will be no quote ID in the response, so you will not be able to create a shipping protection order. Additionally, an optional note response attribute may contain additional context when no quote id is returned.<ul> <li>exceeds_coverage_max - total eligible cart value is higher than maximum allowed value for shipping protection </li> <li>below_coverage_min - otal eligible cart value is lower than minimum allowed value </li><li>not_eligible - none of the products in the request are eligible for shipping protection</li></ul>

- object
  - `id` string — Quote id when a valid shipping protection quote is created.
  - `premium` number, required — Price, expressed in terms of the smallest currency unit.<p> <ul><li>$19.99 would be 1999</li><li>1.234,56 € would be 123456</li><li>£ 1,999.99 would be 199999</li></ul>
  - `currency` 'AUD' | 'CAD' | 'EUR' | 'GBP' | 'NZD' | 'USD', required — Currency code used when contract was purchased. NOTE - This is an ISO-4217 currency code.
  - `offerType` 'OPT_IN' | 'OPT_OUT' | 'OPT_MERCHANT' — Offer type to display to customer, from enum OPT_IN, OPT_OUT, OPT_MERCHANT
  - `excludedProducts` string[] — Array of product referenceId from the original request that are not covered as part of this quote for shipping protection
  - `note` 'exceeds_coverage_max' | 'below_coverage_min' | 'not_eligible' | 'location_not_compliant' — Optional note to provide additional context for some responses. Example: When total cart value of shipping protection covered products exceeds maximum coverage, premium will be zero and note will say exceeds_coverage_max <p> note values: <ul> <li>exceeded_coverage_max - total eligible cart value is higher than maximum allowed value for shipping protection </li> <li>below_coverage_min - total eligible cart value is lower than minimum allowed value </li><li>not_eligible - none of the products in the request are eligible for shipping protection </li></ul>
  - `charityDonations` object — The charity donations that were applied to the quote for enabled donation merchants
    - `amount` number, required — The amount in smallest currency unit of the donation that was used to incldue with the quote premium.<p> <ul><li>$9.99 would be 999</li><li>1.999,99 € would be 199999</li><li>£ 1,999.99 would be 199999</li></ul>
    - `charities` object[], required
      - `charityId` string, required — The charity identifier
      - `charityName` string, required — The charity name

## Other responses

- `400` — The request to the endpoint was invalid
- `404` — The specified resource was not found
- `500` — Internal server error

---

[API](https://skmtc.dev/extend/apis/leads-api.md) · [All operations](https://skmtc.dev/extend/apis/leads-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/extend/leads-api/revisions/76403e33d7d6/schema)
