The Cart Transform API enables you to write functions that modify the pricing and merchandising of cart line items. You can expand a single cart line item to form a bundle of components or add-on products, merge multiple cart lines into a single line that represents a bundle, and update line items to override the price, title, or image.

The API includes the `RunInput` object, which represents the cart, and the `FunctionRunResult` object, which represents the operations to perform on the cart.

## RunInput

The `RunInput` object is the complete schema that your function can receive as input.

For a list of fields that the Cart Transform API's `RunInput` object accepts, refer to [RunInput](/docs/api/functions/reference/cart-transform/graphql/input).

Use the `RunInput` GraphQL query to specify the data that's required to inform the logic in your cart transform function. It is common to use cart line attributes or metafields to pass custom data in to the function using the `RunInput` query.

### Example RunInput

For example, you can write a cart transform function that adds an add-on extended warranty to a product when a customer opts-in by adding the product to the cart.

Use the **cart line attribute** (also known as a cart line property) that's created by the storefront when the cart line is added to determine whether or not to include the following:

- The warranty
- A `metafield` on the product to store the cost of the warranty as a percentage of the original product price
- A `metafield` that's stored on the cart transform itself, to store the ID of the product variant that represents the warranty product

<p>
<div class="react-code-block" data-preset="file">
<div class="react-code-block-preload ThemeMode-dim">
<div class="react-code-block-preload-bar "></div>
<div class="react-code-block-preload-placeholder-container">
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>

</div>
</div>

<script data-option="filename" data-value="run.graphql"></script>

<script type="text/plain" data-language="graphql">
RAW_MD_CONTENTquery RunInput {
  cart {
    lines {
      id
      quantity
      cost {
        amountPerQuantity {
          amount
          currencyCode
        }
      }
      # Access the cart line attribute to decide if a warranty should be added
      warrantyAdded: attribute(key: "Warranty Added") {
        value
      }
      merchandise {
        __typename
        ... on ProductVariant {
          id
          title
          product {
            # Access the metafield value to determine the cost of the warranty
            warrantyCostPercentage: metafield(namespace: "$app:some_namespace", key: "warranty-cost-percentage") {
              type
              value
            }
          }
        }
      }
    }
  }
  cartTransform {
    # Access the variant ID that represents the warranty product
    warrantyVariantID: metafield(namespace: "$app:some_namespace", key: "warranty-variant-id") {
      value
    }
  }
  presentmentCurrencyRate # Decimal conversion rate between shop currency and cart currency
}
END_RAW_MD_CONTENT</script>

</div>
</p>


The following example shows the resulting input to the query:


<p>
<div class="react-code-block" data-preset="file">
<div class="react-code-block-preload ThemeMode-dim">
<div class="react-code-block-preload-bar "></div>
<div class="react-code-block-preload-placeholder-container">
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>

</div>
</div>

<script data-option="filename" data-value="input.json"></script>

<script type="text/plain" data-language="json">
RAW_MD_CONTENT{
  "cart": {
    "lines": [
      {
        "id": "gid://shopify/CartLine/1",
        "quantity": 1,
        "cost": {
          "amountPerQuantity": {
            "amount": "1000.00",
            "currencyCode": "CAD"
          }
        },
        "warrantyAdded": "Yes",
        "merchandise": {
          "id": "gid://shopify/ProductVariant/1",
          "title": "Awesome TV",
          "product": {
            "warrantyCostPercentage": 15
          }
        }
      }
    ]
  },
  "cartTransform": {
    "warrantyVariantID": {
      "value":"gid://shopify/ProductVariant/2"
    }
  },
  "presentmentCurrencyRate": "1.0"
}
END_RAW_MD_CONTENT</script>

</div>
</p>


> Note:
> Set metafields on `cartTransform` with the [`metafieldSet`](/docs/api/admin-graphql/latest/mutations/metafieldsSet) mutation, passing the cart transform ID as the `ownerId`.

## FunctionRunResult

The `FunctionRunResult` object is the shape of the function's [output](/docs/apps/build/functions/input-output#output).

The output returns a list of [cart operations](/docs/api/functions/reference/cart-transform/graphql/common-objects/cartoperation), where each element can have one of the following values:

- **`ExpandOperation`:** Specifies the components of an item and applies a price adjustment. For example, `Skin care kit` is expanded into `2x Face mask` and `1x Cream`.
- **`MergeOperation`**: Enables merging items together into a bundle by specifying the bundle's product parent. For example, the items `1x Burger`, `1x Drink`, and `2x Fries` can be combined into the `Meal Kit` product, resulting in one item (`Meal Kit`) with three components.
- **`UpdateOperation`**: Enables overrides of item properties by specifying a new title, price, or image. This operation is only available to shops on a Plus plan or a Development store plan.

In the case where the function returns multiple operations and there's a collision, Shopify executes a subset of the operations using the following criteria:

- **Multiple expand operations targeting the same cart line:** The first expand operation in the list is executed, and all other expand operations for the same cart line are discarded.

- **Multiple merge operations targeting the same cart line:** The first merge operation in the list is executed, and all other merge operations for the same cart line are discarded.

- **Expand and merge operations targeting the same cart line:** The expand operation is executed, and the merge operation is discarded.

- **Multiple update operations targeting the same cart line:** The first update operation in the list is executed, and all other update operations for the same cart line are discarded.

- **Expand, merge, and update operations targeting the same cart line:** The expand operation will be executed while the merge and update operations will be discarded.

- **Fixed expand and customized expand operations targeting the same cart line:** The fixed expand operation will be executed and the customized expand operation will be discarded.

## Creating a cartTransform object using GraphQL Admin API

To activate your function, create a [`cartTransform`](/docs/api/admin-graphql/latest/objects/CartTransform)
object on the store where you installed your app using the [`cartTransformCreate`](/docs/api/admin-graphql/latest/mutations/cartTransformCreate) mutation.

1. Install the [Shopify GraphiQL app](https://shopify-graphiql-app.shopifycloud.com/) on your store and select the `write_cart_transforms` and `write_products` access scopes.

    > Note:
    > If you've already installed GraphiQL, then you should do so again to select the necessary required access scopes.
1. In the GraphiQL app, select the Admin API and the **2024-01** API version.



1. Find the ID of your function by executing the following query:

    <p>
    <div class="react-code-block" data-preset="file">
    <div class="react-code-block-preload ThemeMode-dim">
    <div class="react-code-block-preload-bar "></div>
    <div class="react-code-block-preload-placeholder-container">
    <div class="react-code-block-preload-code-container">
    <div class="react-code-block-preload-codeline-number"></div>
    <div class="react-code-block-preload-codeline"></div>
    </div>
    <div class="react-code-block-preload-code-container">
    <div class="react-code-block-preload-codeline-number"></div>
    <div class="react-code-block-preload-codeline"></div>
    </div>
    <div class="react-code-block-preload-code-container">
    <div class="react-code-block-preload-codeline-number"></div>
    <div class="react-code-block-preload-codeline"></div>
    </div>
    <div class="react-code-block-preload-code-container">
    <div class="react-code-block-preload-codeline-number"></div>
    <div class="react-code-block-preload-codeline"></div>
    </div>
    <div class="react-code-block-preload-code-container">
    <div class="react-code-block-preload-codeline-number"></div>
    <div class="react-code-block-preload-codeline"></div>
    </div>
    <div class="react-code-block-preload-code-container">
    <div class="react-code-block-preload-codeline-number"></div>
    <div class="react-code-block-preload-codeline"></div>
    </div>
    <div class="react-code-block-preload-code-container">
    <div class="react-code-block-preload-codeline-number"></div>
    <div class="react-code-block-preload-codeline"></div>
    </div>
    <div class="react-code-block-preload-code-container">
    <div class="react-code-block-preload-codeline-number"></div>
    <div class="react-code-block-preload-codeline"></div>
    </div>
    <div class="react-code-block-preload-code-container">
    <div class="react-code-block-preload-codeline-number"></div>
    <div class="react-code-block-preload-codeline"></div>
    </div>
    <div class="react-code-block-preload-code-container">
    <div class="react-code-block-preload-codeline-number"></div>
    <div class="react-code-block-preload-codeline"></div>
    </div>
    <div class="react-code-block-preload-code-container">
    <div class="react-code-block-preload-codeline-number"></div>
    <div class="react-code-block-preload-codeline"></div>
    </div>
    <div class="react-code-block-preload-code-container">
    <div class="react-code-block-preload-codeline-number"></div>
    <div class="react-code-block-preload-codeline"></div>
    </div>

    </div>
    </div>

    <script data-option="filename" data-value="find-function-query.graphql"></script>

    <script type="text/plain" data-language="graphql">
    RAW_MD_CONTENTquery {
      shopifyFunctions(first: 25) {
        nodes {
          app {
            title
          }
          apiType
          title
          id
        }
      }
    }
    END_RAW_MD_CONTENT</script>

    </div>
    </p>


    The result contains a node with your function's ID:

    <p>
    <div class="react-code-block" data-preset="file">
    <div class="react-code-block-preload ThemeMode-dim">
    <div class="react-code-block-preload-bar "></div>
    <div class="react-code-block-preload-placeholder-container">
    <div class="react-code-block-preload-code-container">
    <div class="react-code-block-preload-codeline-number"></div>
    <div class="react-code-block-preload-codeline"></div>
    </div>
    <div class="react-code-block-preload-code-container">
    <div class="react-code-block-preload-codeline-number"></div>
    <div class="react-code-block-preload-codeline"></div>
    </div>
    <div class="react-code-block-preload-code-container">
    <div class="react-code-block-preload-codeline-number"></div>
    <div class="react-code-block-preload-codeline"></div>
    </div>
    <div class="react-code-block-preload-code-container">
    <div class="react-code-block-preload-codeline-number"></div>
    <div class="react-code-block-preload-codeline"></div>
    </div>
    <div class="react-code-block-preload-code-container">
    <div class="react-code-block-preload-codeline-number"></div>
    <div class="react-code-block-preload-codeline"></div>
    </div>
    <div class="react-code-block-preload-code-container">
    <div class="react-code-block-preload-codeline-number"></div>
    <div class="react-code-block-preload-codeline"></div>
    </div>
    <div class="react-code-block-preload-code-container">
    <div class="react-code-block-preload-codeline-number"></div>
    <div class="react-code-block-preload-codeline"></div>
    </div>
    <div class="react-code-block-preload-code-container">
    <div class="react-code-block-preload-codeline-number"></div>
    <div class="react-code-block-preload-codeline"></div>
    </div>

    </div>
    </div>

    <script data-option="filename" data-value="find-function-result.json"></script>

    <script type="text/plain" data-language="json">
    RAW_MD_CONTENT{
      "app": {
        "title": "your-app-name-here"
      },
      "apiType": "cart_transform",
      "title": "your-cart-transform-name",
      "id": "YOUR_FUNCTION_ID_HERE"
    }
    END_RAW_MD_CONTENT</script>

    </div>
    </p>



1. Run the following mutation with the ID of your function:

    <p>
    <div class="react-code-block" data-preset="file">
    <div class="react-code-block-preload ThemeMode-dim">
    <div class="react-code-block-preload-bar "></div>
    <div class="react-code-block-preload-placeholder-container">
    <div class="react-code-block-preload-code-container">
    <div class="react-code-block-preload-codeline-number"></div>
    <div class="react-code-block-preload-codeline"></div>
    </div>
    <div class="react-code-block-preload-code-container">
    <div class="react-code-block-preload-codeline-number"></div>
    <div class="react-code-block-preload-codeline"></div>
    </div>
    <div class="react-code-block-preload-code-container">
    <div class="react-code-block-preload-codeline-number"></div>
    <div class="react-code-block-preload-codeline"></div>
    </div>
    <div class="react-code-block-preload-code-container">
    <div class="react-code-block-preload-codeline-number"></div>
    <div class="react-code-block-preload-codeline"></div>
    </div>
    <div class="react-code-block-preload-code-container">
    <div class="react-code-block-preload-codeline-number"></div>
    <div class="react-code-block-preload-codeline"></div>
    </div>
    <div class="react-code-block-preload-code-container">
    <div class="react-code-block-preload-codeline-number"></div>
    <div class="react-code-block-preload-codeline"></div>
    </div>
    <div class="react-code-block-preload-code-container">
    <div class="react-code-block-preload-codeline-number"></div>
    <div class="react-code-block-preload-codeline"></div>
    </div>
    <div class="react-code-block-preload-code-container">
    <div class="react-code-block-preload-codeline-number"></div>
    <div class="react-code-block-preload-codeline"></div>
    </div>
    <div class="react-code-block-preload-code-container">
    <div class="react-code-block-preload-codeline-number"></div>
    <div class="react-code-block-preload-codeline"></div>
    </div>
    <div class="react-code-block-preload-code-container">
    <div class="react-code-block-preload-codeline-number"></div>
    <div class="react-code-block-preload-codeline"></div>
    </div>
    <div class="react-code-block-preload-code-container">
    <div class="react-code-block-preload-codeline-number"></div>
    <div class="react-code-block-preload-codeline"></div>
    </div>
    <div class="react-code-block-preload-code-container">
    <div class="react-code-block-preload-codeline-number"></div>
    <div class="react-code-block-preload-codeline"></div>
    </div>
    <div class="react-code-block-preload-code-container">
    <div class="react-code-block-preload-codeline-number"></div>
    <div class="react-code-block-preload-codeline"></div>
    </div>
    <div class="react-code-block-preload-code-container">
    <div class="react-code-block-preload-codeline-number"></div>
    <div class="react-code-block-preload-codeline"></div>
    </div>
    <div class="react-code-block-preload-code-container">
    <div class="react-code-block-preload-codeline-number"></div>
    <div class="react-code-block-preload-codeline"></div>
    </div>

    </div>
    </div>

    <script data-option="filename" data-value="mutation.graphql"></script>

    <script type="text/plain" data-language="graphql">
    RAW_MD_CONTENTmutation {
      cartTransformCreate(
        functionId: "YOUR_FUNCTION_ID_HERE",
        blockOnFailure: false # Determines if function failures should block buyers from checking out
      ) {
        cartTransform {
          id
          functionId
        }
        userErrors {
          field
          message
        }
      }
    }
    END_RAW_MD_CONTENT</script>

    </div>
    </p>


    You should receive a GraphQL response that includes the ID of the new `cartTransform` object.

    > Tip:
    > If the mutation returns a `Could not find Function` error, then confirm that the function ID is correct, that you've installed the app on your development store, and that your app has the `write_cart_transforms` access scope.

    <!-- -->

    > Note:
    > For detailed instructions on creating and deploying an extension with the Cart Transform Function API, refer to our guide on [creating customized bundles](/docs/apps/build/product-merchandising/bundles/add-customized-bundle-function).

## Example update operation

The following example demonstrates how you can use an  `update` operation to provide a new title, image, and price for the cart line.

> Note:
> This operation is only available to shops on a Plus plan or a Development store plan.

<p>
<div class="react-code-block" data-preset="file">
<div class="react-code-block-preload ThemeMode-dim">
<div class="react-code-block-preload-bar "></div>
<div class="react-code-block-preload-placeholder-container">
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>

</div>
</div>

<script data-option="filename" data-value="output.json"></script>

<script type="text/plain" data-language="json">
RAW_MD_CONTENT{
  "operations": [
    {
      "update": {
        "cartLineId": "gid://shopify/CartLine/5",
        "title": "Customized Line Item",
        "image": {
          "url": "https://cdn.shopify.com/[...]/custom-image.png"
        },
        "price": {
          "adjustment": {
            "fixedPricePerUnit": {
              "amount": "100"
            }
          }
        }
      }
    }
  ]
}
END_RAW_MD_CONTENT</script>

</div>
</p>


> Note:
> In order to provide the best performance and security, images for the cart line must be uploaded to the [Shopify CDN](https://cdn.shopify.com/). Images can be uploaded either through the [Shopify admin](https://help.shopify.com/manual/shopify-admin/productivity-tools/file-uploads) or using the [Admin API](/docs/api/admin-graphql/latest/mutations/fileCreate). Using images from outside of the CDN will result in an `invalid_image_url` error.
>
> The provided image URL shouldn't include a size suffix. The cart will automatically request the appropriately sized image from the CDN by adding a size suffix to the image name, such as `custom-image_64x64.png`.

### Additional update examples

- [Line item overrides](https://github.com/Shopify/function-examples/tree/main/sample-apps/update-line-item)

## Example expand operation

The following example demonstrates how you can use an `expand` operation to add an extended warranty.

You can update the title to show that the warranty is included, and add two cart items, one for the TV, and one for the warranty, each with their own fixed price.

This displays in the checkout as a bundle with the title "Awesome TV with Warranty" for $1150.00 with two child components, the TV and the warranty.

<p>
<div class="react-code-block" data-preset="file">
<div class="react-code-block-preload ThemeMode-dim">
<div class="react-code-block-preload-bar "></div>
<div class="react-code-block-preload-placeholder-container">
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>

</div>
</div>

<script data-option="filename" data-value="output.json"></script>

<script type="text/plain" data-language="json">
RAW_MD_CONTENT{
  "operations": [
    "expand": {
      "cartLineId": "gid://shopify/CartLine/1",
      "title": "Awesome TV with Warranty",
      "image": null,
      "expandedCartItems": [
        {
          "merchandiseId": "gid://shopify/ProductVariant/1",
          "quantity": 1,
          "price": {
            "adjustment": {
              "fixedPricePerUnit": {
                "amount": "1000.00"
              }
            }
          }
        },
        {
          "merchandiseId": "gid://shopify/ProductVariant/2",
          "quantity": 1,
          "price": {
            "adjustment": {
              "fixedPricePerUnit": {
                "amount": "150.00"
              }
            }
          }
        }
      ]
    }
  ]
}
END_RAW_MD_CONTENT</script>

</div>
</p>


### Additional expand examples

- [Bundles: pricing per component](https://github.com/Shopify/function-examples/tree/main/sample-apps/bundles-price-per-component)
- [Optional add-on products](https://github.com/Shopify/function-examples/tree/main/sample-apps/optional-add-ons-cart-transform)

## Example merge operation

The following example demonstrates how you can use a `merge` operation to combine multiple food items into a bundled meal with a price adjustment.

<p>
<div class="react-code-block" data-preset="file">
<div class="react-code-block-preload ThemeMode-dim">
<div class="react-code-block-preload-bar "></div>
<div class="react-code-block-preload-placeholder-container">
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>
<div class="react-code-block-preload-code-container">
<div class="react-code-block-preload-codeline-number"></div>
<div class="react-code-block-preload-codeline"></div>
</div>

</div>
</div>

<script data-option="filename" data-value="output.json"></script>

<script type="text/plain" data-language="json">
RAW_MD_CONTENT{
  "operations": [
    {
      "merge": {
        "cartLines": [
          {
            "cartLineId": "gid://shopify/CartLine/2",
            "quantity": 1
          },
          {
            "cartLineId": "gid://shopify/CartLine/3",
            "quantity": 1
          },
          {
            "cartLineId": "gid://shopify/CartLine/4",
            "quantity": 1
          }
        ],
        "parentVariantId": "gid://shopify/ProductVariant/123",
        "price": {
          "percentageDecrease": {
            "value": 10.5
          }
        },
        "title": "Meal Kit",
        "image": {
          "url": "https://cdn.shopify.com/[...]/custom-image.png"
        }
      }
    }
  ]
}
END_RAW_MD_CONTENT</script>

</div>
</p>


## Merge and expand pricing

The Cart Transform API supports adjustments that decrease the price percentage as part of `merge` and `expand` operations.

The bundle base price varies depending on the operation:

- **`merge`**: The adjustment is based off of the components' price sum.
- **`expand`**: The adjustment is based off of the bundle product price.

This distinction enables the right price to display for `expand` on the product details page and in Liquid.

For example, to arrive at the final bundle price, you can employ a range of post-processing steps:

- **`merge`**: The price is the sum of the components' price, plus the adjustment, if present.
- **`expand`**: The price is the sum of the components' `fixedPricePerUnit`, or the bundle product price, plus the adjustment, if present.

### Price per component

`Expand` operations allow adjustments to the price of each individual component in the bundle.

This can be done by providing a price on the `expandedCartItems` in the `ExpandOperation`.

> Note:
> Costs returned in the input query are the contextualized price in presentment currency and operation outputs are processed in presentment currency. If you're determining a new price based on the cost in shop currency you should query for the `presentmentCurrencyRate` and convert from the shop to presentment currency before returning your operation output.

### Weight price algorithm

When not providing a fixed price per unit on `Expand` operations, the weight price algorithm allocates the bundle price to its component lines based on the weight of each component line. The weight of a component is the unit price multiplied by quantity, as `unit price * quantity`.

The algorithm considers the item's price as if the item was bought individually and the quantity inside the bundle. For example, if a bundle has 10 t-shirts and 1 pair of shorts, and the shorts and t-shirt cost $5 if they were bought individually, then Shopify allocates more weight to the t-shirt.

The total weight of all component lines is then used to calculate the weight of each component line.

#### Example

**Amount to be allocated**: $100

**Component lines**:

- `unit_price`: $10, `quantity`: 1, `id`: 1 # weight 10
- `unit_price`: $20, `quantity`: 2, `id`: 2 # weight 40
- `unit_price`: $30, `quantity`: 3, `id`: 3 # weight 90

**Total weight**: 140

**Result**:

- Component 1: $7.14 -> (10 / 140) * $100 = 7.14
- Component 2: $28.57 -> (40 / 140) * $100 = 28.57
- Component 3: $64.29 -> (90 / 140) * $100 = 64.29

## Showing overrides

Title and image overrides are visible on different surfaces, such as cart, checkout, email, and order notification emails.

To see `title` overrides that Cart Transform functions make on a cart, cart notifications, or order notification emails, you need to make changes to your themes. Use [`item.title`](/docs/api/liquid/objects/line_item#line_item-title) for cart or [`line.title`](https://help.shopify.com/en/manual/orders/notifications/email-variables#line-item) for order notification emails to show the new title.

> Note:
> Images that are used for override must first be uploaded to the Shopify CDN and should belong to the store. For instance, you can obtain an image URL through the Shopify admin interface by going to: "Content" -> "Files" -> "Upload Files".

## Invalid operations

The following scenarios are considered as invalid:

`expand` operations:

- One of the component quantities is less than 0.
- The line to be expanded doesn't exist.
- One of the component variant IDs doesn't exist.
- Both `ExpandedItem.Price` and `PriceAdjustment` are returned in the operation.
- One of the components is given a price less than 0.
- Some of the components have a customized price and others don't.

`merge` operations:

- The merge operation contains an invalid quantity for the children (less than 0 or the quantity to merge is bigger than the line's quantity).
- The parent variant ID doesn't exist.
- One of the lines to be merged doesn't exist.

`update` operations:

- The operation includes a price < 0.
- The line to be updated doesn't exist.
- The operation targets a line that is going to be expanded or merged.
- The shop is not on a Plus plan or a Development store plan.

> Note:
> The `expand`, `merge`, and `update` operations will be dropped in the event that a selling plan is present.


## List of errors

The following tables provide a complete list of errors that can occur when running your function.

### Error codes for expand operations

| Error code | Message |
|---|---|
| `cannot_combine_price_adjustment_and_price_per_component` | Cannot combine both an overall price adjustment and individual prices for components. |
| `component_merchandise_not_found` | One or more of the expanded cart items have a merchandise id that does not exist. |
| `exceeded_maximum_number_of_supported_expanded_cart_items` | Exceeded the maximum number of supported expanded cart items (150). |
| `expanded_items_missing_prices` | One or more expanded cart items are missing prices. Either all must have a price, or none. |
| `image_feature_not_available` | The feature to update the image is not accessible for the given shop. |
| `image_not_found` | Image not found for the shop. |
| `invalid_cart_line_id` | The cart line id is invalid. |
| `invalid_component_merchandise_id` | One or more of the expanded cart items have an invalid merchandise id. |
| `invalid_component_quantity` | One or more of the expanded cart items have an invalid quantity. |
| `invalid_component_price` | One or more of the expanded cart items have an invalid price. |
| `invalid_image_url` | The base image URL must be any of the following: https://cdn.shopify.com, https://cdn.shopifycdn.net, or the shop's domain with a path of `/cdn/*`. |
| `invalid_price_adjustment_percentage_decrease` | The percentage decrease value must be less than or equal to 100. |
| `price_per_component_feature_not_available` | The feature to price an expanded cart item is not accessible for the given shop. |
| `title_feature_not_available` | The feature to update the title is not accessible for the given shop. |

### Error codes for merge operations

| Error code | Message |
|---|---|
| `exceeded_maximum_number_of_supported_merged_cart_items` | Exceeded the maximum number of supported merged cart items. |
| `image_not_found` | Image not found for the shop. |
| `insufficient_component_quantity_to_merge` | There are not enough items in the cart to satisfy one or more the component quantities. |
| `invalid_component_cart_line_id` | One or more of the cart lines have an invalid cart line id. |
| `invalid_component_quantity` | One or more of the cart lines have an invalid quantity. |
| `invalid_image_url` | The base image URL must be any of the following: https://cdn.shopify.com, https://cdn.shopifycdn.net, or the shop's domain with a path of `/cdn/*`. |
| `invalid_parent_variant_id` | The parent variant id is not valid. |
| `invalid_price_adjustment_percentage_decrease` | The percentage decrease value must be less than or equal to 100. |
| `parent_variant_not_found` | The parent variant does not exist. |

### Error codes for update operations

| Error code | Message |
|---|---|
| `fixed_price_adjustment_cannot_be_negative` | Fixed price adjustments cannot be negative. |
| `image_not_found` | Image not found for the shop. |
| `invalid_cart_line_id` | The cart line id is invalid. |
| `invalid_image_url` | The base image URL must be any of the following: https://cdn.shopify.com, https://cdn.shopifycdn.net, or the shop's domain with a path of `/cdn/*`. |
| `update_feature_not_available` | The update operation feature is not accessible for the given shop. |

## Limitations and considerations

You can install a maximum of one cart transform function on each store.