---
title: "List landing page checkout shipping options"
method: POST
path: "/v3/pages/{page_unique_id}/checkout/shipping-options"
tags: ["Landing Page Runtime"]
---

# List landing page checkout shipping options

`POST /v3/pages/{page_unique_id}/checkout/shipping-options`

## Request

- Base URL: `https://api.scalev.com`
- URL: `https://api.scalev.com/v3/pages/{page_unique_id}/checkout/shipping-options`
- Auth: none required

Page-scoped public endpoint used by `Scalev.checkout.shippingOptions(payload)`. It accepts `items`, `destination`, and `payment_method`, then resolves the store from the authenticated page. For an authorized published builder page, postcode collection follows that page's store configuration. A postcode remains required for authored HTML pages. For the current published builder form only, `allow_incomplete: true` also permits quoting shipping before a required postcode is selected. This preview does not authorize order creation or bypass the form's postcode validation. Other browser parameters cannot override the postcode policy. The destination location, current items, shipping availability and quoted costs are still validated by the backend. Published builder forms follow the existing landing-page draft order policy: insufficient inventory does not block shipping previews. With both `allow_incomplete: true` and `include_provisional: true`, the current published builder can quote shipping while a customer-entered price is unfinished. The result is non-payable and never authorizes an order. Storefront and authored HTML validation remains unchanged; order creation stays strict.

## Request body

- PagePublicCheckoutShippingOptionsRequest: Landing page checkout payload used by `Scalev.checkout.shippingOptions(payload)`. Use one combined `items` list for item selection; the path page and page API key determine the store context.
  - `items` PagePublicCheckoutItem[]
    - `type` 'product' | 'bundle', required
    - `variant_unique_id` string: Required when `type` is `product`.
    - `bundle_price_option_unique_id` string: Required when `type` is `bundle`.
    - `quantity` integer, required
  - `destination` PagePublicCheckoutDestination: Buyer destination submitted by a landing page.
    - `address` string, nullable
    - `subdistrict_id` union: Destination subdistrict ID.
      - integer
      - string
    - `postal_code` string, nullable
  - `payment_method` string
  - `allow_incomplete` boolean: For the current published builder form only, allow a shipping preview before its postcode is selected. Authored HTML and storefront requirements stay strict. A preview never authorizes order creation.
  - `include_provisional` boolean: With allow_incomplete, permit unfinished nonnegative whole-IDR prices only for the current published builder form. The backend still validates items, quantities, destination and shipping availability. Ordinary shipping requests and order creation keep strict price checks.

## Response `200`

Landing page checkout shipping options

- StorefrontCheckoutShippingOptionsResponse
  - `data` StorefrontShippingOption[], required
    - `courier_service_id` integer, required
    - `courier_code` string, required
    - `courier_name` string: Customer-facing courier name, separate from the service name.
    - `service_code` string, required
    - `name` string, required
    - `cost` union, required
      - string, nullable
      - number
    - `etd` string, nullable, required: Estimated delivery time returned by the courier integration.
    - `is_cod` boolean, required
    - `warehouse_unique_id` string, required
    - `courier_aggregator_code` string, nullable, required
    - `logo_url` string, uri, nullable
  - `is_paginated` false, required

## Other responses

- `400`: Bad Request
- `404`: Not Found

## Changes

- **2026-10-26** `f96c47558bd4`: 2 info
  - api tag `Landing Page Runtime` added
  - api tag `HTML Mode Pages` removed
- **2026-10-26** `5c1373139b01`: 3 info
  - added the new optional request property `allow_incomplete`
  - added the new optional request property `include_provisional`
  - added the optional property `data/items/courier_name` to the response with the `200` status

[Operation history](https://skmtc.dev/scalev/apis/nexus-commerce-api/changes/v3/pages/:page_unique_id/checkout/shipping-options/post.md)

---

[API](https://skmtc.dev/scalev/apis/nexus-commerce-api.md) - [All operations](https://skmtc.dev/scalev/apis/nexus-commerce-api/llms.txt) - [OpenAPI document](https://skmtc.dev/scalev/apis/nexus-commerce-api/revisions/6b9152f04622?raw)
