---
title: "Offers"
description: "Preorder offers: what is sold as a preorder, how it is paid for and shipped, and how it looks on the storefront. Create, schedule and enable offers, and edit each capability group."
url: https://docs.stoqapp.com/v2-reference/preorders-offers/
api: "API v2 reference"
---

# Offers

Preorder offers: what is sold as a preorder, how it is paid for and shipped, and how it looks on the storefront. Create, schedule and enable offers, and edit each capability group.

## The offer object

- `id` (string): e.g. `73a74948-2b57-4cc3-971f-2b441828c977`
- `shopify_selling_plan_group_id` (string): e.g. `gid://shopify/SellingPlanGroup/100`
- `name` (string): e.g. `Summer Sneaker Drop`
- `internal_name` (string): e.g. `summer-2026`
- `widget` (object)
  - `button` (object)
    - `button_text` (string): e.g. `Preorder Now`
    - `custom_colors_enabled` (boolean): e.g. `true`
    - `text_color` (string): e.g. `#ffffff`
    - `background_color` (string): e.g. `#8700d3`
  - `disclaimer` (object)
    - `show_disclaimer` (boolean): e.g. `true`
    - `disclaimer_text` (string): e.g. `Expected to ship by August 2026`
    - `text_color` (string): e.g. `#FFFFFF`
    - `background_color` (string): e.g. `#1F2937`
    - `border_radius` (integer): e.g. `4`
  - `badge` (object)
    - `show_badge` (boolean): e.g. `true`
    - `badge_text` (string): e.g. `Pre-Order`
    - `text_color` (string): e.g. `#FFFFFF`
    - `background_color` (string): e.g. `#000000`
- `inventory` (object)
  - `stock_condition` (string): e.g. `out_of_stock`
  - `reserve` (string): e.g. `on_sale`
- `products` (object)
  - `selection` (string): e.g. `custom`
  - `shopify_collection_id` (any)
  - `tags` (array of anys)
  - `eligible_inventory_policy` (string): e.g. `all`
  - `excluded_shopify_variant_ids` (array of anys)
  - `exclusion_tag` (any)
- `shipping` (object)
  - `timeline` (object)
    - `scope` (string): e.g. `same`
    - `show_shipping_text` (boolean): e.g. `true`
    - `shipping_text` (string): e.g. `Shipping: As soon as possible`
    - `variant_shipping_text` (string): e.g. `ASAP`
  - `delivery_timing` (string): e.g. `asap`
  - `ships_at` (any)
  - `days_after_checkout` (any)
  - `fulfillment` (object)
    - `handling` (string): e.g. `none`
    - `hold_reason` (string): e.g. `Order contains a preorder product. All fulfillments are o…`
    - `separate_orders` (object)
      - `grouping` (string): e.g. `offer`
      - `number_format` (string): e.g. `suffix`
      - `suffix` (string): e.g. `SPLIT`
      - `hold_fulfillments` (boolean): e.g. `false`
      - `tag` (string): e.g. `STOQ-split-order`
      - `transaction_gateway` (string): e.g. `Prepaid`
      - `original_order_hold_tag` (any)
      - `original_order_split_tag` (any)
  - `on_hold` (object)
    - `release_schedule` (string): e.g. `manual`
    - `release_at` (any)
    - `require_payment` (boolean): e.g. `false`
- `payments` (object)
  - `options_offered` (string): e.g. `full`
  - `default_option` (string): e.g. `full`
  - `full` (object)
    - `selling_plan_id` (string): e.g. `gid://shopify/SellingPlan/101`
    - `checkout_charge` (object)
      - `charge_type` (string): e.g. `percentage`
      - `charge_amount` (integer): e.g. `100`
    - `remaining_balance` (object)
      - `charge_trigger` (string): e.g. `no_remaining_balance`
      - `charge_exact_time` (any)
      - `days_after_checkout` (any)
    - `price_adjustment` (object)
      - `adjustment_type` (any)
      - `adjustment_amount` (any)
    - `option_title` (string): e.g. `Full payment`
    - `option_description` (string): e.g. `Pay the full price now`
    - `discount_text` (string): e.g. `Save {{ discount }}`
  - `collection_schedule` (string): e.g. `manual`
  - `show_payment_widget` (boolean): e.g. `false`
  - `show_discounted_price` (any)
  - `currency_code` (string): e.g. `USD`
- `availability` (object)
  - `schedule` (string): e.g. `enabled`
  - `starts_at` (any)
  - `ends_at` (any)
  - `current_status` (string): e.g. `live`
- `limits` (object)
  - `default_per_variant` (any)
  - `display_style` (string): e.g. `none`
  - `limit_text` (string): e.g. `{{ quantity }} units available for preorder`
  - `show_icons` (boolean): e.g. `true`
  - `progress_bar` (object)
    - `progress_text` (string): e.g. `{{ sold }} of {{ total }} claimed`
    - `fill_color` (string): e.g. `#ffffff`
    - `background_color` (string): e.g. `#e5e5e5`
    - `box_background_color` (any)
    - `text_color` (string): e.g. `#ffffff`
    - `border_radius` (integer): e.g. `4`
    - `show_percentage` (boolean): e.g. `false`
  - `order_tags` (array of strings)
  - `terms` (object)
    - `require_acceptance` (boolean): e.g. `false`
    - `terms_text` (string): e.g. `I acknowledge and agree to the preorder terms and conditi…`
    - `disable_button_until_accepted` (boolean): e.g. `false`
    - `record_acceptance` (boolean): e.g. `false`
    - `acceptance_label` (string): e.g. `Preorder Terms Accepted`
  - `cart` (object)
    - `allowed_items` (string): e.g. `mixed`
    - `error_message` (string): e.g. `Preorders must be purchased separately from regular items…`
  - `order_quantity` (object)
    - `minimum` (any)
    - `maximum` (any)
- `countdown` (object)
  - `show_when` (string): e.g. `disabled`
  - `date_source` (string): e.g. `schedule`
  - `starts_at` (any)
  - `ends_at` (any)
  - `starts_text` (any)
  - `ends_text` (any)
  - `labels` (object)
    - `days` (string): e.g. `Days`
    - `hours` (string): e.g. `Hours`
    - `minutes` (string): e.g. `Mins`
    - `seconds` (string): e.g. `Secs`
  - `text_color` (string): e.g. `#000000`
  - `background_color` (string): e.g. `#f5f5f5`
  - `border_radius` (integer): e.g. `8`
  - `units` (array of strings)
  - `current` (object)
    - `visible_phase` (string): e.g. `hidden`
    - `target_at` (any)
    - `heading_text` (any)
- `markets` (object)
  - `scope` (string): e.g. `all`
  - `shopify_market_ids` (array of anys)
- `advanced` (object)
  - `checkout_method` (string): e.g. `selling_plan`
  - `cart_attributes` (object)
    - `show_payment` (boolean): e.g. `false`
    - `show_shipping` (boolean): e.g. `true`
    - `custom_text` (any)
- `integrations` (object)
  - `pos` (object)
    - `enable_pos` (boolean): e.g. `true`
    - `inventory_check` (string): e.g. `required`
  - `b2b` (object)
    - `enable_b2b` (boolean): e.g. `true`
- `batches` (object)
  - `release_strategy` (string): e.g. `all_at_once`
  - `advance_schedule` (string): e.g. `automatic`
  - `label_format` (string): e.g. `Batch {{ n }}`
  - `status_text` (object)
    - `past` (string): e.g. `Sold out`
    - `live` (string): e.g. `Live`
    - `upcoming` (string): e.g. `Coming soon`
  - `widget` (object)
    - `style` (string): e.g. `roadmap`
    - `progress` (string): e.g. `counts`
    - `show_other_ship_dates` (boolean): e.g. `true`
    - `show_names` (boolean): e.g. `false`
  - `items` (array of anys)
- `translations` (object)
- `created_at` (string): e.g. `2026-06-25T10:30:45Z`
- `updated_at` (string): e.g. `2026-06-25T11:45:30Z`

```json
{
  "id": "73a74948-2b57-4cc3-971f-2b441828c977",
  "shopify_selling_plan_group_id": "gid://shopify/SellingPlanGroup/100",
  "name": "Summer Sneaker Drop",
  "internal_name": "summer-2026",
  "widget": {
    "button": {
      "button_text": "Preorder Now",
      "custom_colors_enabled": true,
      "text_color": "#ffffff",
      "background_color": "#8700d3"
    },
    "disclaimer": {
      "show_disclaimer": true,
      "disclaimer_text": "Expected to ship by August 2026",
      "text_color": "#FFFFFF",
      "background_color": "#1F2937",
      "border_radius": 4
    },
    "badge": {
      "show_badge": true,
      "badge_text": "Pre-Order",
      "text_color": "#FFFFFF",
      "background_color": "#000000"
    }
  },
  "inventory": {
    "stock_condition": "out_of_stock",
    "reserve": "on_sale"
  },
  "products": {
    "selection": "custom",
    "shopify_collection_id": null,
    "tags": [],
    "eligible_inventory_policy": "all",
    "excluded_shopify_variant_ids": [],
    "exclusion_tag": null
  },
  "shipping": {
    "timeline": {
      "scope": "same",
      "show_shipping_text": true,
      "shipping_text": "Shipping: As soon as possible",
      "variant_shipping_text": "ASAP"
    },
    "delivery_timing": "asap",
    "ships_at": null,
    "days_after_checkout": null,
    "fulfillment": {
      "handling": "none",
      "hold_reason": "Order contains a preorder product. All fulfillments are on hold, as configured in STOQ > Preorders.",
      "separate_orders": {
        "grouping": "offer",
        "number_format": "suffix",
        "suffix": "SPLIT",
        "hold_fulfillments": false,
        "tag": "STOQ-split-order",
        "transaction_gateway": "Prepaid",
        "original_order_hold_tag": null,
        "original_order_split_tag": null
      }
    },
    "on_hold": {
      "release_schedule": "manual",
      "release_at": null,
      "require_payment": false
    }
  },
  "payments": {
    "options_offered": "full",
    "default_option": "full",
    "full": {
      "selling_plan_id": "gid://shopify/SellingPlan/101",
      "checkout_charge": {
        "charge_type": "percentage",
        "charge_amount": 100
      },
      "remaining_balance": {
        "charge_trigger": "no_remaining_balance",
        "charge_exact_time": null,
        "days_after_checkout": null
      },
      "price_adjustment": {
        "adjustment_type": null,
        "adjustment_amount": null
      },
      "option_title": "Full payment",
      "option_description": "Pay the full price now",
      "discount_text": "Save {{ discount }}"
    },
    "collection_schedule": "manual",
    "show_payment_widget": false,
    "show_discounted_price": null,
    "currency_code": "USD"
  },
  "availability": {
    "schedule": "enabled",
    "starts_at": null,
    "ends_at": null,
    "current_status": "live"
  },
  "limits": {
    "default_per_variant": null,
    "display_style": "none",
    "limit_text": "{{ quantity }} units available for preorder",
    "show_icons": true,
    "progress_bar": {
      "progress_text": "{{ sold }} of {{ total }} claimed",
      "fill_color": "#ffffff",
      "background_color": "#e5e5e5",
      "box_background_color": null,
      "text_color": "#ffffff",
      "border_radius": 4,
      "show_percentage": false
    },
    "order_tags": [
      "STOQ-preorder"
    ],
    "terms": {
      "require_acceptance": false,
      "terms_text": "I acknowledge and agree to the preorder terms and conditions for this product.",
      "disable_button_until_accepted": false,
      "record_acceptance": false,
      "acceptance_label": "Preorder Terms Accepted"
    },
    "cart": {
      "allowed_items": "mixed",
      "error_message": "Preorders must be purchased separately from regular items. Please complete your current order first, or clear your cart to continue."
    },
    "order_quantity": {
      "minimum": null,
      "maximum": null
    }
  },
  "countdown": {
    "show_when": "disabled",
    "date_source": "schedule",
    "starts_at": null,
    "ends_at": null,
    "starts_text": null,
    "ends_text": null,
    "labels": {
      "days": "Days",
      "hours": "Hours",
      "minutes": "Mins",
      "seconds": "Secs"
    },
    "text_color": "#000000",
    "background_color": "#f5f5f5",
    "border_radius": 8,
    "units": [
      "days",
      "hours",
      "minutes",
      "seconds"
    ],
    "current": {
      "visible_phase": "hidden",
      "target_at": null,
      "heading_text": null
    }
  },
  "markets": {
    "scope": "all",
    "shopify_market_ids": []
  },
  "advanced": {
    "checkout_method": "selling_plan",
    "cart_attributes": {
      "show_payment": false,
      "show_shipping": true,
      "custom_text": null
    }
  },
  "integrations": {
    "pos": {
      "enable_pos": true,
      "inventory_check": "required"
    },
    "b2b": {
      "enable_b2b": true
    }
  },
  "batches": {
    "release_strategy": "all_at_once",
    "advance_schedule": "automatic",
    "label_format": "Batch {{ n }}",
    "status_text": {
      "past": "Sold out",
      "live": "Live",
      "upcoming": "Coming soon"
    },
    "widget": {
      "style": "roadmap",
      "progress": "counts",
      "show_other_ship_dates": true,
      "show_names": false
    },
    "items": []
  },
  "translations": {},
  "created_at": "2026-06-25T10:30:45Z",
  "updated_at": "2026-06-25T11:45:30Z"
}
```

## Endpoints

- `GET /preorders/offers`: [List offers](https://docs.stoqapp.com/v2-reference/preorders-offers/list-offers.md)
- `POST /preorders/offers`: [Create an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/create-an-offer.md)
- `GET /preorders/offers/{id}`: [Retrieve an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/retrieve-an-offer.md)
- `PATCH /preorders/offers/{id}`: [Update an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/update-an-offer.md)
- `GET /preorders/offers/{id}/advanced`: [List advanced for an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/list-advanced-for-an-offer.md)
- `PATCH /preorders/offers/{id}/advanced`: [Update an advanced on an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/update-an-advanced-on-an-offer.md)
- `GET /preorders/offers/{id}/batches`: [List batches for an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/list-batches-for-an-offer.md)
- `PATCH /preorders/offers/{id}/batches`: [Update a batch on an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/update-a-batch-on-an-offer.md)
- `GET /preorders/offers/{id}/countdown`: [List countdown for an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/list-countdown-for-an-offer.md)
- `PATCH /preorders/offers/{id}/countdown`: [Update a countdown on an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/update-a-countdown-on-an-offer.md)
- `POST /preorders/offers/{id}/disable`: [Disable an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/disable-an-offer.md)
- `POST /preorders/offers/{id}/discard`: [Discard](https://docs.stoqapp.com/v2-reference/preorders-offers/discard.md)
- `POST /preorders/offers/{id}/duplicate`: [Duplicate an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/duplicate-an-offer.md)
- `POST /preorders/offers/{id}/enable`: [Enable an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/enable-an-offer.md)
- `GET /preorders/offers/{id}/integrations`: [List integrations for an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/list-integrations-for-an-offer.md)
- `PATCH /preorders/offers/{id}/integrations`: [Update an integration on an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/update-an-integration-on-an-offer.md)
- `GET /preorders/offers/{id}/inventory`: [List inventory for an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/list-inventory-for-an-offer.md)
- `PATCH /preorders/offers/{id}/inventory`: [Update an inventory on an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/update-an-inventory-on-an-offer.md)
- `GET /preorders/offers/{id}/limits`: [List limits for an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/list-limits-for-an-offer.md)
- `PATCH /preorders/offers/{id}/limits`: [Update a limit on an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/update-a-limit-on-an-offer.md)
- `GET /preorders/offers/{id}/markets`: [List markets for an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/list-markets-for-an-offer.md)
- `PATCH /preorders/offers/{id}/markets`: [Update a market on an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/update-a-market-on-an-offer.md)
- `GET /preorders/offers/{id}/payments`: [List payments for an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/list-payments-for-an-offer.md)
- `PATCH /preorders/offers/{id}/payments`: [Update a payment on an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/update-a-payment-on-an-offer.md)
- `GET /preorders/offers/{id}/products`: [List products for an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/list-products-for-an-offer.md)
- `PATCH /preorders/offers/{id}/products`: [Update a product on an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/update-a-product-on-an-offer.md)
- `POST /preorders/offers/{id}/products/add_variants`: [Add products variants to an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/add-products-variants-to-an-offer.md)
- `POST /preorders/offers/{id}/products/advance_batches`: [Products advance batches](https://docs.stoqapp.com/v2-reference/preorders-offers/products-advance-batches.md)
- `POST /preorders/offers/{id}/products/bulk_toggle_inventory_policy`: [Bulk products toggle inventory policy offers](https://docs.stoqapp.com/v2-reference/preorders-offers/bulk-products-toggle-inventory-policy-offers.md)
- `POST /preorders/offers/{id}/products/remove_variants`: [Remove products variants from an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/remove-products-variants-from-an-offer.md)
- `GET /preorders/offers/{id}/products/variants`: [List products variants for an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/list-products-variants-for-an-offer.md)
- `GET /preorders/offers/{id}/products/variants/{shopify_variant_id}`: [List products variants for an offer (GET /preorders/offers/{id}/products/variants/{shopify_variant_id})](https://docs.stoqapp.com/v2-reference/preorders-offers/list-products-variants-for-an-offer-get-preorders-offers-id-products-variants-sh.md)
- `PATCH /preorders/offers/{id}/products/variants/{shopify_variant_id}`: [Update a products variant on an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/update-a-products-variant-on-an-offer.md)
- `POST /preorders/offers/{id}/products/variants/{shopify_variant_id}/reset_count`: [Reset products variants count for an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/reset-products-variants-count-for-an-offer.md)
- `POST /preorders/offers/{id}/products/variants/{shopify_variant_id}/toggle_inventory_policy`: [Products variants toggle inventory policy](https://docs.stoqapp.com/v2-reference/preorders-offers/products-variants-toggle-inventory-policy.md)
- `POST /preorders/offers/{id}/products/variants/bulk_update_settings`: [Bulk products variants update settings offers](https://docs.stoqapp.com/v2-reference/preorders-offers/bulk-products-variants-update-settings-offers.md)
- `POST /preorders/offers/{id}/restore`: [Restore an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/restore-an-offer.md)
- `POST /preorders/offers/{id}/schedule`: [Schedule an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/schedule-an-offer.md)
- `GET /preorders/offers/{id}/shipping`: [List shipping for an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/list-shipping-for-an-offer.md)
- `PATCH /preorders/offers/{id}/shipping`: [Update a shipping on an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/update-a-shipping-on-an-offer.md)
- `GET /preorders/offers/{id}/shipping/schedulable_orders`: [List shipping schedulable orders for an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/list-shipping-schedulable-orders-for-an-offer.md)
- `GET /preorders/offers/{id}/translations`: [List translations for an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/list-translations-for-an-offer.md)
- `POST /preorders/offers/{id}/translations/clear_locale`: [Translations clear locale](https://docs.stoqapp.com/v2-reference/preorders-offers/translations-clear-locale.md)
- `POST /preorders/offers/{id}/translations/reset_to_defaults`: [Reset translations to defaults for an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/reset-translations-to-defaults-for-an-offer.md)
- `POST /preorders/offers/{id}/translations/set`: [Set translations for an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/set-translations-for-an-offer.md)
- `POST /preorders/offers/{id}/translations/set_many`: [Set translations many for an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/set-translations-many-for-an-offer.md)
- `POST /preorders/offers/{id}/translations/unset`: [Translations unset](https://docs.stoqapp.com/v2-reference/preorders-offers/translations-unset.md)
- `POST /preorders/offers/{id}/unschedule`: [Unschedule](https://docs.stoqapp.com/v2-reference/preorders-offers/unschedule.md)
- `GET /preorders/offers/{id}/widget`: [List widget for an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/list-widget-for-an-offer.md)
- `PATCH /preorders/offers/{id}/widget`: [Update a widget on an offer](https://docs.stoqapp.com/v2-reference/preorders-offers/update-a-widget-on-an-offer.md)
- `POST /preorders/offers/bulk_disable`: [Bulk disable offers](https://docs.stoqapp.com/v2-reference/preorders-offers/bulk-disable-offers.md)
- `POST /preorders/offers/bulk_enable`: [Bulk enable offers](https://docs.stoqapp.com/v2-reference/preorders-offers/bulk-enable-offers.md)
