> ## Documentation Index
> Fetch the complete documentation index at: https://developers.appstle.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update subscription delivery method

> Updates the delivery method for a subscription contract, supporting standard shipping, local delivery, and customer pickup options. The delivery method determines how future orders will be fulfilled.

**Delivery Method Types:**
The system automatically determines the type based on the subscription's current delivery address:
- **SHIPPING**: Standard shipping to customer address (default)
- **LOCAL**: Local delivery within merchant's delivery zones
- **PICK_UP**: Customer pickup at designated location

**Two Ways to Update:**
1. **Manual Parameters**: Provide title, code, and presentment title directly
2. **Delivery Method ID**: Provide a Shopify DeliveryMethodDefinition ID to auto-populate all fields

**Using Delivery Method ID:**
When providing a delivery-method-id:
- System fetches the method from Shopify's delivery profiles
- Automatically sets title, code, and presentment title
- Applies associated delivery price if defined
- ID can be numeric or full GraphQL ID format

**Delivery Type Requirements:**
- **Standard Shipping**: No additional requirements
- **Local Delivery**: Phone number must exist in delivery address
- **Pickup**: Pickup location must be configured in subscription

**Price Updates:**
- If using delivery-method-id with a fixed price, updates delivery price
- Manual updates don't change the delivery price
- Price changes affect all future orders

**Side Effects:**
- Creates activity log entry with method details
- May remove invalid discount codes automatically
- Updates apply to all future orders immediately
- No customer notification sent

**Common Use Cases:**
- Switch from standard shipping to express shipping
- Change pickup location for customer convenience
- Update local delivery options based on availability
- Apply seasonal delivery methods

**Important Notes:**
- Cannot change the delivery type (shipping/local/pickup) - only the method within that type
- Delivery methods must be configured in Shopify's shipping settings
- Changes don't affect orders already in fulfillment

**Authentication:** Requires valid X-API-Key header



## OpenAPI

````yaml /subscription/admin-api-swagger.json put /api/external/v2/subscription-contracts-update-delivery-method
openapi: 3.0.1
info:
  description: >-
    Comprehensive API documentation for managing subscriptions, payments, and
    related operations. These APIs allow you to programmatically manage
    subscription lifecycles, handle payments, configure products, and integrate
    subscription functionality into your applications.
  title: Admin APIs
  version: 0.0.1
servers:
  - url: https://subscription-admin.appstle.com
security: []
tags:
  - description: >-
      Core APIs for managing the complete subscription lifecycle including
      creation, updates, pausing, resuming, and cancellation of subscriptions.
    name: Subscription Management
  - description: >-
      APIs for managing subscription payment methods, processing payments,
      handling payment retries, and updating billing information.
    name: Subscription Payments
  - description: >-
      APIs for managing subscription contracts including delivery schedules,
      pricing, order notes, billing cycles, and shipping addresses.
    name: Subscription Contracts
  - description: >-
      APIs for managing products within subscriptions including adding,
      removing, updating quantities, and swapping products.
    name: Subscription Products
  - description: >-
      APIs for handling billing operations, payment processing, and financial
      transactions related to subscriptions.
    name: Billing & Payments
  - description: >-
      APIs for managing discounts and promotional codes applied to
      subscriptions.
    name: Subscription Discounts
  - description: >-
      APIs for managing one-time add-on products that can be purchased alongside
      recurring subscription items.
    name: Subscription One-Time Products
  - description: >-
      APIs for managing subscription plans, pricing tiers, and plan
      configurations.
    name: Subscription Plans
  - description: >-
      APIs for managing customizable product boxes and bundles where customers
      can select multiple items.
    name: Build-a-Box & Bundles
  - description: >-
      APIs for managing the product catalog including product information,
      variants, and inventory.
    name: Product Catalog
  - description: >-
      APIs for managing operational settings, configurations, and administrative
      functions.
    name: Operations & Settings
  - description: >-
      APIs powering the customer-facing portal where subscribers can manage
      their own subscriptions.
    name: Customer Portal
  - description: APIs for managing customer information, profiles, and account details.
    name: Customers
  - description: >-
      APIs for retrieving aggregated subscription data, customer subscription
      history, and account-level subscription information.
    name: Subscription Data
  - description: >-
      APIs for managing delivery profiles, shipping rates, free shipping
      configuration, and delivery method options on subscriptions.
    name: Delivery & Shipping
  - description: >-
      APIs for managing storefront customization including custom CSS, theme
      settings, label translations, and merchant-defined widget configuration.
    name: Customization
  - description: >-
      APIs for configuring cancellation flows, retention offers, cancellation
      reason management, and win-back automation.
    name: Customer Retention
paths:
  /api/external/v2/subscription-contracts-update-delivery-method:
    put:
      tags:
        - Subscription Management
        - Subscription Contracts
      summary: Update subscription delivery method
      description: >-
        Updates the delivery method for a subscription contract, supporting
        standard shipping, local delivery, and customer pickup options. The
        delivery method determines how future orders will be fulfilled.


        **Delivery Method Types:**

        The system automatically determines the type based on the subscription's
        current delivery address:

        - **SHIPPING**: Standard shipping to customer address (default)

        - **LOCAL**: Local delivery within merchant's delivery zones

        - **PICK_UP**: Customer pickup at designated location


        **Two Ways to Update:**

        1. **Manual Parameters**: Provide title, code, and presentment title
        directly

        2. **Delivery Method ID**: Provide a Shopify DeliveryMethodDefinition ID
        to auto-populate all fields


        **Using Delivery Method ID:**

        When providing a delivery-method-id:

        - System fetches the method from Shopify's delivery profiles

        - Automatically sets title, code, and presentment title

        - Applies associated delivery price if defined

        - ID can be numeric or full GraphQL ID format


        **Delivery Type Requirements:**

        - **Standard Shipping**: No additional requirements

        - **Local Delivery**: Phone number must exist in delivery address

        - **Pickup**: Pickup location must be configured in subscription


        **Price Updates:**

        - If using delivery-method-id with a fixed price, updates delivery price

        - Manual updates don't change the delivery price

        - Price changes affect all future orders


        **Side Effects:**

        - Creates activity log entry with method details

        - May remove invalid discount codes automatically

        - Updates apply to all future orders immediately

        - No customer notification sent


        **Common Use Cases:**

        - Switch from standard shipping to express shipping

        - Change pickup location for customer convenience

        - Update local delivery options based on availability

        - Apply seasonal delivery methods


        **Important Notes:**

        - Cannot change the delivery type (shipping/local/pickup) - only the
        method within that type

        - Delivery methods must be configured in Shopify's shipping settings

        - Changes don't affect orders already in fulfillment


        **Authentication:** Requires valid X-API-Key header
      operationId: updateDeliveryMethod
      parameters:
        - description: API Key for authentication
          example: sk_live_1234567890abcdef
          in: header
          name: X-API-Key
          required: true
          schema:
            type: string
        - description: Subscription contract ID to update
          example: 123456789
          in: query
          name: contractId
          required: true
          schema:
            format: int64
            minimum: 1
            type: integer
        - description: >-
            Display name of the delivery method. This is what customers see.
            Ignored if delivery-method-id is provided.
          example: Express Shipping
          in: query
          name: delivery-method-title
          required: true
          schema:
            maxLength: 255
            type: string
        - description: >-
            Internal code for the delivery method. Often same as title. Used for
            system identification. Ignored if delivery-method-id is provided.
          example: EXPRESS_SHIP
          in: query
          name: delivery-method-code
          required: true
          schema:
            maxLength: 255
            type: string
        - description: >-
            Localized version of the title for multi-language stores. Often same
            as title for single-language stores. Ignored if delivery-method-id
            is provided.
          example: Express Shipping
          in: query
          name: delivery-method-presentment-title
          required: true
          schema:
            maxLength: 255
            type: string
        - description: >-
            Optional Shopify DeliveryMethodDefinition ID. When provided,
            automatically fetches and applies the delivery method's title, code,
            presentment title, and price. Can be numeric ID or full GraphQL ID
            (gid://shopify/DeliveryMethodDefinition/123).
          example: 123456
          in: query
          name: delivery-method-id
          required: false
          schema:
            type: string
      responses:
        '204':
          description: Delivery method successfully updated
          headers:
            X-Alert:
              description: Success message
              schema:
                example: Subscription Updated
                type: string
              style: simple
        '400':
          content:
            application/json:
              examples:
                Invalid Delivery Method ID:
                  description: Invalid Delivery Method ID
                  value:
                    detail: >-
                      The specified delivery method does not exist in store's
                      delivery profiles
                    status: 400
                    title: >-
                      UserGeneratedError:Delivery method not found for
                      deliveryMethodID:999999
                    type: https://example.com/errors/bad-request
                Local Delivery Phone Required:
                  description: Local Delivery Phone Required
                  value:
                    detail: >-
                      Local delivery requires a phone number in the delivery
                      address
                    status: 400
                    title: UserGeneratedError:Phone number is required
                    type: https://example.com/errors/bad-request
                No Delivery Address:
                  description: No Delivery Address
                  value:
                    detail: Subscription has no delivery address configured
                    status: 400
                    title: >-
                      UserGeneratedError:Delivery method not found for
                      contract:123456789
                    type: https://example.com/errors/bad-request
                Shopify API Error:
                  description: Shopify API Error
                  value:
                    detail: Delivery method is not available for this delivery address
                    status: 400
                    title: UserGeneratedError:Unable to update delivery method
                    type: https://example.com/errors/bad-request
          description: Invalid request or update failed
        '401':
          content:
            application/json:
              example:
                detail: Valid X-API-Key header is required
                status: 401
                title: Authentication required
                type: https://example.com/errors/unauthorized
          description: Authentication required
        '403':
          content:
            application/json:
              example:
                detail: API key does not have permission to modify delivery methods
                status: 403
                title: Insufficient permissions
                type: https://example.com/errors/forbidden
          description: Insufficient permissions
        '404':
          description: Subscription contract not found
        '422':
          content:
            application/json:
              example:
                detail: >-
                  Selected delivery method cannot be used with subscription
                  products
                status: 422
                title: Delivery method incompatible
                type: https://example.com/errors/unprocessable-entity
          description: Delivery method cannot be applied

````