---
title: >-
  Making changeFromQuantity field required (with explicit opt-out) - Shopify
  developer changelog
description: >-
  Shopify’s developer changelog documents all changes to Shopify’s platform.
  Find the latest news and learn about new platform opportunities.
source_url:
  html: 'https://shopify.dev/changelog/posts/making-changefromquantity-field-required'
  md: >-
    https://shopify.dev/changelog/posts/making-changefromquantity-field-required.md
metadata:
  effectiveApiVersion: 2026-04
  affectedApi:
    - displayName: Admin GraphQL API
      handle: admin-graphql
  primaryTag:
    displayName: API
    handle: api
  secondaryTag:
    displayName: Breaking API Change
    handle: breaking-api-change
  indicatesActionRequired: true
  createdAt: '2025-12-05T14:48:27-05:00'
  postedAt: '2025-12-12T12:00:00-05:00'
  updatedAt: '2025-12-09T14:10:34-05:00'
  effectiveAt: '2025-12-12T12:00:00-05:00'
---

December 12, 2025

# Making `changeFromQuantity` field required (with explicit opt-out)

DateDecember 12, 2025

Version[2026-04](https://shopify.dev/changelog?api_version=2026-04)

Flags[Breaking API Change](https://shopify.dev/changelog?filter=breaking-api-change)[Action required](https://shopify.dev/changelog?action_required=true)

SurfacesAPI

Affected APIs[Admin GraphQL API](https://shopify.dev/changelog?api_type=admin-graphql)

This changelog relates to [concurrency protection features](https://shopify.dev/changelog/concurrency-protection-features).

Starting in `2026-04`, the `changeFromQuantity` field will be required for the following mutations:

* [`inventoryAdjustQuantities`](https://shopify.dev/docs/api/admin-graphql/2026-01/mutations/inventoryAdjustQuantities): Available on the [`InventoryChangeInput`](https://shopify.dev/docs/api/admin-graphql/2026-01/input-objects/InventoryChangeInput) input type
* [`inventoryMoveQuantities`](https://shopify.dev/docs/api/admin-graphql/2026-01/mutations/inventoryMoveQuantities): Available on the [`InventoryMoveQuantityTerminalInput`](https://shopify.dev/docs/api/admin-graphql/2026-01/input-objects/InventoryMoveQuantityTerminalInput) input type
* [`inventorySetOnHandQuantities`](https://shopify.dev/docs/api/admin-graphql/2026-01/mutations/inventorySetOnHandQuantities): Available on the [`InventorySetQuantityInput`](https://shopify.dev/docs/api/admin-graphql/2026-01/input-objects/InventorySetQuantityInput) input type
* [productVariantsBulkUpdate](https://shopify.dev/docs/api/admin-graphql/2026-01/mutations/productVariantsBulkUpdate): Available on the InventoryAdjustmentInput type, which is available on the `quantityAdjustments` field of the [`ProductVariantsBulkInput`](https://shopify.dev/docs/api/admin-graphql/2026-01/input-objects/ProductVariantsBulkInput) type

This is a breaking change. Note that even though the `changeFromQuantity` field doesn't show up as mandatory at the schema level, calling these mutations without passing in `null` or passing in the current actual quantity will result in an error at runtime.

## What you need to do

Before migrating to version 2026-04, update your application logic to include the `changeFromQuantity` argument:

* To enable concurrency checks (Recommended): Pass the expected current quantity.
* To opt-out (skip checks): Explicitly pass `changeFromQuantity: null`

## How to use the field

The `changeFromQuantity` field is useful to keep inventory data accurate, even if multiple updates are happening at the same time. If the actual quantity doesn't match the value you provide, the mutation will fail with a `CHANGE_FROM_QUANTITY_STALE` error, preventing unintended overwrites.

In the following example, the adjustment will only succeed if the current available quantity is 50. If another process has modified the quantity in the meantime, you'll receive an error and can retry with the updated value.

For more information on compare and swap, and when you should opt out of comparison checks, refer to [our docs](https://shopify.dev/docs/apps/build/orders-fulfillment/inventory-management-apps/manage-quantities-states#compare-and-swap). We encourage users to avoid opting-out unless it's justified by their use-case.

```
mutation {
    inventoryAdjustQuantities(
      input: {
        reason: "correction"
        name: "available"
        changes: [{
          delta: 10
          changeFromQuantity: 50
          inventoryItemId: "gid://shopify/InventoryItem/123"
          locationId: "gid://shopify/Location/456"
        }]
      }
    ) {
      inventoryAdjustmentGroup {
        id
      }
      userErrors {
        code
        message
      }
    }
  }
```
