# List shipping options

> `POST https://api.kustom.co/shippingoptions`

Gets shipping options for the given customer data, address and order lines.

>It's always important to display proper expected delivery date and time, to create a smoooth customer experience. Below
you can find a table with examples of how customer will see delivery date and time that is provided in the `delivery_time`
field of shipping option. Representation can vary in case provided date points to the same date or a period, in case the
date is today, tomorrow or any date in the future. Dates in the past are ignored.

| Provided values | UI presentation | Examples |
| --- | --- | --- |
|  delivery_time.interval.earliest  | Delivered after `delivery_time.interval.earliest` business days | Delivered after 3 business days |
|  delivery_time.interval.latest  | Delivered within `delivery_time.interval.latest` business days | Delivered within 3 business days |
|  delivery_time.interval.earliest delivery_time.interval.latest  | Delivered in `delivery_time.interval.earliest`-`delivery_time.interval.latest` business days | Delivered in 2-7 business days |
|  delivery_time.interval.earliest delivery_time.cutoff  | Delivered after `delivery_time.interval.earliest` business days, if ordered before `delivery_time.cutoff` | Delivered after 7 business days, if ordered before 14:00 |
|  delivery_time.interval.latest delivery_time.cutoff  | Delivered within `delivery_time.interval.latest` business days, if ordered before `delivery_time.cutoff` | Delivered within 7 business days, if ordered before 14:00 |
|  delivery_time.interval.earliest delivery_time.interval.latest delivery_time.cutoff  | Delivered in `delivery_time.interval.earliest`-`delivery_time.interval.latest` business days, if ordered before `delivery_time.cutoff` | Delivered in 1-5 business days, if ordered before 11:30 |
|  delivery_time.interval.earliest delivery_time.time_of_day.earliest delivery_time.time_of_day.latest  | Delivered after `delivery_time.interval.earliest` business days between ca. `delivery_time.time_of_day.earliest` and `delivery_time.time_of_day.latest`  | Delivered after 3 business days between ca 17:00 and 18:00 |
|  delivery_time.interval.latest delivery_time.time_of_day.earliest delivery_time.time_of_day.latest  | Delivered within `delivery_time.interval.latest` business days between ca. `delivery_time.time_of_day.earliest` and `delivery_time.time_of_day.latest`  | Delivered within 5 business days between ca 8:00 and 17:00  |
|  delivery_time.interval.earliest delivery_time.interval.latest delivery_time.time_of_day.earliest delivery_time.time_of_day.latest  | Delivered in `delivery_time.interval.earliest`-`delivery_time.interval.latest` business days between ca. `delivery_time.time_of_day.earliest` and `delivery_time.time_of_day.latest` | Delivered in 1-2 business days between ca 9:00 and 12:00 |
|  delivery_time.interval.earliest delivery_time.cutoff delivery_time.time_of_day.earliest delivery_time.time_of_day.latest  | Delivered after `delivery_time.interval.earliest` business days between ca. `delivery_time.time_of_day.earliest` and `delivery_time.time_of_day.latest`, if ordered before `delivery_time.cutoff` | Delivered after 4 business days between ca. 16:00 and 18:00, if ordered before 11:30 |
|  delivery_time.interval.latest delivery_time.cutoff delivery_time.time_of_day.earliest delivery_time.time_of_day.latest  | Delivered within `delivery_time.interval.latest` business days between ca. `delivery_time.time_of_day.earliest` and `delivery_time.time_of_day.latest`, if ordered before `delivery_time.cutoff` | Delivered within 3 business days between ca 10:00 and 17:00, if ordered before 11:30 |
|  delivery_time.interval.earliest delivery_time.interval.latest delivery_time.cutoff delivery_time.time_of_day.earliest delivery_time.time_of_day.latest  | Delivered in `delivery_time.interval.earliest`-`delivery_time.interval.latest` business days between ca. `delivery_time.time_of_day.earliest` and `delivery_time.time_of_day.latest`, if ordered before `delivery_time.cutoff` | Delivered in 1-5 business days between ca 15:00 and 17:00, if ordered before 11:30 |
|  delivery_time.earliest  | Delivered `delivery_time.earliest` at the earliest |  Delivered tomorrow at the earliest Delivered Thursday March 5 at the earliest  |
|  delivery_time.latest  | Delivered no later than `delivery_time.latest` |  Delivered today Delivered no later than tomorrow Delivered no later than Thursday, March 4  |
|  delivery_time.earliest delivery_time.latest  | Delivered between `delivery_time.earliest` and `delivery_time.latest` |  Delivered today Delivered no later than tomorrow Delivered tomorrow Delivered between Wednesday March 4 and Friday March 6 Delivered Monday April 6 Delivered between Monday April 6 and Friday May 24  |
|  delivery_time.earliest delivery_time.cutoff  | Delivered `delivery_time.earliest` at the earliest, if ordered before `delivery_time.cutoff` |  Delivered Saturday, July 25 at the earliest, if ordered before 15:00 Delivered tomorrow, if ordered before 14:00  |
|  delivery_time.latest delivery_time.cutoff  | Delivered no later than `delivery_time.latest`, if ordered before `delivery_time.cutoff` |  Delivered no later than Sunday, June 4, if ordered before 20:00 Delivered tomorrow, if ordered before 14:00  |
|  delivery_time.earliest delivery_time.latest delivery_time.cutoff  | Delivered between `delivery_time.earliest` and `delivery_time.latest`, if ordered before `delivery_time.cutoff` |  Delivered between Monday March 4 and Wednesday March 6, if ordered before 12:00 Delivered tomorrow, if ordered before 14:00  |
|  delivery_time.earliest delivery_time.time_of_day.earliest delivery_time.time_of_day.latest  | Delivered `delivery_time.earliest` at the earliest, from `delivery_time.time_of_day.earliest` to `delivery_time.time_of_day.latest` | Delivered Saturday March 13 at the earliest, from 15:00 to 17:00 |
|  delivery_time.latest delivery_time.time_of_day.earliest delivery_time.time_of_day.latest  | Delivered no later than `delivery_time.latest`, from `delivery_time.time_of_day.earliest` to `delivery_time.time_of_day.latest` | Delivered no later than Sunday November 9, from 9:00 to 15:00 |
|  delivery_time.earliest delivery_time.latest delivery_time.time_of_day.earliest delivery_time.time_of_day.latest  | Delivered between `delivery_time.earliest` and `delivery_time.latest`, from `delivery_time.time_of_day.earliest` to `delivery_time.time_of_day.latest`  | Delivered between Monday March 9 and Friday March 13, from 10:00 to 18:00 |
|  delivery_time.earliest delivery_time.cutoff delivery_time.time_of_day.earliest delivery_time.time_of_day.latest  | Delivered `delivery_time.earliest` at the earliest, from `delivery_time.time_of_day.earliest` to `delivery_time.time_of_day.latest`, if ordered before `delivery_time.cutoff` | Delivered tomorrow at the earliest, from 15:00 to 18:00, if ordered before 21:00 |
|  delivery_time.latest delivery_time.cutoff delivery_time.time_of_day.earliest delivery_time.time_of_day.latest  | Delivered no later than `delivery_time.latest`, from `delivery_time.time_of_day.earliest` to `delivery_time.time_of_day.latest`, if ordered before `delivery_time.cutoff` | Delivered no later than tmorrow, from 21:00 to 23:00, if ordered before 15:00 |
|  delivery_time.earliest delivery_time.latest delivery_time.cutoff delivery_time.time_of_day.earliest delivery_time.time_of_day.latest  | Delivered between `delivery_time.earliest` and `delivery_time.latest`, from `delivery_time.time_of_day.earliest` to `delivery_time.time_of_day.latest`, if ordered before `delivery_time.cutoff` | Delivered between Monday March 9 and Friday March 13, from 15:00 to 17:00, if ordered before 11:30  |

## Parameters

- `Authorization` (string, header, required) — Authorization token on format `Bearer <token>`

## Request body

`application/vdn.klarna.shipping.get_options-v1+json`

- `currency` (string, required) — ISO 4217 alphabetic currency code.
- `geoblocking` (boolean) — A flag that indicates if the requested shipping options are for geoblocking flow.

    Example: abc.se has consumers in e.g. Norway. According to Konsumentverket, these consumers should be given “the same opportunity to buy as a Swedish consumer”.

    User Flows:

  - A Norwegian consumer enters abc.se

  - The consumer selects Norway as billing country and fills in his/her address

  - Shipping module will display an information box saying “We do not deliver to the country specified in your billing address. Please select an alternative shipping option below.”

  - The consumer chooses the delivery country (only if more than one is available).

  - The consumer either fills in an address and gets a full set of shipping options **OR**

  - The consumer chooses not to fill in an address and gets presented with only pickup-merchant-store shipping options with all the Swedish stores as locations.
- `locale` (string, required) — IETF BCP-47 locale definition.
- `order` (object, required) — Order definition
  - `tags[]` (array<string>) — TMS defined order or order line attributes. The tags are passed in by the merchant during order creation and passed along as is.

    The TMS and Merchant use tags to direct custom business logic between themselves: (Note that these tags are examples and NOT required or related to KSS in any way)

    - Pricing

    - `promo17`

    - Option Configuration

    - `next_day_only`

    - `sort_by_cost_asc`

    - `limit_8`

    - Customer Metadata

    - `member`

    - `platinum`

    Different tags are allowed on order and order line level.  For example, a merchant can provide order line detail of signifcance to the TMS, i.e. `["age_restricted","bulky"]`
  - `id` (string) — Kustom order id, will be known at time of purchase and only provided in the `/shipment` call. No assumption should be made about the format.
  - `lines[]` (array<object>, required)
    - `attributes` (object)
      - `tags[]` (array<string>) — TMS defined order or order line attributes. The tags are passed in by the merchant during order creation and passed along as is.

        The TMS and Merchant use tags to direct custom business logic between themselves: (Note that these tags are examples and NOT required or related to KSS in any way)

        - Pricing

        - `promo17`

        - Option Configuration

        - `next_day_only`

        - `sort_by_cost_asc`

        - `limit_8`

        - Customer Metadata

        - `member`

        - `platinum`

        Different tags are allowed on order and order line level.  For example, a merchant can provide order line detail of signifcance to the TMS, i.e. `["age_restricted","bulky"]`
      - `dimensions` (object) — Dimensions of this item
        - `height` (integer) — height in mm
        - `length` (integer) — length in mm
        - `width` (integer) — width in mm
      - `weight` (integer) — Weight of this item in grams
    - `quantity` (integer, required)
    - `reference` (string) — Merchant provided item reference
    - `tax_rate` (integer, required) — Tax rate of shipping option in percent. Non-negative, two implicit decimals. I.e 2500 = 25.00%.
    - `total_discount_amount` (integer) — Total discount amount in cents
    - `total_price_including_tax` (integer, required) — Total price of items, including tax, given in cents
    - `total_tax_amount` (integer, required) — Total tax amount in cents
    - `type` (string) — Order line type. Enum: `physical`, `discount`, `shipping_fee`, `sales_tax`, `digital`, `gift_card`, `store_credit`, `surcharge`.
    - `unit_price` (integer, required) — Unit price in cents
  - `total_amount` (integer, required) — Total order amount including tax in cents.
  - `total_tax` (integer, required) — Total tax of the order amount in cents.
  - `total_weight` (integer) — Total weight in grams
- `recipient` (object, required) — Information about the recipient
  - `care_of` (string)
  - `city` (string)
  - `company_name` (string) — Applicable only if recipient is a company
  - `country` (string, required) — 2 character ISO 3166 country format
  - `customer_type` (string) — B2C or B2B customer type. Note: does only indicate the type of customer, not if the address is residential or business. Enum: `person`, `organization`.
  - `email` (string)
  - `family_name` (string)
  - `given_name` (string)
  - `phone` (string) — E.164 international format
  - `postal_code` (string) — Normalized to country specifications
  - `region` (string) — Country specific region
  - `street_address` (string)
  - `street_address2` (string)
- `selected_shipping_option_id` (string) — Informs what selected shipping option is currently selected by an enduser.
  When this information is provided it means that the API caller wants to refine
  the locations for the selected shipping option.
  The API endpoint should restrict its response to the selected shipping option only
  and base the refinement on the recipient data.
  The recipient data is temporary and should not replace any state persistent (if any)
  based on previous recipient data received in prior shippingoptions calls.
- `sender` (object) — Information about the sender. Should indicate from where the goods are dispatched. This object is optional and can be empty.
  - `address` (object)
    - `city` (string, required)
    - `country` (string, required) — 2 character ISO 3166 country format
    - `postal_code` (string, required) — Normalized to country specifications
    - `region` (string) — Country specific region
    - `street_address` (string, required)
    - `street_address2` (string)
  - `sender_id` (string) — Optional merchant provided sender identifier. Can be used to identify different warehouses within the same country or different dispatch routes that can affect delivery time.
- `session_id` (string, required) — Unique Kustom shipping session id.

### Example request

```json
{
  "currency": "SEK",
  "geoblocking": true,
  "locale": "sv-SE",
  "order": {
    "tags": [
      "member"
    ],
    "id": "<string>",
    "lines": [
      {
        "attributes": {
          "tags": [
            "member"
          ],
          "dimensions": {
            "height": 5000,
            "length": 5000,
            "width": 5000
          },
          "weight": 1000
        },
        "quantity": 2,
        "reference": "sku-1234",
        "tax_rate": 2500,
        "total_discount_amount": 1000,
        "total_price_including_tax": 4000,
        "total_tax_amount": 1250,
        "type": "physical",
        "unit_price": 2500
      }
    ],
    "total_amount": 10000,
    "total_tax": 2500,
    "total_weight": 2000
  },
  "recipient": {
    "care_of": "<string>",
    "city": "Stockholm",
    "company_name": "Kustom AB",
    "country": "SE",
    "customer_type": "person",
    "email": "info@kustom.com",
    "family_name": "Joyce",
    "given_name": "Klara",
    "phone": "+46812012010",
    "postal_code": "111 34",
    "region": "CA",
    "street_address": "Sveavägen 46",
    "street_address2": "<string>"
  },
  "selected_shipping_option_id": "tms-specific-shipping-option-id",
  "sender": {
    "address": {
      "city": "Stockholm",
      "country": "SE",
      "postal_code": "111 34",
      "region": "CA",
      "street_address": "Sveavägen 46",
      "street_address2": "<string>"
    },
    "sender_id": "warehouse-13"
  },
  "session_id": "201cda14-975f-4c4d-9c2f-12f3896b5156"
}
```

## Responses

### 200

`application/vdn.klarna.shipping.get_options-v1+json`

- `shipping_options[]` (array<object>)
  - `addons[]` (array<object>)
    - `id` (string) — Pass-through custom ID field set by the API provider. Can be used by the API provider to match add-ons in the `POST /shipment` request with add-ons from the `POST /shippingoptions` response.
    - `max_length` (integer) — Applies to text input add-ons. Maximum length of the text. If unset, no limit is applied.
    - `preselected` (boolean) — If set to true, the add-on is selected by default (can be unselected by the user). Only applies to add-ons that are explicitly selectable (e.g., checkboxes and addresses, but not text inputs).
    - `price` (integer) — Additional cost in cents, including tax, that will be added to the option's price if the add-on is selected.
    - `required` (boolean) — If true, the add-on is marked as mandatory and the user cannot finalize the purchase without selecting it or otherwise filling the required information.
    - `type` (string, required) — Each add-on type must appear at most once per shipping option.

      Type is one of:

      - **sms**: Displays a checkbox and an input field for a phone number, for SMS notifications on delivery status updates.
      - **email**: Displays a checkbox and an input field for an email address, for email notifications on delivery status updates.
      - **floor-number**: Displays an input field where the consumer can provide the exact floor they live on within a building.
      - **apartment-number**: Displays an input field where the consumer can provide their exact apartment number for the courier.
      - **entry-code**: Displays an input field where the consumer can provide an entry code, e.g. for the building front door.
      - **locker-code**: Displays an input field where the consumer can provide a locker code, e.g. for the post box.
      - **additional-instructions**: Displays an input field where the consumer can provide additional delivery information for the courier.
      - **contactless-delivery**: Displays a checkbox for selecting a contactless delivery. Only available in the Nordics and Germany.
      - **leave-outside-door**: Displays a checkbox to allow the package to be left by the shopper's door if they are not home when it arrives. Only available in the Nordics and Germany.
      - **evening-delivery**: Displays a checkbox for selecting an evening delivery, between 17:00 and 22:00 on any of the delivery days.
      - **daytime-delivery**: Displays a checkbox for selecting a daytime delivery, between 08:00 and 17:00 on any of the delivery days.
      - **expedited-packing**: Displays a checkbox for selecting expedited packing. This represents a commitment from the merchant to prioritize this order within any warehouse handling or dispatch processes.
      - **reusable-packaging**: Displays a checkbox for selecting reusable packaging. This represents a commitment from the merchant to send this order using reusable packaging.
      - **sustainable-packaging**: Displays a checkbox for selecting sustainable packaging. This represents a commitment from the merchant to ensure the delivery uses easily recyclable or reusable packaging.
      - **carbon-compensated**: Displays a checkbox for the user to make a carbon offsetting donation. Contact your account manager if you would like to explore this area further in partnership with us.
      - **indoor-home-delivery**: Displays a checkbox for selecting an indoor delivery, e.g. for large homewares or white goods.
      - **assembly-at-pickup**: Displays a checkbox for selecting assembly of the goods, e.g. for sports equipment like bikes or home and garden items.
      - **package-removal**: Displays a checkbox to allow the package to be removed by the merchant.
    - `url` (string) — Displays a 'Learn more' link to a web page with more information about the addon.
  - `area` (object) — DRAFT - Geographically enclosed delivery area. WIP: Specifications might change.
    - `boundary[]` (array<object>, required) — Polygon definition of enclosed area using decimal degree geographical coordinates
      - `lat` (number, required) — Latitude in decimal degrees
      - `lng` (number, required) — Longitude in decimal degrees
    - `price` (integer) — Price in cents including tax for this area, if different from base price. Tax rate from base price.
    - `type` (string, required) — The type of area enclosed by the boundaries Enum: `archipelago`, `urban`, `suburban`, `rural`.
  - `carrier` (string, required) — Transportation carrier company used.

    - **merchant** can be used for merchant self-hosted delivery methods (ex. instore pickup).

    - **generic-postal** can be used to indicate a generic postal network.

    - Additional carriers can be supported on request.

    Value should be one of:
    Enum: `acs-courier`, `airmee`, `an-post`, `asendia`, `australia-post`, `austrian-post`, `bartolini`, `best`, `bpost`, `bring`, `bring-green`, `budbee`, `budbee-box`, `budcompaniett`, `bussgods`, `citymail`, `colis-prive`, `colissimo`, `collicare`, `correos`, `correos-express`, `crown-relocations`, `czech-post`, `dachser`, `danske-fragt`, `dao`, `deutsche-post`, `dhl`, `dhl-express`, `doorier`, `dooris`, `dpd`, `dsv`, `dynalogic`, `e2y`, `early-bird`, `emily-company`, `evri`, `fedex`, `fietskoeriers`, `generic`, `generic-postal`, `gls`, `gordon`, `helthjem`, `hoekstra`, `hrvatska-posta`, `in-time`, `instabikes`, `instabox`, `instabox-green`, `itella`, `kaukokiito`, `kiitolinja`, `laposte`, `leen-merken`, `lgt`, `magyar-posta`, `mat-se`, `matkahuolto`, `merchant`, `mioo-assembly-service`, `mx-transport`, `mondial-relay`, `mtd`, `netflux`, `ntex`, `oda`, `omniva`, `onroad`, `paack`, `packs`, `porterbuddy`, `post-it`, `post-luxembourg`, `posta-slovenija`, `posten-norge`, `posti`, `postnl`, `postnl-extra-home`, `postnord`, `professional-parcel-logistic`, `quick-pac`, `rapido`, `red-je-pakketje`, `relais-colis`, `royal-mail`, `safe-carrier-logistics`, `sagawa`, `schenker`, `skargarda`, `slovenska-posta`, `stuart`, `svosj`, `svosj-trial`, `swiss-post`, `swoopin`, `trunkrs`, `ups`, `urbit`, `urgent-cargus`, `van-spreuwel`, `wideroe-smart`, `wolt`, `yunda`, `zalando`.
  - `class` (string) — Description:

    - **standard**: Normal delivery time.

    - **economy**: Slow delivery.

    - **express**: Fast delivery.

    - **courier**: Fastest delivery time, like food delivery.

    Value should be one of:
    Enum: `standard`, `economy`, `express`, `courier`.
  - `delivery_time` (object) — Defines earliest and latest estimated delivery dates and/or times and the cutoff time for these delivery times to be met. Is used to indicate estimated delivery time to the user. Timezone should be given if time is supplied, otherwise zulu is assumed.

    NOTE: The *interval* object always overrides the explicit earliest and latest delivery dates (which means these will be ignored if an *interval* is set).
    - `cutoff` (string) — Delivery times are only valid if order is placed before this time, in ISO 8601 format.
    - `earliest` (string) — Earliest possible delivery date, in ISO 8601 format.
    - `interval` (object) — Defines offsets for earliest and latest estimated delivery dates, in business days. Timezone offset should be given in terms of UTC offset in seconds (see utc_offset_in_seconds), otherwise 0 is assumed.
      - `earliest` (string) — Date offset (in business days) that will be added to current local time in UTC and be presented as a delivery_time earliest date.
      - `latest` (string) — Date offset (in business days) that will be added to current local time in UTC and be presented as a delivery_time latest date.
      - `utc_offset_in_seconds` (string) — The UTC offset (in seconds) that will be used when formatting the evaluated date/time.
    - `latest` (string) — Parcel will be delivered at latest this date, in ISO 8601 format.
    - `time_of_day` (object) — Defines earliest and latest estimated delivery times of day.
      - `earliest` (string) — Defines earliest estimated delivery time in ISO 8601 format. The date part will be ignored.
      - `latest` (string) — Defines latest estimated delivery time in ISO 8601 format. The date part will be ignored.
  - `features[]` (array<object>)
    - `class` (string) — Determines if the feature is an simple information box or a badge. Badges are eye-catching and colourful, highlighting a particular feature of the shipping option to draw the shopper's attention. Enum: `info`, `badge`, `call_to_action`.
    - `merchant_info_text` (string) — Text to be displayed in the info-box. Only applicable when `type` is `merchant_info_text`.
    - `type` (string, required) — This string will determine the feature applied. Info-boxes:

      - **distributor-will-contact**: Displays an info-box to say the distributor will contact the shopper afterwards.

      - **package-removal**: Displays an info-box to say the carrier will remove the packaging and dispose of it on behalf of the shopper.

      - **room-delivery**: Displays an info-box to say the order will be delivered and carried into the room of the shopper's choice.

      - **delivery-time-extra-info**: Displays an info-box to say the stated number of days refers to the shipping time from the merchant to the consumer.

      - **multiple-deliveries-info**: Displays an info-box to say that the order will be split into multiple deliveries.

      - **merchant-info-text**: Displays an info-box with the text provided in `merchant_info_text`

        Badges:

      - **afternoon**: Displays a badge highlighting that the option is an afternoon delivery option.

      - **carbon-compensated**: Displays a badge highlighting that the option will be carbon compensated.

      - **eco-friendly**: Displays a badge highlighting that the option is environmentally friendly.

      - **evening**: Displays a badge highlighting that the option is an evening delivery option.

      - **express**: Displays a badge highlighting that the option is an express option.

      - **fossil-free**: Displays a badge highlighting that the shipping option is fossil free.

      - **in-door-home-delivery**: Displays a badge highlighting that the shipment will be delivered indoors.

      - **morning**: Displays a badge highlighting that the option is a moning delivery option.

      - **multiple-deliveries**: Displays a badge highlighting that the shipment will be split into multiple deliveries.

      - **outdoor-home-delivery**: Displays a badge highlighting that the shipment will be delivered outdoors.

      - **recommended**: Displays a badge highlighting that the option recommended by the merchant.

      - **traceable**: Displays a badge highlighting that the shipping option is traceable.

        Call to actions:

      - **learn-more**: Displays a 'Learn more' link to a URL with more information about the feature.

      - **size-guide**: Displays a 'Size Guide' icon that links to URL with a size guide.
    - `url` (string) — Displays a link to a web page with information about the feature. Only applicable when `class` is `call_to_action`.
  - `free_above` (integer) — The total amount threshold at which the shipping option price becomes free, i.e. 0.00. In cents, i.e. 10000 = 100.00.
  - `id` (string, required) — Aggregator provided identifier. Must be unique.
  - `locations[]` (array<object>) — Location definitions of pickup points/boxes, store locations, etc.
    - `address` (object, required)
      - `city` (string, required)
      - `country` (string, required) — 2 character ISO 3166 country format
      - `postal_code` (string, required) — Normalized to country specifications
      - `region` (string) — Country specific region
      - `street_address` (string, required)
      - `street_address2` (string)
    - `coordinates` (object) — Geographical position in decimal degrees
      - `lat` (number, required) — Latitude in decimal degrees
      - `lng` (number, required) — Longitude in decimal degrees
    - `delivery_time` (object) — Defines earliest and latest estimated delivery dates and/or times and the cutoff time for these delivery times to be met. Is used to indicate estimated delivery time to the user. Timezone should be given if time is supplied, otherwise zulu is assumed.

      NOTE: The *interval* object always overrides the explicit earliest and latest delivery dates (which means these will be ignored if an *interval* is set).
      - `cutoff` (string) — Delivery times are only valid if order is placed before this time, in ISO 8601 format.
      - `earliest` (string) — Earliest possible delivery date, in ISO 8601 format.
      - `interval` (object) — Defines offsets for earliest and latest estimated delivery dates, in business days. Timezone offset should be given in terms of UTC offset in seconds (see utc_offset_in_seconds), otherwise 0 is assumed.
        - `earliest` (string) — Date offset (in business days) that will be added to current local time in UTC and be presented as a delivery_time earliest date.
        - `latest` (string) — Date offset (in business days) that will be added to current local time in UTC and be presented as a delivery_time latest date.
        - `utc_offset_in_seconds` (string) — The UTC offset (in seconds) that will be used when formatting the evaluated date/time.
      - `latest` (string) — Parcel will be delivered at latest this date, in ISO 8601 format.
      - `time_of_day` (object) — Defines earliest and latest estimated delivery times of day.
        - `earliest` (string) — Defines earliest estimated delivery time in ISO 8601 format. The date part will be ignored.
        - `latest` (string) — Defines latest estimated delivery time in ISO 8601 format. The date part will be ignored.
    - `id` (string) — Optional TMS provided identifier, will be passed back if provided.
    - `name` (string, required) — User friendly name of location (pickup point, store name, etc).
    - `operational_hours` (object) — Opening and closing times for a location (24 hs Format. e.g. '09:00', '18:00'). If operational hours are unknown, do not provide this object. Otherwise, provide hours or an open/closed status for each day, either using default hours or providing overrides for each day of the week.
      - `default[]` (array<object>) — Opening and closing hours (24 hs Format. e.g. '09:00', '18:00') *OR* an open/closed status for each day of the week
        - `always_open` (boolean) — Open all day
        - `close` (string) — 24 hs Format (e.g. 18:00)
        - `closed` (boolean) — Closed all day
        - `open` (string) — 24 hs Format (e.g. 09:00)
      - `overrides` (object)
        - `date[]` (array<object>)
          - `date` (string)
          - `hours` (object) — Opening and closing times for (part of) a given day (24 hs Format. e.g. '09:00', '18:00'). Assumes local timezone.
            - `always_open` (boolean) — Open all day
            - `close` (string) — 24 hs Format (e.g. 18:00)
            - `closed` (boolean) — Closed all day
            - `open` (string) — 24 hs Format (e.g. 09:00)
        - `weekday` (object)
          - `fri[]` (array<object>)
            - `always_open` (boolean) — Open all day
            - `close` (string) — 24 hs Format (e.g. 18:00)
            - `closed` (boolean) — Closed all day
            - `open` (string) — 24 hs Format (e.g. 09:00)
          - `mon[]` (array<object>) Same shape as `fri`.
          - `sat[]` (array<object>) Same shape as `fri`.
          - `sun[]` (array<object>) Same shape as `fri`.
          - `thu[]` (array<object>) Same shape as `fri`.
          - `tue[]` (array<object>) Same shape as `fri`.
          - `wed[]` (array<object>) Same shape as `fri`.
    - `price` (integer) — Price in cents including tax for this location, if different from base price. Tax rate from base price.
  - `name` (string) — Carrier product name. Will only be used as a fallback in case Kustom does not have a proper copy string for the shipping option.
  - `preview` (boolean) — Should be set to true if this option was included as a result of partial address data and that it might be changed or removed when full address data is available.
  - `price` (integer, required) — Price of shipping option in cents including tax. I.e. 4000 = 40.00.
  - `tax_rate` (integer, required) — Tax rate of shipping option in percent. Non-negative, two implicit decimals. I.e 2500 = 25.00%. The amount of tax will be calculated as price - (price * 10000 / (10000 + tax_rate)).
  - `timeslots[]` (array<object>) — Timeslot definition, only applicable to delivery methods with timeslots.
    - `cutoff` (string) — Timeslot only valid if order is placed before this time
    - `end` (string, required) — End time of slot in ISO 8601 format
    - `id` (string) — Optional TMS provided identifier, will be passed back if provided
    - `price` (integer) — Price in cents including tax for this slot, if different from base price. Tax rate from base price.
    - `start` (string, required) — Start time of slot in ISO 8601 format
  - `type` (string, required) — - **boat-delivery**: Delivery by boat.

    - **click-collect**: Order goods online for reservation and pick up at a merchant store.

    - **delivery-address**: To address/door delivery, final selected option will contain an address and potential timeslot.

    - **generic-pickup**: Delivery to a pickup point when location is unknown.

    - **generic-shipping**: Shipping option when the carrier decides shipping method.

    - **office-delivery**: Delivery to an office address. For eg. to an office reception.

    - **pallet-delivery**: Home delivery of big/heavy goods by truck and on a pallet.

    - **crane-delivery**: Delivery by crane for very large goods, such as pools and jacuzzis.

    - **pickup-box**: Delivery to a pickup locker/box. Final selected option will contain a location.

    - **pickup-merchant-store**: Delivery to a merchant store for pickup. Final selected option will contain a location.

    - **pickup-point**: Delivery to a pickup point. Final selected option will contain a location.

    - **pickup-warehouse**: Delivery to a merchant warehouse for pick up.

    - **postal**: Best-effort delivery of a package/letter using the postal network.

```json
{
  "shipping_options": [
    {
      "addons": [
        {
          "id": "sms-pickup-point-3",
          "max_length": 4,
          "preselected": false,
          "price": 400,
          "required": false,
          "type": "<string>",
          "url": "https://www.kustom.co"
        }
      ],
      "area": {
        "boundary": [
          {
            "lat": 18.062689527869225,
            "lng": 59.33655850186736
          },
          {
            "lat": 18.063891157507896,
            "lng": 59.336892270502865
          },
          {
            "lat": 18.06284509599209,
            "lng": 59.33791817815379
          },
          {
            "lat": 18.061750754714012,
            "lng": 59.337655548745
          }
        ],
        "price": 5000,
        "type": "archipelago"
      },
      "carrier": "postnord",
      "class": "standard",
      "delivery_time": {
        "cutoff": "2017-07-21T17:32:28Z",
        "earliest": "2017-07-21T17:32:28Z",
        "interval": {
          "earliest": "3",
          "latest": "5",
          "utc_offset_in_seconds": "3600"
        },
        "latest": "2017-07-21T17:32:28Z",
        "time_of_day": {
          "earliest": "2017-07-21T17:32:28Z",
          "latest": "2017-07-21T19:32:28Z"
        }
      },
      "features": [
        {
          "class": "info",
          "merchant_info_text": "<string>",
          "type": "<string>",
          "url": "https://www.kustom.co"
        }
      ],
      "free_above": 10000,
      "id": "option-1234",
      "locations": [
        {
          "address": {
            "city": "Stockholm",
            "country": "SE",
            "postal_code": "111 34",
            "region": "CA",
            "street_address": "Sveavägen 46",
            "street_address2": "<string>"
          },
          "coordinates": {
            "lat": 59.336946,
            "lng": 18.063095
          },
          "delivery_time": {
            "cutoff": "2017-07-21T17:32:28Z",
            "earliest": "2017-07-21T17:32:28Z",
            "interval": {
              "earliest": "3",
              "latest": "5",
              "utc_offset_in_seconds": "3600"
            },
            "latest": "2017-07-21T17:32:28Z",
            "time_of_day": {
              "earliest": "2017-07-21T17:32:28Z",
              "latest": "2017-07-21T19:32:28Z"
            }
          },
          "id": "loc-12345",
          "name": "ICA supermarket",
          "operational_hours": {
            "default": [
              {
                "always_open": false,
                "close": "22:00",
                "closed": false,
                "open": "09:00"
              }
            ],
            "overrides": {
              "date": [
                {
                  "date": "2017-12-24",
                  "hours": {
                    "always_open": false,
                    "close": "22:00",
                    "closed": false,
                    "open": "09:00"
                  }
                }
              ],
              "weekday": {
                "fri": [
                  {
                    "always_open": false,
                    "close": "22:00",
                    "closed": false,
                    "open": "09:00"
                  }
                ],
                "mon": [
                  {
                    "always_open": false,
                    "close": "22:00",
                    "closed": false,
                    "open": "09:00"
                  }
                ],
                "sat": [
                  {
                    "always_open": false,
                    "close": "22:00",
                    "closed": false,
                    "open": "09:00"
                  }
                ],
                "sun": [
                  {
                    "always_open": false,
                    "close": "22:00",
                    "closed": false,
                    "open": "09:00"
                  }
                ],
                "thu": [
                  {
                    "always_open": false,
                    "close": "22:00",
                    "closed": false,
                    "open": "09:00"
                  }
                ],
                "tue": [
                  {
                    "always_open": false,
                    "close": "22:00",
                    "closed": false,
                    "open": "09:00"
                  }
                ],
                "wed": [
                  {
                    "always_open": false,
                    "close": "22:00",
                    "closed": false,
                    "open": "09:00"
                  }
                ]
              }
            }
          },
          "price": 0
        }
      ],
      "name": "FedEx Priority",
      "preview": false,
      "price": 4000,
      "tax_rate": 2500,
      "timeslots": [
        {
          "cutoff": "2017-07-21T17:32:28Z",
          "end": "2017-07-21T17:32:28Z",
          "id": "slot-12345",
          "price": 0,
          "start": "2017-07-21T17:32:28Z"
        }
      ],
      "type": "pickup-point"
    }
  ]
}
```

### 400

The /shippingoptions request was malformed.
In order to simplify debugging,
the field `failure_reason` should contain a text describing the failure reason.

`application/vdn.klarna.shipping.get_options-v1+json`

- `failure_reason` (string)

```json
{
  "failure_reason": "Field 'xxx.yyy.example' must not be empty."
}
```

### 401

Invalid or expired token. A new token will be obtained.
